Presentation is loading. Please wait.

Presentation is loading. Please wait.

情報知能学基礎演習 豊田秀樹(2008)『データマイニング入門』 (東京図書)。2章と3章

Similar presentations


Presentation on theme: "情報知能学基礎演習 豊田秀樹(2008)『データマイニング入門』 (東京図書)。2章と3章"— Presentation transcript:

1 情報知能学基礎演習 豊田秀樹(2008)『データマイニング入門』 (東京図書)。2章と3章
情報知能学基礎演習 豊田秀樹(2008)『データマイニング入門』 (東京図書)。2章と3章 情報知能学科 白井 英俊

2 2章を振り返って 2.5.1 偽札データの分析: 判別モデル 2.5.2 助数詞の分析
パッケージ nnet を用いる。 Flurry & Riedwyl (1988)のお札のデータ(図2.7)による学習 中間層が1層のニューラルネット(a=3, b1=2, b2=3, b3=1) 2.5.2 助数詞の分析 パッケージneuralを用いる。助数詞「本」の音韻変化。 中間層が1層のニューラルネット(a=3, b1=1, b2=10, b3=1)   ユニット内部の信号変換:ラジアル基底関数(RBF: radial basis function) 2.5.3 ケーキの購入意思の予測 パッケージneuralを用いる。多層のニューラルネット(MLPモデル) データは図2.20。これを評価にも用いる MultiLayer Perceptron

3 2.5.1偽札データの分析 入力層と出力層に対応する行列を作る: 学習を行う
下部マージンと対角線を入力とする。最大値と最小値と用いて、値を0から1の間の数に変換する (2.10式参照) 下部マージン <-     (お札データ$下部マージン - min(お札データ$下部マージン))/       (max(お札データ$下部マージン)-min(お札データ$下部マージン)) 入力層と出力層に対応する行列を作る: 入力層<-cbind(下部マージン,対角線) 出力層<-class.ind(お札データ$真偽) 学習を行う set.seed(3)   # 乱数の初期値の設定(しなくてもよい)   ネットワーク学習 <- nnet(入力層, 出力層, size=3, rang=0.3, maxit=2000)

4 2.5.1偽札データの分析(続) 検証 ネットワーク適用 <- predict(ネットワーク学習, 入力層) 試してみよう
# 学習させたネットワークに再度、入力層データを適用 適用結果 <- round(ネットワーク適用, digits=3) 試してみよう いろいろなトポロジーで試そう 結果を図示させてみよう

5 2.5.1偽札データの分析(続):元データ

6 2.5.1偽札データ(続):適用結果

7 2.5.2 助数詞の分析 ユニット内部の信号変換に、シグモイド関数ではなく、ガウシアン関数(RBF)を用いる
入力層と出力層に対応する行列を作る 入力層<-as.matrix(鉛筆データ$本数)    出力層<-as.matrix(鉛筆データ$ポン) 学習させる ネットワーク学習<-rbftrain(入力層, neurons=10, 出力層, it=1000) 検証 ネットワーク適用<-rbf(入力層, ネットワーク学習$weight, ネットワーク学習$dist, ネットワーク学習$neurons, ネットワーク学習$sigma) 入力を1変数とする場合

8 表示されるネットワーク

9 学習された関数の表示(「ぽん」) 10

10 2.5.2 助数詞の分析(続き) 注意:出力層としては「ボン」を選んでいる つまり、これは「ボン」の判別分析
 つまり、これは「ボン」の判別分析  疑問: ガウシアン関数ではなく、シグモイド関数だとどうだろう? 「ホン」、「ポン」も同様に作らないといけない 同様に以下を実行 ネットワーク学習ホ <- nnet(入力層, 出力層ホ , size=10, rang=0.3,maxit=2000) ネットワーク適用ホ <- predict(ネットワーク学習ホ, 入力層) 適用結果ホ <- round(ネットワーク適用ホ, digits=1) ネットワーク学習ボ <- nnet(入力層, 出力層ボ , size=10, rang=0.3, maxit=2000) ネットワーク適用ボ <- predict(ネットワーク学習ボ, 入力層) 適用結果ボ <- round(ネットワーク適用ボ, digits=1)

11 2.5.2 助数詞の分析(続き) 以下をやってみると…
choose <- function(x,h,b,p) { if (h[x] > b[x] && h[x] > p[x]) cat(x,"HON \n") else { if (b[x] > h[x] && b[x] > p[x]) cat(x,"BON \n") else cat(x,"PON \n") } } lapply(1:10,function(x) {choose(x,適用結果ホ,適用結果ボ,適用結果)}) choose2 <- function(x,h,b,p) { if (h[x] > b[x] && h[x] > p[x]) paste(x,"HON ") else { if (b[x] > h[x] && b[x] > p[x]) paste(x,"BON ") else paste(x,"PON ") } } sapply(1:10,function(x) {choose2(x,適用結果ホ,適用結果ボ,適用結果)}) その結果は: [1] "1 PON " "2 HON " "3 BON " "4 HON " "5 HON " "6 PON " "7 HON " [8] "8 PON " "9 HON " "10 PON "

12 実は… この課題は、ガウシアン関数を用いるために作られたもの:入力も出力も1変数に限定していた
入力を「本数」に対応した10個の変数とすれば、nnetで(も)簡単に学習が可能   入力層<-class.ind(鉛筆データ$本数)   出力層<-鉛筆データ[,2:4]   set.seed(3)   ネットワーク学習 <- nnet(入力層, 出力層, size=3, rang=0.3, maxit=2000)   ネットワーク適用 <- predict(ネットワーク学習, 入力層)   適用結果 <- round(ネットワーク適用, digits=3)

13 2.5.3 ケーキの購入意思の予測 多層ネットワークを用いる例 7変数の入力、1変数の出力
入力層<-cbind(高級感,甘さ,新奇性,濃厚さ,食感,華やかさ,値段) 出力層<-as.matrix(ケーキデータ$購入意思) ネットワーク学習<-mlptrain(入力層, neurons=c(5,3), 出力層, it=1000) ネットワーク適用<-mlp(入力層, ネットワーク学習$weight, ネットワーク学習$dist, ネットワーク学習$neurons, ネットワーク学習$actfns) colnames(ネットワーク適用)<-c("予測確率(買う)") 適用結果<-round(ネットワーク適用, digits=3)

14 2.5.3 ケーキの購入意思の予測(続) 多層のネットワーク

15 2.5.3 ケーキの購入意思の予測(続) 検証 count = 0 ng = c() for (i in 1:nrow(ケーキデータ))
   if (ケーキデータ$購入意思[i] == 1 && 適用結果[i] <= 0.5) { cat(i,"\t","*NG-Fooled*\n") ng = c(ng,i) count = count+1 } else { if (ケーキデータ$購入意思[i] == 0 && 適用結果[i] > 0.5) { cat(i,"\t","*NG*\n") count = count+1 } } とすると、1か所、予測ミスがあることがわかる

16 3章 人工知能と決定木 古典的な人工知能:エキスパートシステム 専門家から「知識を獲得」し、プログラムとして実現ー知識表現
3章 人工知能と決定木 古典的な人工知能:エキスパートシステム 専門家から「知識を獲得」し、プログラムとして実現ー知識表現 データ量の爆発的な増加⇒知識を獲得するアルゴリズム、特に磁力で知識を獲得するアルゴリズムの重要性=機械学習(machine learning) 機械学習の技術的本質=統計学の「多段層別」技法 決定論的命題ではなく、統計的な相関関係の獲得

17 3.2 決定木:タイタニックデータを例に タイタニック号の生還者と死亡者の表(表3.1)から、どのような要因が生還・死亡(生死)を分けたかを考える 基準変数:この例では「生死」。目的変数ともいう。 予測変数:基準変数(この例では「生死」)を予測するのに使える変数。説明変数ともいう。この例では、「等級・立場」、「大人・子ども」、「性別」 カテゴリカル変数:値が数値ではなくカテゴリ(分類) ダミー変数:値が二者選択(二つの水準)の変数

18 決定木:タイタニックデータを例に(続き)
CART(Classification And Regression Tree) Breiman, Olshen, Stone, Friedman(1984)  説明変数を二進分岐させ、決定木を生成  分岐の評価基準:ジニ係数(Gini index)や情報利得(information gain) パッケージは mvpart (他に tree, rpart) タイタニック木 <- rpart(生死~等級+大人子ども+性別, data=タイタニックデータ, method="class")

19 決定木:タイタニックデータを例に(続き)
printによる表示 node), split, n, loss, yval, (yprob) * denotes terminal node 1) root 死亡 ( ) 2) 性別=男性 死亡 ( ) 4) 大人子ども=大人 死亡 ( ) * 5) 大人子ども=子ども 死亡 ( ) 10) 等級=3等 死亡 ( ) * 11) 等級=1等,2等 16 0 生還 ( ) * 3) 性別=女性 生還 ( ) 6) 等級=3等 死亡 ( ) * 7) 等級=1等,2等,乗務員 生還 ( ) *

20 決定木の図示

21 3.4 予測変数が連続変数の場合 偽札データを例に、予測変数が連続変数の場合の扱いを見る
お札木 <- rpart(真偽 ~ ., data=お札データ) print(お札木) n= 215 node), split, n, loss, yval, (yprob) * denotes terminal node 1) root  215  100 偽札 (   ) 2) 対角線<   偽札 (   ) * 3) 対角線>=   真札 (   ) 6) 下部マージン>=9.45   偽札 (   ) * 7) 下部マージン< 9.45   真札 (   ) *

22 決定木の表示 判別 偽札 真札 2  0   96

23 分類木をデータで表示してみると

24 本日の学習 Rの作業:p.99~p.111 2章の復習:特に内容に注意して
3章の理解:何が行われているか、ツールを『使える』だけではなく、ツールの仕組みも理解できるようにしよう ジニ係数と情報量:3.3.2節の計算を、自分でやってみよう


Download ppt "情報知能学基礎演習 豊田秀樹(2008)『データマイニング入門』 (東京図書)。2章と3章"

Similar presentations


Ads by Google