[ ]

隠れたトレンドを探る:多変量解析


データの中には、多くのトレンド(傾向)が必ず隠れています。このトレンドをつかむことができるのならば優位に意思決定を進めることができます。
 このページでは、データの中からトレンドを見つける多変量解析の手法を紹介します。

ことわざで「木を見て森を見ずYou can't see the forest wood for the trees. 」といわれるように、データマイニングの分野ではマクロ(巨視的)な視点で全体を捉える能力が求められます
とはいえ、データの要素数が多くなると全体像を捕らえることが困難になるのです。

 コンピュータは局所的な数値の集合として全体を把握していますので、意味ある情報として全体を見ることが不得意です。逆に人間には、もともと空間的に全体像を捉える能力が超越しています。
 例をあげて解説します。

写真:鳴門大橋

図:13とB

 左図は写真です。写真も「画素」と呼ばれる一つ一つの情報の集まりで全体を表現しています。
 上述通り、人間には空間的に全体を捉えることができるという特殊能力があります。写真を見れば被写対象や時間、天候、場所など知識として欲しい情報が自然と得られると思います。
 しかし、コンピュータは点の集まりで認識しています。ある項目だけに注目してパターン学習させれば少しは判断できるようになりますが、所詮、点で判断しているので高性能なものにはなりません。例えば海の上に写っている黒い部分が、橋の影なのか、波の影なのかも区別することはできないと思います。

  ここで写真を「4つに分類してください」と人間とコンピュータに質問してみたとします。
 個人差があると思いますが、人間は直感で、

 橋   海   空   陸 

のように本質的な分類をするでしょう。
 しかし、コンピュータは色の変化が激しい隣接する点で判断するので、

 橋+手前の陸+橋の影   太陽   空+奥の陸+海   太陽光で反射している海 


といったようになるのではないでしょうか? このように本質的に全体を捉えた場合と、点の集合として全体を表現している場合では知識発見に大きく影響が出てくるのです。

右図は図です。どのように見えましたか?
ちょっと作図に失敗してしまったのですが、上段は「数字の12、13、14」。下段は「アルファベットのA、B、C」と見えることでしょう。 お気づきかもしれませんが、上段の「13」と下段の「B」という文字は全く同じです。人間は全体として捉えているので柔軟に判断できるのです。点で捉えているコンピュータは上下とも同じ答えしか出せないのです。(区切れているのは「B」の定義ではないので、「B」と認識できないと思います)

人間の空間全体を捉える能力の高さが分かっていただきましたでしょうか?

さて、随分前置きが長くなりましが、全体を捉えるのにコンピュータは必要ないのでしょうか?下表を見て再度考えてください。

表 セリーグ打撃成績(2000/7/11)

どの選手がどんな能力があって、どんなタイプの選手か全要素を使って説明できますでしょうか?
もしくは、似た選手を探したり、グループ分けできますか?
打撃成績のデータは30サンプルで18要素です。30×18の画素といったら→ こんなサイズです。先程の鳴門海峡の写真に比べると200分の1の情報しかないのですが、本質的な意味がわからないと思います。
 実感していただいたと思いますが、空間的に人間は優れていても、数値で表現されると手足がでません。逆に数値はコンピュータの得意分野です。

ようやく、言いたいところまでたどり着きました。 データマイニングである以上、数値等のデータから始まるのは仕方の無いことです。だからこそ、
コンピュータによって数値を空間で表現すれば、後は人間によって知識が得られるのではないでしょうか。
そんな手法を紹介しようと思います。  


そんな手法を紹介しようと思います。  

1.イメージ

せっかくですから、上に挙げた「セリーグ打撃成績」を題材として解析を試みてみましょう。
今回使う解析方法のイメージだけ先に紹介しますので、どんな目的で何ができるのかを漠然とでいいので覚えてください。


※イメージで、もちろん正確ではありません。
InternetExplorer5以上でご覧下さい。

2.各手法概説 その1 主成分分析

それでは、主成分分析から始めましょう。

(1)主成分分析   

 主成分分析は一言でいうと「情報を要約する統計学的手法」です。どんなイメージかは、上のアニメーションでつかめたかと思います。

  計算方法については、後で説明するとして主成分分析で最終結果が得られるステップを紹介したいと思います。主成分分析は、途中途中のステップで得られるものが大変重要になるからです。

STEP1 平均値・分散・共分散を求めて、相関行列を求める。

 主成分分析でまず求めることは、この全要素の相関係数一覧表であります。
 この相関係数は計算ステップだからといって気にせず通過するともったいないと思います。相関係数自体が情報の宝庫だと思います。

 
 相関係数は 「-1」から「1」までの値で表現され、相関係数の絶対値が大きいほど何かしら密な関係があるといえます。

 例えば、「本塁打」と「長打率」の関係は”0.9”と正の方向に高い値を示しています。これは、本塁打の高い選手は一般的に長打率も高いであろうとを意味しているのです。

 「長打率」と「犠打」の関係は”-0.53”と負の方向に高い値を示しています。これは長打率の高い選手は、平均すると犠打が少ないことを意味しているのです。

 「死球」は他のどの要素とも相関係数の絶対値が低いです。これは死球が他要素とは無関係の能力であると判断できます。

 相関係数に関して著者は色々と意見をもっているのですが、別章で熱く語りたいので、ここでは穏やかに先に進めましょう。

STEP2 固有値、寄与率、累積寄与率の算出

 次に求めるのは、「固有値、寄与率、累積寄与率」を計算します。

 主成分分析は情報の集約といいましたが、18個の要素がある場合、集約しても(全体-1)で17種類は残るのです。 「全然集約されてないじゃん。」って思うかもしれませんが、主成分分析によって一つ一つの要素の重みが変わってきます。つまり、要素に濃縮した情報を詰め込むのです。その重みの計算をしたのが固有値なのです。
 主成分分析では、計算結果重みの高い順に、要素の名前を第1主成分、第2主成分・・・ と命名します。
 下表で第1主成分の固有値は8.425となっています。これは元々18種類あったデータを集約して8.425個分の価値を集約しているという感じです。で8.425というのは全体が18個であるので、第1主成分のたった一つをみれば、全体の(8.425÷18個=)46.8%の情報価値が集約されているといえるのです。

元データ  








主成分分析の固有値
要素名 重み 要素名 固有値(重み) 寄与率 累積寄与率
打率 第1主成分 8.425 46.81 46.81
試合数 第2主成分 1.991 11.06 57.87
打席数 第3主成分 1.637 9.09 66.96
得点 第4主成分 1.301 7.23 74.19
安打 第5主成分 0.999 5.55 79.74
二塁打 第6主成分 0.844 4.70 84.44
三塁打 第7主成分 0.739 4.10 88.54
本塁打 第8主成分 0.594 3.30 91.84
塁打数 第9主成分 0.501 2.78 94.62
打点 第10主成分 0.349 1.94 96.56
三振 第11主成分 0.275 1.53 98.09
四球 第12主成分 0.215 1.20 99.29
死球 第13主成分 0.076 0.42 99.71
犠打 第14主成分 0.048 0.27 99.98
犠飛 第15主成分 0.003 0.01 99.99
盗塁 第16主成分 0.001 0.01 100.00
出塁率 第17主成分 0.000 0.00 100.00
長打率  


 100%の情報を見たいからといって第1主成分から第17主成分まで見ていたら意味がありません。だって全要素が見れないから主成分分析してるわけでして。
主成分分析では固有値の高い主成分だけを見ることがほとんどです。 「固有値の高い主成分」と言われても漠然としていると思います。どこまでみればいいのかというと下のうちのどれかです。

1.固定値が1以上の成分を解析対象にする
 →「1以上」というのは少なくとも濃縮された情報であるという観点から

2.寄与率から上下で差のあるところ。
 →均衡しているところで解析対象と解析対象外にすると不公平だから。

3.累積寄与率80%を超えたところ。
 →全体の80%の情報であれば、元データの全体を集約しているといってもいいから。

こんなところです。ちなみに1〜3の観点で解析対象となる部分をそれぞれ表中に赤色で示してします。
何にも分からなければ全部を満たす 第6主成分 位までみればよさそうですね。

どこまで見るかは解析対象・次項で説明する主成分の解釈で変わってくると思います。そして何より解析目的によって変わるはずです。

 

STEP3 主成分得点係数から主成分の解釈

 次に算出されるのは「主成分得点係数」です。 

第1主成分には46.8%の情報が集約されているという結果が得られました。
で「第1主成分って何?」って分からないと全然役に立ちません。

それに、後で出てくる選手ごとの得点を見ると巨人の松井がダントツに抜けていました。なんでしょうか?

それでは、主成分の意味を考えてみましょう。
 主成分の意味をつける作業は、下記の主成分得点係数から算出します。著者が分かりやすいようにグラフまでつけてみました。(STEP2では第4-6主成分くらいまでみよう書きましたが、HPでは第2主成分までを対象とさせていただきます)

要素名 主成分得点(第1主成分 主成分得点(第2主成分)
打率 -0.311 -0.300
試合数 0.169 -0.194
打席数 0.127 -0.268
得点 -0.298 0.032
安打 0.021 -0.445
二塁打 0.164 -0.539
三塁打 -0.216 -0.157
本塁打 -0.369 0.191
塁打数 -0.222 -0.162
打点 -0.381 0.156
三振 0.074 0.033
四球 -0.405 0.222
死球 -0.144 0.315
犠打 0.264 -0.200
犠飛 -0.493 0.677
盗塁 0.060 -0.107
出塁率 -0.462 0.0121
長打率 -0.442 -0.004

各主成分は、主成分得点係数という重みを加えて、その主成分の意味をなしています。
それでは、著者の考えで解釈してみましょう。

 第1主成分の主成分得点係数では、出塁率、犠飛、本塁打、打点、四球などの項目が負の方向に大きく示しています。
 ここで注目するのは試合数や打席数が正の方向に向いていることであります。打席数や試合数が増えれば、本塁打や打点、犠飛、四球が増えるのはSTEP1であげた相関係数からも明らかでありますが、主成分得点係数では、相反する係数値となっています。このことから1打席や1試合での出塁率、犠飛、本塁打、打点、四球などの長打に着目した能力が表現されているといえます。
 また、盗塁の係数が0に近いことから、第一主成分に走者としての能力は影響されていませんし、もともとデータに守備の要素がまったくないことから、第1主成分はバッターボックスに入ったときの打撃破壊力を示す数字であると解釈できます。主成分係数から値の小さな値の選手ほど打撃の破壊力が高く、値の大きな選手ほど破壊力が低いというこになります。

 同様に第2主成分の主成分得点係数を見てください。
 さて、みなさん第2主成分はどんな意味になると思いますか?
 打率、打席数、安打、二塁打の値が高い人は低い値になり、犠飛と死球の高い選手は値が高くなるのです。
 うーん。実に表現しにくい解釈ですね。

 第2主成分では、打席に多く入り、安打や二塁打を多く打ち、打率を残した選手が負の方向です。これって、地道なんですけどコツコツ結果を残して貢献している選手のタイプですね。
 正の方向は、この反対ですから大きいのを狙ってはいるのですが打率が低いとか、もしくは守備や走塁で期待されているので打撃の機会すら少なく、打撃には期待されていない選手を示している尺度だと思います。
 第2主成分は選手のタイプを示す数値であり、第2主成分の値の小さな値の選手ほどまじめにコツコツ結果を残すタイプであり、値の大きな選手ほど、一発ねらいの大振りで結果を残せないタイプかそもそも打撃に期待されていない守備中心の選手であると解釈します。

 いやー、第2主成分は実に苦しい解釈になりました。値の小さな選手に「まじめにコツコツ」と付けたのはあっさりでしたが、値の大きな選手は「一発ねらいの大振りで結果が残していない」とか「打撃に期待されていないレギュラー陣」とか「死球が多くて欠場ぎみ」とか「ホームランまで届かず犠飛までなら」とか色々です。自分の野球知識から判断しました。
 このように主成分の解釈は、解析対象の専門知識が必要であり、解析者の主観が大きいのです。

 こんな訳のわからない解釈しないでも、「打率+(打点+本塁打)÷2が打撃能力だ!」と俺様流の解析をする人がいると思いますが、それは

・ 解析者の解析分野に対する専門性が極めて高い
・ 重要な要素と重要でない要素を認識し、重要な要素だけを選択する能力がある
・ 選択した要素の因果関係が、解析者の理解できる範囲内で収まっている。

ということです。

 データマイニングはデータが膨大でありますので現実的に俺様流の解析では通用しないと思います。
主成分分析で得られた結果は、「統計学的に最も意味のある情報」でありますので、完全に鵜呑みしてくださいとまではいいませんが、何かしら知識発見に役立つのではないでしょうか。

 

STEP4 各選手の得点を散布図に示す

ここまで来たら後は、「視覚化」です。STEP3の主成分得点係数に、選手一人一人の要素値をかけて合計すると各主成分の得点がでます。

  主成分得点(大部分省略)を示します。

選手名 第1主成分 第2主成分
ローズ -3.52 -1.80
山崎 -2.500 -0.80
松井 -6.98 -0.34
ペタジ -3.77 -0.40
マルチ -2.82 -1.52
前田 0.47 1.43
佐藤 1.94 2.51
中村 4.03 2.31


こんな感じで数値で表しても人間には向かないので、主成分得点を散布図にしてみます。

こうやれば、松井(巨)は「打撃能力が飛びぬけて、バランスの取れた選手」であることが一目瞭然です。

 コツコツがんばって結果を残すローズ(横)大振りであまり結果を残せていない江藤(巨)ではタイプが違うため打撃能力の比較が困難でしたが、第1主成分から判断して、わずかに江藤の能力が高いといえそうです。

 このように主成分分析によって、多くのデータが集約されている少数個のファクターで構成された情報が得られたので、がんばって知識発見してください。

 

おまけ 主成分分析実験

 冒頭で計算方法を説明すると書きましたが、
実際に使用してみて有益だと感じた方は専門書を読んで勉強してください。または計算方法を紹介しているHPにリンクを貼っておきます。

 主成分分析の効果を確認する場所として、データをテキストで用意すれば自動で主成分分析や、クラスター分析を計算してくれるホームページがありますのでそこを利用してみてください。

著者のセリーグ打撃解析は、このホームページを利用して解析してみました。
実際に利用したデータを置いておきますので、参考にして試してみてください。

解析してくれるページ(群馬大学 青木さん) ←著者が使用した野球データ

3.各手法概説 その2 クラスタ分析

  (主成分分析のことはとりあえず忘れてください。このカラムは主成分分析の結果や計算過程とは別次元の話です。)

 クラスタ分析のクラスタは「集団」という意味です。

 似たもの同士をまとめて集団として考えたほうがすっきりするし、その集団に「エリートグループ」みたいに名前なんかつけると、迅速に知識発見作業に取り掛かることができます。

 その、データを集団(以降クラスタと呼びます)に分ける方法論をクラスタ分析と呼んでいます。

 処理手順に関しては、「1.イメージ」で概要説明したままなので、もう一度おさらいしてください(↓)。



  
InternetExplorer5以上でご覧下さい。

補足説明します。

クラスタ分析では「距離関数」と「クラスタ間の距離のとり方」が解析者によって変わってきます。

距離関数」について
 距離関数については、一般的にユークリッド距離が使われています。
ユークリッド距離は、日常で使っている距離概念と同じで、中学生で習うような三平方の定理で出しているようなものです。下図のユークリッド距離は2次元の場合ですが、18次元の場合はルートの中身が18個ありますし、n次元ある場合n個あります。何故一般的かというと、人間が普段使っている距離の感覚であって直感的に理解しやすいからです。(n次元であれば理解もできませんが)

 他によく使う関数は、市街地距離(マンハッタン距離)と呼ばれる距離関数で、計算方法も下図のまんまです。(ちょっと下図の市街地距離の計算方法を間違えてます。(括弧)ではなくて|絶対値|なので後で編集します)。プログラミング上最も単純な計算方法なので、扱いやすいといえば扱いやすいです。

 

 

 要素の意味がわかっている場合は、軸に重みを付けて距離を求める方法もあります。例えば打率は重要だから2倍し、死球はホームランの10分の1くらいの価値にするといった感じです。
 重みのつけ方の基準は色々ありますが、解析者の主観など曖昧な基準で定めると潜在的に求めている結果が得られ、客観性にかけたものになります。(それどころか解析者の予想結果と得られた数値結果が一致したことに満足し、誤った解釈に自信を持って決断することになるかもしれません)

 (話はそれますが)逆にいうと、解析者は自分の思い通りの解析結果を数値として導くことができるのです。
 データマイニングの世界では歓迎されることではありませんが、歓迎される分野があります。アンケート実施側等です。どうやれば思い通りのアンケートになるか紹介します。

 第1段階:求めたい結果が得られそうな質問項目をたてたり、言い回しをする。
       アンケート対象者(母集団)の性質や数についても検討する。
 第2段階:よい結果に見えるような統計手法や解析手法を選択する。
       データクレンジング作業から操作し、手法のパラメータ設定まで考慮する。
 第3段階:得られた数値に都合のいい解釈をつける。

 以上の各段階で操作をすれば、解析者の思い通りの結果は得られます。もちろん数値として結果が得られますので説得力は抜群です。
 それにしても、私が見たところ世の中のアンケートというものは、対象・手法・解釈の説明がないのに結果(数値)だけ見せているものが多く、イカサマ臭くてしょうがありません。

クラスタ間の距離のとり方」について
 イメージでは、最遠隣法について説明しました。クラスタ間の距離のとり方について、いくつか解説図を作成しました。

InternetExplorer5以上でご覧下さい。

 クラスター分析の目的は「グループ分け」でして、クラスタ間距離算出方法によってグループ分けそのものの意味が変わってきますので、何気にクラスタ間の距離算出選択は重要です。
 たとえば、最遠隣法なんかではクラスターが大きくなるにつれて距離の拡散がおきますが、大きなグループに分けたい場合は検討しやすいといったこともいえます。重心法は直感的にクラスタ間の距離としてイメージしやすい方法ですが、時としてクラスタAとクラスタBの距離が負の値になりグループ分けのイメージが崩れます。
 「ウォード法」という距離の求め方が最近の主流であるようです。ウォード法は、サンプルを結合するときに失われる情報が最小となるように結合する方法で、明確にクラスターをつくれて分類感度が高いみたいです。(著者がみたところ重心法と類似しクラスタ間距離算出法に感じました。細かい計算方法は違うと思いますが、結果の意味は重心法と大差はないと思います)

 とにかく解析の目的を理解することと、それに合わせてクラスタ間の距離のとり方を選択していかなければなりません。
 どうしていいのか全く分からないときは、とりあえず最遠隣法でいいのではないのでしょうか。あるいは、簡単にプロトタイプしたいというのなら重心法だと距離が一意にきまってプログラム組みやすいです。

(参考)

 このクラスター分析のグループ分け方法を書いてて気づいたアイデアですが、既存の方法にとらわれることなく、それぞれの観点で解析してみても面白いかと思います。

例えば上図は原点からベクトルの観点でグループ分けしてみました。空のグループ、陸のグループ、海のグループなどに分かれ、原点から離れるほど体が大きく、グループ内で強い存在になっています。データは実データではありませんが、ベクトルの考え方は有効ではないでしょうか。

デンドログラム

 デンドログラムの求め方はむずかしくありません。クラスター分析で出たそのままの結果をグラフに描画するだけです。求め方は「イメージ」のままです。

 なぜ、デンドログラムが必要かというと、適切なグループ分けをするためです。
 グループ分けの方針は2種類あります「はじめからグループの数を決めている場合」と「意味あるポイントでグループ分けをしたい場合」です。

 はじめからグループ数を決めている場合は、デンドログラムはいらないとおもいます。クラスター分析でクラスターの残りが決めた数になった時点で終了すればいいのですから。クラスタ数を決めてとりかかる場合はc-means法によるクラスタ作成方法もあります。

 意味あるポイントでグループ分けをしたい場合には、デンドログラムがあれば適切なポイントを見つけることができます。下図を見てください。 



  
Internet Explorer5以上でご覧下さい。

 縦軸がクラスタの距離になります。例えば右端の「矢野」と「中村」は距離20で結びついていますし、「矢野・中村」クラスタと「佐伯・谷繁・関川・前田」クラスタは距離40で結びついています。

 グループの分け方は横棒を一本引いたら完了です。
 このデンドログラムにグループを2つ作る場合と4つ作る場合の例を示していますが、4つに分けた場合は随分上下が窮屈に感じます。これはグループ間の距離が均衡していることを意味してまして、「明確なポイントでグループ分け」ができていないことを意味しています。上下に余裕のある2分割か3分割するのがいいでしょう。(このデンドログラムは最遠隣法によるクラスター分析なので上の方にいくと拡散するものですが)

このようにクラスタごとにサンプルのクロス集計すると、目的のサンプルの意味と各クラスタ毎に性質が分かり、何がトレンドなのか見えてくるかもしれませんね。


(4グループ分割時のデンドログラムと色を対応させています

 クラスター分析やデンドログラムは、サンプルのひとつひとつから全体を見ていく特殊な手法でありますので、何か違った知識が得られるかもしれません。またクラスター分析は単独で利用するよりも、他手法を補助して効果的にする役割が高いと思います。

 

 

4.主成分分析とクラスタ分析でトレンド発見

  2節で「主成分分析」と3節で「クラスター分析」をそれぞれ別個に解析してみましたが、この2つは融合させることができ、トレンドの発見に大きく役立ちます。お互いの手法で足りないところを補い合ってトレンドを見つけていくのです。

 特別な計算方法はありません。それぞれの手法の最終結果を一つのグラフに表すだけです。
 それでは、主成分分析の結果として「第1主成分と第2主成分の散布図」、クラスター分析の結果として「4グループに分割したデンドログラム」を融合させてみます。

 サンプル名まで書きましたので少し見づらいグラフになりました。主成分分析の結果を基にして、クラスタ分析のグループ分け結果も載せた形式になっています。
 このグループ分けに名前をつければ全体のトレンドと個々の位置付けが見えてくるのではないでしょうか? グループに名前を付けてみます

緑色:強力な攻撃能力を持ち、その攻撃能力を存分に発揮しようとするグループ
黄色:攻撃に関して自らの力を理解し、結果を残しているグループ
赤色:攻撃能力はそこそこあるがその分の結果が残せていない
    or 攻撃能力は低いが地道に結果を残しているグループ
青色:攻撃能力が低いし、結果も残せていないグループ

 もともと大規模のデータではなかったのでこんなに複雑な解析をしなくても分かっていたのですが、巨人の選手は偏っていますし、広島の選手はバランスがとれていますね。これいった結果を反映して次のアクションに取り組めればよいのではないでしょうか。
 ただ、このグラフはバランスがとれてればいいということもないし、なんでも高ければいいということでもないし、それは解析者と解析対象と解析結果によってかわります。

5.総論

 データ全体を見る方法を紹介しました。紹介した方法は統計学的にサンプルの性質を最も効果的に表現していますが、あくまでも統計学的であります。データの本質的価値や目的に合わせてアレンジしていくことが大変重要であると思います。

 解析者によって結果が大きく左右しない、誰が解析しても同じ結果の出るマイニングツールでは真に有用でないと感じます。 このコメントは、著者の独り言です。

 


メニューに戻る