머신러닝 4일차
- 회귀(Regression) - 숫자 맞추기
- Target이 수치형(numeric)
- 예측 대상 : 연속적인 값 - 이산형 데이터
- 출력 형태 : 무수히 많은 실수 값
- 평가 지표 : 정답값에 얼마나 근접하게 맞추느냐
x = 실제값 - 예측값 ( x값이 크면 성능이 낮고, x값이 작으면 성능이 좋음)
- 분류(Classification)
- 예측 대상 : 이산적인 카테고리
- 출력 형태 : 정해진 클래스
- 평가 지표 : 맞춘 건가, 못 맞춘 건가
- 두 가지 관점 : 통계적 추론 vs 머신러닝 예측
- 선형회귀 : 단순선형회귀(가중치가 1개), 다중선형회귀(가중치가 2개 이상)
- 손실함수(중요한 개념) : fit() 학습을 시작하면, 먼저 임의의 w(weight), b(bias) 값을 랜덤으로 세팅함. 그리고 X_train 값을 넣고 계산한 y(예측값)과 y_train(정답값)을 비교함. y와 y_train의 차이를 계산하는 함수를 Loss function(손실함수) 이라 함. (Loss를 최소화할 수 있는 w와 b를 찾는 것.)
- Loss function을 이용해서 Loss 값(w와 b를 정하기 위한 가이드)을 구함.
- 회귀 모델의 성능 지표 (5 가지)
- MSE(Mean Squared Error, 평균 제곱 오차) : 오차를 제곱하여 평균 낸 값.
- RMES(Root Mean Squared Error, 평균 제곱근 오차) : MSE에 root를 씌운 값.
- MAE(Mean Absolute Error, 평균 절대 오차) : 오차 절대값을 평균 낸 값.
- MAPE(Mean Absolute Percentage Error, 평균 절대 백분율 오차) : 에러의 비율
- RMSLE(Root Mean Squared Log Error, 평균 제곱근 로그 오차) : RMES에 로그를 취한 것.
- R2 (결정 계수) : 값이 크면 클수록 좋은!
- 예시) R2 값이 92면, 모델이 92%는 설명할 수 있고, 8%는 설명하지 못한다는 의미
- 단, feature 값이 많아지면 자동으로 R2 이 증가함..(문제점)
- Adjusted R2 (Adj-R2, 수정된 결정 계수) : 문제점 해결방법
- 과적합(Overfitting) 방지 기법
- 왜 과적합이 발생할까?
1. 데이터의 한계 : 부족한 데이터의 양, 적합하지 않는 데이터셋
2. 데이터 내 노이즈(noise) : 학습 데이터에 포함된 측정 오류나 잘못된 라벨 값을 모델이 의미 있는 패턴으로 오인하고 학습 ( -> 데이터 전처리 과정 필요)
3. 과도한 모델 복잡성
- 과적합 해결 방법 : 일반화(Generalization) Good fit! > 어떤 데이터가 들어와도 균일한 성능을 내는 것.
1. 모델의 단순화(Occam's Razor)
2. 정규화(Regularization & Normalization)
- 학습 방향은 Loss값이 작아지는 방향으로 w,b를 찾아감
- w가 지나치게 커지는 것을 방지하는 것이 Regularization
-> how? Loss = Loss + w (Loss에 weight(w)를 더한 값을 Loss로 쓰게 함.)
즉, 학습은 Loss값이 작아져야 하기 때문에 w값도 줄이게 되는 원리.
3. 검증(Validation) : 검증 데이터를 활용하여 과적합 방지
- 정규화(Regularization)의 3 가지 대표 주자 : Ridge, Lasso, Elastic-Net
▶ 다시 한 번 강조 : Regularization은 w값이 지나치게 커지는 것을 방지하는 기법임. (w값이 커지면 overfitting 될 확률이 커짐)
-
- Ridge Regression(L2 정규화) > 패널티 : 계수의 제곱의 합
- Lasso Regression(L2 정규화) > 패널티 : 계수의 절댓값의 합
- Elastic-Net(L1+L2 정규화)