今日のレジュメ(諸般の事情により PDF ファイル)

2016 6 7
情報分析 年 月 日 辻慶太
0. はじめに
今日は判別分析と決定木とサポートベクターマシン( SVM )についてお話します。これは事前にいくつ
かのグループが与えられた時,各個体がどのグループに属するかを自動判定してくれる手法です。前回の
クラスタリングと異なる点は,クラスタリングは事前に明確なグループを設定する必要はなかったのに対
し,判別分析,決定木,SVM は設定する必要がある点です。例えば NDC の 0 類から 9 類のいずれかに自
動分類するというのは判別分析や SVM の仕事です。クラスタリングの仕事ではありません。
使用例:
:医者は,ある患
・ 患者の病気診断( 病気か否かの情報と,血圧,コレステロール, GTP... の情報)
者がガン患者なのかそうでないのかを,得られた検査結果から判定を迫られることがあります。
・ 投資先は優良企業か否か( 優良かそうでないかと,財務諸表データなど )
:株式の投資家は,いくつ
かのデータを基に,ある企業を優良企業かそうでない企業かに分類する必要があります。
・ 文字,音声,画像のパターン認識(「あ」か「お」かなど )
:任天堂 DS や一部のスマートフォンで
使われている技術です。
企業は,過去の筆記試験や面接の成績から,将来役に立ってくれそうな志願者を選ばねばなりません。
また,われわれ自身も,いくつかのデータをよりど ころに,周囲の人が自分に対して好意を抱いているか
ど うかを,絶えず判別しながら生きているともいえます。世の中にはこのように,白黒付けがたいものの
ど うしてもその判断をしなければならないことがたくさんあります。こんなときに役立つのが判別分析や
SVM と呼ばれる手法です。
1. SVM を用いた研究例( 論文タイトルには現れなくても非常に多くあります)
・ 清瀬太一朗ら (2015)「 SVM による商品レビューの評価値の根拠となる語の抽出」情報科学技術フォー
ラム講演論文集.
・ 久保永ら (2015)「大腿骨近位部骨折手術の診療記録に対する SVM を用いたテキストマイニングに
よる術後入院期間の分析」電子情報通信学会技術研究報告.
(2014)「 SVM による笑顔度推定技術を用いた音楽療法効果の評価」情報処理学会論文誌.
・ 野口拓央ら (2014)「コンピュータ将棋における SVM を用いた Move Ordering の効率化」研究報告
ゲーム情報学.
・ 増田真也ら (2013)「 SVM 手法を用いた Twitter トレンド のトピック追跡」情報科学技術フォーラム
講演論文集.
・ 松本一則ら (2013)「 Web コンテンツのジャンル推定に向いた実用的な2段階 SVM の構築」研究報
告情報基礎とアクセス技術.
・ 榎本友理枝ら (2011)「 SVM に基づく多フォント漢字認識手法の評価」情報処理学会研究報告.
・ 浅水仁ら (2010)「 SVM を用いた足跡からの男女識別の実現」電子情報通信学会論文誌.
・ 伊藤太樹ら (2008)「 SVM に基づくテンプレートを考慮した Web ページの分割手法について」電子
情報通信学会技術研究報告.
・ 村田淳哉ら (2008)「 SVM を利用した小論文の採点支援システム」電子情報通信学会技術研究報告.
・ 関野正志ら (2008)「正則化 SVM の中小企業デフォルト判別問題への適用と考察」日本オペレーショ
ンズ・リサーチ学会秋季研究発表会アブストラクト集.
・ 芦田尚美ら (2007)「 SVM を用いた論文分類システムの構築」情報処理学会研究報告.
・ 川口敏広 (2006)「 SVM と新聞記事を用いた Weblog からの意見文抽出」人工知能学会第 20 回全国
大会.
・ 嶋田敬士ら
1
■ 2 つのグループが:
・ 直線で分けられる → 線形判別関数による判別分析
・ 凸な曲線で分けられる → マハラノビスの距離による判別分析
・ 凸な曲線では分けられない → 決定木,SVM
→ 上に示した通り,判別分析には線形判別関数を用いるものとマハラノビスの距離を用いるものの 2 種類
があります。SVM も含めたそれらのイメージとしては次ページを参照して下さい。
2
■線形判別関数,マハラノビスの距離による判別分析と SVM
図
図
2:
1:
(Support Vector Machine)
直線で分割できる場合は線形判別関数による判別分析
凸な曲線で分割できる場合はマハラノビスの距離による判別分析
3
図 3: 凸でない曲線でしか分割できない場合は決定木や SVM。といっても SVM はこのような場合にしか
使えないわけではなく,図 1 図 2 のような場合にも使えて,それぞれ高い精度の分割を実現します。その
為,何かを判別したい時は,現在では SVM を使うのが一般的です。
図 4: SVM はデータの次元を拡張して( 超)平面で分割します。イメージとしては,図 3 は 2 次元だった
のがこの図は 3 次元に拡張されており,大きな○は手前に浮いていて,小さな×は遠くに沈んでいると考
えて下さい。SVM はそのようにしてあいた空間に,下敷きを差し込んで分けるというイメージです。
4
1.1
線形判別関数による判別分析
1930 年代にイギリスの優生学者,統計学者フィッシャーが提案しました。
■サー・ロナルド ・エイルマー・フィッシャー( Wikipedia より)
フィッシャーはイギリスの統計学者,進化生物学者,遺伝学者で優生学者である。現代の推計統計学の確立者であるとともに,集
1 人であり,またネオダーウィニズムを代表する遺伝学者・進化生物学者でもあった。フィッシャーは少年時代
... 卒業後まもなく第一次世界大
戦が始まるが ... 終戦とともに新しい職探しを始め,ピアソンに招かれたものの,彼に反感を抱いてこれを断り,1919 年,ハート
団遺伝学の創始者の
から数学の才能を発揮するとともに生物学にも興味を持った。1909 年,ケンブ リッジ大学に進み
フォードシャー州のロザムステッド 農事試験場の統計研究員に就職した。ピアソンや息子のエゴン・ピアソンらとは,のちに統計学
に関して大論争を起こすことになる。農事試験場では大量のデータに関する研究を行い,結果は『 Studies
in Crop Variation(穀物
量の変動に関する研究)』という一連の報告となった。その後の数年間がフィッシャーの全盛期であり,実験計画法・分散分析・小標
本の統計理論といった革新的な業績を生み出す。実際的なデータの研究から始まって新しい統計学理論へと進むのが彼の仕事の特徴
であった。この仕事は
1925 年に最初の成書『 Statistical Methods for Research Workers(研究者のための統計学的方法)』として
Design of Experiments
実を結ぶ。これはその後の長きにわたり様々な分野の研究者のスタンダード となった。1935 年には『 The
(実験計画法)』を出版しこれもスタンダード となる。フィッシャーは分散分析や最尤法の手法を編み出し ,統計学的十分性,フィッ
シャーの線形判別関数,フィッシャー情報行列などの概念を産んだ。
近年ではベイズ統計学が脚光を浴びていて,多くの分野で用いられています。迷惑メールを自動除去す
るナイーブベイズなどは有名です。が,このベイズ統計学をフィッシャーは嫌い「完全に葬り去らねばな
らない」と公言したりし ました。統計学の権威であるフィッシャーの力は強く,近年になるまでベイズ統
計学は不遇でした。ちなみにベイズ自身は一介の牧師で,彼の死後,大数学者のラプラスがベイズの定理
を整理し発展させました。
p
線形判別関数による判別分析では,線形判別関数 z = i=1 ai xi を作り,z がある値より大きいならばグ
ループ 1,ある値より小さいならばグループ 2,などと判定します。例えば z = 12 蔵書冊数 350 218 貸
出密度 といった線形判別関数 z を作り,その図書館の蔵書冊数と貸出密度を代入します。その結果,z が
700 より大きくなったらその図書館は県立図書館だろう,700 より小さくなったら市立図書館だろう,な
どと判定します。
「そんなのもっと他の方法で調べた方が確実だろう」
「電話してどっちか訊けばいいじゃないか」といっ
たツッコミはもっともです。何となく分かりやすいかと思って図書館を例に出してみました。現実には例
えば z = 5 筆記試験の点数 + 8 面接の点数 などとし,z が 930 より大きかったら将来会社の役に立つ
志望者として採用,z が 930 より小さかったら将来役に立たない志望者として不採用,などとする方があ
り得そうです。この式は,筆記が 100 点でも面接が 0 点だったら多分役に立たないだろう,面接が 100 点
でも筆記が 0 点だったらやはりだめだろう,またど ちらかというと面接の点の方が重要だろう,といった
経験則を式で表していると言えます。
ちなみに上では説明変量は「筆記試験の点数」と「面接の点数」という 2 つでした。この場合,合否の
境界は直線になります。説明変量が 3 つの場合は合否の境界は平面になります。
では z のイメージをつかむために,説明変量の数を 2 とし ,平面上のデータを考えてみます。また x1 ,
x2 というのは分かりにくいので,x と y にします。また a1 ,a2 というのは分かりにくいので,a と b に
します。そして:
P
z
= ax + by
とします(ここでは切片の )
。サンプルが
z1
z2
1,2,..,i,..,N 個あるとすると:
= ax1 + by1
= ax2 + by2
: : :
5
;
zi
= axi + byi
: : :
= axN + byN
zN
z = c とは「データを投影すると,2 つのグループが一番よく分離されて見える直線( 図の Z )に垂直
( =L )です。z が c より大きかったらグループ A,
で,かつ 2 つのグループの真ん中( 後述)を通る直線」
c より小さかったらグループ B,などと判定します。
では具体的にどのように計算すれば求められるでしょうか?
→ 一般に ST = SB + SW が成り立ちます。これを利用します。
まず練習だと思ってこの偏差平方和に関する等式 ST = SB + SW を証明して下さい。ただし
総平方和 ST
群間平方和 SB
群内平方和 SW
= (z1 ; z)2 + (z2 ; z)2 + ::: + (zn ; z)2
= nP (zP ; z)2 + nQ (zQ ; z)2
= (z1 ; zP )2 + ::: + (znp ; zP )2 + (znp +1 ; zQ )2 + ::: + (zn ; zQ )2
です。ここで z の上の線は平均を表します。即ち,z は z の平均です。nP ,nQ はそれぞれ P 群,Q 群の
サンプルの数を表します。
ST = SB + SW の両辺を ST で割ると 1 = SB =ST + SW =ST となります。即ち,右辺第 1 項と第 2 項の
和は一定となります。第 1 項が大きければ大きいほど P と Q の群は遠くに離れることになります。そし
て第 2 項は小さければ小さいほど P と Q それぞれにおいてサンプルが肩を寄せ合って小さくまとまるこ
とになります。両者の和は 1 で一定なのですから,従って第 1 項が最大になるように z を決めれば良いこ
とになります。ここで F = SB =ST とおくと,これを最大にするような a, b を求めるのです。これは F を
a, b で偏微分してそれぞれが 0 になるようにすれば求まります(ただし最小になる方を求めてしまわない
。即ち:
ようもう 1 回偏微分してマイナスになることを確認する必要はあります)
@F
@a
= 0,
@F
@b
=0
この場合,変数が 2 つで式が 2 つだから連立方程式として a, b を求めることができます。そうして a, b を
求めたら最後にどの値( 先ほどの c )を境界にしてグループ P Q を分けるかですが,これは zP と zQ の中
点を使ったり,誤って判別されるサンプルが最も少なくなる点を使ったりし ます。
では練習として実際に 2 つのグループを分ける為の直線を求めてみましょう。グループ P として点 1(2,0),
点 2(4,2),グループ Q として点 3(0,2),点 4(2,4) があったとし ます。そして z = ax + by とし ます。こ
の時:
=
nP
nQ
=
z1
=
z2
=
z3
=
z4
=
6
z =
zP
=
zQ
=
SB
ST
=
=
よって F
@F
@a
=
@F
@b
=
= SB =ST =
2
これがゼロになるのは a = b の時と a = b の時です。が,先述のように 2 回偏微分を行った @@aF2 は
a = b の時マイナスになるのに対し,a = b の時はプラスになってしまいます。即ち,a = b の時は F は
最大ではなく最小になってしまいます。従って a = b が求める答えであることが分かります。
さて先ほどの式ですが:
;
;
SB
;
= nP (zP ; z)2 + nQ (zQ ; z)2
の右辺の第 1 項はグループ P の Z 上の射影が全データの射影の中心からどれだけ離れているかを表し ま
す。そして第 2 項はグループ Q の Z 上の射影が全データの射影の中心からどれだけ離れているかを表し
ます。従って,SB は直線 Z 上でグループ P, Q が互いにどれだけ離れているかを表します。
■線形判別関数による判別分析では 2 つの群の射影が最も遠く分離される直線を考えることになります。
図
5: P 群 Q 群とそれらの射影 zi
7
1.2
誤判別率
誤判別率は判別がどれだけ正しかったかを測る尺度です。1 から「判別的中率」を引いたものです。
誤判別率 = 1 正しく判断されたデータ数
全データ数
↑
判別的中率,正答率といいます。
■ある会社の社員に関して,入社時の試験成績と 5 年後優秀な社員になったかど うかというデータが表 1
のようにあります。今年は表 2 のような成績の 4 名が入社を希望しました。誰を採用すれば優秀な社員を
確保できるでしょうか?
;
ID
A
B
C
D
E
F
G
H
I
J
表
実技
面接
50
20
50
70
90
50
80
70
30
60
70
80
50
60
90
90
60
70
50
80
80
70
40
65
95
85
50
80
45
75
5 年後
筆記
1:
ID
1
2
3
4
表
優秀
優秀
ダメ
優秀
優秀
優秀
ダメ
ダメ
ダメ
優秀
入社時の成績と 5 年後
筆記
実技
面接
45
70
92
72
50
60
85
60
40
75
95
50
2:
入社希望者 4 人
■ R による判別分析( 線形判別関数による)
1)
学習用ファイルである「これまでの傾向」
( Koremade no keiko.txt )とテスト用ファイルである「入
社希望者」
( Nyusha kibosha.txt )をダウンロードします(それぞれ右クリックから「対象をファイ
ルに保存」を選択して落とした方が無難です)
。ダウンロードしたら Word などで開いて中身を確認
してみましょう。
2) R を起動します。
3) まず「パッケージ 」 → 「パッケージの読み込み」 → 「 MASS 」と選びます(「 MASS 」が出ない場
合は,まず「パッケージのインストール 」 → 「 Japan (Tokyo) 」 → 「 MASS 」と選んでから上記
操作を行います)
。これで判別分析を行う関数 lda が使えるようになります。
4) lda 関数のヘルプが読みたい時は \?lda"と入力します。
8
5)
6)
7)
8)
9)
10)
11)
「ファイル」→「デ ィレクトリの変更」とクリックし,先ほどの 2 ファイルを置いたデ ィレクトリ
に移動します。
> 現況 <-
read.table("Koremade no keiko.txt", header=TRUE) と入力します。\現況" の部分は
自分の好きな変数名で良いです。
> 希望者 <- read.table("Nyusha
kibosha.txt", header=TRUE) と入力します。\希望者" の部分は
自分の好きな変数名で良いです。
> 傾向 <- lda(5年後 ~ 筆記 + 実技 + 面接, data=現況) と入力します。
> predict(傾向, 希望者)$class と入力して予想させます。結果,
「 1] ダ メ ダ メ 優秀 ダ メ」と出力さ
れます。これは 1, 2, 4 番目の人は5年後「ダ メ」,3 番目の人は5年後「優秀」な社員になると予
想されたことを意味します。
> 傾向 と入力すると,線形判別関数の係数( =LD1 )などが分かります。即ち,判別関数は \0.01992687*筆記+0.04663433*実技+0.04605209*面接"であることが分かります。
学習用データに対する誤判別率が出したい場合は以下のようにします:
>
>
x <- subset(現況, select=c(1:3))
predict(傾向, x)$class
上の 1 行目は「現況」変数の 1 列目から 3 列目までのデータを取りだして「 x 」という変数に代入す
ることを意味します。この x を先ほどの「希望者」と同じ扱いにして predict 関数にかけます。結
果「 1] 優秀 優秀 ダ メ ダ メ 優秀 優秀 ダ メ 優秀 ダ メ 優秀」などと出力されますが,これを元の
データと比較すると 2 箇所で判別を誤っていることがわかます。従って誤判別率は 2/10=0.2 です。
1.3 マハラノビスの距離による判別分析
1936 年にインド の統計学者プラサンタ・チャンド ラ・マハラノビスが提案しました。マハラノビ スは先
ほどのフィッシャーとも親交がありました。
■プラサンタ・チャンド ラ・マハラノビス( Wikipedia より)
カルカッタ(現コルカタ)出身。管区大学で物理学を学び
1912 年卒業,ケンブリッジ大学キングス・カレッジに留学した後,カ
ルカッタに帰った。当時カール・ピアソンらによって発展しつつあった数理統計学から強い影響を受け,帰国後は主として統計学の
研究を行った。統計学者として最も重要な仕事は,大規模標本調査に関するものである。また多変量解析の研究からマハラノビス距
離の概念に至った。農業試験の研究をきっかけに,ロナルド ・フィッシャーとも親交を結んだ。統計学の社会的応用にも積極的で,
経済や水防の仕事に携わった。1931 年には自らインド 統計大学を設立した。インド の独立後は
5 か年計画に参画し ,レオンチェフ
の投入産出分析モデルの変法によってインド の工業化に貢献した。文化にも関心を持ち,国民詩人タゴ ール( 少年時代から親交が
あった)の外遊を助け,また彼の創立したヴ ィシュヴァバーラティ大学にも務めた。彼は
直前まで研究を続け,また政府の名誉顧問を務めた。インド 政府は彼を記念して,誕生日
79 歳の誕生日の前日に死去したが,死の
6 月 29 日を統計の日としている。
2 つのグループそれぞれの分散と共分散が等しい場合,線形判別関数とマハラノビスの距離による判別分
析は同じ結果を与えます。が,等しくない場合は,一般にマハラノビスの距離の方が良い結果を与えます。
→ 分散,共分散の大きさのイメージについては次頁を参照して下さい。
※ところで確認ですが「分散」
「共分散」とは何か,ど う計算するのか,覚えていらっしゃいますか? 1,
3, 3, 5, 8 という 5 つのデータの分散はいくらですか? 2 つの変量 x,y から成るデータ対 (1,1),(3,2),
(5,3),(3,1),(3,3) では,x と y の共分散はいくらですか? また x の分散は? y の分散は? 手計算は何な
ので,Excel に計算式を入力して算出してみまし ょう。
図 2 で丸い方のグループの右上の点を考えてみます。その点は曲線 A の外側とします。○×それぞれの
グループの中心までの距離を考えると,この点は×グループの方が近いです。が,×グループは中心に密
集していて,あまり外には広がっていません。それに対して○グループは×を取り囲むように広がってい
ます。そう考えるとこの点は○グループの方に属することが予想されます。
9
図
6:
分散・共分散がそれぞれ等しい群のイメージ( 分散が等しいというのは
図
図
8:
7:
p=p' かつ q=q' というイメージ )
p p' あるいは q ≠ q' )
共分散は等しいが分散は異なる群のイメージ( ≠
分散は等しいが共分散は異なる群のイメージ(
p=p' かつ q=q' だが,一方の方がぎゅっと集まっていて相関が
強いというイメージ )
このような各グループの散らばり具合(=分散あるいは標準偏差)を考慮に入れた距離がマハラノビス
の距離です。具体的にはグループ P の中心からの距離を,グループ P の散らばり具合で割ります。1 変量
P =sxP (グループ P の標準偏差)と表されます。
の場合は x x
2 変量の場合,グループ P からある点 (xi yi ) までのマハラノビ スの距離 DP2 は:
j ; j
DP2 = (xi ; xP yi ; yP )
s2xP
sxP yP
10
sxP yP
s2yP
!;1 xi ; xP
yi ; yP
!
と表されます。ここで s2xP ,s2yP はそれぞれグループ P に関する変量 x,y の分散で,sxP yP は共分散
です。このような距離を他のグループ,例えばグループ Q,グループ R,グループ S ... に対しても同様
2 ,点 (xi yi ) とグループ R との距離 D2 ... を
に算出します。即ち,点 (xi yi ) とグループ Q との距離 DQ
R
算出し,最も距離が近いグループに点 (xi yi ) を分類します。即ち,例えばグループ Q との距離が最も近
かったら,点 (xi yi ) はグループ Q に属すると判定します。
さて分散( s2xP など )だけでなく,共分散( sxP yP など )も使う理由について述べます。各グループが
球状になっていたら共分散を使う必要はないのですが,球状ではなく楕円状になっていた場合,楕円との
位置関係によって,判定対象点と各グループとの距離を変える必要が出てきます。例えば楕円の中心から
の距離は同じでも,楕円の長軸方向に位置している点と短軸方向に位置している点だったら,後者の方が
前者よりもそのグループ までの距離が遠いと考えられます(ものすご く長細い楕円をイメージし ,その突
端に位置している点と,90 度回転した位置にいる点を考えて下さい。前者はそのグループに属していそう
ですが,後者は微妙だと思います)。共分散を計算に用いると,そのような楕円との距離をうまく扱うこ
とが出来るのです。そのため先ほどの行列には共分散が含まれています。
3 変量以上の場合も同様にして分散共分散行列( 先ほどの行列のことです。対角成分に分散が入り,他
の成分に共分散が入った行列のことです)を拡張することで表されます。以下に N 変量の場合の分散共分
散行列を示します:
0
BB
BB
@
s21
s12
s12
s22
::: s1N
::: s2N
:::
s1N
s2N
11
:::
s2N
1
CC
CC
A
顧客番号
001
002
003
004
性別
年齢
20
20
40
30
女性
男性
男性
女性
表
1.4
3:
職業
商品 A
会社員
○
その他
×
教員
○
会社員
○
合計購買金額
30,000
24,000
78,000
12,000
顧客プロファイル
決定木
決定木は SVM や判別分析と同様,事前にいくつかのグループ( カテゴ リー)と,所属グループ 不明の
個体が与えられた時,各個体がどのグループに属するかを自動判定してくれる手法です。SVM や判別分
析と異なる点は,決定木はいくつかの判定ルールと共に結果を表示してくれるので,なぜその個体がその
グループに分類されたのか結果を追いやすい点です。例えば「その個体は男性ですか?女性ですか?」
「年
齢は 42 歳以上ですか?」といったルールが有効だと自動的に判断し( 例えば「年齢は 41 歳以上ですか?」
より「年齢は 42 歳以上ですか?」の方がルールとして優れているとデータを見て自動判断してくれます),
表示してくれ,かつ判定したい個体をグループ分けしてくれるのです。結果を人間が見て理解しやすい点
が SVM との大きな違いです。
■決定木の例
例えば表 3 のような顧客プロファイルと,その顧客の戦略商品 A の購買の有無(○が購入顧客,×が非
購入顧客)を示すデータベースがあったとします。このデータベースから作成された「商品 A の購買の有
無」に関する決定木の例が図 9 です。図の決定木では,木の各中間ノード にデータを分類するための分割
テスト( splitting test )が示されています。また,各中間ノード は分割テストを適用した結果のとり得る
( 二つの )値に対応する( 二つの )下向きの枝をもちます。一方,各終端ノード は,ここで注目している
「商品 A の購買の有無」を示すラベルをもちます。
この例のデータベース中の各顧客は,この決定木を使って,いずれかの終端ノード に分類されます。決
定木の( 中間ノード の一つである)頂点ノード はデータベースの全データ集合に対応します。データベー
ス中のある顧客は,この頂点ノード の 1 レコード です。このレコード は,頂点ノード の分割テストである
「年齢が 30 以下」であるかど うかで,二つのうちのいずれかの下位ノード に分類されます。たとえば ,年
齢が 15 である顧客は,テストの適用結果である Yes に対応する左の下位ノードに分類されます。下位ノー
ド においても,同様に,ノード の分割テストを適用した結果に従って,いずれかの下位ノード へ分類され
ます。こうした分類を繰り返すことで,各顧客は最終的にいずれかの終端ノード に分類されます。
たとえばこの決定木の一番左の終端ノード に至る経路は,
「 年齢が 30 以下でかつ性別が女性という条件
を満たす顧客は商品 A を購買した」という法則を表しています。従って今後たとえば「年齢が 30 以下」
で,かつ「性別が女性」の顧客が店に入ってきたら,この顧客は商品 A を買う可能性が高いと予測して店
員は接客するといった対応が可能になります。
各終端ノード は,そのノード に分類される顧客の「商品 A の購買の有無」から,ラベルづけされます。
一般的には,
「 ○」の頻度が「×」の頻度より多い終端ノード のラベルは「○」,その道の場合は「×」と
することが多いです。その場合,
「 ○」とラベルづけされた終端ノード は「商品 A を購買した」顧客グルー
プ,
「 ×」とラベルづけされた終端ノード は「商品 A を購買しなかった」顧客グループに対応しています。
「商品 A の購買の有無」のように,注目する属性値がカテゴ
決定木は 2 種類に分けることが出来ます。
リ型である場合は「分類木」と呼ばれることがあります。一方,注目する属性が「合計購買金額」のよう
な数値型である場合は「回帰木」と呼ばれることがあります。図 10 に「合計購買金額」に関する回帰木の
12
図
9: 「商品 A の購買の有無」に関する決定木( 分類木)の例
例を示します。回帰木の各終端ノード のラベルは,そのノード に分類される顧客グループの,注目してい
る数値属性値(この場合「合計購買金額」)の平均値とする場合が多いです。
「合計購買金額」が未知の顧
客が,回帰木でいずれかの顧客グループに分類された場合,その顧客の「合計購買金額」の予測値を,そ
の顧客グループの平均値とする場合,終端ノード のラベルを平均値としておくと便利なためです。
・
「商品 A の購買の有無」のように,注目する属性がカテゴ リ型の木 → 分類木
・
「合計購買金額」のように,注目する属性が数値型の木 → 回帰木
※ 2 つ合わせて決定木。
■決定木の特徴
・ SVM などと異なり,人間が見て理解しやすいルールになっています。
・ データが欠損値を含んでいる場合でも扱いやすい。
・ 非線形のデータに対して良い結果を与えることが多いです。一方,線形なデータの場合はあまりよ
い結果を与えないことが知られています。即ち,それなら判別分析や回帰分析の方がまだ良いです。
・ ニューラルネットなどに比べ,高速に計算できます。
■用語
・ 木:9 のような分岐構造(→ 木というと根が下のはずだが,なぜか逆さまにして描く)
・ 頂点(ルート )ノード :木の一番上の部分
・ 終端( リーフ )ノード : 〃 下
13
図
10: 「合計購買金額」に関する決定木( 回帰木)の例
・ 決定木は,頂点ノード から終端ノード に至るまでの IF-THEN ルールの組み合わせと考えることが
できます。このとき終端ノード のラベルは,この IF-THEN ルールの結論部に相当します。
:
「商品 A の購買の有無」,
「 合計購買金額」のように,IF-THEN ルー
・ 目的属性( target attribute )
ルの結論部に現れる属性
・ 条件属性( conditional
attribute ):IF-THEN ルールの条件部に現れる属性
■決定木の求め方
以下では相互情報量を用いた決定木構築方法について説明します。例えば「商品 A 」の値が○か×かを
導く為の情報として表 4,表 5 のようなデータがあったとします。
「性別」が「女性」
:Y 1
Yes 「商品 A 」の値:
○
X
×
0.54
0.06
0.60
表
4: ルール 1 の情報
No 0.10
0.30
0.40
0.64
0.36
表 4 から例えば ,性別が女性で商品 A を買った(○)人は全体の 54 %であること,性別が女性で商品
A を買わなかった(× )人は全体の 6 %であること,であることが分かります。同様に表 5 から例えば年
齢が 20 以下で商品 A を買った(○)人は全体の 30 %であることなどが分かります。これらの表からは例
えば以下のルールが導けます:
ルール 1: Y1
(「性別」が「女性」)⇒(「商品 A 」が「○」)
14
「年齢」が「 20 以下」
:Y 2
Yes 「商品 A 」の値:
○
X
×
0.30
0.30
0.60
表
5: ルール 2 の情報
No 0.34
0.06
0.40
0.64
0.36
ルール 2: Y2
(「年齢」が「 20 以下」)⇒(「商品 A 」が「×」)
この時,ルール 1 とルール 2 だったらど ちらの方が優れているか? ルールの優秀さは「あいまいさの
少なさ」で評価することができます(あるいは「間違って分類してしまう確率の低さ」と言った方が分か
りやすいかもしれません。が,以下では伝統に従って「あいまいさの少なさ」という表現を用いることに
します)
。ではこの「あいまいさ」はどのように表せるでしょう?
普通の硬貨 A を投げ ると表が出る確率は 50 %,裏が出る確率は 50 %です。ここで硬貨を真っ二つに
切って貼り合わせ,両方とも表になったマンガに出て来るようないかさま硬貨 B を考えます。この硬貨は
表が出る確率は 100 %,裏が出る確率は 0 %です。この時,硬貨 A を投げたとき表裏ど ちらが出るかに関
する「あいまいさ」
( 予想して間違えてしまう確率)は,硬貨 B を投げたとき表裏ど ちらが出るかに関す
る「あいまいさ」
( 予想して間違えてし まう確率)より高いです。従って「あいまいさ」の尺度を作ると
したら上記のような大小関係になる尺度になるべきです。これにはエントロピーという以下のような尺度
があります。
あるデータ集合 S の事象 X に関する「あいまいさ」は以下の式で定義されるエントロピー ( entropy )
で測ることができます。
H (S ) = H (X ) = ;
k
X
j =1
pj logk pj
ここで pj は X の k 種類ある事象 a1 ,...,ak のうち,事象 aj (1 ≦ j ≦ k) の出現率とし ます。ただし ,
= 0(i ≠ j ) であるとします。また H (S ) ≧ 0 です。
先ほどの硬貨の例で言うと,X は「硬貨の出る面」といったものであり,種類 k は 2 で,事象は「表」
と「裏」です。硬貨 B の「硬貨の出る面」に関するエントロピーは:
ai aj
H (X )
= ;1:00 log2 1:00 ; 0:00 log2 0:00
= 0:00
即ち,硬貨 B のエントロピーは最低であり,あいまいさは全くない(表が出るか裏が出るか予想して外れ
ることはない)ことが分かります。一方硬貨 A の方は:
H (X )
= ;0:50 log2 0:50 ; 0:50 log2 0:50
= となる。即ち,硬貨 B のエントロピーより高くなることが分かる。このようにエントロピーは先ほど ,あ
いまいさの尺度に要請した性質を満たしています。
15
「ルール 1:Y 1 」と
先ほど の「 商品 A の値:X 」に関しては , 「○」, 「×」の二つの事象があります。
「 商品 A の
「 商品 A の値:X 」との関連として,先ほど の表 4 のようなデータが得られているとすると,
値:X 」がもつエントロピーは:
H (X )
= ;0:64 log2 0:64 ; 0:36 log2 0:36
= 0:943
です。
次に「ルール 1:Y 1( 性別が女性か )」に対して \Yes"である人達を考えます。その人達の間では「○( 買
う)」
「×( 買わない)」の割合はそれぞれ 0:54=0:6 = 0:9,0:06=0:6 = 0:1 であるから:
H (X jY 1 = Y es)
= ;0:9 log2 0:9 ; 0:1 log2 0:1
= 0:469
同様に「ルール 1:Y 1( 性別が女性か )」に対して \No"である人達を考えると,その人達の間では「○
( 買う)
」
「×( 買わない)」の割合はそれぞれ 0:10=0:40 = 0:25,0:30=0:40 = 0:75 であるから:
H (X jY 1 = N o)
= ( ) log2 (
= 0:811
)
;(
) log2 ( )
です。
「女性」
「男性」の割合はそれぞれ 0.6, 0.4 であるから , 「ルール 1:Y 1( 性別が女性か )」を導入す
ることで「商品 A の値:X 」に関するエントロピーは:
H (X jY 1)
= ( ) H (X jY 1 = Y es) + ( ) H (X jY 1 = N o)
= ( ) 0:469 + ( ) 0:811
= 0:606
となります。この値は先ほどの H (X ) = 0:943 よりも 0.337 ほど 低くなっています。即ち「性別が女性か」
というルールを加えることで全体のエントロピーが減ったと言えます。このエントロピー(=あいまいさ)
の減少 H (X ) H (X Y 1) = 0:337 が「ルール 1:Y 1( 性別が女性か )」の「商品 A の値:X 」に関する相
互情報量です。
」の相互情報量も同様に計算してみよう。
練習:同様に「ルール 2:Y 2( 年齢が 20 以下か )
H (X ) H (X Y 2) = 0:099 と求まります。先ほどの「ルール 1:Y 1( 性別が女性か )」は相互情報量は
0.337 です。従って先ほどのルール 1 の方が,あいまいさをより大きく減らすという点で,ルール 2 より
も有効と言えます。このように相互情報量は「商品 A 」に関するルール同士を比較するのに有用です。決
定木では相互情報量の大きいルールを予測に採用していきます。
;
;
j
j
16
■枝刈り
データには通常ノイズが含まれます。そのようなノイズに対しても細かくデータ分割を進めていくと,決定
木が例外的な値・誤りに適合してしまいます。これを過学習,あるいはオーバーフィッティング( overtting )
といいます。過学習が起きると必要以上の細かい分類となり,結果として予測精度が悪くなってしまいま
す。さらに,過学習した決定木から得られる目的属性に関する法則は複雑で理解しづらいものとなります。
枝刈り( pruning プルーニング,剪定)はそうした過学習を回避する手法です。枝刈りには,(1) 事前
枝刈りと (2) 事後枝刈りの 2 種類があります。
(1) 木の作成段階で,過学習であるか否かを判断し ,データ分割を終了することを事前枝刈り( prepruning )といいます。事前枝刈りは,各ノード の最適分割テストによるデータ分割前後における,カイ
2 乗検定,相互情報量の増加度,エラーの減少度,平均 2 乗誤差の減少度などの情報から,そのノード の
データ分割が精度向上に寄与するかど うかを予測して,データ分割を続けるか,そのノード で分割を終了
するかを判断します。
(2) 一方,まず十分大きな木を作成し ,その木の過学習部分を後でとり除くことを事後枝刈り( postpruning )とよびます。事後枝刈りにおいて,木のどの部分木が過学習であるかを判定するために,学習デー
タとは別の検証データを用意し ,検証データを使って不要な部分木を削除する手法を総称して「 training
and validation set 法」と呼びます。事前枝狩り手法に比べ,より大きな木を構築するためのコストが余計
に必要となるが,事後枝刈りによる木のほうが,予測精度が高くなることが多く,現在はこの手法による
決定木の調整を行うシステムが多いです。
■いくつかのアルゴリズム
決定木( 樹木モデル )に関する研究は,1960 年代初期までさかのぼります。現在では以下の手法(アル
ゴ リズム)が広く用いられています:
・CHAID (Chi-squared automatic interaction detection)
CHAID は 1963 年 J. A. Morgan らが提案した AID (automatic interaction detection) を,J. A. Hartigan
が 1975 年に発展させたもので,最も古いアルゴ リズムです。CHAID はデータ解析の専用ソフト SAS と
SPSS で採用されており,今でも広く用いられています。分岐の基準としてカイ 2 乗統計量や F 検定統計
量など ,統計学で広く用いられている統計量を用いています。
・CART (classication and regression trees)
1980 年代初め頃,カリフォルニア大学の L. Breiman,R. A. Olshen,C. J. Stone,スタンフォード 大
学の J. H. Friedman が公開しました。CART は,樹木を制限なしに生長させ,対話的に剪定を行う方法
を取っています。この点で,樹木が生長し過ぎないよう事前に制御する CHAID と大きく異なっています。
また 2 進木しか生成しない点で異なっています。初期の CART は,分岐の基準としてジニ係数( 経済学
者ジニ( Gini )が提案)を用いていたが,最近は情報利得( information gain )など も用いています。
・C4.5/C5.0/See5
オーストラリアの J. Ross Quinlan が 1986 年に発表した ID3 (iterative dichotomiser 3) を改良・発展
させたもの。2 進木以外も生成するのが CART との大きな違い。枝狩りは事後にも行います。ID3 は,分
岐の基準として情報利得( information gain )を用いていたが,C4.5/C5.0/See5 は,利得比( gain ratio )
を用いています。現在,J. Ross Quinlan は 1997 年から RuleQuest Research というソフトウェア会社を運
営しています。C4.5 は Quinlan のホームページ http://www.rulequest.com/Personal/ で入手できます。
17
上記のアルゴ リズムはそれぞれ特徴を持っており,どのアルゴ リズムが優れているかは評価し難いです。
による決定木構築
■
「パッケージ 」→「パッケージのインストール 」
まずパッケージ tree をインストールし読み込みます。
→ ミラーサイト一覧から「 Japan (Tokyo) 」などを選びます → パッケージ一覧から「 tree 」を選びます。
\tree" パッケージをインストールしたら,次にそれを読み込みます。「パッケージ 」→「パッケージの読
み込み」→ パッケージ一覧から「 tree 」を選びます。これで \tree" パッケージが使えるようになります。
データとして \market survey.csv" という名前のファイルを作ったとすると,決定木作成は以下のよう
に行います:
R
>
>
>
>
x <- read.table("market survey.csv", header=TRUE, sep=",")
x.tr <- tree(pick~., x)
plot(x.tr)
text(x.tr)
これにより図 11 のような出力が得られます。market
survey.csv 中の変数の意味は以下の通りです:
pick:優先的に利用する電話会社が AT&T かど うか
income:世帯収入
moves:過去5年間の引っ越し回数
age:被調査者の年齢
education:教育水準
employment:職業の種類
usage:月平均使用量
nonpub:電話帳への掲載の有無
reach.out:割引サービ スの利用
card:テレフォンカード 所有の有無
さて以下のような \tree.control" オプションを用いてパラメータを設定すると決定木の大きさなどを変
えることができます:
>
>
>
w.tr <- tree(pick~., x, control=tree.control(1000, mincut = 5, minsize = 10, mindev = 0.008))
plot(w.tr)
text(w.tr)
ここで \1000"は学習用データのレコード 数,mincut はノード をさらに分割するか判断する為の子ノード
最小レコード 数,minsize は同じ くノード をさらに分割するか判断するための親ノード 最小レコード 数,
mindev はノード 内の尤離度を表す。mincut は minsize の半分よりも大きくすることはできません。
決定木ではモデルの当てはまりの良さを損なわない範囲で,単純な木を構成し直すための剪定を行うこ
とが多いです。剪定を行う場合,snip.tree 関数を用います。例えば以下のようにします。
>
w.tr.snip <- snip.tree(w.tr)
18
図
11:
電話会社のマーケティング調査
入力待ち状態になったら剪定したい木の分岐部分にカーソルを合わせ,クリックします。要らない部分の
すべてでクリックしたらグラフィック画面上で右クリックし「停止」を選びます。するとコンソール画面
にクリックした分岐部分の番号が \node number"という形で表示されるのでその番号を メモしておきま
す。ここで 3 番,4 番,5 番の分岐部分で剪定したかったならば以下のように入力します:
>
>
>
w.tr.snip <- snip.tree(w.tr, nodes=c(3,4,5))
plot(w.tr.snip)
text(w.tr.snip)
で結果を確認できます。
上では snip.tree 関数を使ってグラフィカルに分岐番号を把握したが,以下のように入力すればテキス
トで決定木を得ることが出来ます。そこから分岐番号を把握することも出来ます。
>
w.tr
19
1.5
SVM
SVM( Support Vector Machine )は,ど のグループに属するかを自動判定する手法として,少し前ま
で最も一般的な手法でした。今は深層学習が有名ですが,深層学習にはまだ一般の人が操れるソフトがあ
りません。大量のパラメータや方針を設定しないといけないので,Python などで直接プログラミングす
ることになります。今すぐ 何か結果を出したいという場合はまだ SVM の方がお勧めです。ちなみによほ
ど 簡単なデータでない限り,判別分析というのは論文ではもう使わないかもしれません。
SVM は 1992 年に,AT&T Bell 研究所の Vladimir Vapnik らが提案した統計的学習手法がもととなっ
ています。
Vladimir Naumovich Vapnik( Wikipedia より)
Vladimir Naumovich Vapnik is one of the main developers of Vapnik-Chervonenkis theory. He was born in the Soviet
Union. He received his master's degree in mathematics at the Uzbek State University, Samarkand, Uzbek SSR in 1958
and Ph.D in statistics at the Institute of Control Sciences, Moscow in 1964. He worked at this institute from 1961 to 1990
and became Head of the Computer Science Research Department. At the end of 1990, he moved to the USA and joined
the Adaptive Systems Research Department at AT&T Bell Labs in Holmdel, New Jersey. The group later became the
Image Processing Research Department of AT&T Laboratories when AT&T spun o Lucent Technologies in 1996. Vapnik
Left AT&T in 2002 and joined NEC Laboratories in Princeton, New Jersey, where he currently works in the Machine
Learning group ... While at AT&T, Vapnik and his colleagues developed the theory of the support vector machine.
They demonstrated its performance on a number of problems of interest to the machine learning community, including
handwriting recognition.
■
先述の判別分析は,平面上に散らばる点を直線上に映すというように,特徴空間をより次元の低い空間
に変換するのに対して,SVM は逆に次元の高い空間に変換し ます( 図 4 )。次元をどんどん大きくして,
高次元の空間にサンプルを散らしていくと,いつか平面で 2 グループが切り分けられる次元に達します。
分けられるようになったらサポートベクトルで最適な平面を特定・算出します。
次元を大きくしていけば一般に計算量が膨大になるのですが,SVM ではカーネルトリックによりその
計算を回避します。これが特徴です。数学的な説明は後で詳しく扱います。
・ 判別分析も SVM も,3 グループ 以上の判別( 分類)をそのままの形で行うことはできません。1 つ
ずつグループを分離していくという逐次的な操作を行うしかありません( A, B, C の 3 グループだっ
たらまず A,B と C を分けるなどです)。データ全体に渡って最適な判別を行うことができないの
が欠点です。
・ SVM には学習サンプルが多くなると計算量が大きくなる問題もあります。
・ 後述のカーネルにはいくつかありますが,どれが最適化は分かっていません。
20
(2001)「痛快!サポートベクトルマシン:古くて新しいパターン認識手法」情報処理,
vol.42, no.7, p.676-683. を適宜抜粋し ,解説用に注を付けたものです。興味がある人は原典も読んでみる
■以下は,前田栄作
と良いでしょう。
線形
その :線形分離可能な場合
ここではまず最も簡単な例として,線形分離可能な場合の線形 SVM について述べます。
線形分離可能な場合には,一般に学習サンプルをすべて正し く識別する超平面が複数存在し ます( 図
12 )。識別境界候補となるそうした超平面( 黒実線)の周囲には学習サンプルが存在しないマージン領域
( 破線で示した 2 つの超平面に挟まれた領域)が存在します。SVM では,複数の識別境界候補の中でマー
ジン( 矢印)を最大にする超平面を最良と見なし ます。このマージン最大化が SVM の大きな特徴です。
線形 SVM の学習,すなわち学習サンプルからマージンを最大にする最適識別関数を求める過程は以下の
ように数学的に定式化できます。
線形識別関数 f ( ) を:
1.
SVM
1
x
f (x) sign(g (x)) = sign(wt x + b)
(1)
とおきます。1 2 3 4
ここで n 個の学習サンプル i (i = 1 ::: n) の満たすべき条件を:
x
(
x) = w xi + b 1 xi 2 1
(3)
;1 xi 2 2
とします。5 点 xi から平面 g (x) = 0 までの距離は jg (xi )j=jwj ですから 6 ,式 (3) は,識別境界 (g (x) = 0)
から距離 1=jwj の範囲内,すなわち,平面 g (x) = 1( 図 13 の H1 ,H2 )の間に学習サンプルが存在し
ないことを意味します。ここで,xi の属する群を変数 yi で表し:
8i
g (
t
yi
x
=
(
xi 2 1
;1 xi 2 2
1
(4)
y = (y1 ::: yn)t とします。このとき,式 (3) は yi を用いて:
と定義し, i の教師信号と呼びます。また,
8 i
w x + b) ; 1 0
yi ( t i
(5)
と書けます。
1 太字で書かれたものはベクトルです。例えば w や x はベクトルです。これまで挙げてきた例で言うと,x は,筆記の点数,面
接の点数,実技の点数,などから成るベクトルです。それに対して w はそれらに掛ける係数です。下記も参照して下さい。
2 ベクトルには行ベクトル(要素 w w :::w が横に並んだもの)と列ベクトル( w w :::w が縦に並んだもの)があります。
1 2
1 2
k
k
通常「ベクトル」といったら列ベクトルを指します。即ち,上の w や x は列ベクトルであることが想定されています。
3 t は転置を行う記号で,列ベクトルを行ベクトルに,行ベクトルを列ベクトルに変換します。例えば a = (a a :::a )t とあっ
1 2
k
たら,a は (a1 a2 :::ak ) という行ベクトルを列ベクトルに変えたベクトルであることを表します。即ち:
0
B
a=@
a1
a2
:::
1
CA
(2)
k
a
です。逆に列ベクトル w に対する wt は,列ベクトル w を行ベクトルに変換したものを表します。
4 従って,wt x はベクトル w とベクトル x の内積を表し ます。例えば w = (w w :::w )t ,x = (x x :::x )t ならば ,
1 2
1 2
k
k
wt x = w1 x1 + w2 x2 + ::: + wk xk です。高校時代習った内積の記号「・」を使って w・x などと書いてくれればいいのですが,t
を使って上のように書く人も多いです。
5 8 i とは「すべての i に対して」という意味です。
6 例えば点 (1,2,4) から,平面 3x + 5y + 6z + 8 = 0 までの距離は (3・1 + 5・2 + 6・4 + 8)= 32 + 52 + 62
p
21
jwj
さて平面 H1 ,H2 間の距離( マージン )は 2=
です。これを最大にする f (
ここで(その方が扱いやすいから ) 2 を考えて:
jwj
x) を求めればよいのです。
1 2
2 jwj
8 i yi (wt xi + b) ; 1 0
G(w) =
Minimize
wb
s:t:
(6)
の解 , b を求めれば最適な f ( ) が求まります。7 8
この最小化問題はラグランジュの未定係数( 乗数)法によって解くことができます。i を正の係数,
を = (1 ::: n )t と定義するとラグランジュ関数 Lp は:
w
x
Lp (w b ) n
;
1 jwj2 ; X
i yi (wt xi + b) ; 1
2
i=1
(7)
となります。もう少し変形すると:
n
n
X
X
= 21 jwj2 ; i yi (wt xi + b) + i
i=1
i=1
n
n
n
X
X
X
= 12 jwj2 ; i yi wt xi ; i yi b + i
i=1
i=1
i=1
n
n
n
X
X
X
= 12 jwj2 ; wt i yi xi ; b i yi + i
i=1
i=1
i=1
Lp (w b )
(8)
:
Lp を偏微分して 0 とおくことにより(これがラグランジュの未定係数法)
@L(w b )
@w
=w;
; @L(w@b b ) =
n
X
i=1
n
X
i=1
i yi xi
i yi
=0
(9)
= t y = 0
(10)
となり,式 (9) から:
w =
となります。9
n
X
i=1
n
X
i yi xi ( 逆に書くと i=1
i yi xi
= w )
(11)
10 11
Lp (w b ) を F () とおき,D をその (i j ) 成分が yi yj xti xj である (n n) 行列とすると,式 (10),式
(11) を式 (8) に代入することにより:
\subject to"
\s.t."
7
とは
の略で制約条件のことです。
8 最適な解を推定するアルゴ リズムや手法の世界には,
を添えて最適解を表す習慣があります。
に深い意味はありません。
9 ラグランジュの未定係数法とは,制約条件 g x
のもとで関数 f x を最大(最小)にする x を求める方法です。この方法
( )=0
;
\*"
()
\*"
では f (x) g (x) という新たな関数を考え,これを x や で偏微分し ,それらを 0 にする x を求めるという作業が行われます。
なぜそうすると良いのか,興味がある人は本で調べてみて下さい。
『言語処理のための機械学習入門』
(コロナ社)の説明が分かりや
すかったです。
10 偏微分とは,複数の変数から成る関数 f (x y z ::) に関して,どれか 1 つの変数だけに注目し,他の変数は定数とみなして,そ
@f (xyz )
= 2x + y となります。
の変数に関して微分を行うというものです。例えば f (x y z ) = x2 + xy + y 3 + 2yz + z 5 だったら
@x
11 ベクトルで微分するとは,ベクトルの各要素 x ::: x それぞれで微分したものを要素とするベクトルを作るということです。
1
k
@ (jxj2 )
@f
@f
@f @f
例えば @ x = ( @x @x ::: @x ) となります。また従って @ x = 2x などとなります。
1
2
k
22
F ()
=
=
n
X
i=1
i ;
1
2
1 jw j2
2
t 1 ; t D
1
(12)
が得られます。 はそのすべての成分に 1 を持つ縦ベクトルを表します。
こうして,式 (6) の最小化問題は F () の最大化問題:
Maximize
F () = t 1 ; 21 t D
(13)
s:t: t y = 0 0
に帰着されます。12 これは 2 次計画法において式 (6) の双対問題と呼ばれます。
式 (6) は制約条件の式が n 個( i = 1 :::n より)ありましたが,こちらは一次式 1 個だけになりました。
また F () も i で偏微分することで i 以外の一次式に持ち込むことが出来ます。従って F () を最大化す
。
る i は連立方程式を解く要領で求めることが出来ます( 多分)
さて式 (13) の解を i とします。式 (11) より正の( 0 でない)i に対応する i のみから が決まり
ます。この i はサポートベクトル( 以降,SV と記す)と呼ばれます。一方,非線形計画法において相補
性条件と呼ばれる:
x
x
8i (yi (wt xi + b ) ; 1) = 0
i
w
(14)
が成立するので,b は任意の SV, i ( i > 0) を用いて:
x
b
= yi ; wt xi
(15)
x) は式 (1),式 (11) より:
と求まります。13 最終的に,線形 SVM による識別関数 f (
f (x)
= sign(wt x + b )
= sign
X
n
i=1
i yi (xti x) + b
!
(16)
(17)
となります。
ここで,SV の意味について考えてみましょう。SV の定義と式 (17) から確認できるように,SV となる
i のみによって識別関数すなわち識別境界が決まり,SV でない i はその決定に寄与しません。SV でな
いサンプルをいくら除いても識別境界には影響しません。これがサポートベクトルと呼ばれるゆえんです。
線形
その :線形分離不可能な場合
ソフトマージン法など もありますが,線形分離不可能な場合には次の方法を使うのが一般的なので省略
します。
非線形
:カーネルの魔術
x
x
2.
SVM
3.
12
13
2
SVM
\ 0"は冒頭でそう定義したから。
i = 1 だから 1 i = i
y
=y
y
23
2 群の識別境界が超平面で近似できる場合は,線形識別関数によって実用上十分な性能を実現すること
ができます。ところが,図 14 のように複雑な識別境界を持つ場合には,非線形関数によって識別関数を
記述しないかぎり,良い識別性能を得ることができません。スカラー 14 を出力する任意の d0 個の非線形
関数 i ( )(i = 1 ::: d0 ) を用いて関数 を:
x
(x) = (
1 (x) 2 (x) ::: d0 (x))t
x
x
(18)
x
x
と定義します。ここで,
( ) を新たなサンプルと見なし,これまでの を ( ) で置き換えることが可能
です。そのようにサンプル を非線形変換 ( ) によって変換し ,変換後の空間において線形 SVM を適
用しようと考えるのです。変換後の ( ) 空間における線形識別境界は, の原特徴空間では非線形な識別
境界をなします。
式 (13) における の代わりに:
x
x
x
D
Dij = yiyj (xi )t
(xj )
(19)
とおくと,識別関数は:
f (x)
= sign(wt (x) + b)
= sign
n
X
i=1
yi i (xi )t (x) + b
(20)
!
(21)
と求まります。
以上のような方法で非線形 SVM が形式的に求まりますが,非線形 SVM の大きな特徴は実はここから
先にあります。今,2 つの特徴ベクトルを引数とするある関数 K ( ) があって:
xy
K (x y) (x)
(y ) =
t
d
X
0
i=1
i (x)
i (y)
(22)
が成立するものとします。この K をカーネル関数と呼びます。この時,式 (19),式 (21) は:
Dij = yiyj K (xi xj )
f (x) = sign
X
n
i=1
yi K (xi x) + b
(23)
!
(24)
i
となります。式 (23),式 (24) は式 (22) を満たす K の関数として書くことができ,
を陽には含みません。
したがって,
( ) 空間上での線形 SVM,すなわち ( ) によって定義される非線形 SVM( 式 (24) )を求
める時,
の内積形( 式 (22) )さえ定義されていれば ( ) を計算する必要もなければ ( ) の具体的な形
も知る必要がありません。式 (22) を満たす が存在するためのカーネル関数 K の条件はすでに知られて
おり,そのような K の例として:
x
x
x
x
K (x y) = (1 + xt y)p
(25)
jx ; yj2 K (x y) = exp ;
(26)
22
14 ベクトルや行列などではなく普通の数のことです。
24
図
12:
学習サンプルをすべて正しく識別する超平面は通常複数存在します
で定義されます,多項式型カーネルとガウシアン型カーネルがあります。
ここで,K と の具体例を見てみまし ょう。特徴空間の次元を 2,サンプルを
今,3 次の多項式型カーネルを採用すると:
x = (x1 x2 )t とします。
K (x y) = (x)t (y) = (1 + xt y)3
(27)
となります。この時,式 (22) を満たす が:
(x) = (1
p
p
p
p
p
p
p
3x1 3x2 3x21 3x22 6x1 x2 3x21 x2 3x1 x22 x31 x32 )t
(28)
となることが確かめられます。容易に推測がつくように,特徴空間の次元 d と多項式の次数 p に依存して
の次元 d0 は非常に大きくなり,多項式型カーネルの場合 d0 = d+p Cp 1 となります。ところが,最適
な非線形 SVM を求めたり,得られた非線形識別関数を使って未知のサンプルの群を判定したりする際に,
高次元のベクトル演算は必要なく式 (25),式 (26) のような低次元演算で足りるのです。これは,カーネル
トリックと呼ばれており( 非)線形 SVM の大きな特徴です。
■ R でマハラノビスの距離を算出したい時は関数 mahalanobis を用います。マハラノビスの距離に基づ
いて判別分析を一発で行ってくれる関数はないらしいです。
;
25
図
13:
学習サンプルが存在しない空間
図
14:
複雑な識別境界
26
■ R による SVM
1) 学習用・テスト用データファイルを先述のようにダウンロードします。
2) R を起動します。
3) まず「パッケージ 」 → 「パッケージの読み込み」 → 「 e1071 」と選ぶ(「 e1071 」が出ない場合は,
まず「パッケージのインストール」 → 「 Japan (Tokyo) 」 → 「 e1071 」と選んでから上記操作を行
う)
。これで関数 svm が使えるようになります。
4) svm 関数のヘルプが読みたい時は \?svm"と入力します。
5) 「ファイル 」→「デ ィレクトリの変更」とクリックし ,先ほどのデータファイルを置いたデ ィレク
6)
トリに移動します。
次に以下のように入力します。
>
>
>
>
>
>
7)
現況 <- read.table("Koremade no keiko.txt",header=TRUE)
希望者 <- read.table("Nyusha kibosha.txt",header=TRUE)
y <- 現況$5年後
x <- subset(現況, select=c(1:3))
傾向 <- svm(x,y)
予測 <- predict(傾向, 希望者)
と入力すると「ダ メ 優秀 優秀 ダ メ」と出力されます。これは 1,
> 予測 メ」,2,
4 番目の人は5年後「ダ
3 番目の人は5年後「優秀」な社員になると予想されたことを意味します。
■真剣に SVM を使う場合は R よりも LIBSVM の方が便利です。授業 HP 参照。
27