最近ついに正式版となった Microsoft Azure Machine Learning では、
次に挙げるようなさまざまな種類の機械学習アルゴリズムをクラウドの PaaS として利用できます。
- Supervised Learning (教師あり学習)
- Classification (分類)
非連続値を対象とする場合
two-class (二値) と multi-class (多値) がある - Regression (回帰)
連続値を対象とする場合
- Classification (分類)
- Unsupervised Learning (教師なし学習)
- Clustering (クラスタリング)
- Recommendation (レコメンデーション)
このほか、GUI ベースでモデリングできることや Web API として迅速に公開できることなども特徴です。
以下では Microsoft Azure Machine Learning を利用して、色のデータをクラスタリングしてみます。
今回は、色相を基準にクラスタリングして、その結果をストレージに出力することにします。
まず、次のコンソール アプリケーションにより、System.Drawing.Color で定義されている色のデータセットを作成します。
using System; | |
using System.Collections.Generic; | |
using System.Drawing; | |
using System.IO; | |
using System.Linq; | |
using System.Reflection; | |
namespace ColorDataConsole | |
{ | |
static class Program | |
{ | |
static void Main(string[] args) | |
{ | |
var columnNames = "RGB,Name,R,G,B,Hue,Saturation,Brightness"; | |
var colorData = typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static) | |
.Where(p => p.PropertyType == typeof(Color)) | |
.Select(p => (Color)p.GetValue(null)) | |
.Where(c => c.A == 255) // Exclude Transparent. | |
.Select(c => string.Join(",", string.Format("#{0:X2}{1:X2}{2:X2}", c.R, c.G, c.B), c.Name, c.R, c.G, c.B, c.GetHue().ToString("N6"), c.GetSaturation().ToString("N6"), c.GetBrightness().ToString("N6"))); | |
File.WriteAllLines("ColorData.csv", new[] { columnNames }.Concat(colorData)); | |
} | |
} | |
} |
これを実行して、140 件の色のデータ ファイル (ColorData.csv) ができました。
(Cyan と Aqua はともに #00FFFF、Magenta と Fuchsia はともに #FF00FF で同じ色です。)
では次に、Azure の管理ポータルで、Machine Learning のワークスペースを作成します。
作成が完了したら、ワークスペースを選択して [Studio で開く] をクリックします。
これで、Machine Learning Studio が新しいタブで開きます。
ここからは Machine Learning Studio での操作です。
Experiment を作成する前にまず、データセットをアップロードしておきましょう。
先ほどの CSV ファイルを選択します。
アップロードすると、自動的にストレージにコンテナーが作成され、そこにファイルが保存されます。
次に、本題の [Blank Experiment] を作成します。
(なお、多くのサンプルが用意されているので、いろいろ試してみると理解につながるでしょう。)
この Experiment でモデリングや実行ができます。
まず、[Saved Datasets] から [ColorData.csv] を選べるようになっているので、
これを中央のスペースにドラッグ アンド ドロップします。
残りのモジュールもドラッグ アンド ドロップで配置していきます。とりあえずは、次のように配置します。
各モジュールには ○ の部分があり、上側は入力、下側は出力を表しています。
それぞれを矢印で結ぶには、○ の部分を始点から終点までドラッグします。
クラスタリングで選べるアルゴリズムは [K-Means Clustering] (k 平均法) のみです。
プロパティの [Number of Centroids] はクラスターの数を表します。
この値は実行時に決まるわけではなく、あらかじめ指定されなければなりません。
今回は 10 に設定しておきます。
[Execute R Script] では、次のスクリプトを指定します。
元の色データでは、Saturation (彩度) が 0 の色の Hue (色相) が 0 になってしまっているため、
赤とグレースケールが混同してしまいます。
そこで、グレースケールの Hue を便宜的に -60 に補正します。
ds <- maml.mapInputPort(1) # class: data.frame | |
ds$Hue <- ifelse(ds$Hue == 0 & ds$Saturation == 0, -60, ds$Hue) | |
maml.mapOutputPort("ds"); |
[Train Clustering Model] では、クラスタリングに用いるための特徴を指定する必要があります。
[Launch column selector] をクリックします。
今回は、とりあえず色相のみで判定させることにします。Hue のみを選択します。
ここでいったん、[Run] をクリックして Experiment を実行します。
実行が完了すると、緑色のチェック マークが付きます。
これで、クラスタリング モデルの学習までできました。
結果を出力するため、モジュールを 2 つ追加します。
[Project Columns] では、最終的に出力する列を絞ります。
Assignments 列に、実行結果のクラスターの番号が入ります。
なお、先ほどの時点で Experiment を実行しておかないと、列名の候補が自動で出てきません。
こまめに実行しながらモデリングを進めるとよいでしょう。
ここで、いったん Azure 管理ポータルに戻り、結果データの出力先となるコンテナーをストレージに作成しておきます。
[Writer] に出力先の情報を設定します。
アカウント情報は、ストレージのダッシュボードの [アクセスキーの管理] から取得できます。
これで一通り完成したので実行します。
完了すると、コンテナーに結果データ (CSV) が保存されます。
なお、実行が完了している場合、
各モジュールの出力 (下側の ○ の部分) を右クリックするとコンテキスト メニューが有効になります。
[Visualize] を選択すると、出力結果を表やグラフで見ることができます。
次回は、出力結果の色データの視覚化と、学習済みクラスタリング モデルの利用についてです。
次回: Azure Machine Learning で色のクラスタリング (2)
作成したサンプル
Clustering Colors 1: by Hue (Azure ML Gallery)
AzureMLSample (GitHub)
参照
Microsoft Azure Machine Learning Gallery
Machine Learning Studio とは
How to choose an algorithm in Azure Machine Learning