1. 아웃라이어에 강건해진다.
RMSLE는 아웃라이어에 강건(Robust)하다.
예를 들어, 예측값 = 67, 78, 91, 실제값 = 60, 80, 90일 때, RMSE = 4.242, RMSLE = 0.6466으로 나온다.
예측값 = 67, 78, 91, 102, 실제값 = 60, 80, 90, 750일 때 RMSE = 374.724, RMSLE = 1.160으로 나온다. 750이라는 아웃라이어 때문에 RMSE는 굉장히 증가했지만 RMSLE의 증가는 미미하며, RMSLE는 아웃라이어가 있더라도 값의 변동폭이 크지 않다. 따라서 RMSLE는 아웃라이어에 강건하다고 말할 수 있다.
2. 상대적 Error를 측정해준다.
예측값과 실제값에 로그를 취해주면 로그 공식에 의해 아래와 같이 상대적 비율을 구할 수 있다.
예측값 = 100, 실제값 = 90일 때, RMSLE = 0.1053, RMSE = 10이고, 예측값 = 10,000, 실제값 = 9,000일 때, RMSLE = 0.1053, RMSE = 1,000이다.
위와 같이 값의 절대적 크기가 변하더라도 상대적 크기가 동일하다면 RMSLE 값도 동일하다. 반면, 상대적 크기가 동일하더라도 절대적 크기가 변하면 RMSE 값은 변한다. 따라서 RMSE와 달리 RMSLE는 예측값과 실제값의 상대적 Error를 측정해준다.
3. Under Estimation에 큰 패널티를 부여한다.
RMSLE는 Over Estimation보다 Under Estimation에 더 큰 패널티를 부여하게 된다. 즉, 예측값이 실제값보다 클 때보다 예측값이 실제값보다 작을 때 더 큰 패널티를 부여한다.
예측값 = 600, 실제값 = 1,000일 때 RMSE = 400, RMSLE = 0.510이고
예측값 = 1,400, 실제값 = 1,000일 때 RMSE = 400, RMSLE = 0.33이다.
예측값과 실제값의 차이는 둘 다 400이다. Over Estimation이든 Under Estimation이든 RMSE값은 동일하다. 하지만 RMSLE는 Under Estimation일 때 (즉, 예측값이 실제값보다 작을 때) 더 높은 페널티가 주어진다. 예를 들어, 배달 음식을 시킬 때 30분이 걸린다고 했는데 실제로 20분이 걸리는 건 큰 문제가 되지 않지만, 30분이 걸린다고 했는데 40분이 걸리면 고객이 컴플레인을 할 가능성이 높다. 이럴 때 RMSLE를 적용할 수 있다.
이런 방식으로 열마다 다르게 정렬 가능
df.sort_values(["carat", "depth"], ascending=[False, True]).head(5)
새로운 컬럼 만들기
df.loc[df["price"] < 900, "category"] = "low"
df.loc[df["price"] > 5000, "category"] = "high"
df["category"] = df["category"].fillna("medium")
plotly 복습
marginal_ 파라미터로 여러 그래프 겹치기 가능
px.scatter(df, x="carat", y="price", color="color", marginal_x="box", marginal_y="violin")
facet_col 파라미터로 컬럼에 따른 서브플롯 생성
px.histogram(df, x="color", color="cut", facet_col="cut")
histfunc 파라미터로 컬럼의 산술식 지정 가능
px.histogram(df, x="cut", y="price", histfunc="avg")
타겟변수 분석 -> 피처 엔지니어링의 흐름