主要クラウドサービス別　機械学習アルゴリズム機能比較

#はじめに
##
AzureのMachineLearningで使用している機械学習アルゴリズムを調査するついでに、他の主要クラウドサービスで提供している機械学習についても調べてみたので、機能比較としてまとめてみました。

#対象クラウドサービス
##
以下ベンダーのクラウドサービスを対象としました。

<dl>
  <dt>Microsoft</dt>
  <dd>Azure Machine Learning</dd>
  <dt>Amazon</dt>
  <dd>Machine Learning</dd>
  <dt>Google</dt>
  <dd>Prediction API</dd>
  <dt>IBM</dt>
  <dd>Bluemix(Watson)</dd>
</dl>

#比較内容
##
**１．機能有無**
機械学習アルゴリズムを「学習分類」と「アルゴリズム分類」のカテゴリに分類し、その観点での機能有無の比較を行いました。

<table>
<tr>
  <th>学習分類</th>
  <th>アルゴリズム分類</th>
</tr>
<tr>
  <td rowspan="2">教師あり学習</td>
  <td>回帰</td>
</tr>
<tr>
  <td>分類</td>
</tr>
<tr>
  <td rowspan="2">教師なし学習</td>
  <td>クラスタリング</td>
</tr>
<tr>
  <td>異常検出</td>
</tr>
<tr>
  <td colspan=2>強化学習</td>
</tr>
</table>

**２．使用アルゴリズム種類**
機械学習として使用しているアルゴリズムの種類について比較を行いました。

#結果
##

**１．機能有無**

<table>
<tr>
  <th>学習分類</th>
  <th>アルゴリズム分類</th>
  <th>Microsoft Azure Machine Learning</th>
  <th>Amazon Machine Learning</th>
  <th>Google Prediction API</th>
  <th>IBM Bluemix (Watson)</th>
</tr>
<tr>
  <td rowspan="2">教師あり学習</td>
  <td>回帰</td>
  <td>○</td>
  <td>○</td>
  <td>非公開</td>
  <td>非公開</td>
</tr>
<tr>
  <td>分類</td>
  <td>○</td>
  <td>○</td>
  <td>非公開</td>
  <td>非公開</td>
</tr>
<tr>
  <td rowspan="2">教師なし学習</td>
  <td>クラスタリング</td>
  <td>○</td>
  <td>×</td>
  <td>非公開</td>
  <td>非公開</td>
</tr>
<tr>
  <td>異常検出</td>
  <td>○</td>
  <td>×</td>
  <td>非公開</td>
  <td>非公開</td>
</tr>
<tr>
  <td colspan=2>強化学習</td>
  <td>×</td>
  <td>×</td>
  <td>非公開</td>
  <td>非公開</td>
</tr>
</table>


**２．使用アルゴリズム種類**

<dl>
  <dt>Microsoft Azure Machine Learning</dt>
  <dd>ものすごーくたくさんあります。</dd>

<table>
<tr>
  <th colspan="2">アルゴリズム分類</th>
  <th>アルゴリズム名</th>
</tr>
<tr>
  <td rowspan="8" colspan="2">回帰</td>
  <td>Bayesian linear Regression</td>
</tr>
<tr>
  <td>Boosted decision tree Regression</td>
</tr>
<tr>
  <td>Decision forest Regression</td>
</tr>
<tr>
  <td>Fast forest quantile Regression</td>
</tr>
<tr>
  <td>Linear Regression</td>
</tr>
<tr>
  <td>Neural network Regression</td>
</tr>
<tr>
  <td>Ordinal Regression</td>
</tr>
<tr>
  <td>Poisson Regression</td>
</tr>
<tr>
  <td rowspan="14">分類</td>
  <td rowspan="9">２クラス分類</td>
  <td>Averaged perceptron</td>
</tr>
<tr>
  <td>Bayes point machine</td>
</tr>
<tr>
  <td>Boosted decision</td>
</tr>
<tr>
  <td>Decision forest</td>
</tr>
<tr>
  <td>Decision jungle</td>
</tr>
<tr>
  <td>Locally deep SVM</td>
</tr>
<tr>
  <td>Logistic Regression</td>
</tr>
<tr>
  <td>Neural network</td>
</tr>
<tr>
  <td>SVM</td>
</tr>
<tr>
  <td rowspan="5">多クラス分類</td>
  <td>Decision forest</td>
</tr>
<tr>
  <td>Decision jungle</td>
</tr>
<tr>
  <td>Logistic regression</td>
</tr>
<tr>
  <td>Neural network</td>
</tr>
<tr>
  <td>One-vs-all</td>
</tr>
<tr>
  <td colspan="2">クラスタリング</td>
  <td>k-means</td>
</tr>
<tr>
  <td rowspan="2" colspan="2">異常検出</td>
  <td>One-class SVM</td>
</tr>
<tr>
  <td>PCA-based anomaly detection</td>
</tr>
</table>

  <dd>どのアルゴリズムを推奨するかはどんなデータで何をしたいかに依存するので、以下のようなチートシートが用意されています。</dd>
</dl>
![日本語版チートシート](https://i0.wp.com/ty-memo.azurewebsites.net/wp-content/uploads/2016/05/mmlw-ja_jp.png)
<dl>
</dl>

<dl>
  <dt>Amazon Machine Learning</dt>
  <dd>以下の３つと謳われています。</dd>

<table>
<tr>
  <th colspan="2">アルゴリズム分類</th>
  <th>アルゴリズム名</th>
</tr>
<tr>
  <td colspan="2">回帰</td>
  <td>Linear Regression</td>
</tr>
<tr>
  <td rowspan="2">分類</td>
  <td>２クラス分類</td>
  <td>Logistic Regression</td>
</tr>
<tr>
  <td>多クラス分類</td>
  <td>Multinomial logistic Regression</td>
</tr>
</table>

</dl>
[参考： Learning Algorithm](http://docs.aws.amazon.com/machine-learning/latest/dg/learning-algorithm.html)
<dl>
  <dt>Google Prediction API</dt>
  <dd>非公開ですが、Boosting (複数のアルゴリズムで精度比較し、一番良い精度となったアルゴリズムを採用する) 方式をとっているようです。</dd>
  <dd>よって学習時は、内部では複数のアルゴリズムが走っていると推測されます。</dd>

<dt>IBM Bluemix(Watson)</dt>
  <dd>非公開ですが、「複数の利用可能なアルゴリズムを検討し、ニーズに合致するアルゴリズムを選択する」と謳っていることからGoogleに近い形式と思われます。</dd>

</dl>

#まとめ
##

・GoogleとIBMに関しては非公開の為、詳細な調査は出来ませんでした。
・Microsoftはものすごく沢山のアルゴリズムが用意されており、Azure Machine Learning Studioを使用すれば、色々なアルゴリズムを使用した機械学習の分析モデルの作成が可能です。
但しパラメータの内容が分かり辛いものも多いので、単に機械学習のサービスを使ってみたいだけという人にはオーバースペックかも知れません。