【回帰】Azure Machine Learningで予測モデルの精度を高めるためのポイント

Azure Machine Learningは機械学習の敷居を下げる!的なことを聞いて、いじり始めました。
しかし、いくら敷居を下げるといっても予備知識がないとなかなかキツく…。。
 
今回は、機械学習で予測の精度を上げるのに必要なプロセスをご紹介したいと思います!
 

精度の評価について

 
精度を評価する指標は2つあります。
①MAE(Mean Absolute Error:平均絶対誤差)
予測と正解値の差を平均したもの。
小さい程良い。
 
②RMSE(Root Mean Squared Error:二乗平均平方根誤差)
予測と正解値の差を二乗したものの平均値の、平方根です。
小さいほど良い。
MAEと比較して、誤差にバラつきが合った場合にRMSEの値が大きくなる。
 
(③決定係数(Coefficient of Determination)
予測値と正解値の近さを1.0~0/0の範囲の値で表現します。
1.0に近い程良い。)

これらの数値のチェックの仕方

スクリーンショット 2016-02-03 19.10.16
 
Train Modelモジュール以下を外し、代わりに「Cross Validate Model」というモジュールを設定します。
「Cross Validate Model」は、左側のカラムのMachine Learning>Evaluate>Cross Validate Modelに配置されています。
図のようにモジュール同士をつなぎ合わせ、RUNをクリック。
その後、右下の出力ポート(◯)を右クリックし、Visualizeをクリックすると、下記のような画面が表示されるはずです。
 
スクリーンショット 2016-02-03 19.07.37
 
これらの数値と、予想の対象の数値を照らし合わせれば誤差がどのくらいかが分かるかと思います。
 

精度を高めるには

 
予測を高めるための方法を以下にまとめました。
 

予測に不要な変数を取り除く

 
学習モデルに食べさせるデータは、極力予想する数値と関係のあるラベルだけにしましょう。
滅多に降らない雪の日に、ある商品がたまたま多く売れたとします。
すると、雪が振ったらこの商品が売れやすい、という相関関係を予測モデルが作り上げてしまうため、誤差が生じる恐れがあります。
このことを過学習と呼びます。
過学習の原因にもなるので、極力予測する数値と関係のないラベルは取り除きましょう。
 

外れ値を除く

 
外れ値というのは、他の値から大きく外れた値のことを言います。
これらを取り除くと、数値の偏りが減るため、予想値が安定します。
 

欠損値を補う

 
欠損値とは、あるケースのある項目の値が空のもののことです。
欠損値は取り除いて計算しても問題ありませんが、データ量が減ってしまいます。
そういうときは欠損値を平均値で補いましょう。
 

交差検証を行う

ホールドアウト法と交差検証法というものがあります。
ホールドアウト法とは、正解付きデータを7:3や8:2などの比率でランダムに学習用データを評価用データに分ける方法です。
学習データを使用して予測モデルを作成し、それを評価用データに適応して予測値を計算し、MAEやRMSE、決定係数のような指標で正解値との差を評価します。
 
ホールドアウト法は簡単である反面、評価用に一部のデータを確保するため、学習用データの量が少なくなってしまいます。
かといって、学習用データを多くすると、評価用データが減り、データを正しく評価できなくなってしまいます…。
 
 
こういったホールドアウト法のデメリットに有効なのが、交差検証法です。
交差検証法は、正解付きデータをk個(任意の数値)に分割し、そのうち1つを評価用、残りを学習用のデータに当てます。
評価用データの選び方はk通りあり、全てが1回ずつ評価用データになるように予測モデルを生成し、MAEやRMSEなどの評価指標の平均値を計算します。
正解付きデータを無駄なく使用することがメリットですが、その分時間がかかります。
kは5~10程度の値にしておくのが一般的だそうです。
 
交差検証法を使用すれば、データ量を無駄にせず、正確な誤差も判定できるので、精度を高めやすくなります。
 
交差検証モジュールは、左側のMachine Learning>Evaluate>Cross Validate Modelから使用が可能です。
使用方法は、下記画像を参考に。
 
スクリーンショット 2016-02-03 19.10.16
 

正則化オプション

ホールドアウト法を使用し、評価用データの精度が学習用データの精度よりも大きく劣る場合は過学習の可能性が高いです。
そういう場合は正則化オプションを使用します。
 
スクリーンショット 2016-02-05 18.33.55
 
正則化オプションは、簡単に言うと「予測に大きな影響を与えている変数にペナルティを設けることで、過学習の影響を小さくする」ものです。
詳細な説明については次回以降、説明したいと思います。
 

まとめ

 
いかがでしたでしょうか。
「適切な変数を使用し、データが足りなくてもデータが多すぎてもダメ」。
Azure Machine Learningを使用して思ったのですが、機械学習はデータの整形が一番大切なのかもしれませんね。

Tags: