회귀(regression)의 평가 지표(측정 공식)
회귀 알고리즘부터는 정확도가 아닌 오차값을 측정하여 모델의 성능을 평가함
=> R2 Score는 클수록(1에 가까울수록) 모델이 좋은 성능을 보이며, MAE, MAPE, MSE, RMSE는 작을수록(0에 가까울수록) 좋다
MAE
- Mean Absolute Error, 평균 절대 오차
- 예측값과 실제값의 차이에 대한 절대값의 평균
- 오차의 산포도를 양수, 음수 동일하게 비교하기 위해서 절댓값을 씌움
abs(y_train - y_predict).mean()
MAPE
- Mena Ablsoute Percentage Error
- (실제값 - 예측값 / 실제값)의 절대값에 대한 평균
abs((y_train - y_predict)/y_train).mean()
MSE
- Mean Squared Error
- (실제값-예측값)의 차이이 제곱의 평균
- MAE와 비슷해 보이나 제곱을 통해 음수를 양수로 변환함
- 분산과 유사한 공식
((y_train - y_predict) ** 2).mean()
cf. 분산(위키백과)
- 확률변수가 기댓값으로부터 얼마나 떨어진 곳에 분포하는지를 가늠하는 숫자
- 관측값에서 평균을 뺀 값을 제공하고 모두 더한 후 전체 개수로 나눠서 구함
=> 차이값의 제곱의 평균
RMSE
- Root Mean Squared Error
- mae의 루트를 씌움
- 표준편차와 유사한 공식
((y_train - y_predict)**2).mean() ** (1/2)
,mae ** (1/2)
=> 분산과 표준편차는 관측값에서 기댓값(평균, 중앙값 등)을 빼고, MSE와 RMSE는 실제값에서 예측값을 뺀다.
=> MAE를 사용했을 때 기울기의 차이가 없기에, MSE를 더 사용함
참고) 표준편차는 연속적인 그래프가 그려지고, 평균절대오차는 불연속적인 그래프가 그려져 미분가능성과 통계이론 적용 유무의 차이가 있다.
Q. 회귀에서 Accuracy를 사용하지 않는 이유?
A. Accuracy는 데이터의 일치여부를 판단하는 것인데, 타깃값 하나하나를 소수점 단위까지 동일하게 예측하기는 불가능에 가깝고 무의미할수도 있다.
0404 실습 파일
인슐린 값을 중앙값으로 전처리
Insulin_median = df[df['Insulin'] > 0].groupby('Outcome')['Insulin'].median()
df['Insulin_fill'] = df['Insulin']
df.loc[(df['Insulin'] == 0) & (df['Outcome'] == 0), 'Insulin_fill'] = Insulin_median[0]
df.loc[(df['Insulin'] == 0) & (df['Outcome'] == 1), 'Insulin_fill'] = Insulin_median[1]
학습, 예측 데이터셋 분리
사이킷런을 이용한 데이터셋 분할
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y,random_state=42)
stratify
- 층화표집, 층화추출
- train set과 test set를 분리할 때, label의 class 비율을 동일하게 하는 것
- y_train과 y_test의 class 비율을 비슷하게 가짐
=> countplot, value_counts로 비율 확인 가능
subplots
fig, axes = plt.subplots(nrows=1, ncols = 2, figsize=(10, 4))
sns.countplot(x=y_train, ax=axes[0]).set_title('train')
sns.countplot(x=y_test, ax=axes[1]).set_title('test')
하이퍼파라미터 튜닝
cf. 그리드 서치와 랜덤 서치가 오래걸리므로 조금 더 빠른 decision tree로 진행
GridSearchCV
- 정의: 모델의 하이퍼 파라미터 후보군들을 완전 탐색하여 검색
- 장점: 검증하고 싶은 하이퍼 파라미터의 수치를 지정하면, 수치별 조합을 모두 검증하여 최적의 파라미터 검색의 정확도 향상
- 단점: 후보군의 개수가 많으면 많을수록 기하급수적으로 찾는 시간이 오래 걸리며, 후보군들을 정확히 설정 필요
- 조합의 수만큼 실행
- sklearn.model_selection.GridSearchCV
RandomizedSearchCV
- 정의: 정해진 횟수(iteration) 안에서 정의된 하이퍼 파라미터의 후보군들로부터의 조합을 랜덤하게 샘플링하여 최소의 오차를 갖는 하이퍼 파라미터를 탐색
- 장점: 무작위로 값을 선정하고 그 조합을 검증하므로 빠른 속도로 최적의 파라미터 조합을 검색
- 단점: 후보군을 신중히 결정해야 하며, 랜덤한 조합들 중 최적의 하이퍼 파라미터를 찾는다는 보장이 없음. 횟수를 늘려주면 그만큼 시간도 비례하게 증가
- k-fold 수 * n_iter 수만큼 실행
- sklearn.model_selection.RandomizedSearchCV
이외에도 StandardGridSearch, RandomSearch, RandomLatinHypercube 등이 있음
분류의 평가 지표
- accuracy, precision, recall, f1-score(조화평균) 등
- 정확도(Accuracy), 정밀도(Preicision), 재현율(Recall), F1 Score 모두 0~1 사이의 값을 가지며, 1에 가까워질수록 성능이 좋음
정확도(Accuracy, 정분류율)
- 전체 데이터(Total=TP+TN+FN+FP) 중에서 모델이 모두 정확하게 맞춘(TP+TN) 비율
- 단점 : 불균형한 데이터(imbalanced data)의 경우에는 정확도는 적합한 지표가 아님
정밀도(Precision)
- 모델의 예측된 양성 결과(TP + FP)에서 실제 양성 값(TP)의 비율
- 정밀도(Precision)는 양성(Positive) 예측 성능을 더욱 정밀하게 측정하기 위한 평가 지표
=> FP 를 낮추는 데 초점
재현율(Recall) = 민감도(Sensitivity)
- 모델(분석모형)의 실제 양성 값(TP + FN)에서 예측 양성 값(TP)의 비율
- 실제 양성인 데이터를 음성으로 잘못 판단하게 되면 업무상 큰 영향이 있는 경우에 중요한 지표
- 재현율(Recall)을 높이기 위한 방법
- 실제 양성 값들 중, 맞게 예측하는 예측 양성 값을 증가(TP 값 증가)
- 실제 양성 값들 중, 잘못 예측하는 예측 음성 값을 감소(FN 값 감소)
Precision vs. Recall
- 공통점: TP(True Positive) 값을 높이는 것
- 차이점: 바라보는 관점과 그에 해당하는 음성 값(FP/FN)
- Trade-off(트레이드-오프 관계) : 차이점으로 상호 보완적이지만 한쪽이 증가하면 다른 한쪽이 떨어지기 쉬운 관계
F1 Score
- 정밀도(Preicision)와 재현율(Recall)을 결합하여 만든 지표
- 둘이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때, F1 Score 는 높은 값을 가짐
'멋쟁이사자처럼 AIS7 > 오늘코드' 카테고리의 다른 글
[1107] 피처 선별 등의 머신러닝 접근법과 RMSLE (0) | 2022.11.07 |
---|---|
[1101]지니 불순도, 엔트로피와 타이타닉 데이터 전처리 (1) | 2022.11.01 |
[1026] Feature Engineering & K-fold Cross Validation (0) | 2022.10.26 |
[1025] Machine Learning (0) | 2022.10.25 |
[1024] ML Tools (0) | 2022.10.24 |
댓글