기본 콘텐츠로 건너뛰기

글

Machine Learning: Missing Value에 대한 해결법

Machine Learning: Missing Value에 대한 해결법 1. Drop Columns with Missing Values 데이터 전처리가 간단하다. 그러나 컬럼을 통째로 버리면 그만큼 모델이 사용할 정보가 적어드는 단점이 있다. 2. Imputation Missing Values를 다른 데이터로 채워 넣는다. 1번 방법보단 전처리가 복잡하지만 여전히 간단하다. 또한 해당 column이 가진 정보도 그대로 이용 가능하다. 그러나 임의로 채워넣은 데이터로인해 정보에 왜곡이 생기는 단점이 있다. 모델은 임의로 채워넣은 데이터와 아닌 데이터를 구분하지 못한다. 3. An Extension To Imputation Imputation과 함깨, Imputation여부를 나타내는 새 column을 생성한다.  새 column들은 각각 자신이 나타내는 column에서 어떤 row가 missing value를 가지고 있는지 나타낸다. 이는 Model이 임의로 채워진 데이터들과 원본 데이터를 구분할 수 있게 한다. 즉 정보의 왜곡이 없다.

SHAP Values

 SHAP Values SHAP Values는 어떤 prediction에 각 feature들이 얼만큼의 영향을 끼쳤는지를 보여준다. SHAP의 의미 Shapley additive explanations의 약자. 기본 원리 만약 어떤 모델 $M(f_1, f_2, f_3)$에 대해 어떤 입력 $V$에 대해 $p_v = M(v_1, v_2, v_3)$의 prediction을 구하게 됬다고 하자. 그러면 우리는 기준값(= $f_1, f_2, f_3$의 기댓값) $B$로 구한 prediction $p_b = M(b_1, b_2, b_3)$와 비교해서 얼만큼 차이가 나는지 알 수 있다. 만약 이러한 차이를 만드는데 $v_1$이 얼마나 영향을 줬는지 알고 싶다면, $f_1$ feature를 제외한 나머지 feature $f_2, f_3$에 B또는 V의 원소를 채워넣는 각 조합의 경우마다 ($f_1 = v_1$일때의 prediction) - ($f_1=b_1$일때의 prediction)을 구하고 그 결과들의 가중평균을 구하면 된다. 이렇게 구한 값이 입력이 V일때 $v_1$이 가지는 SHAP 값이다. 그리고 V의 모든 원소의 SHAP 값들을 더하면 $p_v - p_b$가 나오게 된다. SHAP의 종류 SHAP는 그 구현 알고리즘에 따라 여러 종류가 있다. n개의 input Feature를 가지는 모델에서 SHAP 값을 구하면 한 feature에 대해서는 적어도 2^(n-1)개 모든 feature에 대해서는 중복을 제거하고 $2^n$의 prediction을 필요로한다. 따라서 input feature의 수가 많은 경우에 대한 다른 알고리즘을 필요로 하게된다. 그 대표적인게 deep learning model에서 사용하는 deep explainer 그리고 모든 model에서 SHAP 근사값을 빠르게 구할 수 있는 kernel explainer이다. 구현 Summary Plots 전체 records에 대한 SHAP values를 구하고 각 feature의 값에 따른 SH...

Partial Dependence Plot(PDP)

Partial Dependence Plot 어떤 black-box model 내부에서 각 feature가 prediction에 어떻게 영향을 주는지를 시각적으로 보여주는 기법이다. 기본 원리 validation dataset에서 구하고자하는 feature의 백분위수( percentile)를 전체적으로 균등하게 추출한다음 각 percentile값만을 feature의 값으로 가지는 여러가지 dataset을 만든다. 예를들면 11개의 백분위수로 나누면 feature값으로 0%백분위수만을 가지는 dataset, 10% 백분위수만을 가진 dataset, ... 100% 분위수만을 가진 데이터셋 이렇게 11개의 dataset이 만들어진다.  이제 각 dataset을 이용해 prediction을 수행하면 해당 feature값이 변화함에 따라 predicted target이 어떻게 변하는지 알 수가 있다. "YearBuilt"값의 변화에 대한 target response의 변화를 나타낸다. 좌측에서 첫번째 점이 첫 dataset으로 prediction을 수행한 결과로 이 값이 y축의 기준점(0)이 된다. 예제에서는 "YearBuilt"값이 1880일때의 예측값이 기준이다. 각각의 점들은 각 dataset으로 예측을 수행했을때의 값을 나타내고 파란영역은 그 분산을 나타낸다. 예제를 보면 알듯이, PDP를 통해 대략적인 상관관계를 유추 가능하다. 이 model에서 target은 'YearBuilt'와 강한 양의 상관관계를 가지고 있음을 알수 있다. 예제에서는 아니지만, 2차함수나 3차함수의 모양을한 non-linear한 상관관계를 보여줄 수도...