最近PAIでの深層学習などの投稿が増えてきました、ご覧頂いていますでしょうか。それとは別に、伝統的な機械学習の場合ではどうなりますでしょうか。今回の記事は伝統的な機械学習に焦点を絞り、PAIでの機械学習の手法を紹介させて頂きたいと思います。
機械学習といえば、自前でPythonやR言語を使って、複雑なデータの前処理とか、予測モデルの学習などのイメージが多いではないでしょうか。実は世の中の沢山のパブリッククラウドサービスと同じように、機械学習のクラウドサービスを活用すると、今までの煩雑な作業が楽になれます。
さて、今回はAlibaba Cloudの機械学習プラットフォーム(PAI)について、色々内訳の便利な機能を皆さんに紹介させて頂きたいと思います。
データセットと課題について
今回は公開されている有名なデータセット「Titanic : Machine Learning from Disaster」を使いました。また、class、ageとsex3つの乗客情報を特徴量として、Survived(生存したかどうか)の予測を作るのが今回の課題となります。
項目 | 意味 | 詳細 |
class | チケットクラス | 1st:上層クラス(お金持ち) 2nd:中級クラス(一般階級) 3rd:下層クラス(労働階級) crew:船員 |
age | 年齢 | adult:大人、child:子供 |
sex | 性別 | male:男性、female:女性 |
survived | 生存したかどうか | 0:死亡、1:生存 |

実験の構成図
今回の実験は主にデータのインポート、統計解析、モデルのトレーニングと予測、モデルの評価と分析、4つの部分で構成されています。それぞれの詳細を順番で説明していきたいと思います。

- Step 1: データのインポート

- Step 2: 統計解析
データセットの特徴量が全て離散値のため、「離散値特徴解析」とのコンポネートを使いました。下図のように、「Feature Column」にclass、age、sexを選択して、「Label Column」にsurvivedを指定してください。そうすると、class、age、sex、それぞれの属性でsurvived(即ち、生存したかどうか)を解析することができます。

「離散値特徴解析」コンポネートを右クリックして、「View Analytics Report」との項目をクリックすると、下図のように、class、age、sex、それぞれの解析結果が直ちに出てきます。

② フィルタリングとマッピング(Filtering and Mapping)
もし例えば、子供の生存状況に気になるならば、「フィルタリングとマッピング」とのコンポネートを使えます。下図のように、「Mapping Rules」でsex、class、survivedを選択して、「Filter Conditions」に age='child' を設定するだけで完了となります。
そして、「フィルタリングとマッピング」を右クリックして、「View Data」との項目をクリックすると、子供の生存状況の一覧情報をその場で確認することができます。


- Step 3: モデルのトレーニングと予測
まず、トレーニングを行う前に、「Split」コンポネートの「Split by Ratio」というシンプルなホールドアウト手法を使って、データセットをトレーニングデータセットとテストデータセットを分割します。(分割する時の「Random Seed」も指定することができます。)
次は、「Naive Bayes」と「Random Forest」の詳細設定の中に, それぞれclass、age、sexを3つの特徴量として「Feature Column」を指定し、survivedを「Label Column」として設定します。
最後、「Prediction_1」と「Prediction_2」の「Reserved Output Column」設定項目に、survivedを含めて、全て4つのフィールドを選択してください。他の項目設定はデフォルトのままで大丈夫です。
先に述べた全てのコンポネートの詳細設定は下記のようになります。

- Step 4: モデルの評価と分析
生存したかどうかは、バイナリ分類領域に属しているので、「バイナリ分類評価」とのコンポネートを使いました。先ほど述べた統計解析コンポネートと同じように、「バイナリ分類評価」を右クリックして、「View Evaluation Report」との項目をクリックすると、下図のように、ROC曲線やPR曲線などの評価指標が直ちに出てこられます。
Naive Bayes | Random Forest | |
AUC Score | 0.7341 | 0.7564 |
F1 Score | 0.6259 | 0.6319 |

最後
皆さん、いかがでしょうか、上述のようにPAI内臓のコンポネートを活用することだけで、ソースコードを書かずに、機械学習を一通りに実施することができました。PAIリリース後には、皆さんぜひ体験してみてください。