回帰分析のときに、教師ありデータ (目的変数 y の値がそろったデータ) と教師なしデータ (y の値がないデータ) とを合わせてから主成分分析 (Principal Component Analysis, PCA) で成分 (潜在変数) を抽出し、教師ありデータにおいて PCA 後の成分と y との間で回帰モデルを構築する Python コードを作成しましたので共有します。この手法を図で表すとこんな感じです。
いわゆる半教師あり学習 (半教師付き学習) です。半教師あり学習のメリットはこちらに書いたとおりです。
コードはこちらにあります。
メインのプログラムは semi_supervised_learning_pca.py です。サンプルデータセットとして、教師ありデータ: descriptors_with_logS.csv、教師なしデータ: descriptors_for_prediction.csv がありますので、semi_supervised_learning_pca.py と同じフォルダ (ディレクトリ) に置いてください。教師ありデータは水溶解度のデータセットです。
回帰分析手法は以下の中から選べます。
- ‘pls’ : Partial Least Squares regression (PLS)
- ‘rr’ : Ridge Regression (RR)
- ‘lasso’ : Least Absolute Shrinkage and Selection Operator (LASSO)
- ‘en’ : Elastic Net (EN)
- ‘lsvr’ : Linear Support Vector Regression
- ‘nsvr’ : Nonlinear Support Vector Regression [Gaussian kernel]
- ‘dt’ : Decision Tree (DT)
- ‘rf’ : Random Forest (RF)
- ‘gp’ : Gaussian Process regression (GP)
それぞれの詳細については、こちらをご覧ください。
まず、教師ありデータの説明変数 X と教師なしデータとを合わせて、PCA を行います。PCA の主成分を何成分まで用いるかは、選んだ回帰分析手法を用いて、教師ありデータでクロスバリデーションにより最適化します。
検討する主成分の最大数は max_pca_component_number の変数で設定してください。
最適化された数の主成分を説明変数として、回帰モデルを構築し、教師なしデータの y の値を推定します。推定値は estimated_y.csv という名前の csv ファイルに保存されます。
興味がありましたら、ぜひご活用ください。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。