データセットに合わせて主成分分析PCAを有効に活用する

回帰モデルやクラス分類モデルを構築するとき、データセットの前処理や特徴量の低次元化を目的として、主成分分析 (Principal Component Analysis, PCA) を行うことがあります。

主成分分析(Principal Component Analysis, PCA)~データセットの見える化・可視化といったらまずはこれ!~
主成分分析(Principal Component Analysis, PCA)について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、PCAで何ができるか、どのようにPCAを計算するかが説明されています。pd...

 

可視化・低次元化の手法としては最も基本的な線形手法であり、最も単純な手法といってよいと思います。他の様々な高度な手法や非線形手法がある中で、

独立成分分析 (Independent Component Analysis, ICA) ~PCAの無相関より強力な ”独立” な成分を抽出~
よく、主成分分析(Principal Component Analysis, PCA) と比べられることが多い、独立成分分析 (Independent Component Analysis, ICA) についてです。PCA ではデータを低次...
t-distributed Stochastic Neighbor Embedding (t-SNE) ~データの可視化に特化した手法~
今回は、t-distributed Stochastic Neighbor Embedding (t-SNE)についてです。変数 (特徴量・記述子など) がたくさんある (多変量・多次元の) データセットが与えられたときに、適切に2次元平面...
Generative Topographic Mapping (GTM)~自己組織化マップ(SOM)の上位互換の手法~
Generative Topographic Mapping (GTM) について、pdfとパワーポイントの資料を作成しました。GTMの特徴や、データセットが与えられたときにGTMで何ができるか、GTMをどのように計算するかが説明されていま...
ガウス過程による潜在変数モデル(Gaussian Process Latent Variable Model, GPLVM)で非線形性を考慮した潜在変数を計算しよう!
ガウス過程による教師なし学習である Gaussian Process Latent Variable Model (GPLVM) について、pdfとパワーポイントの資料を作成しました。infinite Warped Mixture Mode...
低次元化を駆使して直接的逆解析法の予測精度を向上させる手法を開発しました![金子研論文]
金子研の論文が Chemometrics and Intelligent Laboratory Systems に掲載されましたので、ご紹介します。タイトルはLifting the Limitations of Gaussian Mixtu...

 

PCA に物足りなさを感じる人もいらっしゃるかもしれません。特徴量間の非線形性を考慮できる GTM や DAE など、手の込んだ手法を使いたくなる人もいらっしゃるでしょう。もちろん、これらの手法によりモデルの予測精度が向上することはありますが、いつもそうなるとは限りません。もしろ、データセットの準備に工夫を入れて、データセットが複雑なものになればなるほど、今のデータセットに適した方法を工夫して、シンプルな PCA を使用する方が的確に特徴量を抽出できたりもします。

例えば、高分子材料データにおける複数の原料や、有機合成反応データにおける触媒や基質など、複数の分子の組み合わせが一つのサンプルになっているときを考えます。サンプルの特徴量を考えるとき、一般的には、まず分子ごとに分子記述子を計算し、組成比をからめて特徴量にしたり、分子記述子を横につなげて特徴量にしたりして、場合によっては重合条件や合成条件など別のパラメータも横につなげて、説明変数 x を準備してから、PCA を実行します。ただ、分子の立場になって考えると、複数のサンプルで同じ分子が使われていると情報を圧縮するという観点では効率的でなかったり、重合条件や合成条件など分子記述子とは関係のない基本的には相関関係のない特徴量があったりと、PCA が本領発揮できる状況ではありません。

この場合は、使用する (重複なしの) 分子だけ集めて別途データセットを作り、これに対して PCA を行い、分子記述子を潜在変数に変換してから、その潜在変数を分子記述子の代わりに使用する方が効率的です。

プロセスデータにおいても、すべてのプロセス変数を横につなげて x にしたり、プロセス変数から特徴量を抽出してからまとめて x にしたりしてから、PCA を行うのが一般的です。ただ、複数の単位操作が順番に行われるときなど、プロセスが複雑になればなるほど、単位操作のプロセス変数ごと、単位操作ごとに抽出した特徴量ごとに PCA をしてから、それぞれ抽出された潜在変数をまとめて x とするほうが効果的に情報圧縮できる場合があります。

以上のような工夫をせずに、とりあえず非線形手法を使ってなんとかすることで、同じようなことができる可能性もありますが、データセットの背景・バックグラウンド、扱うデータの素性や意味合いを考えて、扱いを工夫してから、線形手法の PCA を使うほうが、頑健な (ロバストな) 情報圧縮ができたり、意味のある潜在変数の抽出ができたりします。また PCA は寄与率や累積寄与率により抽出した情報量を検討できたり、ローディングで主成分の向きを確認できたり有用なこともあります。ぜひデータセットをよく観察し、よく考え、適切な前処理や低次元化を行うとよいでしょう。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました