1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-10-21

最近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リリース後には、皆さんぜひ体験してみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?