機械学習2

1.主成分分析

 相関のある多数の変数から相関のない少数で全体のばらつきを最もよく表す主成分と呼ばれる変数を合成する多変量解析の一手法である。データにもよるが、分散が大きい主成分を選択することで少ない次元のデータで元のデータの特徴を表現することが可能になる。それぞれの主成分を表現する固有ベクトルは互いに直交する。
 第k主成分の分散の全分散に対する割合を寄与率(全体に対する情報量の割合)と呼ぶ。すべての主成分の寄与率の総和は1になる。kについては、データの各成分に対する分散が大きい順(つまり、情報量が大きい順)に1、2、…と割り振られる。

 演習問題では、乳ガン診断結果のデータを扱った。(サンプル数は569、説明変数は30、目的変数は診断結果(良性/悪性))
説明変数の主成分に対する寄与度を降順に並べてみた。
f:id:black_07:20210619102542p:plain
 第一主成分で40%強、第二主成分を合わせると約60%の寄与度であり、多くの情報が2つの主成分だけで集約できていると期待できる。
f:id:black_07:20210619102938p:plain
 2つの主成分だけでxy座標分布にプロット(横:第一主成分スコア、縦:第二主成分スコア)すると、若干混在エリアがあるものの分離境界が見えてくる。(図中、〇が良性、三角が悪性。)
 2つの主成分で情報圧縮の後、ロジスティック回帰で診断結果を推定した。その結果、実績に対して、訓練データで97%、テストデータで94%の割合で推定が一致することを確認した。60%の情報量で90%以上正しく診断できるとは驚いた!
f:id:black_07:20210619103821p:plain

2.アルゴリズム

a.k近傍(k-NN)法

 k-NNとはあるデータ点のラベルを予測する際、あらかじめラベルが与えられているデータの中で、予測対象データ点とのデータ点を距離が短い順にk個取り出し、それらのラベルの最頻値を割り当てる手法である。分類問題の一種で直感的にアルゴリズムを理解しやすい特徴がある。
 例えば0、1のラベルがあり、予測対象データ点のラベルを予測するとき、k=3でそれらのラベルが0、0、1ならば予測対象データ点は0と判定される。つまり、予測対象データ点、空間でもkの値によって、異なるラベルが与えられることがある。
 一般的に最近傍法はkが大きいほど、決定境界は滑らかになる。また、参照されるラベルは与えられるため、判定ステップはある反面、訓練ステップがない。

 numpyによる演習問題をやってみた。ランダムにクラスターを2つ作り、k-NN法により境界を作成した。上がk=3、下がk=9の場合。k=9の方が境界は滑らかだが、中央にある黄色の2点をうまく分類できていない。
f:id:black_07:20210619114754p:plain

f:id:black_07:20210619114843p:plain

b.k-means法

 教師なし学習クラスタリング手法である。ちなみに、クラスタリングは分類と異なる。「分類」は事前に決まっている分類(例えば犬や猫など)に未知のデータに対して振り分けることを意味する。クラスタリングはデータの中で(特に事前に定義されていない)集まりを見つけることを意味する。なお、クラスタリングに際し、k(いくつに分けるか)は事前に与えられる。
 具体的な手順は以下の通り。
  1.各クラスタ中心の初期値(k個)を設定する。
  2.各データ点に対して、各クラスタ中心との距離を計算し、最も距離が近いクラスタを割り当てる
  3.すべてのデータ点にクラスタを割り振ったら、各クラスタの平均ベクトル(中心)を計算する→1.を更新
  4.収束するまで2, 3の処理を繰り返す

 演習問題をやってみた。
 まずは3つの集団をベースにランダムに発生させた2次元分布。
f:id:black_07:20210619115901p:plain
 これをk=3でk-means法にかけてみた。
f:id:black_07:20210619120014p:plain
 きれいに分割。k=5でもやってみた。
f:id:black_07:20210619120303p:plain
 微妙かな。kの選定は結構大事ですね。時間があれば、しらみつぶしにやってみるのもありかと思いますが。

3.サポートベクターマシン

 サポートベクターマシン教師あり学習で分類問題にも回帰問題にも用いられる。
 一番基本となる問題としては、2値の分類問題になります。
 サポートベクターマシンでは、2値の分布に対して「最も近い点(サポートベクター)までの距離が遠くなるよう決定境界を決めます」。このことを「マージン最大化」と呼びます。
 簡単な例として、直線で分離できるような下図のような2つの分布について、黄色と紫色の点のうち、境界線に最も近い、黒丸で囲んだ点をサポートベクターという。サポートベクターから判別する境界の距離(図中ピンクの方向に延ばす)をマージンというが、その値が最大になるよう、分類境界(図中実線)を決める。
f:id:black_07:20210619140859p:plain
 ということは、分類境界に最も近いデータ以外を取り除いてしまっても、分類境界は変化しない。また、サポートベクターの点数は分離境界の両端1つずつ、つまり2点以上存在する。

 線形で分類できない場合、低次元のデータを高次元に写像して分離するカーネルトリックという手法を用いる。下の図は、目玉焼きのような分布に対して、RBFカーネル(ガウシアンカーネル)を利用し、超平面で(非線形的に)分離した例である。
f:id:black_07:20210619141031p:plain
 カーネルの種類としては、ほかにシグモイドカーネル、多項カーネルなどがある。

 マージン最大化の定義については、厳密に制約を守る条件で分類する「ハードマージン」と、制約を緩和し、データ点がマージン内部に入ることや誤分類を許容することで、ハードマージンでは解が得られないケースを回避する「ソフトマージン」という考え方がある。