pirika logo

ホームページ Pirikaで化学 ブログ 業務案内 お問い合わせ
Pirikaで化学トップ 情報化学+教育 HSP 化学全般
情報化学+教育トップ 情報化学 MAGICIAN MOOC プログラミング
MAGICIANとは、材料ゲノム(Materials Genome)、材料情報学(Materials Informatics)、情報化学(Chemo-Informatics)とネットワーク(Networks)を結びつけて(Associate)いかれる人材です。

情報化学+教育 > 情報化学 > PCA(主成分分析)

2019.1.22

私は、数学が嫌いで化学の道に進みました。
そんな私がPLS法やPCA法を教えるのはもってのほかだと思います。
詳しい事は章末の書籍で自分で学んでください。
記述に誤りがあればご指摘ください。

しかし、スマホの原理を知らなくてもスマホは使えます。

実際に使ってみてから、その解析手法がどんな特徴を持っているかを実感として身につけて行くのでも良いと思っています。
それに、実際に化学の領域の問題に適用した例題がとても少ないのが問題です。
せいぜい、スペクトルとオクタン価の問題を何十年も繰り返しています。

PLS法の解析の章でも述べましたが、線形重回帰、主成分分析、PLS分析どれにも共通して言えることは、化合物の物性と分子構造との関係を解析したいということでしょう。

それを定量的に行うのが回帰分析だと自分は思っています。
要は求めたい目的変数(y)に対して、知りたいものの性質を表すものを説明変数(x)として、

y=function(X1・・Xn)

の関係を定量的に知りたいと言う事です。

主成分分析は逆行列を求めなくてはならない分、手間が大きくなります。

行列が大きくなってくるとPLSの方が有利になります。

逆にPLSには無く主成分分析にある特徴は何かあるのでしょうか? 

それについてここで見ていきましょう。

ブラウザーバージョンのPCAプログラムを立ち上げてください。

上のような画面が現れます。Subtrack AverageとNormaliseにチェックを入れます。

そして、まず最初はPLS法でもやった、スペクトルとオクタン価の関係をPCAで解析してみましょう。下記のテキストエリアのデータをコピーして表計算ソフトにペーストしておきます。

このデータは、1−36水準の近赤外のスペクトルデータと第2列目にはオクタン価が入ったテーブルになります。
つまり、目的変数はオクタン価、説明変数はスペクトル値となります。

これをPCAソフトの上部のテキストエリアにペーストします。(データはタブ区切りである必要があります。)

そしてRead Dataボタンを押して、Calc. PCAボタンをおします。このぐらいのサイズの計算であれば、結果はすぐに表示されるでしょう。

計算結果を全て選択して、テキストエディターにペーストしておきます。

結果のうち最初の1行目からは主成分をいくつ選択したらどのくらい現象を正しく記述できるかが示されています。

図で見てみましょう。

4つぐらいの主成分で99%以上記述できていることがわかります。

この意味を考えてみましょう。
もともとのデータは、36箇所のスペクトルデータから、1つのオクタン価に紐づけられているデータがありました。

つまり36次元ベクトルでした。

ところが、この36次元ベクトルはPLSの所でも示したように非常によく似たベクトルです。

人間は3次元ベクトル以上は頭の中に思い浮かべられないので、次元を下げることを考えます。

例えば、左の図では2次元のベクトルが5つあります。

ベクトルの大きさは異なるが、向きは非常に似ています。

そこで、X軸、Y軸を回転してあげると右のようになります。
X’軸はだいたい元のベクトルの大きさとなり、Y'軸は非常に小さな値になります。

Y'の値が十分小さければ、軸の回転によって2次元ベクトルを1次元ベクトルに下げたことになります。

元々36次元ベクトルあったものを、軸の回転によってどのくらい次元が下げられるか?

と言う質問に対して、PCA分析は、5つの大事な軸を使えば、99.68%元のベクトルを表現できると言う答えを返しています。

この大事な軸のことを5つの主成分と呼びます。

各軸は直交していることが必要になります。

直交と言うのはベクトルの内積がゼロであると言うことです。

元のX,Y軸も(1,0)*(0,1)で内積はゼロになります。

独立成分分析というのはこの内積がゼロという条件すら取り除いてしまった解析法です。

難しい話は、ソフトが皆やってくれる。大事な軸が幾つあるか?だけに集中しましょう。

ここまでの話は、オクタン価(yの値)は全く使っていません。

そこがPLSと大きく違う所です。

説明変数がたくさんあるときに、説明変数を減らす事ができるというだけのことです。

y=function(X1・・X36)
y=functionB(X'1・・X'5)

最初に述べましたが、やりたい事は定量的にオクタン価を予測する回帰式を得ることです。

そこで、大事な軸5だけを使ってfunctionBを求めてあげる事を考えなくてはなりません。

そこで、X1-X36からX'1-X'5へ変換したテーブルを作る必要があります。

それには先ほどのPCA計算結果の中のCalculate Schemeを抜き出してきます。

第1主成分は、
0.2100103141999724*C2+0.21570854997480743*D2+.... -0.09923093239537442*AL2

で表されます。これは表計算ソフトの計算式そのものなので、テーブルの後ろの方の2行目にペーストします。

そして、C列からAL列の値をPC1-PC5に変換したテーブルを作成します。

PLS法と違って有利な点は、このテーブルの変換はy(オクタン価:B列)を使っていないので、予測したいスペクトルも変換できる点です。

(PLSではそれ用のプログラムを書かなければなりませんでした)

主成分5つのとオクタン価のテーブルを作り、重回帰解析を行えば上図のように簡単に主成分回帰の結果が得られます。

PLSの結果(下図)と比べてもほとんど変わらない結果となります。

定量的解析では、PLSでは予測値を得るのに、プログラミングの知識が少し必要になります。

どちらを使うかは好みとも言えるでしょう。

定性的解析では、重要な軸を使って、化合物を分離(毒がある、ない、燃える、燃えない)するには主成分分析の方が多く使われているような気がします。

まーどちらも使えるに越した事はないのでしょう。

次にPLSと同様に有機化合物の水への溶解度を検討してみましょう。

RDKitの出力、117識別子を使った場合には、次元数40まで減らせる事がわかります。

(40の時に97%を超えるからといって、水への溶解度の推算精度が高いわけではありません。この段階では、水への溶解度のデータは使っていません。)

40主成分を使って重回帰計算を行うと以下のようになります。式を作るのに使わなかった化合物を予測してみるとそれなりに推算できています。

PLS法ではNP15で評価しました。

そこでPCAでもPC15で重回帰式を作成してみます。

少しPLS法の方が良いような気がします。

このようにPCA法とPLS法は親戚関係のような解析法なので、目的に合わせて使いこなして行けば良いと思います。

大事なのは、RDKitの識別子だけでは精度はいまいちで、さらに良い識別子を探せるか?でしょう。

ニューラルネットワーク法などの機械学習をすればもう少し見かけはよくなると思います。

しかしその方法では、データが増えてくれば予測性能が必ず低下します。

本質的な水への溶解度を上げ下げする識別子を探す方が結局は早道です。

プログラムのタネ本は、「Excel VBAによる化学プログラミング、佐藤寿邦・佐藤洋子共著 培風館 2002年」です。

ここに記載のVBのプログラムをJavaScriptに変換しました。

主成分分析に関する書籍はPLSのものとかぶります。

色々な本で勉強したが、本質的に数学は嫌いなのでモノにはならなかった。。。

情報化学+教育 > 情報化学 > PCA(主成分分析)


Copyright pirika.com since 1999-
Mail: yamahiroXpirika.com (Xを@に置き換えてください) メールの件名は[pirika]で始めてください。