ホーム > ライブラリー > Teradata Insight > データマイニング・ヒッチハイクガイド > 第11回:因子分析(前編)(1)
山本 泰史
マーケティング統括部
マーケティング部 スペシャリスト
回帰分析において見られるように、複数の説明変数の間には様々な関係が存在します。近似の傾向を持つものもあれば、何らかの隠れ変数が変数間に存在しているのではないかと思わせるものもあります。因子分析はこれらの関係を整理し、それぞれの変数のレベルを適切に修正することによって、新たな変数を作り出します。つまり新たな変数を構築し、その変数を以って 1.顧客やその行動を評価する指標値とすること、2.各変数を表出させる原因となった変数とすることが、因子分析の目的になります。ここで得られた変数は他の分析手法に利用する変数の候補とすることが可能であり、事実、数多くの変数候補を集約するために利用される場合があります。因子分析と大きく括っていますが、この手法は主成分分析と、いわゆる狭義の因子分析の 2つによって成り立っています。そして 1.の目的に基づいて新たな変数を構築する場合には「主成分分析」、2.の目的に基づいて新たな変数を構築する場合には「因子分析」が利用されます。
主成分分析は、説明力の高い(与えられたデータの多くを説明している)変数(主成分)を導き出し、その説明度合いを表すものです。よく食品の栄養成分表に記載されるように、どの成分が何%を占めているのかを導き出します(もっとも、そんなに単純なものではありませんが)。主成分分析によって、一般に説明変数は主成分に統合され、より少ない変数(主成分)でデータを説明させることが可能となります。広義にとるとこの主成分もデータを説明可能な因子の 1つであるため、ここでは因子分析の中に含んでいます。
これに対して狭義の因子分析は、「与えられたある変数は、純粋にある単一の原因によってもたらされたものではないのではないか?」という疑念の上に成り立っています。与えられた複数の変数、つまり結果は背後にある同一の原因に影響を受けており、また複数の原因がある単一の変数に影響を与えているのであれば、我々は背後にある原因=隠れ変数の存在を見透かすことが出来ます。このような変数を「因子」と呼び、この因子を見つけ出すのが因子分析の目的となります。以降、それぞれについて説明をしていきます。
主成分分析は、与えられた幾つかの変数を用い、合成することによって「合成変数」を作成し、この合成変数を以ってデータセット全体を説明しようとする手法です。合成変数とは、結局のところ主成分のことなのですが、このような言葉を使うのには理由があります。変数が仮に 3つで、それぞれ x1、x2、x3としたとき、合成変数は a1x1 + a2x2 + a3x3 にて表されます。つまり、与えられた幾つかの変数を使って、新たな変数を作り出すのです。それぞれの合成変数の中身を考えたとき、変数以外は a1、a2、a3 の係数で示されます。これはそれぞれの変数に対して重み付けがなされていることを意味し、重み付けされた各変数をそれぞれの成分とした形で新たな合成変数を導き出すこととなります。このような成分構成で説明される合成変数を「主成分」と捉え、扱っているのが主成分分析です。
純粋にイメージとして考えた場合、例えば優良顧客はどのように定義されるべきかを考えると想像しやすいかもしれません。定義の仕方は色々ありますし、単純にたくさんお金を費やしてくれる顧客を「優良顧客」と定義することもできなくはありませんが、ここでは、優良顧客を年間支払い金額(x1)、利用年数(x2)、そして年間発生コスト(x3)の 3つで捉えることにします。それぞれの変数はどのように組み合わせれば、「優良顧客」から「非優良顧客」までを 1つの合成変数で説明できるようになるでしょうか。単純には(x1-x3)が単年の利益金額であり、これに x2 を掛け合わせると顧客の利益貢献金額が算出されます。つまり(x1 - x3)* x2 が累計利益貢献金額であり、これらの変数は一般に言われる LTV(Life Time Value : 顧客生涯価値)の基礎数値として利用可能な指標です。顧客はある指標を用い、様々に捉えられますが、それはある側面を表すものでしかありません。主成分分析ではこのような式ではなく、a1x1 + a2x2 + a3x3 のようにシンプルな 1次式のみを扱いますが、このように各変数を組み合わせて総合指標を作成します。これを主成分として捉えるのが主成分分析となります。また、主成分分析で得られた合成変数は他の分析手法でも用いられます。何らかの傾向を説明している変数群を束ね、ある単一の変数を得ることが出来るならば、この変数は他の分析手法にとっても価値があるものだからです。
図13 のような 2変数 * 3 データサンプルのデータセットを考えます。分かりやすくするため、x1 を携帯電話の通話料金、x2 を携帯メールやインターネットアクセスのパケット料金とし、それぞれのデータサンプルを 3名の顧客と見立てます。ここで、極めて乱暴ですが、これに対して主成分分析を試みることにします。単純に合成変数の候補として、A = (x1 + x2)と、B = (x1 - x2)の 2つの主成分しか考えないとしましょう。どちらが主成分分析として優れているかを考えます。通常、毎月の請求料金は A で示されるため、A がふさわしいと考えるかもしれません。しかしながら主成分分析の観点から考えた場合、B の方が優れた情報を内包しています。なぜなら、A の指標では 3名の顧客の違いを識別できないことが実際のデータ値から明らかであるからです。言い換えれば、それぞれの顧客が持つ、通話料金とパケット料金の構成比の違いをここではスポイルしてしまっているのが A ということになるからです。
一方で B は、3名の違いを明確にしています。我々が通常有している価値観としては大きいほうが好ましい(もしくは小さいほうが好ましい)といった価値観に合致するような変数の作り方を考えたくなりますが、主成分分析においては、このような価値観は後から考えます。主成分分析のアルゴリズムはまずデータをあるがままに把握し、そのデータが持つ構造が際立つように変数を作成することを試みます。この変数が持つ構造をもっとも分かりやすく際立たせるために用意されたのは(x1 - x2)という指標作成処理であり、この結果作成された指標に対して、どのような説明が可能であるかは分析者、つまり人間に委ねられる形となります。ここで得られた指標は、プラスの方向に振れれば通話料金が多い傾向にあり、マイナスの方向に振れればパケット料金が多い傾向にあり、0 に近しければ、通話料金とパケット料金のバランスが良い顧客であるということが読み取れます。つまり、このような形でデータセットの見え方、つまりコントラストが最も際立つ形で変数集約を行なうのが、主成分分析の考え方となります。
コントラストを最大化させるような変数を作り出すという観点では、図14 のように考えていただくと分かりやすいかと思います。変数A は、図14 における視点A の立ち位置からデータを眺めているようなものです。全て同じ値であり、全て重なって見えます。つまり違いが分かりません。これに対して変数B は視点B からデータを眺めています。それぞれのデータがもっとも見えやすい位置であり、もっともばらついて見えます。
このようなばらつきを示す指標として用いられるのが、「分散」です。視点B からデータを眺めるとき、最もばらつきが大きくなります。つまり分散が最大化されます。一方視点B でデータを眺めるためには、その矢印に対して垂直に引いた線(薄い色で追加した線)でデータを捉えれば、分散は最大化されることになります。
分散を最大化させるような式 a1x1 + a2x2 を求めることが、そのまま合成変数を得ることになります。その際の手順として、以下のような手順を踏むことになります。
式 a1x1 + a2x2 において、各 x はデータセットに記されている値であるため、まず求めなければならない値は各 a の値です。2.の固有ベクトルが各 a の値を意味し、そして得られた固有値が分散の大きさを意味します。そして得られた a の値と、データセットにある x を利用することによって、主成分得点が得られることになります。以降で、順を追って説明を加えていきます。(次ページへ続く)