社会人MBA-技術者編

September 26, 2007

Wekaを起動する(アソシエーション分析①)

今回のアソシエーション分析は、今更ながらであるが、データマイニングでは最も有名な分析かもしれない。

「金曜日には、ビールとおむつが良く売れる」

といえば、どこかで聞いたことがあるかもしれない。

アソシエーション分析はマーケットバスケット分析とも呼ばれ、「商品Zを購入する人は商品Yも購入する傾向がある」というように2つ以上のアイテムの関連性に関するルールを探るものである。

従って、ルールの中には当然のルールもあり、ビールとおつまみ、歯ブラシと歯磨き粉などはセットになることが多い。

さて、本ブログは「習うより慣れろ」である。早速、データ解析を行う。

まず使用するデータは以下のデータで、あるプロジェクトの概要である。参加企業数、予算、利益などが記載されている。



分析の目的はプロジェクトでのルールを発見することで、「利益の高いのは・・・」と利益を目的変数に設定し、説明因子を引き出すのではない。さらに、wekaでは、表のように行と列が整っていることが条件で、レシートなどの顧客がいくつの品目を購入したかが離散しているのには適さない(この方法ついては後日記載する予定)。

さて、分析に入るが、wekaを立ち上げ、第一に行なうのは、「分析の前に、変数の値を名義尺度に変換する」必要がある。これは、数字ではなく、例えば、身長であれば、高い、中程度、低い(3つに区分:"bin"は"3"、高い、低いであれば"bin"は"2":"bin"は後述)に区分することである。


具体的には:
"Choose"をクリック、filters:unsupervised:attribute:Discretizeとなる。



次に図の"4"(文字の部分)をクリックすると次の画面が現れる。



"bins":先ほどの身長ような数値をいくつのグループ(高い、中程度、低いなら"3")に分けるかを指定し、通常は2~4を指定する。

"useEqualFrequency":通常は"True"を指定する。
"attributeIndices"どの変数に対して変換を行うかを指定するもので通常は初期値のままでよい。

"OK"をクリック後、先ほどの画面の"5"で"No class"に指定し、"6"の"Apply"をクリックする。これで、分析前のデータ処理が終了した。

次に、"WekaExplorer"画面の"Associate"タブをクリックする。さらに、図の赤の四角の部分をクリックすると、別の画面が立ち上がる。



"numRules"は抽出する最大ルール数、"minMetric"は最小信頼度(metricTypeに
”Confidence”を選択している場合)。数値を小さくすると、抽出されるルールの候補が増加する。"Start"をクリックすると分析が始まり、時にはルールが抽出されない場合があるが、このような時は
この数値(minMetric)を小さくしたり、"lower...support"の数値を設定したりして、ルールを抽出する。


画面には以下のようにアウトプットされる。
* * * * * *
Apriori
=======

Minimum support: 0.1
Minimum metric <confidence>: 0.8
Number of cycles performed: 18

Generated sets of large itemsets:

Size of set of large itemsets L(1): 25

Size of set of large itemsets L(2): 151

Size of set of large itemsets L(3): 21

Best rules found:

1. 予算='(6006.5-inf)' 企業数='(6.5-inf)' 8 ==> 開発期間='(15-25.5]' 7 conf:(0.88)
2. 企業数='(6.5-inf)' 開発期間='(15-25.5]' 8 ==> 予算='(6006.5-inf)' 7 conf:(0.88)
3. 開発期間='(15-25.5]' 利益='(19993.5-31697.5]' 7 ==> 開発種別=C 6 conf:(0.86)
4. 関連国数='(-inf-1.5]' 利益='(19993.5-31697.5]' 7 ==> 企業数='(-inf-3.5]' 6 conf:(0.86)
5. 要員='(18-inf)' 利益='(19993.5-31697.5]' 7 ==> 企業数='(-inf-3.5]' 6 conf:(0.86)

* * * * * *


典型的には"2"のルール:「企業数が多く、開発期間が中程度であれば、予算が高い」というルールが抽出されている。

以上のように、wekaでは簡単に行なえるが、この分析で身につけて置かなければならないのは、"support"と"confidence"の概念である。この概念が不明であると、当たり前のルールしか抽出できない状態になってしまい、折角のデータ収集がムダに終わってしまう可能性がある。

これは次回に補足する。

(「Wekaを起動する(アソシエーション分析①)」了)
次回は「Wekaを起動する(アソシエーション分析②)」です。

*ブログ中の図はクリックすれば、拡大されます。
*本ブログ記事の下「Labels」の「データマイニング」をクリックすると、データマイニングに関する記事が一括掲載されます。

Labels:


September 25, 2007

中秋の名月

今日は旧暦の8月15日、中秋の名月です。この時期、天気はいまいちだそうですが、今年は快晴ですね。

月をこそ親しみあかぬ思うこと 言わむばかりの友と向かひて(八条宮智仁親王)

日本では月との関係は深いものがありますね。


September 22, 2007

Wekaを起動する(複数の分析を行う)。

今回は「複数の分析を行う」である。複数の分析を行うとは、いくつかのアルゴリズムを同時に行うことである。

これまで、いくつかの分析を紹介してきたが、要はまとめて行い"accuracy"を比較して、どのアルゴリズムが好適かを行うものである。これにはwekaの"Experimenter"を利用する。

分析データはwekaのサンプルファイルの"weather.arff"
分析に用いたのは以下
①決定木
②記憶ベース推論(IBk)
③ベイズ
④ニューラル

以下、手順を下に示す。







結果から、決定木分析の"accuracy"が最も高いことがわかるが、IBk以外は大きく変わらない。分析の目的により選択しなければならないかもしれない。

(「Wekaを起動する(複数の分析を行う)」了)
--> 次回は「アソシエーション分析」です。

*ブログ中の図はクリックすれば、拡大されます。
*本ブログ記事の下「Labels」の「データマイニング」をクリックすると、データマイニングに関する記事が一括掲載されます。

Labels:


September 9, 2007

Wekaを起動する(ニューラルネット)

今回はニューラルネットで、これは、神経系機能のモデル化を行い、予測などに用いられる。やはり、習うより慣れろで、使用法から紹介する。

分析用のファイルをPreprocess:Open file...から呼び込み、Classify:MultilayerPerceptronを選択する。このファイルは、以下で、wekaをインストールしたときに、添付されているweather.arffをcsv形式に変換し修正保存したもので(この方法は以前のブログを参照してください)、赤字の部分を加筆しており、予測したい部分は"?"を入力している。





Cross-validationのFolds数を10のままにして、More options...でOutput predictionsをチェックしOK。目的の因子に(Nom)playとなっていることを確認し("Start"のすぐ上の欄)、分析を"Start"をクリックする。


これまでの投稿のように、ここまでで分析は終了している。

outputの欄を見ると、

...
...
2 ?  2:yes  +  0.327 *0.673
...
Correctly Classified Instances 12 85.7143 %
...
...
と表示されている(...はアウトプットされている項目を省略しています)。
結論的には、ニューラルネットによる予測は"yes"と分析されたのである。

ちなみに、図のようにGUIによりinput、outputなど層やノードの様子を観察できるセッティングもある。




上図での○(:ノード)では、inputからの情報を結合関数により結合し、次へ出力する。この際の出力関数はtanhに類似しているものである(ある地点から急激に変化が起こる様相、例)化学の滴定の実験のイメージ)。

どのような設定が最もふさわしいかは、分析のデータによるので、法則はない。種々のパラメーターの設定を変更し、Correctly Classified Instances の%での評価となる。

化学系の方がよく理解されている交互作用の存在は、統計解析では不十分である。完全な分析方法は存在しないが、種々の積み上げてきた実験を統合的に分析するのは、ニューラルネットは有効である。

データマイニングを使用し得た結果は、最後ではない。リーチなのである。その結果から、どのように実験をおこなう、陳列を変更する、広告方法を変更する、などの戦略の参考になるのである。従って、ビジネススクールの講義にも大学が準備するのである。


<参考>「重み」とは、何なのか?
分析の応答因子は次の3つの目的で予測される。大きな値が望ましい(望大特性)、逆の望小特性、ある値が望ましい望目特性である。この際に、分析に関する誤差をどうするかが「重み」である。例えば、ある値100に近いことを目的にしている場合、100付近の値周辺では誤差は小さいほうがいい(50や60、150や160付近の誤差に比べて)。

(「Wekaを起動する(ニューラルネット)」了)
--> 次回は「一度に複数の分析を行う」です。

*ブログ中の図はクリックすれば、拡大されます。
*本ブログ記事の下「Labels」の「データマイニング」をクリックすると、データマイニングに関する記事が一括掲載されます。

Labels:


September 6, 2007

Wekaを起動する(記憶ベース推論②)

今回は、最近傍アプローチのイメージを掲載している。
最近傍アプローチは、過去に経験した類似の状況を元に分析を行う手法で、分類、推定、予測などの問題を解くために用いられ、記憶ベース推論、協調フィルタリングとしてよく説明されている。

記憶ベース推論で「k-NN(k-Nearest-Neighbor法)」とよく表現されるが、イメージは下の図である。
図のように、k個の近傍データを使用することから概念がイメージできる。




図のように、k個の近傍データを使用することから概念がイメージされる。

***kの予測の影響***
予測に求めることは、分散が小さく「実際の値とのズレが小さい、こと」である。このことを踏まえると、kを多くとると分散減少は減少する。が、もし、実際の値から外れていて分散が小さかったら・・・
つまり、やみくもに大きくしても予測精度は上がらない・・・
最適なkの値はデータの構造によって異なるのでk=1、3、5などいろいろ試してみることがお薦めである。

協調フィルタリングでは、予測する場合、類似ユーザの好みに基づいて,対象ユーザの好みに合いそうなアイテムを予測していることから、イメージは図のようになる。


Amazonで類似ユーザーが高く評価した本が推薦される、などはこの好例である。

(「Wekaを起動する(記憶ベース推論②)」了)
--> 次回は「ニューラルネットワーク」です。

*ブログ中の図はクリックすれば、拡大されます。
*本ブログ記事の下「Labels」の「データマイニング」をクリックすると、データマイニングに関する記事が一括掲載されます。

Labels:


September 2, 2007

DRALION(ドラリオン)大阪公演

DRALIONは「中国が誇る伝統芸術と、現代の西洋文化を代表するシルク・ドゥ・ソレイユの驚異的パフォーマンスが融合した作品。
タイトルの『DRALION(ドラリオン)』は、東を代表する龍(DRAGON:ドラゴン)と西を代表する獅子(LION:ライオン)からなる造語で、人類と自然の共存を求める「東洋的哲学」からインスピレーションを受け、生み出された。」(作品コンセプトより)

会場は後ろの方の席でも案外近い。今まで、コンサートなどでドームなどの大型会場に慣れてしまっていたのもあってそう感じたのかも。

最近はDVDなど映画でも簡単に家で鑑賞できるようになったが、やっぱり臨場感や迫力はかないませんね。