0. 학습 방법에 따른 분류
- 지도학습 : 학습 대상이 되는 데이터에 정답을 주어 데이터의 패턴을 배우게 하는 학습 방법
- 비지도학습 : 정답이 없는 데이터로만 배우게 하는 학습 방법
- 강화학습 : 선택한 결과에 대해 보상을 받아 행동을 개선하면서 배우게 하는 학습 방법
1. 과제에 따른 분류
- 분류문제 : 분류된 데이터를 학습하여 규칙을 찾고, 규칙을 기반으로 새롭게 주어진 데이터를 적절히 분류(지도학습)
- 회귀문제 : 결과값이 있는 데이터를 학습 후 입력값과 결과값의 연관성을 찾고, 연관성을 기준으로 값 예측(지도학습)
- 클러스터링 : 주어진 데이터를 학습하여 적절한 분류 규칙을 찾아 데이터를 분류함이 목적(비지도 학습)
2. 지도학습
- 회귀 : 연속적인 숫자를 예측하는 것
- 연속적인 숫자 : 두 값 사이의 중간값이 의미가 있는 숫자인지
- 분류 : 범줏값을 예측하는 것
통계학에서 사용되는 가장 단순한 모델 중 하나가 평균
3. 데이터 분리
- 실전에서는 학습용, 검증용, 평가용 데이터로 분리함
4. 과대적합 vs 과소적합
- 과대적합(Overfitting) : 학습데이터에 대해서 성능이 매우 좋은데, 평가데이터에서는 성능이 안 좋은 경우
- 과소적합(Underfitting) : 학습데이터보다 평가 데이터에 대한 성능이 좋으나, 모든 데이터에 대한 성능이 안 좋음
5. 데이터 준비 과정
- 데이터를 탐색하여 적절히 전처리 한 후 데이터 분리
# 라이브러리 불러오기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 읽어오기
data = pd.read_csv('airquality.csv')
# x, y 분리
target = 'Ozone'
x = data.drop(target, axis=1)
y = data.loc[target]
# 학습용, 평가용 데이터 분리
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
6. 모델링 과정
- 5단계에 따라 코딩 진행
# 1단계: 불러오기
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
# 2단계: 선언하기
model = LinearRegression()
# 3단계: 학습하기
model.fit(x_train, y_train)
# 4단계: 예측하기
y_pred = model.predict(x_test)
# 5단계: 평가하기
print(mean_absolute_error(y_test, y_pred))
7. 성능 평가
- 회귀모델 성능 평가
- 예측값과 실제값의 차이(오차)를 줄여야 함
- SSE(Sum Sqaured Error)
- MSE(Mean Sqaured Error)
- RMSE(Root MSE)
- MAE(Mean Absolute Error)
- MAPE(MA Percentage Error)
- R2(R-Sqaured) : 전체 오차 중에서 회귀식이 잡아낸 오차 비율 (모델의 설명력)
- 분류모델 성능 평가
- 예측값과 실제값이 많이 같을수록 좋은 모델
- 정확도(Accuracy)
- 정밀도(Precision)
- 재현율(Recall)
- F1-Score
8. 기본 알고리즘
Linear Regression (회귀)
- 최적의 회귀모델은 전체데이터의 오차합(MSE)이 최소가 되는 모델을 의미함
- 오차합이 최소가 되는 가중치 w1와 편향 w0를 찾는 것을 의미함
- 단순회귀 : x값 하나만으로 y값을 설명할 수 있음
- 다중회귀 : 여러 x값으로 y값을 설명함
KNN
- K-Nearest Neighbor: k 최근접 이웃 (가장 가까운 이웃 k개)
- 회귀와 분류에 사용되는 매우 간단한 지도학습 알고리즘
- k의 값에 따라 예측값이 달라지므로 적절한 k값을 찾는 것이 중요
- 검증 데이터로 가장 정확도가 높은 k를 찾음
- 거리구하기
- 유클리드 거리
- 맨해튼 거리
- Scailing필요성 : 데이터 단위에 따라 결과가 달라질 수 있음
- 대표적인 Scaling 방법
- 정규화(Normalization) :각 변수의 값이 0과 1 사이가 됨
- 표준화(Standardization) : 각 변수의 평균이 0 표준 편차가 1이 됨
- 대표적인 Scaling 방법
평가용 데이터에도 학습용 데이터를 기준으로 스케일링을 수행함
Decision Tree
- 특정 변수에 대한 의사결정 규칙을 나뭇가지가 뻗는 형태로 분류해 나감
- 분류와 회귀 모두에 사용되는 지도학습 알고리즘
- 과적합으로 모델 성능이 떨어지기 쉬워 트리 깊이를 제한하는 튜닝 필요
- 불순도 : 순도의 반대말, 순도가 높을수록 분류가 잘 된 것임
- 지니 불순도(Gini Impurity)
- 엔트로피(Entropy)
- 정보이득(Information Gain) : 정보이득 크다 = 분할할 때 불순도가 줄어든다, 정보 이득이 가장 큰 속성부터 분할
- 가지치기(Pruning) : 가지치기를 하지 않으면 Overfitting 됨, 하이퍼파라미터 값을 조정하여 가지치기함
- 변수 중요도 시각화 : feature_importance_속성값으로 변수 중요도 확인
Logistic Regression
- 로지스틱 함수 : 시그모이드 함수라고도 부름
- 임계값을 기준으로 크면 1, 아니면 0으로 분류함
9. K-Fold Cross Validation
- 모든 데이터가 평가에 한번, 학습에 k-1번 사용(k는 2 이상이 되어야 함)
- 장점 : 반복 학습과 평가를 통해 정확도를 향상시켜 좀 더 일반화된 모델을 만들 수 있음
- 단점 : 반복 횟수가 많아서 학습과 평가에 많은 시간이 소요됨
10. Hyperparameter
- 하이퍼파라미터 튜닝엔 정답은 없음
- KNN : k값, 거리계산법(유클리드거리, 멘하튼거리)에 따라 달라질 수 있음
- Decision Tree : max_depth, min_samples_leaf, min_samples_split
- Grid Search
- 성능을 테스트할 파라미터 값의 범위를 지정
- 파라미터 값 범위를 탐색하여 학습 데이터에 대해 가장 좋은 성능을 보인 파라미터 값으로 자동 학습
- Random Search
- 성능을 테스트할 파라미터 범위 지정
- 파라미터 값 범위에서 몇 개 선택할지 정하여 가장 좋은 성능을 보인 파라미터 값으로 자동 학습
- 주의사항
- 과적합 될 수 있음
- 미래에 발생할 데이터는 과거와 다를 수 있음
11. 앙상블(Ensemble)
- 여러 개의 모델을 결합하여 훨씬 강력한 모델을 생성하는 기법
보팅
- 여러 모델들의 예측결과를 투표를 통해 최종 예측 결과를 결정하는 방법
배깅
- 데이터로부터 부트스트랩 한 데이터로 모델들을 학습시킨 후, 모델들의 예측 결과를 집계해 최종 결과 도출
- 같은 유형의 알고리즘 기반 모델들을 사용
- 범주형 데이터 : 투표 방식으로 결과 집계
- 연속형 데이터 : 평균으로 결과 집계
- 랜덤 포레스트(Random Forest)
- 배깅의 가장 대표적인 알고리즘
- 여러 Decision Tree 모델이 전체 데이터에서 배깅 방식으로 각자의 데이터 랜덤 샘플링
- 모델들이 개별적으로 학습을 수행한 뒤 결과를 집계하여 최종 결과 결정
- n_estimators : 만들어질 Decision Tree 개수
부스팅
- 같은 유형의 알고리즘 기반 모델 여러 개에 대해 순차적으로 학습을 수행
- 이전 모델이 예측하지 못한 데이터에 가중치를 부여하여 다음 모델이 학습과 예측을 진행하는 방법
- Gradient Boost
- XGBoost(eXtreme Gradient Boosting)
- GBM(Gradient Boost Machine)을 병렬 학습이 가능하도록 구현한 것
- 회귀 분류 문제 모두 지원, 성능과 자원 효율이 좋아 많이 사용됨
- 스태킹(Stacking)
- 여러 모델의 예측 값을 최종 모델의 학습 데이터로 사용하여 예측하는 방법
99. 데이터 불균형
- 클래스 불균형(Class Imbalances) 문제의 경우 알고리즘이 다수 클래스를 더 많이 예측하는 방향으로 편향되는 경향이 있음
- 비즈니스 상황에서 클래스 불균형은 흔한 상황
- 방법 1 : Resampling
- Under Sampling: 다수 클래스 데이터를 소수 클래스 수만큼 랜덤 샘플링
- Over Sampling: 소수 클래스 데이터를 다수 클래스 수만큼 랜덤 샘플링
- 방법 2 :Class Weight
- 클래스에 가중치를 부여하여 클래스 불균형 해결
'KT에이블스쿨' 카테고리의 다른 글
[KT에이블스쿨] 12주 (0) | 2024.05.12 |
---|---|
[KT에이블스쿨] 7주 (0) | 2024.04.07 |
[KT에이블스쿨] 5주, 6주 (0) | 2024.03.31 |