-
멋쟁이 사자처럼 9주차 회고카테고리 없음 2022. 11. 10. 16:50
회귀 분석 모델 오차지표
mse: 오차 제곱의 합에
rmse: mse에 루트를 씌워준 형태, 오차가 클수록 가중치를 주게 됨(오차 제곱의 효과)
rmsle: rmse에 로그를 적용(자연로그), 오차가 작을수록 가중치를 주게 됨(로그의 효과)
- 로그를 취하면 좀 더 정규분포에 가까워지기도 함, 로그를 취했을때 마이너스 값이 나오지 않게 하기 위해 1을 더해준다.- np.log(x+1) = np.log1p(x)
msle: mse에 로그를 적용
- from sklearn.metrics import mean_squared_log_error (함수 사용가능)
데이터 전처리
인코딩
one-hot-encoding => pd.get_dummies(), 순서가 없는 데이터에 인코딩
ordinal-encoding => category 데이터타입으로 변경하여 ordinal encoding, 순서가 있는 데이터에 인코딩
피쳐 스케일링(feature scailing)
Feature의 범위가 다르면, Feature끼리 비교하기 어려우며 일부 머신러닝 모델에서는 제대로 작동하지 않기 때문에 피쳐 스케일링 사용
트리 알고리즘에서는 절대적인 값보다 상대적인 값에 영향을 받기 때문에 스케일링에 영향을 크게 받지 않지만 다른 알고리즘에서는 스케일링 값을 조정해 주면 모델의 성능이 좋아질 수 있다.
1. Normalization - Standardization (Z-score scaling): 평균을 제거하고 데이터를 단위 분산에 맞게 조정 (값에 평균을 빼고 표준편차로 나눠 줌)
공식: z = (X - X.mean) / std
함수: from sklearn.preprocessing import StandardScaler
2. Min-Max scaling: Feature를 지정된 범위로 확장하여 기능을 변환(값을 0-1 사이로 변환)
공식: X_scaled = (X - X.min) / (X.max - X.min)
함수: from sklearn.preprocessing import MinMaxScaler
3. Robust scaling: 중앙값을 제거하고 분위수 범위(기본값은 IQR)에 따라 데이터 크기를 조정(값에 중간값을 빼고 IQR 값으로 나누어 줌, 이상치에 가장 덜 민감)
공식: X_scaled = (X - X.median) / IQR
함수: from sklearn.preprocessing import RobustScaler
- 머신러닝 모델링에서는 fit - predict를 사용했지만 스케일링에서는 fit - transform을 사용해준다.
- 스케일링 해줄때는 판다스 시리즈 형태가 아니라 데이터 프레임 형태로 input 해줘야하기때문에 대괄호를 한 번 더 써준다.
예시) ss.fit(train[["SalePrice"]]).transform(train[["SalePrice"]])