기본 콘텐츠로 건너뛰기

5월, 2022의 게시물 표시

머신러닝 전처리, Categorical variable 처리법

머신러닝 전처리, Categorical variable 처리법 회귀분석 모델이 제대로 작동하기 위해서는 변수값들이 서로 order를 가져야만 한다. 하지만 categorical variable은 모델이 사용할만큼 그 order가 명시적이지 않다. categorical variable는 두가지로 나뉠 수 있다. 하나는 category 사이에 order가 있는경우, 나머지는 그렇지 못한 경우다. 전자의 경우는 각 category를 해당하는 order로 encoding하는 방법이 있다. 후자의 경우도 조금 복잡한 전처리 과정을 거쳐서 모델이 사용가능한 데이터로 encoding이 가능하다. 방법 1: Drop 그냥 버려서 모델에 노이즈로 작용하지 않게 한다. 방법 2: Ordinal Encoding category가 자체적인 order를 가진 경우에만 사용가능한 방법이다. 각 category를 해당하는 order로 encoding 한다. 방법 3 : One-Hot Encoding category가 order를 가지지 않는 경우를 위한 방법이다. 각 category별로 column을 만들고 column의 value가 (original value == category)에 대한 boolean value를 가지도록 encoding 한다. 이러면 각 column은 boolean value를 가지기 때문에 회귀분석모델에서 충분히 이용 가능하다. 다만 category 수가 많아지면 data의 column이 너무 많아지게 된다.

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의 값에 따른 SHAP값을

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한 상관관계를 보여줄 수도