[5일차] 표준화, 정규화 시도[2021 추가 달력]
2021년 1인 특정 달력(기계학습)은 5일차 기사다.
주제는 표준화와 정규화이다.
표준화, 정규화는 특징량이 가지고 있는 값의 권중평등을 위한 방법이다.
결정목은 각 특징량 내의 반복 분할의 특성 때문에 표준화, 정규화의 영향을 받기 어려운 경향이 있다.
Colab의 코드는 여기.입니다.
일반 라이트GBM 평가 결과(이하 동일)
rmse = mean_squared_error(y_test, y_pred, squared=False)
print(rmse)
출력:0.24290787668071306
표준화
표준화는 각 특징량의 평균치를 0으로 바꾸고 방차를 1로 바꾸는 처리다.
아래와 같이 평균치와의 차액을 표준 편차로 나누어 계산한다.
\begin{aligned}
\frac{x^i -\bar{x}}{σ}
\end{aligned}
sc = StandardScaler()
X_train_sc = pd.DataFrame(
sc.fit_transform(X_train),
columns=X_train.columns
)
X_test_sc = pd.DataFrame(
sc.transform(X_test),
columns=X_test.columns
)
rmse_sc = mean_squared_error(y_test, y_pred, squared=False)
print(rmse_sc)
출력:0.24239129822702232
귀일화
정규화는 각 특징량을 0~1로 제어하는 처리다.
아래와 같이 최소치의 차액을 최대치와 최소치의 차액으로 나누어 계산한다.
\begin{aligned}
\frac{x^i - x^{min}}{x^{max} - x^{min}}
\end{aligned}
nl = MinMaxScaler()
X_train_mm = pd.DataFrame(
nl.fit_transform(X_train),
columns=X_train.columns
)
X_test_mm = pd.DataFrame(
nl.transform(X_test),
columns=X_test.columns
)
rmse_mm = mean_squared_error(y_test, y_pred, squared=False)
print(rmse_mm)
출력:0.25470676902648787
표준화는 정규화보다 정밀도가 더 좋다.
분산을 계산에 넣어 데이터의 분포를 반영했기 때문이겠지.
RMSE
표준화/귀일화 전
0.2429
표준화 후
0.2424
귀일화 후
0.2547
5일째가 여기까지입니다. 끝까지 읽어주셔서 감사합니다.
Reference
이 문제에 관하여([5일차] 표준화, 정규화 시도[2021 추가 달력]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/megane_otoko/articles/2021ad_05_standard_normal텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)