파이썬을 활용한 분석이 오히려 쉽고 직관적이고 다양하게 접근할 수 있습니다.
김자영 강사님
통계 관련 이론 내용을 기반으로 파이썬 실습을 진행합니다.
홀드아웃 검증 vs K-폴드 교차검증
K-폴드 교차검증 :
K개로 나누고 K-1개 학습 1개 검증
k번 반복 실행
전체 데이터를 train과 test로 나눔
train 중 교차 검증 (Fold1~Fold5)
train : 학습, 검증
test: 최종 검증
데이터가 너무 적은 경우는 test를 따로 빼지 않기도 합니다.
데이터 전처리 모듈 : sklearn.preprocessing
함수/클래스 : StandardScaler 데이터 스케일링 (표준화 : 평균0, 표준편차1)
로지스틱 회귀 개념
종속 변수가 범주형일때, 수행할 수 있는 회귀분석 기법의 한 종류
독립변수들의 선형 결합을 이용하여 개별 관측치가 속하는 집단을 확률로 예측
선형회귀의 출력값을 시그모이드 함수에 입력하여 0~1 사이의 확률로 변환
이진 분류 뿐만 아니라 다중 분류에도 사용할 수는 있습니다
h(x) = wx+b
선형회귀 공식을 응용해서 Logistic Regression 에 활용
결과를 0과 1 사이의 확률로 변환하는 함수
공부 시간에 따른 성적
주변의 가장 가가운 K개의 샘플을 통해 값을 예측
단점 : 이상치에 민감 (피처 스케일링이 중요)
피처의 중요도를 반영하지 않습니다.
데이터의 특성을 바탕으로 분기를 만들어 트리 구조로 의사결정 과정을 모델링
루트 노드 Root node 가장 상위에 위치한 노드, 첫번째 규칙 조건
내부 노드 Internal node 규칙 조건
depth 숫자가 중요
데이터 분할 기준
Information Gain 정보이득 : 분할 전후의 엔트로피 차이
엔트로피(Entropy) : 데이터의 혼잡도
Gini Impurity 지니 불순도 : 데이터의 혼합 정도를 나타내는 지표
0 이면 가장 순수
0.5 이면 불순도가 가장 높다
지니 불순도는 계산이 빨라서 더 자주 사용합니다.
시험 문제, 자격증 문제로 자주 나옵니다.
장점 : 해석하기 쉽습니다
피처 스케일에 거의 구애 받지 않습니다 (독립변수 피처스케일이 필요하지 않다)
단점 : 트리가 너무 깊어지면, 과적합
최적의 트리 찾기가 어렵습니다, 하이퍼 파라미터 튜닝이 어렵습니다
데이터 클래스 불균형이 실한 경우, 소수의 클래스는 선택되지 않을 확률이 높다
max_depth 트리의 최대 깊이 규정. 깊이가 깊어지면 과적합 문제가 발생할 수 있으므로 제어 필요
과도한 가지치기는 underfitting 과소적합 발생시킬 수 있으므로 주의
max_depth=3 인경우, depth 3 이후로 더 이상 분할하지 않습니다
여러 개의 모델을 결합하여 더 강력한 예측 모델을 만드는 기법
박사 1명 vs 학사 10명
장점 : 성능 향상, 안정성, 일반화, 편향 감소, 상호보완
그렇지만 과적합 발생할 수 있어 튜닝 필요함
단점 : 계산 비용 (시간과 리소스 많이 필요)
복잡성, 해석의 어려움
Decision Tree + KNN + LinearRegression
대표적으로, RandomForest
tree 기반으로 보통 많이 사용
AdaBoost 초기 모델, 오래돼서 잘 사용하지 않음
Gradient Boosting 시간이 오래 걸림
XGBoost 캐글 대회 상위 팀에서 자주 사용
LightGBM
CatBoost
샘플 데이터가 다름
의사결정트리를 결합
분류와 회귀 모두 적용 가능
배깅(Bagging, Bootstrap Aggregating) 기법 사용
랜덤 피처 선택
트리 관련 파라미터
n-estimators 결정트리 개수
max_depth 각 트리 최대 깊이
min_sample_split 필요한 최소 샘플 수
min_sample_leaf
bagging : parallel
boosting : sequential
실제값과 예측값 표를 만듭니다
False 로 예측했는데 맞은 경우
상황에 따라 재현율이 중요하기도 하고
정밀도가 중요하기도 합니다.
재현율 (또는 민감도) : 암 검사
정밀도 : 스팸 필터링, 광고타겟팅
분류모델에서는 StratifiedKFold
회귀모델에서는 KFold
교차검증으로 최적 파라미터를 찾습니다.
max_depth 와 min_samples_split를 다양하게 시도해 최적의 파라미터를 찾아
가장 높은 acccuracy 를 구합니다.
refit=True 최적의 하이퍼 파라미터를 찾은 후, 최종 모델을 만듭니다.
bestestimator 속성을 통해 접근
반복할수록 이전보다 조금씩 더 많은 내용들이 보입니다.
당장 다 이해할 수 없을지라도
꾸준히 매일매일 학습하고 가까워지는 자세가 중요합니다.
日日新 又日新 "Renew yourself daily, And again, renewed day after day."