http://www.ashinari.com/2009/09/30-029113.php
第13回 KAIM 金沢人工知能勉強会
混合した信号を分解する視点からみる主成分分析
tomitomi3
注意
本資料に使われている文献、図は勉強会及び教育目的のために引用しています。
引用されている文献の内容、図は著作者に帰属します。
2019/11/24 新規&発表
2019/12/04 加筆修正
ソースコード
• スライド中の実験及び図を生成したソースコード
は下記参照
– https://github.com/tomitomi3/KAIM
– Jupyter Notebook形式になっています
– 本日の資料は
20191124_decomposition_mixing_signals_using_PCA
abstract
• 一般的にPCA(主成分分析)は、機械学習にお
ける「教師無し学習」という位置づけにある。
PCA単体でアプリケーションとしての利用はせ
ず、各種データの前処理(多重共線性の回避、
特徴量抽出/次元縮約)として使われる。PCA
を混合した信号(時系列データ)を分解すると
いう視点からながめてみる。
自己紹介
• 第6回 KAIM 発表資料 参照
– https://www.slideshare.net/tomit3/6-kaim-120127099
– 医療機器のソフトウェア開発など
– @tomit3
– https://github.com/tomitomi3
• 最近
– 最近pythonをかじり始めた。ハンズオン形式もよいなと思っている。
– 2019/12/14,15 NT加賀
• ものづくりのイベントがあります
• http://wiki.nicotech.jp/nico_tech/index.php?NT%E5%8A%A0%E8%B3%802019
目次
• 主成分分析とは
• 信号(データ)分解からみるPCA
• 他の分解
目次
• 主成分分析とは
• 信号(データ)分解からみるPCA
• 他の分解
主成分分析とは
• 機械学習技法の分類で教師無し学習の1つ
• 次元削減/圧縮、特徴量抽出に使用
・回帰/判別分析
┗ロジスティック回帰 etc
・サポートベクターマシン
┗非線形SVM etc
・決定木
┗ランダムフォレスト etc
・ニューラルネットワーク
┗Deep Learning etc
・k-means法
・主成分分析
┗カーネルPCA etc
・独立成分分析
・Q学習
・Deep Q Network
教師あり学習については第11回 KAIM 金沢人工知能勉強会 改めて機械学習を広く浅く知る(https://www.slideshare.net/tomit3/11-kaim)
教師あり学習 教師無し学習 強化学習
他にも
k-NN法、アンサンブル学習、ベイズを用いた手法 etc
主成分分析(PCA)とは
• 参考文献から主成分分析の定義を抜粋
– “相関のある多数の変数から相関のない少数で全体のばらつき
を最もよく表す主成分と呼ばれる変数を合成する多変量解析の
一手法。データの次元を削減するために用いられる。”[1]
– “多変量の資料から、エッセンスとなる少数の変量を合成し、それ
で資料を分析するのが主成分分析”[2]
– “主成分分析(pincipal component analysis) は,各データを主部分
空間と呼ばれる低次元の線形空間上へ直交射影する方法であ
る。(略)データの統計的特徴を保持しつつ,次元を圧縮すること
が可能になる。”[3]
– “主成分分析(Principal Component Analysis :PCA)は、さまざまな
分野にわたって広く使用されている教師なし線形変換法であり、
最もよく用いられるタスクは次元削減である。”[4]
– “主成分分析は、学習データの分散が最大になる方向への線形
変換を求める手法である。”[5]
[1]主成分分析, https://ja.wikipedia.org/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90
[2]涌井 良幸, 涌井 貞美, 図解でわかる多変量解析, 日本実業出版社, 2001 [3]後藤 正幸, 小林 学, 入門パターン認識と機械学習, コロナ社, 2014
[4]Sebastian Raschka, Python機械学習プログラミング 達人データサイエンティストによる理論と実践, インプレス, 2016
[5]平井 有三, はじめてのパターン認識, 森北出版, 2012
主成分分析(PCA)とは
• 参考文献から主成分分析の定義を抜粋
– “相関のある多数の変数から相関のない少数で全体のばらつき
を最もよく表す主成分と呼ばれる変数を合成する多変量解析の
一手法。データの次元を削減するために用いられる。”[1]
– “多変量の資料から、エッセンスとなる少数の変量を合成し、それ
で資料を分析するのが主成分分析”[2]
– “主成分分析(pincipal component analysis) は,各データを主部分
空間と呼ばれる低次元の線形空間上へ直交射影する方法であ
る。(略)データの統計的特徴を保持しつつ,次元を圧縮すること
が可能になる。”[3]
– “主成分分析(Principal Component Analysis :PCA)は、さまざまな
分野にわたって広く使用されている教師なし線形変換法であり、
最もよく用いられるタスクは次元削減である。”[4]
– “主成分分析は、学習データの分散が最大になる方向への線形
変換を求める手法である。”[5]
[1]主成分分析, https://ja.wikipedia.org/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90
[2]涌井 良幸, 涌井 貞美, 図解でわかる多変量解析, 日本実業出版社, 2001 [3]後藤 正幸, 小林 学, 入門パターン認識と機械学習, コロナ社, 2014
[4]Sebastian Raschka, Python機械学習プログラミング 達人データサイエンティストによる理論と実践, インプレス, 2016
[5]平井 有三, はじめてのパターン認識, 森北出版, 2012
主成分分析(PCA)とは
• 概要
– 「情報を減らさないように、説明変数数より少ない
新しい変数(特徴ベクトル)を作る」
• 情報を減らさない:
– 分散が最大になるように
• 説明変数数より少なくする:
– (分散が最大となる)混合行列wの上位の行ベクトルと特徴ベク
トルを乗算
• 特徴ベクトルを作る:
– 上記の混合行列wを乗算
次ページ具体例⇒
y1が第1主成分, y2が第2主成分
第1主成分
4.554378
6.431778
...
1. 前処理(中心化or標準化 ※扱うデータが全て同じ単位なので中心化でOK)
2. 特異値分解or共分散行列の固有値分解
3. 前処理済データ行列と混合行列Wを乗算
– ※特異値分解したSVD(x)=U S VのV^Tが混合行列Wに相当
手順:
• 主成分分析後の第n成分のみ使用=混合行列n行以降を削除と等価
– 例:第1主成分のみ:𝑦 = 𝑤11 𝑤12 𝑥
• 混合行列の行の並びは分散が強い(=信号源が強い)順に並ぶ
ある2次元の変数(特徴ベクトル) x1,x2を主成分分析
𝑦 𝑡 = 𝑊𝑥 𝑡 =
𝑤11 𝑤12
𝑤21 𝑤21
𝑥1
𝑥2
主成分分析(PCA)とは
• 具体的な利用シーン
– 次元削減/圧縮
• 特徴ベクトル(説明変数)を減らす
– データ視覚化のために減らしたい
» 特徴ベクトルが4次元以上だと表現が難しい
– 機械学習を行う前の前処理
» 似ている(相関が高い)特徴ベクトルをまとめるor削除
• 関連:多重共線性の回避 ≒ 数値計算の不安定性回避
– 計算量低減
– 特徴量抽出
• 意味のある特徴ベクトルだけ抽出/削除したい
次ページ具体例⇒
No. 国語テスト1 国語テスト2 数学テスト 合否
1 90 80 50 合格
… … … … …
2種類の国語のテスト、数学のテストの結果から合否を予測する
説明変数:各種テスト 目的変数:合否
ロジスティック回帰(分類のアルゴリズム)で予測モデルを作成
𝑓 𝑥 = 𝑤1 𝑥1 + ⋯ + 𝑤 𝑛 𝑥 𝑛 + 𝑎
𝑝(1; 𝑥) =
1
1 − 𝑒−𝑓(𝑥)
=
1
1 − 𝑒−(𝑤1 𝑥1+⋯+𝑤 𝑛 𝑥 𝑛+𝑎)
𝑝 0; 𝑥 = 1 − 𝑝(1; 𝑥)
X1=国語テスト1
X2=国語テスト2
X3=数学テスト
No. 国語テスト1 国語テスト2 数学テスト 合否
1 90 80 50 合格
… … … … …
2種類の国語のテスト、数学のテストの結果から合否を予測する
説明変数:各種テスト 目的変数:合否
結果:
accuracy = 0.864
confusion matrix =
[[56 13]
[ 4 52]]
coefficient = [[-0.06441062 0.16919924
0.0143036 ]]
intercept = [-5.76899425]
No. 国語テスト1 国語テスト2 数学テスト 合否
1 90 80 50 合格
… … … … …
2種類の国語のテスト、数学のテストの結果から合否を予測する
説明変数:各種テスト 目的変数:合否
結果:
accuracy = 0.864
confusion matrix =
[[56 13]
[ 4 52]]
coefficient = [[-0.06441062 0.16919924
0.0143036 ]]
intercept = [-5.76899425]
←国語テスト1の点数が高いと不合格?
No. 国語テスト1 国語テスト2 数学テスト 合否
1 90 80 50 合格
… … … … …
2種類の国語のテスト、数学のテストの結果から合否を予測する
説明変数:各種テスト 目的変数:合否
結果:
accuracy = 0.864
confusion matrix =
[[56 13]
[ 4 52]]
coefficient = [[-0.06441062 0.16919924
0.0143036 ]]
intercept = [-5.76899425]
国語テスト1の点数が高い人は
国語テスト2の点数が高い!(高相関)
相関の高い説明変数が存在したとき
の回避策
・正則化を用いて抑制
L1ノルム=変数の縮小選択
L2ノルム
・相関の高い説明変数を削除
・相関の高い説明変数を合成
→この場合は単純加算でもOK
(線形の分類/回帰モデル)だけの問題?
散布図行列を眺めてみる
PCA後のデータで散布図行列を描いてみる
第1主成分(PCA1軸)、第2主成分(PCA2軸)で分離される事が分かる
第1,2主成分を用いてロジスティック回帰を行う
結果:
accuracy = 1.0
confusion matrix =
[[69 0]
[ 0 56]]
coefficient = [[4.99597397 3.40544357]]
intercept = [3.78853398]
寄与率(主成分がどれだけ元の信号説明
しているかを表す値)
[0.66637975 0.33065191 0.00296834]
※第1主成分で66%, 第2主成分で33%
ネタばらし
• 多変量正規分布に従
う乱数生成時、相関
が高くなるように生成
目次
• 主成分分析とは
• 信号(データ)分解からみるPCA
• 他の分解
信号(データ)分解からみるPCA
• 具体的なアプリケーションとして脳波データ
– 多電極で同時計測される多次元の時系列データ
– 電極配置 10-20法といったルールがある
脳波電極1:
・・・ ・・・
脳波電極2:
脳波電極3:
電極1
電極2
脳波データ(イメージ)
神経細胞の活動によって生じる電位
• 神経細胞の活動によって生じる電流が頭皮、頭蓋骨、
髄膜(硬膜)、髄液を通り電位差として頭皮に発生=脳波
– 頭皮、頭蓋骨、髄膜(硬膜)、髄液は抵抗
– 神経細胞の活動由来の電流は微弱
– 頭皮に生じる電位差は数[μV]~数[十μV]
電流の流れ→
(体積電流)
オームの法則で簡単に考えると
VEEG=INeuron R
※各成分は下記になる
VEEG:脳波
INeuron:神経細胞によって生じた電流
R:髄液などの抵抗成分
ネットワーク(未知)
R I
←電極1と2の2点間に電位差として
神経活動由来の電位が計測される
実際には複数の電極(20~)で計測
電流源→
髄膜(硬膜)/髄液
頭蓋骨
頭皮
電極1
電極2
参考資料
脳波データ
• OSSの解析ソフトBrainstorm[1]の
チュートリアル用に公開されている脳波データ
[1]https://neuroimage.usc.edu/brainstorm/Introduction
脳波データ
• 欲しい信号と欲しくない信号が混合されて計測
– 欲しくない信号を除外、欲しい信号のみ抽出できな
いか?
↑欲しい信号
脳由来の信号
↑欲しくない信号
例:電源ノイズ、心電図etc
信号を分解(分離)する方法⇒
𝑦 𝑡 = 𝑊𝑥 𝑡 =
𝑤11 ⋯ 𝑤1𝑛
⋮ ⋱ ⋮
𝑤 𝑛1 ⋯ 𝑤 𝑛𝑛
𝑥1(𝑡)
⋮
𝑥 𝑛(𝑡)
観測・計測信号は混合された信号と考える
遅延時間なく、非線形要素もなく、線形変換されたものと考える
𝑦 𝑡 観測・計測信号(例:センサーからの観測・計測信号, 𝑛)
𝑥 𝑡 信号源(信号源数はp個、ただし p ≤ 𝑛 )
𝑊 混合行列(𝑛 × 𝑛 正方行列)
上記のような都合の良い混合行列を求めることが出来たら、
混合行列の逆行列(復元行列)から信号源𝑥 𝑡 に分離できるはず。
𝑥 𝑡 = 𝑊−1
𝑦 𝑡 =
𝑤11 ⋯ 𝑤1𝑛
⋮ ⋱ ⋮
𝑤 𝑛1 ⋯ 𝑤 𝑛𝑛
−1 𝑥1(𝑡)
⋮
𝑥 𝑛(𝑡)
観測・計測信号𝑦 𝑡 は混合行列をかけた信号
𝑥 𝑡𝑦 𝑡
混合信号を除外・抽出
𝑦 𝑡
𝑊−1 𝑦 𝑡
𝑊𝑥 𝑡
𝑊 =
𝑤11 ⋯ 0 ⋯ 𝑤1𝑛
⋮ ⋮ ⋮
𝑤 𝑛1 ⋯ 0 ⋯ 𝑤 𝑛𝑛
信号源の空間観測・計測信号の空間
除外:
抽出:
信号源を確認し、
復元行列の逆行列を操作する。
具体的には列を0にする。
(信号源の行を0にしても同じ)
𝑊 =
0 ⋯ 𝑤1𝑗 ⋯ 0
⋮ ⋮ ⋮
0 ⋯ 𝑤𝑖𝑗 ⋯ 0
※前処理及びその復元は省略
復元行列
混合行列
ある2次元の特徴ベクトルx1,x2を主成分分析
𝑥 = 𝑊1
𝑇
𝑦
𝑥 = 𝑊2
𝑇
𝑦
元の(特徴ベクトル)空間へ戻す
※主成分分析の混合行列は直交行列
W^T=W^-1 転置して乗算する
𝑦 = 𝑊𝑥
1列目以外を0
2列目以外を0
(シミュレーションデータ)
ある2次元の特徴ベクトルx1,x2を主成分分析
𝑥 = 𝑊1
𝑇
𝑦
𝑥 = 𝑊2
𝑇
𝑦
元の(特徴ベクトル)空間へ戻す
※主成分分析の混合行列は直交行列
W^T=W^-1 転置して乗算する
𝑦 = 𝑊𝑥
1列目以外を0
2列目以外を0
分散が大きい軸と垂直に交わる(直交)
軸にデータが配置
(シミュレーションデータ)
実験
• 条件
– 正弦波、矩形波、スパイク、正規分布乱数を混合
– 混合行列Wは乱数より生成
– PCAによりある成分だけ抽出し、信号を再構成
𝑦 = 𝑊𝑥
→
scikit-learnのPCA
• sklearn.decomposition
– 主成分空間の変換、逆変換が可能
– 上位の主成分からしか変換ができない
• 抽出/除外したい信号が並んでいない場合、主成分空間
の行列を操作する必要がある
• Numpyの特異値分解を用いてPCAを実現
– U S V = np.linalg.svd(脳波データ)
• V^Tが主成分へ変換する復元行列(行ベクトル)
• Vが混合行列
第一主成分だけで元の信号空間に変換(再構成)
第1主成分だけで
信号を再構成
複数の信号が混在
信号が分解できていない?
現実世界のデータの分布
⇒直交する表現が適さない
第1,2主成分をプロット信号1,2をプロット
第1主成分だけ再構成
ICA:Independent Component Analysis
• ICA 独立成分分析
– 観測・計測信号は、統計的に独立な信号源から発
生した信号とする。この時、混合行列Wを観測・計
測信号のみから求める問題
– 特徴
• 推定された混合行列Wは直交しない
• 主成分分析のような分散の強さで並ばない
– どこに何の信号があるかは一意に決まらない
• 時間がかかる
– 混合行列Wを解析的に求めることが出来ないため非常に時間
がかかる。勾配法による数値計算。
ICAにおける問題[1]
• 1.信号の時間構造の問題
– ”信号の持つ時間方向の構造という情報を使っていない.したがって,信号を本質的には時
系列として扱っていないことになる.これまでは一般論として理論が構築されてきたが,今後
個別の問題を考える際には時系列信号としての特性を解析に取り入れる枠組をきちんと議
論する必要があるだろう.”
• 2.非線形混合の問題
– ”信号の混合作用のモデルは線形作用だけを考え,信号の混合における非線形性の影響
というものは考えていない.”
• 3.観測雑音の問題
– ”観測値に雑音が混入したモデルの解析が乏しいのが現状である.”
– ”正規雑音の場合には尖度(kurtosis)などの高次のキユムラントを用いることによって理論
的には雑音の影響を受けない評価関数を構成することができるが,実際には高次であれ
ばあるほど外れ値などの影響を受けやすい.一部の研究によって学習則の安定性,頑健性
なども取り上げられてはいるが,各種のアルゴリズムの比較などはまだ十分で、はない.”
• 4.アルゴリズムの高速化・安定性
– ”多くのアルゴリズムは勾配法により実装されているが,例えばMEGのようにセンサの多次
元化,データの大規模化が急速に進んでいる計測分野で利用する場合,勾配法は十分に
速いとはいえないので,アルゴリズムの高速化は急務である.”
[1]村田昇. 入門独立成分分析. 東京電機大学出版局, 2004.
Picard
• Picard [1]: Preconditioned ICA for Real Data
– It shows state of the art speed of convergence,
and solves the same problems as the widely used
FastICA, Infomax and extended-Infomax, faster.
• https://github.com/pierreablin/picard
– 2018年発表された新しいICAアルゴリズム
• 収束が早い
[1]Ablin, Pierre, Jean-François Cardoso, and Alexandre Gramfort. "Faster independent component analysis by preconditioning with Hessian
approximations." IEEE Transactions on Signal Processing 66.15 (2018): 4040-4049.
No.2の独立成分だけで元の信号空間に変換(再構成)
No.2 独立成分
⇒正弦波になっている
混在した信号から
特定の成分だけを抽出
第1,2独立成分をプロット信号1,2をプロット
第1独立成分だけで再構成
𝑦 = 𝑊𝑥
今回の話に直接関係ないが、
𝑦 = 𝑊𝑥 ↔ 𝑥 = 𝑊−1
𝑦 似ている構造・・・
• 下記のAutoencorder[1]と等価
– 中間層が1層、バイアスがなく(データ平均化)、
重みづけの数は同じ、活性化関数無し
𝑥 = 𝑊−1
𝑦
x x
𝐼 = 𝑊𝑊−1となるようなWを見つけるわけだが、たくさん存在
PCAは分散最大化、ICAは信号源の独立という条件を制約
NNの最適化技法(e.g Adam)+制約条件を組み合わせれば別の解法も出来るかも
x x
中間層を削除した場合は、
PCAのn主成分を使うのと同じ
[1]Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. "Reducing the dimensionality of data with neural networks." science 313.5786 (2006): 504-507.
まとめ
• PCAを2種類の利用(前処理、分解)で紹介
– ロジスティック回帰の前処理
• 多重共線性の回避
– 時系列データに対して信号分解・分離
• シミュレーション信号を作成し分解の流れ、ICAとの比較
• 信号分解としてのPCA、ICA
– PCAによる信号分解
• 分散が大きくなる軸(信号源が大)+信号源が直交する混合行
列を得る。信号源が直交しない場合、分解は要注意
– ICAによる信号分解
• 直交しない混合行列を求めることが出来る。復元行列乗算後
の信号源の順番は不定
• アルゴリズムにより信号源の分離の相性(分布による)がある
• 勾配法により解を求めるため時間がかかる

第13回 KAIM 金沢人工知能勉強会 混合した信号を分解する視点からみる主成分分析