データマイニングと機械学習 - kyoto u2015/06/04 · 分類/予測器...
TRANSCRIPT
2015年7月10日
データマイニングと機械学習
西田豊明
Copyright © 2015 Toyoaki Nishida All Rights Reserved.
分類/予測器
機械学習とデータマイニング
- 機械学習AIシステムが経験を通して自らの振舞いや知識を改良するための手法
- データマイニング:データの中から法則性を推定する技術.
法則
データ 分類/予測
トレーニング用
学習システム教師有/無
[西田 1999]
決定木学習
分類器
決定木
法則
データ 分類
トレーニング用
学習システム教師有
size?
taste?
sweetmild
marginal
L S
good fair
fairgood
[西田 1999]
決定木
size?
taste?
sweetmild
marginal
L S
good fair
fairgood
[西田 1999]
決定木の学習 -- 例題
taste size surface decision
sweet L shining good
sweet S shining good
sweet S dull good
mild L shining good
mild S shining fair
marginal L dull fair
marginal S dull fair
marginal S shining fair
[西田 1999]
決定木の例
size?
taste?
sweetmild
marginal
L S
good fair
fairgood
[西田 1999]
taste size surface decision
sweet L shining good
sweet S shining good
sweet S dull good
mild L shining good
mild S shining fair
marginal L dull fair
marginal S dull fair
marginal S shining fair
決定木の例
L
shining dull
S
sweet mild, marginal
L S
shining
mild, marginal
dull
sweet
L S
Mild, marginalsweet
surface?
size? size?
taste?good
good fair
fair
surface?
taste? taste?
size? fair
fair
good good
good
[西田 1999]
sweet, mild, marginal
taste?
good fair
taste size surface decision
sweet L shining good
sweet S shining good
sweet S dull good
mild L shining good
mild S shining fair
marginal L dull fair
marginal S dull fair
marginal S shining fair
size?
taste?
sweetmild
marginal
L S
good fair
fairgood
決定木の良さ
構造の簡単な決定木を優先
オッカムのかみそり(Occum‘s razor):与えられたデータと整合する仮説のなかで最も単純なものを優先する.
データ集合SのエントロピーH(S):
C(S): データ集合 S に対する可能なカテゴリの集合p(c): カテゴリ c に分類されるデータの割合
)(
)(log)()(SCc
cpcpSH
[西田 1999]
アルゴリズムID3
[西田 1999]
(defun id3 (attributes data)
(let* ((possible-classes (get-possible-classes data)) children)
(cond ((= (length possible-classes) 1) (first possible-classes))
((null attributes) '?)
(t (setq children (select-and-split attributes data))
`(,(first children)
. ,(mapcar #'(lambda (x)
`(,(first x)
,(id3 (delete (first children) attributes)
(second x))))
(second children)))))))
(defun get-possible-classes (data)
(let* ((result nil))
(dolist (d data)
(cond ((not (member (second d) result))
(push (second d) result))))
result))
(defun select-and-split (attributes data)
(select-minimal-entropy (find-all-partitions attributes data)))
(defun find-all-partitions (attributes data)
(let* ((result nil) possible-values entropy-attribute-partition)
(dolist (attribute attributes)
(setq possible-values (get-possible-values attribute data))
(setq entropy-attribute-partition (get-partition data attribute possible-values))
(push entropy-attribute-partition result))
result))
アルゴリズムID3
[西田 1999]
(defun get-possible-values (attribute data)
(let* ((possible-values nil) x)
(dolist (d data)
(setq x (second (assoc attribute (cdr (first d)))))
(cond ((not (member x possible-values)) (push x possible-values))))
possible-values))
(defun get-partition (data attribute possible-values)
(let* ((entropy 0) (partition nil) (data-count (length data)) subdata)
(dolist (possible-value possible-values)
(setq subdata nil)
(dolist (d data)
(cond ((equal possible-value (second (assoc attribute (cdr (first d)))))
(push d subdata))))
(setq entropy (+ entropy (* (/ (length subdata) data-count)
(calculate-entropy subdata))))
(push `(,possible-value ,subdata) partition))
`(,entropy ,attribute ,partition)))
(defun calculate-entropy (data)
(let* ((size (length data)) (entropy 0) (possible-classes (get-possible-classes data)) c)
(cond ((= (length possible-classes) 1))
((= size 1))
(t (dolist (possible-class possible-classes)
(setq c (count-if #'(lambda (x) (equal possible-class (second x))) data))
(setq entropy (- entropy (* (/ c size) (log (/ c size) 2)))))))
entropy))
(defun select-minimal-entropy (partitions)
(cdr (first (sort partitions #'(lambda (x y) (< (first x) (first y)))))))
頻出集合発見
頻出集合データ
頻出集合発見
3つ以上のトランザクションに含まれるアイテム集合
{1} {2} {7} {9}
{1, 7} {1, 9}
{2, 7} {2, 9} {7, 9}
{1, 7, 9} {2, 7, 9}
頻出集合発見
[西田 1999]
トランザクション名(取引) レコード:アイテムの集合
A 1,2,5,6,7,9
B 2,3,4,5
C 1,2,7,8,9
D 1,7,9
E 2,3,7,9
F 2,7,9
トランザクション
アイテム
トランザクションデータベース
頻出集合発見問題 (frequent itemset mining)
Given:トランザクションデータベース D
Find:頻出度θ以上の頻出集合を全て見つける
[西田 1999]
θ: 閾値(最小サポート)θが大:解となる頻出集合の数は小さいθが小:有用な知識をもらさず見つけ出すため,モデルの立場からは望ましい.
t1: {1, 2, 5, 8, 11, 12, 15, 17, 18, 19, 23, 25, 27}
t2: {2, 4, 5, 8, 11, 17, 19, 23, 27, 29}
t3: {1, 3, 5, 6, 7, 8, 9, 10, 14, 15, 21, 25, 26, 30}
t4: {7, 8, 10, 11, 12, 13, 14, 15, 17, 23, 25, 29}
t5: {2, 5, 6, 8, 11, 13, 15, 17, 18, 20, 23, 25, 30}
t6: {2, 3, 7, 8, 12, 13, 15, 17, 18, 23, 26, 29}
大きさ1: {{8}, {15}, {17}, {23}}
大きさ2: {{17, 23}, {8 ,23}, {8, 17}, {8 ,15}}
大きさ3: {{17, 8, 23}}
例:
例(θ=5の場合):
アプリオリ法
頻出集合の族の単調性:トランザクション t が頻出集合 X
を含むならば,t は X の任意の部分集合を含む.
⇒ X の部分集合の出現集合は X の出現集合を含み,頻出度は X より同じか大きくなる.
基本アイデア
[西田 1999]
アルゴリズム
アプリオリ法のアルゴリズム空集合から出発し,幅優先的にアイテムを1つずつ追加していく.
アプリオリD1=大きさ1の頻出集合の集合; k:=1
while Dk≠φ
(1) 大きさがk+1であり,Dkの2つのアイテム集合の和集合となっているものを全てDk+1 に挿入する
(2) frq(S)<θ となるSを全てDk+1から取り除く(3) k := k+1
end while
特長:データベースへのアクセス数の少なさ.計算時間:〈候補の総数〉×〈データベースの大きさ〉に比例〈候補の総数〉は頻出アイテム集合の数のn倍(nはアイテムの数)を超えない.⇒ 頻出集合1つあたり,最悪でも〈データベースの大きさ〉×nに比例
[西田 1999]
ニューラルネットワーク
― 多層フィードフォーワードネットワーク ―
分類器
多層フィードフォーワードネットワーク
法則
データ 分類
トレーニング用
学習システム教師有
入力層
中間層
出力層
[西田 1999]
フィードフォーワード型ニューラルネットワーク
wji
入力層
中間層
出力層
oi netj=Σwjioi+θji
ユニットj
oj
oj(t+1)=fj(netj)
fj :単調非減少,微分可能
θj:バイアス
[西田 1999]
ニューラルネットワークを構成するユニット(より一般的なもの)
wji
oinetj
=Σwjioi+θji
ユニットj
ojaj(t+1)
= F(aj(t), netj (t))
aj : ユニット j の活性度
oj=fj(aj)
ユニットiから ユニット j の
出力
[西田 1999]
排他的選言(exclusive OR)を計算するためのフィードフォーワード型ネットワーク
-3.3 -3.9
入力ユニット 中間ユニット 出力ユニット
-6.7
7.7
7.7
-6.7
14
c は,そのユニットへのバイアスが c であることを示す
x y z
0 0 0.0
0 1 1.0
1 0 1.0
1 1 0.0
x
y
z
[西田 1999]
誤差逆伝播
入力パターン p に対する出力層での誤差
が最小になるように,ユニットmからユニットnへの結合に対応づけられている重みwnm各ユニットnのバイアス θnを調節する.Epjは入力パターンpに対する出力ユニットjにおける誤差(希望出力tpjと実際の出力opjとの差の2乗の半分)である.
pに対するwnmへの修正:
pに対するθ nへの修正:n
p
np
nm
p
nmp
E
w
Ew
2
21 )(
j
pjpj
j
pjp otEE
[西田 1999]
誤差逆伝播の基本的な考え方
に注意すると
)( pnnpn
m
pnpmnmpn
netfo
ownet
pmpnpm
pn
p
nm
pn
pn
p
nm
p
nmp
oonet
E
w
net
net
E
w
Ew
pn
pn
p
pn
pn
pn
p
pn
p
np
net
Enet
net
E
E
pn
pn
p
net
E
ただし,
wnm
opm
ユニットn
opn
m
pnpmnmpn ownet )( pnnpn netfo
Ep
[西田 1999]
誤差逆伝播の基本的な考え方
ユニット n が隠れユニットのとき
ユニット n が出力ユニットのとき
wnm
om netn=Σwjioi+θji
ユニット n
on
on=fn(netn)
出力
wnmom netn=Σwjioi+θji
ユニット n
on
on=fn(netn) 出力
ユニットk
)(
2
1
'
2
pnnpnpn
pn
pn
pnpn
j
pjpj
pnpn
p
pn
netfotnet
oot
otnetnet
E
)('
)('
pnn
k
knpk
pnn
k pn
pk
pk
p
pn
pn
pn
p
pn
p
pn
netfw
netfo
net
net
E
net
o
o
E
net
E
[西田 1999]
実行例
-0.3 0.7
2
3
3
0
2
x
y
z
x y z
0 0 0.74
0 1 0.89
1 0 0.98
1 1 0.99
-0.5 -0.2
1.9
3.0
3.0
-0.0
1.8
x
y
z
x y z
0 0 0.61
0 1 0.81
1 0 0.97
1 1 0.97
10サイクル後
-0.8 -1.4
0.2
3.3
3.1
-0.1
1.8
x
y
z
x y z
0 0 0.29
0 1 0.52
1 0 0.60
1 1 0.61
100サイクル後
-2.3 -2.6
-3.6
5.9
5.9
-3.6
8.2
x
y
z
x y z
0 0 0.13
0 1 0.85
1 0 0.85
1 1 0.17
1000サイクル後
-3.3 -3.9
-6.7
7.7
7.7
-6.7
14
x
y
z
x y z
0 0 0.00
0 1 0.97
1 0 0.97
1 1 0.00
10000サイクル後
[西田 1999]
まとめ
1.人工知能とは何か2.Common Lispを使った人工知能プログラミング
3.発見的探索a.状態空間探索b.問題分解法
4.機械学習a.決定木学習b.頻出集合発見c. ニューラルネットワーク学習
References
[西田 1999] 西田豊明: 人工知能の基礎, 丸善, 1999.