Azure
AzureMachineLearning

【超入門】ブラウザだけで1日でできる、はじめてのAzure Machine Learning

More than 1 year has passed since last update.

はじめに

ブラウザだけで実施できる、以下のチュートリアルをやってみます。

Machine Learning のチュートリアル: Azure Machine Learning Studio で初めてのデータ サイエンス実験を作成する

事前準備

Microsoftの初心者向け動画を見る

私は機械学習そのものが初めてのため、以下の動画を見ました。
Azurreに限った話ではなく非常に勉強になりました。特に1~3がおすすめです。

動画は英語ですが、ページの下に日本語訳もあります。

Machine Learning Studio へアクセス

Machine Learning Studio にアクセスして、Sign upする。

image

プランの選択

Freeプランを選択して、Microsoft アカウントでログインする。

image

モデルの作成

手順1:データを取得する

実験の作成

画面下部のNEWをクリックする。

image

Blank Experimentをクリックする。

image

実験のタイトルに任意の名前を付ける。

image

データの取得

左側の検索ウインドウで、automobileで検索して、Automobile price data(Raw)を選択する。

image

選択したAutomobile price data(Raw)を左側のキャンパスにドラッグする。

image

データの視覚化

右クリック>dataset>Visualizeを選択する。

image

視覚化された情報が表示される。

image

手順2:データを準備する

機械学習のデータは、下記4点が必要。

  • 関連性があること
  • 連続していること(表の中で値の抜けが無いこと)
  • 正確であること
  • 十分なデータ量があること

データの可視化した状態で、各列を選択すると、Missing Valuesで値が欠損している件数を表示してくれる。
nomarized-losses列は、41件のデータ欠損がある。

image

列の除外

データセット内から、列の選択を行うモジュールを検索する。
Select Columns in Datasetで検索する。
image

検索したモジュールをドラッグして配置する。
その後、Automobile price data(Raw)のコネクタをドラッグして、接続する。

image

右側のプロパティから、Launch column selector (列セレクターの起動)をクリックする。

image

WITH RULESを選択して、Begin With から、ALL COLUMNSを選択する。
Exclude(除外)を選択して、nomarized-losses列を選択し、右下のチェックをクリックする。

image

列選択モジュールのプロパティに、nomarized-losses列以外のすべての列を選択することが表示される。

image

コメントの入力

列選択モジュールをダブルクリックすると、コメントを入れることができる。
入力したコメントは、再度ダブルクリックすることで確認できる。

image

欠損データのクリーンアップ

clean missing dataで検索して、検索したモジュールをドラッグして配置する。

image

その後、Select Columns in Datasetモジュールと接続する。

image

clean missing dataモジュールをクリックして、右側のプロパティのclearning modeを選択する。
リストから、Remove entire row(行全体を削除)を選択する。

image

データのクリーンアップの実行

画面下部のRUNをクリックして実行する。

image

成功したモジュールには、右側に緑色でチェックがつく。

image

データのクリーンアップの結果確認

clean missing dataモジュールをクリックして、右クリック>dataset>Visualizeを選択する。
クリーンアップ対象となった、nomarized-losses列が除外されていることを確認。

image

手順3:特徴を定義する

city-mpg と highway-mpg は、それぞれ燃費を表す項目。(市内の燃費と高速道路での燃費)
密接に関連している項目であるため、片方は削除することができると言える。

モデルの定義

今回は以下8つの列からモデルを生成する。

  • make(メーカー)
  • body-style(ボディタイプ)
  • wheel-base(ホイールベース)
  • engine-size(エンジンサイズ)
  • horsepower(馬力)
  • peak-rpm(最高出力)
  • highway-mpg(高速道路での燃費)
  • price(価格)

データセット内の列選択モジュールの追加

2つ目の列選択モジュールを追加する。

image

clean missing dataモジュールに接続する。

image

コメントを入力する。

image

モデルの作成

プロパティから列のセレクタをクリックする。

image

NO COLUMNSを選択し、Include column namesを選択してから、
モデルとして利用する8つの列を選択して、チェックをクリックする。

image

プロパティに生成したモデルが表示される。

image

モデルのトレーニング

手順4:学習アルゴリズムを選択して、適用する

質問に対する答えを求めるアルゴリズムは以下の5つ。

  • AかBか?(分類アルゴリズム)
  • 異常か?(異常検出アルゴリズム)
  • どのくらいの量、数か?(回帰アルゴリズム)
  • どのような構成か?(クラスタリングアルゴリズム)
  • 次に何をすべきか?(強化学習アルゴリズム)

今回は、自動車の価格を予想したいため、回帰アルゴリズムを使用する。
直線回帰で学習する。

モデルのトレーニング

データ分割モジュールの配置

split dataで検索する。

image

データ分割モジュールをドラッグして配置して、最後の列選択モジュールとつなげる。

image

データ分割の配分を設定する

データ分割モジュールのプロパティ内の、Fraction of rows in the first output dataset (最初の出力データセットにおける列の割合)を選択して、0.75を入力する。
データの75%をモデルのトレーニングに使用して、残りの25%をテスト用に保持する。

image

実験の実行

下部のRUNを実行する。
これまでと同様に成功したモジュールには緑色のチェックがつく。

image

線形回帰モジュールの配置

学習アルゴリズムのモジュールを配置する。今回は線形回帰を使用する。
左側のメニューから、Machine LearningカテゴリのInitialize Modelを展開する。
展開したメニューから、Linear Regression(線形回帰)を選択してドラッグする。

image

モデルのトレーニングモジュールの配置

同じく、左側のメニューから、Train Mode(モデルのトレーニング)lを選択して、ドラッグする。

image

モジュールの接続

直線回帰モジュールの出力を、モデルのトレーニングモジュールの左側に接続し、
データ分割モジュールのトレーニングデータ出力を、モデルのトレーニングモジュールの右側に接続する。

image

予測値の設定

モデルのトレーニングモジュールをクリックし、列のセレクタをクリックする。

image

AVAILABLE COLUMNSから、price列を選択し、>ボタンをクリックする。
ここで選択したpriceが、モデルが予想する値になる。

image

実験の実行

下部のRUNを実行する。
成功したモジュールに緑色のチェックがつく。

image

モデルのスコア付けとテスト

手順5:新しい自動車の価格を予想する

データの75%を使ってモデルをトレーニングしたため、残りの25%のデータにスコアをつけてモデルの機能の効果を確認する。

モデルのスコア付け

モデルのスコア付けモジュールの配置

左側のメニューから、Machine LearningカテゴリのScoreを展開する。
展開したメニューから、Score Model(モデルのスコア付け)を選択してドラッグする。

image

モデルのトレーニングモジュールの出力を、モデルのスコア付けモジュールの左側の入力ポートに接続し、
データ分割の出力を、モデルのスコア付けモジュールの右側の入力ポートに接続する。

image

実験の実施

データ下部のRUNをクリックする。
正常終了したモジュールの右側に緑色のチェックがつく。

image

スコア付けの結果確認

スコア付けモジュールをクリックして、右クリック>Scored dataset>Visualizeを選択する。
price列は既知の値、Scored Labelsが予測された価格の値が出力される。

image

結果の評価

左側のメニューから、Machine LearningカテゴリのEvaluateを展開する。
展開したメニューから、Evaluate Model(モデルの評価)を選択してドラッグする。

image

モデルのスコア付けモジュールの出力を、モデルの評価モジュールの左側の入力ポートにドラッグする。

image

実験の実施

データ下部のRUNをクリックする。
正常終了したモジュールの右側に緑色のチェックがつく。

image

モデルの評価結果確認

Evaluate Model(モデルの評価)モジュールをクリックして、右クリック>Scored dataset>Visualizeを選択する。

image

結果の見方は以下の通り。

  • Mean Absolute Error(平均絶対誤差)
    • 略称はMAE
    • 絶対誤差の平均。(誤差とは、予測された値と、実際の値の差)
    • モデルの予測精度の”悪さ”を表すため,0 に近い値であるほど優れているとのこと。
  • Root Mean Squared Error(二乗平均平方根誤差)
    • 略称はRMSE
    • テストデータセットに対して実行した予測の二乗平均誤差の平方根。
    • モデルの予測精度の”悪さ”を表すため0 に近い値であるほど優れているとのこと。
  • Relative Absolute Error(相対絶対誤差)
    • 実際の値と、すべての実際の値の平均との絶対差を基準にした絶対誤算の平均。
  • Relative Squared Error(相対二乗誤差)
    • 実際の値とすべての実際の値の平均との二乗差を基準にした二乗誤差の平均。
  • Coeffcient of Determination(決定係数)
    • R-2 乗値という。
    • どの程度モデルが高い精度でデータと適合するかを示す。
    • 1.0に近いほど予測の精度が高くなる。

所感

  • 実際のpriceの値と、予測した値を比較して見ると、完全に一致している数値はない。
  • MAEの値が、1656.147651であることから、全体的に1656ドル価格がずれている。まだまだ誤差が大きいと言える。
  • 唯一、hondaのデータで、price:9095、予測値:9080.524468という惜しいデータがあるが、それ以外は大きく誤差が出ている状況。
  • 決定係数の値は0.91(91%)であることから、今回作成したモデル(8項目)から価格を導き出す精度は高いと言える。
  • MAEも、RMSEも、0に近い値であるとは言えないため、まだチューニングが必要な結果と思われる。

image

おわりに

はじめてAzureで機械学習をやってみました。
これが無料で試せるなんて、すばらしい時代になりましたね。
これから自分でもモデルを作って、いろいろ検証したいと思います。