PAIでプログラミング不要の機械学習を試す!

こんにちは、ソリューションアーキテクトのKouです。最近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: データのインポート

今回のデータソースは、下図のように、Alibaba Cloudビッグデータ系の主力なクラウドプロダクトMaxComputeからデータセットを読み込むとの形でインポートしましたが、実はMaxCompute以外にも、OSSやRDSからのデータ同期とのアプローチもサポートしていますので、PAIと各プロダクト密接な連携により、データセットのインポートがとても便利になります。PAIのリリース後に、皆さんぜひ試してみてください。

  • Step 2: 統計解析

① 離散値特徴解析(Discrete Value Feature Analysis)

データセットの特徴量が全て離散値のため、「離散値特徴解析」とのコンポネートを使いました。下図のように、「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: モデルのトレーニングと予測

今回使っていたアルゴリズムは「Naive Bayes」と「Random Forest」2つでした。それぞれ予測モデルを作って、モデルの評価を行って、最善のモデルを選出するのは目的となります。

まず、トレーニングを行う前に、「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: モデルの評価と分析

バイナリ分類評価(Binary Classification Evaluation)

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

Naive Bayes Random Forest
       AUC Score 0.7341 0.7564
          F1 Score 0.6259 0.6319

最後

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

この記事をシェアする