はじめに
誰向けの記事か
本記事は、コーディングなんてしたことないけど、Random ForestとかSVMとか使ってみたい!という方向けの記事です。精度より結果を出すことに意義がある、経営企画、ビジネスコンサルの方など向けです。
実施事項
スロベニア出身の機械学習OSS、OrangeをWindows7にインストールし、UCIのAdultデータセットを用い、様々な人の属性から、年収が5万ドル以上か?5万ドル未満か?を判定する分類器を作成し、評価を行います。
Orangeでなにができるか、というのだけ知りたければ、ここにOrangeを使った分析と可視化のスクリーンショットがまとまっていますので、そちらへGo。
手順
インストール
OrangeのサイトからDLし、インストールします。簡単。
起動
アイコンをクリックするだけ。簡単。
クラスタリングフローの作成
1 ワークフロー作成
Newをクリックし、新規ワークフローを作成します。
ワークフローの名前を求められるので、適当に入力してください。
すると、ワークフロー作成のためのキャンバスができます。
2 データ入力
キャンバスにFileノードが置けたので、キャンバスのFileノードをダブルクリックしてみましょう。
Adultデータセットはすでに目的変数が指定された形で読み込まれました。
このデータセットは元々Orangeの中に収納されていたものなので、他のデータセットで教師あり学習を行う場合は、目的変数を指定する必要があります。
その場合は、Dataタブの中の、Select Columnsノードで指定してください。
3 グラフ化
とりあえずデータの全体像を把握しましょう。DistributionノードをクリックしてFileノードとつなげ、
Distributionノードをダブルクリックすると、以下の様な分布図が出ます。
データにおかしな点がないか、グラフィカルに確認できます。
4 クラスタリング
今回はチューニングに慣れているRandom Forestを選択。
Random Forest Classificationをダブルクリック
こちらの画面でチューニングが可能です。初期状態はチェックボックスが空なものもあります。
分析の再現性を担保するため、Fixed seed for random generatorは必ずチェックを入れて入力しておいてください。
5 評価
Test&Scoreを選びます。
Fileノードからはデータが、Random Forest ClassificationノードからはLearnerというモデルの設定が流れ、Test&Scoreノードに入ります。
モデルの評価方法を左側で選ぶことができ、右にTrainされたモデルのスコアが出ます。この中の例えばAUCを上げたいのか、Precisionを上げたいのかを判断しつつ(用途によって違うと思いますので)Random Forest Classificationの画面でチューニングを繰り返します。
6 評価結果のグラフ化
では、モデルの評価を可視化してみましょう。Evaluateタブから、ROC AnalysisとConfusion Matrixを選びます。
7 予測結果と実際の値の比較
EvaluateタブからPredictionsノードを置き、Fileノードからデータを、Random Forest Classificationノードからモデルを流し込みます。
すると、Predictionノードで、予測値(何%の確率で分類したのか)と実際の値を並べて見ることができます。ここで不正解のデータに対して、何が理由で不正解になっているかなどを考えることもできます。
8 寄与度
Dataタブにある、Rankノードを置き、Test&Scoreノードとつなぎます。
Rankノードをダブルクリックすると、以下の様な各説明変数の予測に対する寄与度が表示されます。
ここでも様々な指標が用意されていますので、用途にあったもので評価してください。
9 保存
モデルは.pkclsという拡張子で、フローは.owsという拡張子でしか保存できません。他の汎用的なプログラミング言語への変換はできないようです。(できる方は教えて下さい)
しかし、先ほどの予測結果と実際の値を並べたものなど、データセット系はSave Dataノードで.csvや.tsvなど各種形式で保存できます。
最後に
機械学習や分析というとエクセルの次はRかPythonだという風潮があります。
もちろんRもPythonも素晴らしいし使いこなせれば無敵なのかもしれませんが、使いこなすまでに学習しなければならないことがとても多い上に、理論をわからずに使って間違った答えが出る、などの手戻りが発生する確率がとても高いです。
そういった言語はゆっくり習得するとして、当座の分析結果はこれくらいでいいよ、という方も多いのではないかと思いこの記事を書きました。
機械学習をしてみたいけど勉強する時間がないという方は、Orangeや次にご紹介予定のKNIMEあたりからスタートするのも選択肢としてアリなのではないでしょうか。