楽屋

そのデータ、クリックだけで機械学習にかけられます!MicrosoftのAzure Machine Learningが超便利!

本日はMicrosoftが提供しているAzure Machine Learning(Azure ML)のサービスをご紹介します。このサービスを使うとプログラミングを書く必要なく、機械学習を使うことが出来ます。 このサービスが普及してしまうと、プログラミングを書いているデータサイエンティストの需要が減ってしまうと思うのですが、プログラミングは目的ではなく手段なので、より便利な世界の方がいいですよね。 GUI(グラフィックユーザーインターフェース)でポチポチとクリックするだけで機械学習が出来てしまうので、是非お試しください。 Microsoft Azure Machine Learning Studioにサインアップをしたら、チュートリアル用のサンプルデータを使ってAzure MLを体験出来ます。 参考記事は下記のMicrosoftの記事ページです。 「Machine Learning のチュートリアル: Azure Machine Learning Studio で初めてのデータ サイエンス実験を作成する」 https://docs.microsoft.com/ja-jp/azure/machine-learning/machine-learning-create-experiment サンプル データセットである自動車価格データを使用して、機械学習までの過程をご説明していきます。 Azure MLには https://studio.azureml.net/ からサインアップできます。こちらがAzure MLにサインアップした時の最初のページです。英語表記のものを解説していきます。 左下の[New]をクリックすると下記のページが表れるので、[Blank Experiment]をクリックします。 検索窓に[auto]と打ちし、サンプルデータである[Automobile price data]を実験キャンバスにドラッグ&ドロップしましょう。 それでは、サンプルの自動車データセットを使って、機械学習を使うまでの流れを見ていきましょう。このデータの中身を確認するには、自動車データセットの下部にある出力ポートをクリックし、 [visualize]を選択し、データを確認します。 データを見ると205行で26カラムのテーブルということが分かりますね。 このままこのデータ分析の移れる訳ではなく、分析前の前処理が必要です。この例では、値が見つからない行をすべて削除します。また、見つからない値の大部分は、正規化された損失列にあります。したがって、モデルからこの列も一緒に除外します。 実際の業務では貴重なデータを出来る限り効率的に使いたいので、欠損値をどうやって補填出来るか、様々な角度から検討します。今回はあくまで例としてお聞きください。 検索ボックスに[select columns]と入力し、「列の選択モジュール」を見つけてから、それを実験キャンバスにドラッグ&ドロップします。 そして[Automobile price data]と[select columns]の2つのモジュールを繋げてあげます。 [select columns]モジュールを選択し、右側に表示された[Launch column selector (列セレクターの起動)] をクリックします。 それでは下記の欠損値のある列を削除するため下記のステップでクリックしていきましょう。
  1. 左側の [With rules ] の [All columns] をクリックします。 これにより、データセット内の列の選択では、(これから除外する列を除いて) すべての列がフィルターを通過します。
  2. ドロップダウンから [Exclude] と列名を選択し、続いて[normalized-losses] を選択して、右下の チェック マーク (OK) ボタンをクリックして列セレクターを閉じます。
これで、データセット内の列の選択の右側のウィンドウに、normalized-losses 以外のデータセットのすべての列がフィルターを通過することが示されます。 続いて、検索窓に「clean」と打ち込み[Clean Missing Data]モジュールを実験キャンパスにドラッグ&ドロップします。 [Cleaning Missing Data]モジュールをクリックし、右側の窓からCleaning modeに[Remove entire column]を選択します。これで値が見つからない行を削除することが出来ます。そして、ページの下部の [Run] をクリックして、実験を実行します。 続いて、特徴を定義します。どの特徴が予測したい数値に影響を与えているかを考えることで予測モデルの説明変数を特定することができます。この例のデータセットでは、各行が 1 つの車種を表し、各列がその車種の特徴に対応します。 まずは下記の特徴を確認しましょう。 make, body-style, wheel-base, engine-size, horsepower, peak-rpm, highway-mpg, price 前回と同じように[Select Columns]モジュールを実験キャンパスにドラッグ&ドロップします。 右側に表示されたウィンドウで、[Launch column selector] をクリックします。 [With rules]をクリックします。[Begin With] の [No columns] をクリックします。 フィルター行で、[Include] と [column names] を選択してから、テキスト ボックス中の列名の一覧を選択します。 これによりこのモジュールでは、指定した列を除いて列 (特徴) が渡されなくなります。チェック マーク (OK) ボタンをクリックします。 これにより、フィルター処理されたデータセットが生成されます。このデータセットには、次の手順で使用する学習アルゴリズムに渡す特徴のみが含まれます。 後でこの手順に戻り、別の特徴を選択して再度実行することができます。 続いて、学習アルゴリズムを選択して、適用します。予測したい価格は数値であるため、この例では単純な “線形回帰” を使用します。どのような学習アルゴリズムを利用するべきかの選択は、本来注意が必要です。 回帰式を当てる前にデータをトレインデータとテストデータに分割し、トレインデータで予測モデルを作成し、作った予測モデルをテストデータに当てます。 これは今あるデータだけに最適化されすぎた予測モデルを作らないためです。未知のデータに対して予測したいのに、作成した予測モデルが予測モデルを作成したデータでは精度が良いのに、未知のデータに対してはぜんぜん精度がでないという経験はないでしょうか。この状態を「過学習」と言います。過学習を起こさないためにデータを分割してトレインデータとテストデータに分ける必要があります。 そのため、検索窓に[split]と打ち込み[Split Data]モジュールを実験キャンバスにドラッグ&ドロップします。 [Split Data]モジュールを選択して、[Fraction of rows in the first output dataset] の項目を0.75 に設定します。 このようにして、データの 75% をモデルの訓練に使用し、25% をテスト用に保持しておき、実験を実行します。 トレインデータとテストデータの割合は、変更しても問題ありません。一般に訓練データを多くすると学習の精度は上がるがモデルの評価の精度が下がり、テストデータを多くするとモデル評価の精度は上がるが学習の精度が下がります。 回帰式の選択は検索窓に[Linear]と打ち込み[Linear Regression]をドラッグ&ドロップします。このモジュールを使って線形回帰モデルを作成します。 モデルのトレーニング モジュールを見つけて、実験にドラッグ&ドロップします。 線形回帰モジュールの出力を、モデルのトレーニング モジュールの左側の入力に接続します。次に、データの分割モジュールのトレーニング データ出力 (左側のポート) を、モデルのトレーニング モジュールの右側の入力に接続します。 モデルのトレーニング モジュールを選択して、右側のLaunchセレクター をクリックし、price列を選択します。 これが、作成しているモデルで予測する値です。 [Score Model]モジュールを検索窓から検索して実験キャンバスにドラッグ&ドロップします。これまでにデータの 75% を使用してモデルをトレーニングしました。ここからは残りの 25% のテストデータに作成したモデルを当てて、モデルの機能の効果を確認します。 実験を実行して、[Score Model]モジュールの出力を表示します 。[Score Model]モジュールをクリックして、[visualize] を選択します。出力に、予測された価格の値と、テストデータから既知の値が表示されます。 [Price]が既知の値で[Scored Label]が予測した値となります。 最後に、結果の品質をテストします。モデルの評価モジュールを選択して実験キャンバスにドラッグ&ドロップし、モデルのスコア付けモジュールの出力を、モデルの評価の左側の入力に接続します。 作成したモデルに対して、以下の統計値が表示されます。エラーの各統計情報が小さくなれば小さくなるほど良いモデルになります。
  • 平均絶対誤差 (MAE): 絶対誤差の平均です ( 誤差 とは、予測された値と実際の値との差です)。
  • 二乗平均平方根誤差 (RMSE): テストデータセットに対して実行した予測の二乗誤差平均の平方根です。
  • 相対絶対誤差(RAE): 実際の値とすべての実際の値の平均との絶対差を基準にした絶対誤差の平均です。
  • 相対二乗誤差(RSE): 実際の値とすべての実際の値の平均との二乗差を基準にした二乗誤差の平均です。
  • 決定係数(Coefficient of Determination) :R-2 乗値ともいいます。どの程度モデルが高い精度でデータと適合するかを示す統計指標です。値が 1 (1.0) に近づくほど、予測の精度が高くなります。
と、ここまでの説明で機械学習までの流れさえ理解すれば、クリックだけで機械学習が利用出来る事をご理解頂けたかと思います。 しかし、まだまだAzure MLには出来ず、PythonやRなら出来る前処理や特徴量を作る作業がたくさんあります。トライアルとしてAzure MLで機械学習触れて、より精緻な分析が必要になった際は是非DATUM STUDIOにお声掛けください。