ML | AI/내용 정리 - 2022.07.11 Feature Engineering 방법과 효과 - Combining(Cross columns) columns를 결합해서 새로운 column 생성 조합에 사용되는 column에 unique한 값이 너무 많다면 단순히 경우의 수 나열과 똑같아져 의미가 없어짐 따라서 unique한 값이 적은 column끼리 묶어서 새로운 columns를 만들도록 하자 → 새로운 특성을 발견 가능 wide&deep에서 활용 Categorifying 0 ~ n - 1까지의 category로 변경 latent vector를 얻는 딥러닝에서 많이 활용 기존 column에 hashing으로 str 값이 입력된 경우 category(int)로 변경하면 데이터를 줄일 수 있음 자주 등장하지 않는 category를 그대로 사용한다면 overfitting이 발생! 자주 등장하지 않는 category를 묶어 다른 값으로 변환 만약 Train set에 없다가 validation set에 갑자기 나온 category도 별도로 묶어서 관리 돼야 함 ex) low frequency : 0, unknown : 1로 설정 Target Encoding 특정 columns를 기준으로 groupby하여 얻은 값(sum, mean 등등)을 통해서 Encoding 이때, 데이터가 적은 category의 경우 소수의 데이터에 overfitting 발생 → smoothing 필요 데이터가 적은 category는 global mean과 같은 대체 값 사용 데이터가 많은 category는 해당 category의 값을 그대로 사용 Encoding 값을 얻는 과정에서 Train 데이터에 overfitting 된다는 단점 → Out of Fold Prediction으로 완화 가능 Count Encoding columns 기준 개수를 세어 Encoding 인기도, 활성도 파악 가능 3가지 방법으로 처리 가능 Train 데이터에서 얻은 값을 Valid 데이터에 사용 Train 데이터와 Valid 데이터에서 따로 구함 Train/Valid를 concat후 얻은 값 활용 → 실제 서비스에서 활용할 때는 1번이 적합 Binning 순서가 있는 범주형 변수 혹은 연속형 변수에 활용 values를 단순화하여 overfitting 방지 domain knowledge를 활용해 나눌 수 도 있음 상대적인 수치 반영에 효율적 → Standardization 효과 과자가 10만원인 경우와 스마트폰이 10만원인 경우를 다르게 반영할 수 있음 Scaling Normalization skewed 데이터의 경우엔 log 변환 후에 사용 min-max 0 ~ 1 사이 값으로 표현 가능 Gauss Rank Gauss Rank 값에 순서를 매기기 (-1, 1) 사이 값으로 scaling erfinv 함수를 통해 gaussian 분포로 변형 https://medium.com/rapids-ai/gauss-rank-transformation-is-100x-faster-with-rapids-and-cupy-7c947e3397da 참고 GitHub - rapidsai/deeplearning Contribute to rapidsai/deeplearning development by creating an account on GitHub. github.com 공유하기 게시글 관리 구독하기싶만생각 Contents 당신이 좋아할만한 콘텐츠 AARRR, Retention, Cohort 분석 알아보기 2022.08.26 [짧] Odds(오즈)와 Logit(로짓) 알아보기 2022.08.19 Dot-product Attention과 Scaling 필요성 2022.06.14 Gradient Descent(경사 하강법)에서 Learning Rate(학습률)를 작게 설정하는 이유 2022.04.26 댓글 0 + 이전 댓글 더보기