Jack of all trades

master of none. 多芸は無芸を地で行く、自作自演何でも屋。

Azure Machine Learning の更新 - モジュールの追加

Azure Machine Learningの更新があったようで、新しいモジュールが追加されています。

Permutation Feature Importance - Machine Learning - Site Home - TechNet Blogs

どうやら主成分分析的*1なモジュールのようで、Train Modelモジュールと学習データのモジュールを連結すると、学習データの内「どの項目(説明変数)」が目的の予測や分類に「どの程度」関わっているか(重要か)を数値化してくれます。 詳細なアルゴリズムについては上述のtechnet blogの方を見ていただくとして、実際に使用したサンプルを掲載します(このサンプルもtechnet blogと対して変わりませんが…)
サンプルでは「 Azure Machine Learning できるとこまでやってみよう Vol.1 - Jack of all trades 」で使用したモデルを流用します。

左側のメニューにある「Feature Selection」を開き、その中にある「Permutation Feature Importance」モジュールを配置します。配置場所としては、学習モデルの構築で「Score Model」が配置される場所です(モジュール同士の接続も同様です)
f:id:sadynitro:20150418185131p:plain
f:id:sadynitro:20150418184356p:plain

配置された「Permutation Feature Importance」モジュールを選択した状態で、右側にあるプロパティから評価指標を選択します。 選択された評価指標に基づいて、学習に使用される各説明変数を評価(スコア計算)します。
ここではRegressionの中からRelative Squared Errorを選択します。 f:id:sadynitro:20150418184406p:plain

上図の様に配置&設定ができたら、下段のメニューから「RUN」を実行します。
実行が完了したら「Permutation Feature Importance」モジュールの下○をクリックして、メニューからVisualizeを選択します。 各説明変数に対してスコアが振られており、結果的にこのサンプルでは気温が来客数の予測精度に最も関連していることがわかります。 f:id:sadynitro:20150418184711p:plain

サンプルの様に、目的変数に対してわかりやすい説明変数が用意されている場合はさておき、そもそも項目同士がどういった関係性を持っているかもわからないような大量のデータを扱う場合には非常に有効であると言えます。
また、説明変数が多かったり、単純にデータ量が多くなると、学習データのクリーニングも重要な要素になってくるかと思います。
こういった予備分析的な処理が簡単に実施できる機能が準備されているとありがたいですね。

*1:主成分分析と書くと怒られそうな…。要因分析とか単なる重要度計算とか…?