ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Tabular Data Augmentations
    인공지능(Artificial Intelligence)/기계학습(Machine Learning) 2022. 6. 27. 00:37

    Tabular Data Augmentations

    표 데이터 증강

     

    이미지나 가끔은 텍스트/시계열 데이터에서 데이터 증강이 효과적임을 보곤한다. 강아지 이미지가 회전을 하더라도 강아지이고, 신경망은 이를 이해할 수 있다.

    하지만 tabular data를 다룰 때는 상황이 약간 달라진다. table을 회전하거나 확대/축소를 할 수는 없으니.

    그렇다면 뭘 해야할까?

     

    Simple Noise (Jitter)

    간단히 말해서, columns 그 자체에 노이즈를 추가 할 수 있다. 

    이 방식에서 간단한 개선 사항을 생각한다면, 노이즈를 추가하려 할 때 columns의 표준편차(std)를 고려하는 것이다.

     

    Swap Noise

    과거에 여러 번 사용되었다. (1), (2)

    이 방법은 같은 feature column에 있는 값을 다른 값과 swapping 하는 것이다. (feature간에선 섞지 말고)

    이렇게 하면 결과물이 각 feature에 맞는 값을 여전히 포함하는 feature column이 된다. 

    def apply_noise(df, p=.75):
        should_not_swap = np.random.binomial(1, p, df.shape)
        corrupted_df = df.where(should_not_swap == 1, np.random.permutation(df))
        return corrupted_df

    출처

     

     

    swap noise의 종류

    배치 크기와 feature space 크기를 5라고 하고, noise가 발생할 확률을 20%라 하자.

    columnwise swap noise

    전체 columns중 배치 크기의 20%에서만 노이즈를 발생시키는 방법

    https://www.kaggle.com/code/springmanndaniel/1st-place-turn-your-data-into-daeta/report

    Randomized swap noise

    무작위로 20%의 노이즈 값을 추가하는 방법

    https://www.kaggle.com/code/springmanndaniel/1st-place-turn-your-data-into-daeta/report

    Rowwise swap noise

    각 행별로 20%의 노이즈를 추가하는 방법

    https://www.kaggle.com/code/springmanndaniel/1st-place-turn-your-data-into-daeta/report

    MixUp, CutMix

    Computer Vision에서 자주쓰는 방법으로  tabular 데이터에선 행에 대한 선형 조합으로 구현할 수 있다.

    MixUp
    CutMix

    CTGan

    이 논문에서 tabular data를 위한 GAN 구조를 제안하였다. 과거 kaggle에서 사용된 적이 있따.

     

     

    참고

    https://www.kaggle.com/competitions/amex-default-prediction/discussion/332930

    '인공지능(Artificial Intelligence) > 기계학습(Machine Learning)' 카테고리의 다른 글

    Probability calibration  (0) 2022.07.11
    KAGGLE ENSEMBLING GUIDE  (0) 2022.06.27
    Activation Function  (0) 2022.04.29

    댓글

Designed by Tistory.