* RapidMiner [#md074995]

//ここには %項目の説明を書いてください.よろしければ署名しておいてください.

[[Weka]] の学習ルーチンに,前処理・可視化の部分を強化したYaleが,Rapid-I 社がオープンソースで開発している RapidMiner になった.
さらに今は社名も [[RapidMiner>http://rapidminer.com/]] になった.

- Community Edition は無料でオープンソースで 5.x
- 6.x 移行は製品で,機能制限版で無償のStarter版と,有償のものとがある.無償版は読めるファイルが CSV/Excel でDBアクセスなしの小規模データのみ.

- ビデオ: http://www.youtube.com/user/RapidIVideos

** Version 5.x のCommunity Edition について [#dd760cc5]

*** しましまの個人的感想 [#w54a2575]

- 便利にできている.アルゴリズムをいじらないで分析だけする人にはおすすめ.
-- Helpメニューからは,Wikiやビデオなどの他の資料へのアクセスができる.Wikiは結構ユーザがいることが伺える.
- 下の方にエラーが出てくるが,対処法が提案されてるので,あまり迷わない.
- ブースティングとかをメタ学習っていうな〜アンサンブル学習だ.メタ学習は学習のための知識であるメタ知識を獲得する学習のことだよ〜.
- 可視化で決定面を書く機能と,クラス条件付きでない特徴の分布の表示があったらいいのに
- Look&Feel が変えられず,フォントが細くてジャギーがあって読みにくい.Wikiにも同様の要望を持った人がいるようだったが,解決策はなさそう.
- Process のParameter設定の parallelize main process など並列実行オプションがある.マルチコアのありがたみをしみじみ実感.Preference でスレッドの最大数を指定しておけばコアを全部使われないようにも制限できる.
- [[KNIME]]と比べて,拡張性はKNIMEが上で,ヒントやサンプルなどアシスト系の部分はRapidMinerが上な気がする.実験・研究系はKNIMEを,BI系はRapidMinerがいい気がする.

*** インストール [#bcf71ff0]

Mac/UNIX 系へのインストールの概要.
Windows系は [[Installation Guide>http://rapid-i.com/content/view/17/40/]] を参照.

+ Java が 6.0 であることを確認
+ [[Rapid-I>http://rapid-i.com/]] から,RapidMiner > Download とたどって,[[Other Systems>http://rapid-i.com/content/view/169/82/]] のダウンロードページへ
+ 関連情報が欲しければメールを登録して,そうでなければ,下の方の download here をクリックしてダウンロード
+ ダウンロードしたzipファイルを /usr/local/ や /Applications とかに展開し,rapidminer というディレクトリを作る
+ その中の scripts に RapidMinerGUI があるので
-- MAX_JAVA_MEMORY= をMBytes 単位で設定
+ RapidMinerGUI に実行権限を与えて,パス上の適当な場所へ置いて実行すれば GUI環境が実行される.

さらに [[R]] との連携をする場合(Mac OS Xの場合)
- scripts/RapidMinerGUI の MAX_JAVA_MEMORY の定義の直後あたりに追加
 ## for R_Extension
 export R_HOME=/Library/Frameworks/R.framework/Resources
 export JAVA_HOME=/Library/Java/Home
- CRAN版のRをインストールし,起動後にパッケージインストーラで rJava と javaGD をインストール
- 起動後に指定するライブラリは次のパスを指定
 /Library/Frameworks/R.framework/Resources/library/rJava/jri/libjri.jnilib 

*** チュートリアルまとめ [#v0d06c59]

しましまがVersion 5.0 のチュートリアルを実行したときのメモです.
最後にしましまと書いてある行は,特に個人的な視点で書いてます.
他の部分も私の理解に基づくまとめです.

- 最初に実行したら,自分のファイルを置くディレクトリを聞かれるので,適宜入力
- Helpメニューの RapidMiner Tutorial を選ぶとチュートリアルが始まる

''1. 決定木''
- 上の三角の実行ボタンを押すと,results workspace に変えるか聞いてくるので Y
- 結果が出てくるので,Tree タブで,Graph view を選ぶと決定木が見える
- viewメニューのperspective か上のバーのアイコンで design view に戻る
- Decision Tree が選ばれた状態で,右クリック
-- Reprace Operator > Modeling でいろいろな分類器を使える
-- データ集合がカテゴリ属性ばかりなので,SVM などを使うときはデータも変えること

''2. 前処理込みの相関ルール''
- Preprocessing は,多値変数を複数の2値変数で表す.
- 頻出パターンマイニングの FPGrowth で頻出パターンを見つけ,AssociationRuleGenerator で相関ルールを見つける
- 結果の相関ルールのカラムをクリックするとソートできる

''3. アンサンブル学習''
- 複数の学習器を組み合わせる学習
-- ここでは異なる種類の学習器の結果をまとめる Stacking ブースティングやバギングもある
- Stacking をダブルクリックする,もしくは Stacking を選んでから,Process の中の左上の矢印を左・右の順にクリックすると,Stacking の中身のプロセスが表示される.
-- ここでは,決定木,最近隣法,線形回帰の結果を単純ベイズでまとめている

''4. クラスタリングと次元削減''
- KMeans でクラスタリングして,SVDReduction で次元削減
- 結果の ExampleSet (SVDReduction) で,Plotter=Scatter, x-Axis=d0, y-Axis=d1, ColorColumn=cluster か label とすると次元削減された散布図を見ることができる

''5. [[SVM]] の例''
- [[SVM]]を実行する
- 結果のKernel Model (JMySVMLearner) で,Plot View を選ぶ
- うまく分離できているかをみる
- Plotter=scatter か quantile, x-Axis=function values, y-Axis=alpha, Color Column=label
- Plotter=density, x-Axis=attribute1, y-Axis=attribute2, density color=function values, point color=support vector か alpha

''6. 前処理:欠損値補完''
- Retrieve を選んで,右クリックで break after を選択してブレークポイントを設定
-- ブレークポイント時点での各クラスごとのデータが表示される
-- Meta Data View ではMissings は欠損値の数
-- Data View では,各データを閲覧可能.右上の View Filter で欠損値を除外して見たりもできる
- design workspace に戻って,view の expert mode を選ぶ
- Preprocessing (Replace Missing Values) で,attribute filter type で置換対象を,置換する値を default で指定する.
-- Preprocessing のパラメータ(右の方) でattribute filter type=all, default=average とかすると欠損値の置換ができるっぽい

''7. 人工ノイズの追加''
- 人工ノイズをデータに加える前処理 (ニューラルネットの時代から正則化と同様の効果があると言われている -- しましま)
-- 他にも,TFIDF,obfuscating, 時系列処理とかあるらしい

''8. データベースの join''
- 同じIDのデータを統合する DB の join の例

''9. 交差確認''
- 交差確認の各foldで訓練・テストを実行できる.実行のフローはツリー状になる.
- X-Val をダブルクリックする,もしくは X-Val を選んでから,Process の中の左上の矢印を左・右の順にクリックすると,X-Val の中身のプロセスが表示される.
-- 左の訓練枠では SVM が適用されて,右ではテスト集合を分類して誤差指標を計算している.

''10. ROC曲線''
- 実行すると交差確認の5回分のROC曲線がプロットされる
- 交差確認の中身は,左の訓練では SVM を適用
- 右は,ThresholdFinder で最良のしきい値を見つけ(ついでにROC曲線も表示),ThreholdApplier で二値化(ブレイクイブンポイントを見つけてるのかな? -- しましま)

''11. コストを考慮した学習 (分類しきい値を調整する)''
- ThresholdFinder で,クラスのコストが非対称に設定されている
-- チュートリアルには第1クラスの誤分類が,第2クラスの5倍と書かれているが,第2クラスが第1の2倍になってる気がする
- TestModelApplier が ThresholdFinder の前にあって,ここで保存されたモデルが,しきい値決定後にもう一度適用される

''12. コストを考慮した学習 (誤分類コストの重み付き学習)''
- X-Validation をダブルクリックすると,学習器はMetaCostになっている
- MetaCost は,各クラスを誤分類したときの誤差行列を設定し,他の学習器を呼び出す
-- MetaCostをダブルクリックすると,決定木を中で使っていることが分かる

''13. 主成分分析''
- Normalization は平均引いて,標準偏差で割る
- あとはPCAをする
- Example Set (Principal Components) で,Plot Viewにして,Plotter=Scatter, x-Axis=pc_1, y-Axis=pc_2, Color Column=label とかする

''14. forward stepwise selection による特徴選択''
- 追加すると最も予測精度が上がる特徴から順番に追加していく前向き特徴選択
- XValidation で予測精度を測る.中身の学習器は最近隣法
- ProcessLog は途中の誤差の保存
- 選択された特徴は,結果の AttributeWeights で分かる
- 誤差の変化は ProcessLog に,generation と performance で分かる

''15. 遺伝アルゴリズムによる特徴選択''

- 遺伝アルゴリズムで特徴選択
- 予測精度だけでなく,特徴数の少なさも考慮

''16. モデル選択''
- 最初の層では,データにランダムな特徴量を足している.ランダムな特徴量が除外されれば成功
- 前処理での過学習を防ぐため,WrapperXValidation は,変換データの生成,変換データでのモデル学習,ホールドアウト集合での性能評価の3段階
-- 第1段階は通常の FeatureSelection,第2段階はSVM,第3段階は2乗誤差で評価
-- FeatureSelection の中身は交差確認での評価 FSXValidation
-- さらにその中身は,SVMの学習と,モデルの評価
--- 最後のFSMinMaxWrapper は,平均と最小値の線形結合で評価することで汎化誤差の改善をめざす

''17. 特徴選択と特徴生成''
- 特徴を組み合わせて新たな特徴を作る
- YAGGA (Yet Another Generating Genetic Algorithm) は遺伝的アルゴリズムによる特徴選択・特徴生成
- YAGGAのパラメータを変えると性能がどうかわるか?
-- (apply_best_parameter というパラメータがYAGGA のexpertモードにあると書いてあるけど見つからない?log オペレータを足す説明が分からない.simple operator chain が見つからない? -- しましま)

''18. 他のプロセスからの情報の導入''
- 前の17で構築した特徴や,特徴の重みを AttributeConstructionsLoader や AttributeWeightLoader でロードする
-- これらの構築した特徴や特徴の重みは AttributeConstructionsWriter や AttributeWeightWriter で前のチュートリアルで書き込んでおいたもの

''19. 数値特徴からの特徴構築''
- keep_all は,元の特徴も出力に含めるかどうかを決める
- Generation の中にある function description の式に従って特徴を生成する

''20. 特徴の重み付け''
- 遺伝的アルゴリズムで特徴を重み付け
- 最近隣法をラップした交差確認じゃない性能評価を目的関数にしている
- 実行中に一時停止してResultビューに切り替えてlogで途中経過を見れる.
-- 一時停止ではなく,停止をやらないで,新たなプロセスを実行すると,バックグラウンドにプロセスが溜まってしまう.

''21. χ2乗検定による特徴の重み付け''
- 実行して ExampleSet の Plot Viewを選ぶ.
parallel, survey, RadViz, GridViz, histogram matrix, quartile matrix などの高次元可視化ツールを使ってみる.
-(重みが黄色いマークで表示される説明にはあるが,見つからない? -- しましま)

''22. パラメータ設定''
- C と dgeree のパラメータをいろいろ変えながら [[SVM]] を実行する
- Results の Log でplotter=Surface 3D, x-Axis=C, y-Axis=dgree, z-Axis=absolute などとすると性能が良くなるパラメータが分かる.

''23. 前処理の最適化''
- 前処理をするかどうかをOperatorEnabler で決定し,した結果と,しなかった結果を比較する

''24. 分類を最適化するしきい値の探索''
- GridParameterOptimization 中の Selection の weight パラメータがしきい値で,これをgrid検索で最適化

''25. 性能評価指標の検定''
- 性能指標の平均と標準偏差の有意性を検定
- [[SVM]]と線形回帰について,交差確認で性能指標のベクトルを獲得
- 対応のあるt検定とANOVAのいずれでも,SVMの性能が有意に良いというのが,Pairwise t-Test と Anova Test のところに出力されている.

''26. 複雑な前処理''
- トップレベルの三つの処理
-- 一つ目は特定のフォーマットを作り出す定型処理
-- 二つ目のValueIteratorはforeach のようなもので,指定した特徴の値を loop_value に入れて実行
--- その属性値を持つ値を抽出するのに,ExampleFilter の中で %{loop_value} として参照されている
--- DataMacroDefinition で定義したマクロ current_average は,AttributeConstruction の中で %{current_average} として参照されている

** 関連項目 [#m32b5db9]

//英語や同義語のあとに,#brで区切って関連する項目をリストしてください.
-[[Weka]]
-[[Freeware]]
#br
-[[検索:RapidMiner]]

** リンク集 [#c9fab4a9]

//関連するWWW資源があればリンクしてください.
-[[Rapid-I>http://rapid-i.com/]]:開発・配布
--[[KSKソリューションズ>http://www.rapid-i-partner.jp/]]:Rapid-I の国内代理店
-[[RapidMiner @ sourceforge.net>http://sourceforge.jp/projects/sfnet_yale/]]
-[[Vancouver Data Blog by Neil McGuigan>http://vancouverdata.blogspot.com/]]

** 関連文献 [#y914eec8]

//この%項目%に関連する書籍や論文を紹介してください.

-基本文献:RapidMiner の前身 Yale の文献~
I.Mierswa et. al. "YALE: Rapid prototyping for complex data mining tasks" KDD2005~
[[GoogleScholarAll:YALE: Rapid prototyping for complex data mining tasks]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS