データの水増し
データの水増しをアンケートでやったら偽造ですが、上手に機械学習させるために、少ないサンプルデータに対してよく行われている、とのこと。
特に画像認識系で、画像データが少ない場合など、ノイズを与えてデータを複製する。
後学のため、アンケートデータに対して実施。
data augmentationというらしく、こちらを参考にさせて頂きました。
データ水増しのステップ
1.データを標準化する
2.標準化したデータに対して主成分分析(PCA)を実施
3.PCAを復元する
これにより、単なる元データのコピーではなく、少し揺らぎのあるデータが取得できる。
実際のコード
以下の手順で、データが標準化されている前提です。
PCAのおまじない。あまり圧縮しすぎると復元できないので、1次元削減。
from sklearn.decomposition import PCA
#(元のカラム数=5 - 1)
n_comp = 4
pca = PCA(n_components=n_comp, random_state=42)
圧縮・復元・変換
#PCAによる圧縮
pca_res = pca.fit_transform(questionnaire_s)
#PCAの復元化
restore_list = pca.inverse_transform(pca_res)
#データフレームに変換
aug_data_df = pd.DataFrame(restore_list)
データフレーム変換前に標準化を戻すことも可。
#標準化を元に戻す
restore_list = restore_list*ss.scale_ + ss.mean_
次元削減の主成分分析と因子分析は、どの説明を聞いても、未だ納得できないですが、データの水増しに使えることで、少し理解が進みました。