2017年11月12日日曜日

データマイニング

以下の図書を読んでみました。
「誰でもわかる 医療データマイニング -ビッグデータの活用-」SPP出版2014

こちらは決定木を利用したルール抽出のお話がメイン。医療分野での応用例が多く掲載されています。2014年ですから深層学習が流行る前ですね。このころは「データマイニング」という言葉が流行っていたのでしょうか?
決定木を採用された最大の理由は、DNN でブラックボックスをなる判別の根拠を明確にすることでしょう。根拠が明確になるので Evidence-Based Medicine に有用です。

決定木も機械学習に入るのかわかりませんが、random forest は H2O に入っています(木がいっぱいなので森)。決定木は R でも Python でも可。
個人的に R でできることは統計的手法だと思っていたのですが、そうでもないようですね。どこまでが統計で、どこから機械学習なのか、あるいはどこまで行くと AI と呼ぶべきなのかわからなくなりました。

とりあえず H2O で random forest  を試しましたが、結果はそれほど向上せず。当然、If-then ルールも出ません。
If-then ルールを明確にするには、R か Python で決定木を使えば良いでしょう。

で、今回は簡単そうな R を選択。
が、最初からエラー。手元の図書が古く、現在、mvpart は CRAN から外れてしまったようです。
Warning message:
package ‘mvpart’ is not available (for R version 3.3.2) 
素直にrpart を使用。題材はシンプルな泥質岩のみの土砂・軟岩・硬岩区分データに変更。読み込みは MSVS の R Tools を使用。読み込んだデータが RockClass。Class以外の属性データを全て分析に使用する場合は、2行目のシンプルな書式でOK。
library(rpart)
model = rpart(Class ~ ., data = RockClass) # 計算
plot(model) # 決定木の線を図化
text(model) #決定木の文字追加
あっけないほど簡単。4行で図化までできます。一瞬です。が、rpart の図だと見にくい。
で、rpart.plot を使用。オプションが豊富です。個人的には If-then ルールを作りやすそうな type0 のみでOK。
http://www.milbo.org/rpart-plot/prp.pdf
library(rpart.plot)
rpart.plot(model, type = 0)
今回の場合、以下の4点で判別が可能でした。
1.クッラクとして判別できるか否かで岩と土砂を区分
2.岩のうち、風化の進んだものを軟岩Iに区分
3.残りの中でコア長カテゴリーが3以下であれば中硬岩
4.残ったものを軟岩II

個人的には複雑な判別だと思っていた土軟硬区分ですが、案外、シンプルな判断をしているようです(単一地質故?)。第三者に対して説明する必要が出てきた場合や新人にポイントを教える場合に使えそうですね。ナレッジマネジメントにも利用できそうです。

気をよくして崩壊・非崩壊に題材を変更。
が、結果はダメ。
それでも、判別に重要な属性抽出といった意味ではラフセットに通ずるものがあり、理解の一助になりそうです。



0 件のコメント:

コメントを投稿