JHJ

[내일배움캠프 QAQC 부트캠프] 머신러닝 심화 2일차(31일차, 260624) 본문

[내일배움캠프 QAQC 부트캠프]/TIL

[내일배움캠프 QAQC 부트캠프] 머신러닝 심화 2일차(31일차, 260624)

Jo, Hongjin 2026. 6. 24. 09:57

1. 오늘 학습 키워드:

머신러닝 심화

 


2. 오늘 학습 한 내용을 나만의 언어로 정리하기:

코드카타

알고리즘
 
76 - JadenCase 문자열 만들기

def solution(s):
    A = s.split()
    B = []
    for i in A:
        B.append(i.capitalize())
    return " ".join(B)

SQL

61 - 서울에 위치한 식당 목록 출력하기

SELECT A.REST_ID , A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(B.REVIEW_SCORE),2) AS SCORE
FROM REST_INFO AS A
INNER JOIN REST_REVIEW AS B
ON A.REST_ID = B.REST_ID
WHERE A.ADDRESS LIKE '서울%'
GROUP BY A.REST_ID
ORDER BY AVG(B.REVIEW_SCORE) DESC, A.FAVORITES DESC
62 - 자동차 대여 기록에서 장기/단기 대여 구분하기

SELECT HISTORY_ID, CAR_ID, START_DATE, END_DATE, IF(DATEDIFF(END_DATE,START_DATE)>=29, '장기 대여', '단기 대여') AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'  
ORDER BY HISTORY_ID DESC
63 - 자동차 평균 대여 기간 구하기

SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1),1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVG(DATEDIFF(END_DATE,START_DATE)) >= 6
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
64 - 헤비 유저가 소유한 장소2021 Dev-Matching: 웹 백엔드 개발자(상반기)

SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID 
IN (
    SELECT HOST_ID 
    FROM PLACES
    GROUP BY HOST_ID
    HAVING COUNT(HOST_ID)>=2
)
ORDER BY ID
65 - 우유와 요거트가 담긴 장바구니Summer/Winter Coding(2019)

SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Milk', 'Yogurt')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2
ORDER BY CART_ID

 

머신러닝/라이브러리 심화

1-8 데이터 분리 - 이론
예측/분류에서 모델의 복잡도에 따라 과적합, 과소적합이 나올 수 있음.
과적합: 
데이터를 너무 과도하게 학습
기존 데이터 외에 새 데이터를 제대로 예측 혹은 분류하지 못하는 현상
원인: 모델의 복잡도, 데이터 양 ,학습 반복량, 데이터 불균형
해결법: 테스트 데이터의 분리(Train Data/Test Data)
분리에서 동일한 데이터셋을 생성하기 위해 난수를 고정시킬 필요가 있음
sklearn.model_selection.train_test_split

1-9 데이터 분리 - 실습
데이터가 불균형이 심화면 층화추출 실시
수치형의 스케일링 등의 전처리 또한 train과 test는 격리할 필요

1-10 1-11 1-12 전체 실습
잊지 말고 강의 보면서 직접 해보기

1-13
교차 검증: Train Data를 K개의 하위 집합으로 나누어 모델을 학습, 최적화
특징: 데이터가 부족할 경우 유용
skelarn.model_selection.KFold


하이퍼 파라미터: 모델을 구성하는 입력 값 중 사람이 임의적으로 바꿀 수 있는 입력 값
GridSearchV: 최고의 하이퍼 파라미터, 정확도 자동 계산

데이터 분석 프로세스 정리
7:3 으로 train/test 데이터셋 분리
각 데이터셋 전처리
train 에서 학습과 검증데이터 7대3으로 분리 후, 학습/검증/모델 생성
test 에서 학습 후 모델생성, 예측, 평가
2-1 의사결정나무 이론
의사결정규칙을 나무 구조화
전체 자료를 몇 개의 소집단으로 분류, 예측 수행하는 분석 방법

루트 노드: 최초의 분할조건
리프 노드: 중간 혹은 최종 노드
분류기준: 0인 경우 좌측 노드로, 1인 경우 우측 노드로 분류 등
불순도: 대표적으로 지니 계수(0과 1사이)
0이 완벽한 순도(모든 샘플이 하나의 클래스)
1은 완전한 불순도(노드의 샘플의 균등하게 분포)
클래스: 가장 많은 샘플을 차지하는 것

장점: 쉽고 해석하기 용이, 분류 외 회귀에도 적용 가능, 이상치 견고, 스케일링 불필요
단점: 나무의 과도한 성장은 과대적합의 오류 발생, 훈련 데이터에 민감(불안정성)
sklearn.tree.DecisionTreeClassifier
sklearn.tree.DecisionTreeRegressor

2-2 랜덤 포레스트 이론
의사결정 나무는 과적합과 불안정성 대한 문제 --> 나무를 여러개 만들기
배깅 방법론:  Bootstrapping(복원 추출, 타집단 생성) + Aggregating(예측,분류 결과를 합치는 것)
앙상블: 여러 개의 모델을 만들어 결과를 합치는 것
장점: 배깅 과정을 통해 과적합 회피, 이상치 견고(스케일링 불필요), 변수 중요도(피쳐 임포턴트) 추출로 중요 특징 파악 가능
단점: 리소스 비용, 앙상블 적용에 따른 해석 난해
sklearn.ensemble.RandomForestClassifer
sklearn.ensemble.RandomForestRegressor


2-3 KNN
KNN(최근접 이웃) 알고리즘: 주변의 데이터 바탕의 예측 방법
주변 데이터 K개를 선정 후에 거리 기준으로 가장 많은 것으로 예측하는 것
파라미터: 머신러닝 모델이 학습 과정에서 추정하는 내부 변수, 자동 결정값

하이퍼 파라미터: 데이터 과학자가 모델 훈련에 사용하는 외부 변수
하이퍼 파라미터를 바꾸며 좋은 평가 지표가 나올 때까지 실험, 원리를 밝혀내는 것이 데이터 사이언스의 기반

두 점의 거리: 피타고라스 정리로 구한 값(유클리드 거리)
그 외에 맨해틀 거리 등 다양한 거리 계산 방법
거리 기반 알리고리즘은 단위의 영향이 큼(피처에 대한 표준화 필수)
장점: 
이해하기 쉽고 직관적, 회귀 
모집단의 가정, 형태 고려할 필요X 
회귀, 분류 모두 가능
단점: 많은 계산량, 피처 표준화 필수

2-4 부스팅
부스팅 알고리즘: 여러 개의 약한 학습기를 순차적으로 학습하면서 잘못 예측한 데이터에 가중치를 부여하여 오류를 개선
Gradient Boosting Model, XGBoost, LightGBM가 있음

Gradient Boosting Model
특징: 가중치 업데이트를 경사하강법 방법을 통해 진행
sklearn.ensemble.GradientBoostingClassifier
sklearn.ensemble.GradientBoostingRegressor

XGBoost
특징: 트리기반 앙상블 기법으로, 가장 각광받으며 Kaggle의 상위 알고리즘
xgboost.XGBRegressor
xgboost.XGBRegressor

LightGBM
특징: 
XGBoost와 함께 가장 각광받는 알고리즘
XGBoost보다 학습시간이 짧고 메모리 사용량이 작음
작은 데이터(10,000건 이하)의 경우 과적합 발생

lightgbm.LGBMClassifier
lightgbm.LGBMRegressor

2-5
로지스틱부터 LGBM까지 정확도 비교
정확도가 높아야 좋음

 라이브 세션

머신러닝 심화
1회차

머신러닝 프로젝트 팁
Waterfall 학습(이론 중심)보단 Agile(문제 해결) 학습 방식 권장: 일단 그래프 하나 그려봐라
'우선 실행 - 사후 분석'의 방식으로 일단 해보기

팀 공유드라이브/환경 구축하기
협업: '모두가 동일한 경로에서 동일한 파일을 보는 것'
결과물 중심의 대시보드 구축: 프로젝트가 어디까지 왔나 확인 가능
진척율 관리 - 노션 기능 적극 활용 ex. 마일스톤 설정으로 진척률 가시화(타임라인 뷰, 보드 뷰)
실무적인 면에서 결과물 중심의 기록: 객관적 소통, 데이터 기반 피드백, 포트폴리오 자산화 등에서 우수


학습: 모델이 '정답'을 찾아가는 과정
손실 함수: 현재 모델이 얼마나 틀렸나(예측한 값과 정답 사이의 차)
경사 하강법: 손실 함수의 값을 최소화하기 위해 모델의 파라미터(가중치)를 조금씩 업데이트하는 알고리즘

피처 엔지니어링: 모델이 잘 학습할 수 있도록 데이터를 가공하는 것 (스케일링, 생성 등)

하이퍼파라미터: 모델이 학습을 시작하기 전에 '사용자(사람)'가 직접 설정해 주는 설정값
그리드 서치: 사람이 직접 설정해야 하는 값들을 격자(Grid) 형태의 후보군으로 미리 정해두고, 하나씩 대입하며 최상의 결과를 찾는 방식

시계열 데이터 등은 테스트 등에서 주의를 해야 함
과적합: 복잡한 모델을 사용했을 때 등
과소적합: 학습 데이터가 부족하거나, 데이터의 다양성이 떨어질 때 

과적합 방지를 위해서 L1, L2 규제 등
교차 검증: 데이터 여러 번 쪼개어 번갈아 가며 학습과 검증
K-Fold 교차 검증 등
드롭아웃: 딥러닝에서 학습할 때 일부 '뉴런(신경망)'을 무작위로 쉬게 하는 것

머신러닝을 배우는 이유
사람이 놓치는 복잡한 패턴의 발견,
'사후 처리'에서 '사전 예방'으로의 전환,
비정형 데이터의 활용 (시각적 검사의 자동화)


문제 정의, 목표 설정
데이터 수집, 전처리(정제, 변환 등)
EDA
모델 유형 선택 및 학습: 일단 '베이스라인 모델' 생성
모델 평가 방법
하이퍼 파라미터 튜닝
모델 배포 및 유지 보수 

 


3. 학습하며 겪었던 문제점& 에러 + 회고

3-1 문제점& 에러: X

                           

3-2 회고:

1. 머리에 넣는게 많아서인지 요즘 잠이 부쩍 늘어났네요.

2. 머신러닝의 여러 모델을 공부하며 QAQC가 이런 것까지 해야 한다고?! 여러 생각이 드네요.


4. 내일 학습할 것은 무엇인지(기본적인 AI 진단퀴즈, 코드카타, TIL 제외)

- 목요일(25일): 머신러닝 심화 강의 마무리 , 라이브세션 머신러닝(2,3) 재수강, 개인공부

 

 

 

AI 시대를 돌파할 취업 솔루션 | 내일배움캠프

직무별 AI 활용 역량부터 인턴십까지. AI 시대를 돌파할 취업 솔루션, 스파르타클럽 내일배움캠프

nbcamp.spartaclub.kr