Machine Learning
Machine Learning(머신러닝)
인공지능의 한 분야로, 기계가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야입니다.
기계가 학습을 하기 위해서는 반드시 학습할 수 있는 데이터가 필요합니다.
머신러닝의 가장 큰 목적은 실제 데이터를 바탕으로 다른 입력값을 넣었을 때 나오는 결괏값을 잘 예측하는 것입니다.
머신러닝 알고리즘의 유형
1. 지도 학습(Supervised learning) : 문제와 정답을 모두 알려주고 공부시키는 방법
- 분류 문제(Classification) : 예측해야 할 값이 범주형일 때
- 회귀 문제(Regression) : 예측해야 할 값이 연속된 값일 때
- 예측 문제(Forecasting) : 예측해야 할 값의 시점이 미래일 때
2. 비지도 학습(Unsupervised learning) : 답을 알려주지 않고 공부시키는 방법
- 클러스터링(Clustering) : 유사한 데이터들을 하나의 그룹으로 분류하는 방법
- 차원 축소(Dimension Reduction) : feature의 수를 줄이는 방법
3. 강화 학습(Reinforcement learning) : 보상을 통해 상은 최대화, 벌은 최소화하는 방향으로 행위를 강화하는 방법
알고리즘 선택 시 고려사항
언제나 정확성, 학습시간, 사용 편의성을 고려해야 합니다.
대부분 최우선으로 정확성을 고려합니다.
원핫인코딩
범주형 데이터는 순서가 없는 명목형(nominal)과 순서가 있는 순서형(ordinal)으로 나뉩니다.
원핫인코딩은 명목형 범주형 데이터 형태로 컴퓨터가 학습할 수 있게 숫자형으로 바꾼 것입니다.
순서형(ordinal)인코딩
순서형인코딩은 순서형 범주형 데이터 형태로 컴퓨터가 학습할 수 있게 숫자형으로 바꾼 것입니다.
데이터셋 나누기
모델의 성능을 평가하기 위해 데이터셋을 나눠줍니다.
1. hold-out 교차 검증
데이터가 충분하다면,
먼저 데이터셋을 훈련데이터셋, 테스트데이터셋으로 (저는 일반적으로) 8 : 2 비율로 나눠줍니다.
여기서 테스트데이터셋은 모델이 만들어지고 나서 일반화가 잘됬는지 확인하기 위해 필요합니다.
그다음 훈련데이터셋을 훈련데이터셋, 검증데이터셋으로 (저는 일반적으로) 8 : 2 비율로 나눠줍니다.
여기서 검증데이터셋은 모델이 잘 학습하고 있는지 평가하기 위해 필요합니다.
2. 교차검증(Cross-validation)
데이터가 충분하지 않을 때 쓸 수 있는 방법입니다.
하지만 시계열 데이터에는 적합하지 않습니다.
교차검증을 하기 위해서는 데이터를 k개로 등분하여야 하는데 이를 k-fold cross-validation(CV) 라고 합니다.
k개의 집합에서 k-1 개의 부분집합을 훈련에 사용하고 나머지 부분집합을 테스트 데이터로 검증하게 됩니다.
Baseline Model(기준 모델)
모델을 구체적으로 만들기 전에 가장 간단하면서도 직관적이면서 최소한의 성능을 나타내는 기준이 되는 모델을 기준 모델이라고 합니다.
- 분류 문제: 타겟의 최빈 클래스
- 회귀 문제: 타겟의 평균값
- 시계열 회귀 문제: 이전 타임스탬프의 값
Evaluation Metircs(평가 지표)
모델을 만들었다면 평가 지표를 이용하여 모델 성능을 평가해야 합니다.
1. 회귀모델
- MSE (Mean Squared Error) : $\frac{1}{n}\sum_{i=1}^{n}(y_{i} - \hat{y_{i}})^{2}$
- MAE (Mean absolute error) : $\frac{1}{n}\sum_{i=1}^{n}\left | y_{i} - \hat{y_{i}} \right |$
- RMSE (Root Mean Squared Error) : $\sqrt{MSE}$
- R-squared (Coefficient of determination) : $1 - \frac{\sum_{i=1}^{n}(y_{i} - \hat{y_{i}})^{2}}{\sum_{i=1}^{n}(y_{i} - \bar{y_{i}})^{2}} = 1 - \frac{SSE}{SST} = \frac {SSR}{SST}$
2. 분류모델
- Accuracy (정확도)
- Recall (재현율)
- Precision (정밀도)
- F1 score
- roc_auc score
정밀도와 재현율
True Positive(TP) : 실제 True인 정답을 True라고 예측 (정답)
False Positive(FP) : 실제 False인 정답을 True라고 예측 (오답)
False Negative(FN) : 실제 True인 정답을 False라고 예측 (오답)
True Negative(TN) : 실제 False인 정답을 False라고 예측 (정답)
정밀도 : 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율입니다.
$Precision = \frac{TP}{TP + FP}$
재현율 : 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율입니다.
$Recall = \frac{TP}{TP + FN}$
정확도 : 예측한 모든 것 중에서 잘 예측한 것의 비율입니다.
$Accuracy = \frac{TP + TN}{TP + TN + FP + FN}$
F1 score : Precision과 Recall의 조화평균입니다.
$F1 score = 2\cdot\frac{Precision \cdot Recall}{Precision + Recall}$
과적합(Overfitting)과 과소적합(Underfitting)
테스트데이터에서 만들어내는 오차를 일반화(generalization) 오차라고 부릅니다.
훈련데이터에서와같이 테스트데이터에서도 좋은 성능을 내는 모델은 일반화가 잘 된 모델이라고 부릅니다.
과적합은 모델이 훈련데이터에만 특수한 성질을 과하게 학습해 일반화를 못해 결국 테스트데이터에서 오차가 커지는 현상을 말합니다.(분산이 높다)
과소적합은 훈련데이터에 과적합도 못하고 일반화 성질도 학습하지 못해, 훈련/테스트 데이터 모두에서 오차가 크게 나오는 경우를 말합니다.(편향이 높다)
보통 분산과 편향은 트레이드 오프 관계입니다.
모델의 복잡성에 따라 성능 그래프를 그려 보면, 모델이 복잡해질 수록 훈련데이터 성능은 계속 증가하는데 검증데이터 성능은 어느정도 증가하다가 증가세가 멈추고 오히려 낮아지는 시점을 찾을 수 있습니다.
보통 이 시점을 과적합이 일어나기 시작한 시점이라고 봅니다.