ホーム > 情報ライブラリー > マーケティング・アナリティクス > データマイニング・ヒッチハイクガイド > 第12回:因子分析(後編)このページを印刷する

マーケターのための
データマイニング・ヒッチハイクガイド

第12回:因子分析(後編)

日本テラデータ株式会社
マーケティング統括部 マーケティング部
スペシャリスト 山本 泰史

因子分析

ヒトは何かの事象に直面したとき、その原因を突きとめ、納得しようとします。例えば他人の性格が出るような行動に対峙したとき、「山本が二重人格なのは AB型だから」といった具合です。表出する性格が全て 4つの血液型に起因するものかは分かりませんが、変数を発生事象/観測結果と捉え、それを引き起こした因子を探り出そうとするのが、(狭義の)因子分析の目的となります。因子分析において各データは、因子得点、因子負荷量、独自因子(誤差)にて説明されることを前提としています。因子得点は上述の例でいう AB型であり、これが因子の役割を意味します。これに対して因子負荷量は、観測結果である各変数に対する「影響力」を意味します。変数が例えば「優しさ」と「二重人格」であるとした場合、AB型という因子は「優しさ」にはあまり影響を与えず、「二重人格」には強く影響を与えるといった具合です。そして独自因子は、そのデータが特有に持つものであり、因子分析にて説明しきれない部分です。この例をそのまま用いれば、以下のようなイメージで分解できることになります。ここでいう「山本」がデータサンプルです。

山本の[変数:優しさ=0.3]=[因子得点:AB型=2]*[因子負荷量:優しさ=0.1]+[独自因子=0.1]
山本の[変数:二重人格=10.2]=[因子得点:AB型=2]*[因子負荷量:二重人格=5]+[独自因子=0.2]

因子負荷量は因子に与える影響であるため、他のデータサンプルにも共通して適用されます(例えば別のサンプル:ジキル博士に対する因子負荷量、優しさ=0.1、二重人格=5)。しかしながら因子得点は各データサンプルが固有に持つ値であり、山本の因子得点(=2)と、他のデータサンプルの因子得点は異なります(例:ジキル博士=10)。結果、表出するデータ値も異なることになります。

 

因子分析の流れ

ここでは以下のような、ある CDショップの顧客 5名に関する、ご覧の 3ミュージシャンの CD 購入数量データを用います。音楽は非常に嗜好性による影響が表れやすい商品であり、ここでは顧客のミュージシャン選択傾向から背後に存在する嗜好性を因子として見つけることを目的とします。そのため、ここでは各ミュージシャンの CD 購入数量が変数となっています。

図19. データセット

因子分析においては標準化されたデータセットを用意し、これを用います。標準化は変数に対して、((変数 - 平均)/標準偏差) の処理を行うことによって得られます。処理の目的はこれらのデータを全て平均 0、標準偏差 1のデータに変換しなおすことにあります。この処理を行なうことによって得られたデータが以下になります。

図20. データセット(標準化)

続いて、このデータセットの分散/共分散行列を作成し(図21)、そこから固有値/固有ベクトルを得ます(図22)。結論から言えば、ここで得られた固有値/固有ベクトルが因子を意味しています。得られた固有値は 3つありますが、固有値 1(因子1)と固有値 2(因子2)でほとんどを説明しているため、固有値 3(因子3)は無視することにします。各固有値の大きさが分散の大きさを意味し、固有値 1及び 2で、全体の 99%以上を説明しているからです。ここまで - つまり分散/共分散行列から固有値/固有ベクトルを求め、データのほとんどを説明している固有値/固有ベクトルのみを残し、それ以外は無視する(捨てる) - までのプロセスは、主成分分析と同じです。つまり分散という観点から、データをよく説明している固有値/固有ベクトルを抽出することが、因子分析においても同様に必要な作業となります。

図21. 分散/共分散行列

図22. 固有値/固有ベクトル

一方、ここからは主成分分析と因子分析では異なります。主成分分析において、変数は各主成分にて全て説明されました。これは言い換えれば、主成分分析は存在するデータを説明するような合成変数を作り出すことに主眼が置かれていることを意味します。しかしながら因子分析は、背後に存在する原因を変数として浮き上がらせることに主眼が置かれています。従って、与えられたデータの全てを因子で説明する必要はなく、逆に説明しきれない部分も存在することを意味しており、この説明しきれない部分を検討外にすることによって、因子が浮かび上がる構造になっています。分散/共分散行列で、各変数の分散は 1と表示されています(図21)。これは標準化されたデータセットに変換したからですが、各因子によってもたらされた分散の合計は必ずしも 1ではなく、これを推定する作業が必要になります。一方で因子負荷量は、各固有値の平方根に対して固有ベクトルを掛け合わせた値によって推定され、「各因子によってもたらされた分散の合計」は、各因子負荷量の 2乗を合計した値によって推定されます。詳細は割愛しますが、関係は以下のようになります。

「各因子によってもたらされた分散の合計」=(因子1 負荷量)2+(因子2 負荷量)
因子負荷量=固有ベクトル*√(固有値)

「各因子によってもたらされた分散の合計」は、「共通性」と呼ばれます。共通性の正確な値は、反復解法によって得られることになります。元々の分散/共分散行列にこの値を代入し、固有値/固有ベクトルを抽出する作業を何度も繰り返し、「共通性」がある一定の値に収束するまで反復計算を行ないます。

図23. 反復計算

図23 は、固有値/固有ベクトルから因子負荷量、共通性を導き出した表です。そして得られた共通性を、元々の分散/共分散行列の分散部分に代入しています。ここからさらに固有値/固有ベクトルを導き出す作業へと繰り返されます。今回はこの作業を 10回繰り返しました。結果、例えば変数 x1 の共通性は、以下のように収束していきました。

図24. 共通性の収束(変数x1)

充分に収束した時点で得られた因子負荷量が、最終的な因子負荷量ということになります。また同時に、共通性、つまり分散に関してもある値に収束し、これが因子によってもたらされた分散ということになります。元々の変数が持っていた分散は 1 であったため、分散に関しては以下が成り立つことになります。

変数の分散 = 1 =「各因子によってもたらされた分散の合計」+「独自因子(誤差)の分散」

従って、ここで行なわれた反復解法は、共通性の中に含まれていた独自因子の分散を吐き出し、純粋に各因子によってもたらされた分散に純化していく作業であったとも言えます。(次ページへ続く)

1|2

・Teradata はTeradata Corporationの登録商標です。本文中の社名、製品名は各社の商標または登録商標です。
・本文中に記載されている製品情報は、予告なく変更する場合がありますのでご了承ください。