トップページ | ひとつ上のページ | 目次ページ | このサイトについて | English

独立成分分析

独立成分分析(Independent Component Analysis : ICA)は、 主成分分析因子分析 と似た手法ですが、これらよりも新しいです。

カクテルパーティ問題

会場内に、話し手が散らばっていて、マイクは話し手の位置とは関係なく散らばっている時、 それぞれのマイクが集める音声データには、複数の話し手の声が混ざり、 その混ざり具合がマイクの位置で変わって来る状態になります。

こうした音声データを、個々の話し手だけの音声データに分解する問題は、 「カクテルパーティ問題」と呼ばれます。

独立成分分析は、カクテルパーティ問題の解法として紹介されるのが一般的です。

カクテルパーティ問題の例

独立成分分析の例として、「正解1」、「正解2」のデータが混ぜ合わさって、 「入力1」、「入力2」のデータになっている場合をやってみました。 ソフトはRapidMinerのICAを使っています。 「dimension reduction(次元の減少)」を「fixed number(固定した数)」にして、 「number of components(項目の数)」を「2」にした以外は、デフォルトの設定値を使いました。
ICA ICA

出力は下図のようになり、ソフトは正解のデータを知らなくても、正解のデータに近いものが出て来ました。 (「出力1」の方は、プラスとマイナスが逆ですが)
ICA

異常なタイミングの検出方法として

出力2のグラフで、値が高くなっている部分は、 入力1や入力2のグラフで、波形が乱れているように見えているところです。 乱れているように見えていますが、入力1の場合は、波形の最大値と最小値の範囲よりも、飛び出るほどではありません。 入力2のデータを、ヒストグラムにすると下図になります。 乱れている部分は、全体的な分布からは外れていますが、分布の裾の中に入っているようにも見えます。
ICA

こういった部分をうまく分離してくれるので、独立成分分析は面白いです。

独立成分分析は、 外れ値異常値 を機械的に分けてしまう(フィルタリングする)方法として紹介される事もあります。

主成分分析との比較

主成分分析 には、たくさんの変数を、少ない変数に要約する使い道がありますが、 独立成分分析も、これと同じ使い道ができます。

主成分分析で抽出される要約された変数には、「それぞれに相関がない」、 「データ全体への寄与率の大きいものから、優先して抽出される」、 「正規分布が仮定されている」という性質があります。 一方、独立成分分析は、独立していることを評価する尺度を用意して、要約された変数を探しますので、 この性質がありません。

上記の例題を、主成分分析(PCA)で実施した結果が、下図になります。 正解に近い形に、きれいに分離しませんでした。 出力1については、元の形がほとんど残っていて、入力1と入力2の平均のようになっています。
ICA

なお、このページの事例は、独立成分分析の方が、解析したいデータや、解析の目的に合うケースです。 どちらを使っても、大差ない事もあります。

独立成分分析は何をしているのか

独立成分分析が、データに対してどのような処理をしているのかは、上の波形データを散布図にするとわかります。 左の図が入力データ、中央が独立成分分析の結果、右が 主成分分析 の結果です。

独立成分分析では、外れている3つの点の特徴がひとつの軸だけでわかるようにデータが回転していることがわかります。 主成分分析は、この図を見る限りでは、何とも言えない回転をしているように見えます。
ICA

他の手法との比較

因子分析との比較

因子分析 は、「いくつかの因子があって、その影響の度合いで、データの中にある各変数の値が決まっている」、という考え方をしますので、 この点は独立成分分析と同じです。 (このため、このサイトでは、因子分析の仲間として、独立成分分析を分類しています。)

独立成分分析は、もともとカクテルパーティ問題が意識されているせいかもしれませんが、特徴のある信号を抽出するような時は、うまく独立成分が分かれるようです。 一方、際立つようなところがないような因子が元になっていとると、うまく分かれないです。

因子分析は、独立成分分析でうまく分けられたないような時に、うまく分けられることがあります。 この性質は、 Rによる隠れ変数の分析Rによる主成分回帰分析 で利用しています。

主成分分析との共通点

因子分析 では、変数の数が少ないと、因子に分解する計算ができないことがあります。

独立成分分析と 主成分分析 との共通点として、計算をできるかどうかという点で、変数の数の影響は受けないことがあります。

主成分分析や因子分析との、共通した違い

音声データは、データに時刻の情報が入っています。 また、音声データに限らず、時刻の情報が入っていて、しかも時刻が重要な事は、よくあります。 「何月何日」や「何時何分」のようなデータはなかったとしても、データの順番が時刻の順を表している事もあります。

このようなデータを、きれいに分離するには、時刻の情報は貴重な情報源になります。

しかし、 主成分分析因子分析 には、この時刻の情報を考慮する理論にはなっていません。 ちなみに、この特徴は、 多変量解析データマイニング といわれる手法では、一般的な特徴です。

独立成分分析も基本的な部分では、この時刻を考慮する理論になっていません。 ただ、もともとがカクテルパーティ問題を解く事を目標としているためと思いますが、 時刻の情報を分析の中に取り込むための方法は、いろいろと検討が進められて来ています。 この検討は、他の手法を使う時にも参考になります。

ちなみに、上記の例題では、データの順番(時刻の情報)は考慮されていません。 考慮しなくても、けっこううまく分類するのが、独立成分分析のすごさのようです。

ソフト

Rによる実施例としては、 Rによる隠れ変数の分析 のページがあります。



スパースモデリング

Rによる隠れ変数の分析

参考文献

入門 独立成分分析」 村田昇 著 東京電機大学出版局 2004
体系立ててシンプルにまとまっています。
音声データを独立成分分析する時は、前処理として、短時間毎に区切って フーリエ変換 した周波数のデータを作り、そのデータに対して独立成分分析をします。


詳解 独立成分分析 信号解析の新しい世界」 Aapo Hyvarinen・Juha Karhunen・Erkki Oja 著 東京電機大学出版局 2005
時系列の情報を入れる話など、話題が豊富です。
独立成分分析のモデルには、データの持っている時系列の情報が入っていません。 そこで何らかのフィルターを通して時系列の情報が入るように前処理したデータに対して、独立成分分析をします。 フィルターの簡単な例として、移動平均が紹介されています。 また、 自己相関 を使う方法もあります。


独立成分分析 多変量データ解析の新しい方法」 甘利俊一・村田昇 編著 サイエンス社 2002
大学のゼミを舞台にした、台本のような形で書かれています。 上記の「入門」と「詳細」の間くらいの内容でした。
独立成分分析は、カクテルパーティ問題を例に出される事が多いですが、 実用上の例として、脳波の分析の話にかなりのページが割かれています。 時間相関(自己相関)を仮定できると、比較的簡単な計算で、独立成分分析ができるようになるそうです。
画像を基底関数の和で表現し、基底関数の係数は、できるだけ多くが0になるように選ぶのが、スパースコーティング。
音は、進むと減衰するが、減衰の度合いは、周波数毎に違う。 そのため、受信側は、周波数毎に減衰の度合いの違う信号になる。 これは時空間混合信号と呼ばれる。 元の信号に、一種のフィルターをかけた信号と考える事もできる。 逆フィルターは、イコライザーと呼ばれる。 また、元の信号を復元する事は、デコンボリューションと呼ばれる。




順路 次は 項目反応理論

Tweet データサイエンス教室