ユーザーセグメントデータをSageMakerでロジスティック回帰する(第1回)

2019.02.28

こんにちは、データソリューション・ディビジョンの笹沼です。

好きなAWSサービスはAmazon S3です。約半年前に異業界から転職して業界や機械学習などについて勉強中です。

 

昨今の機械学習トレンドは社内でも注目度が高いです。技術周りを担当するチームとしてもノウハウを蓄積していきたいと考えており、機械学習の研究開発を行うことになりました。

本コラムでは、その取り組みの一部を紹介します。

 

機械学習プロジェクトの流れは、オライリー社の『仕事ではじめる機械学習』を参考にしました。本コラムでは、全2回で主に1、6、7を紹介します。

第1回目の今回は1の「問題を定式化する」と機械学習の結果になります。

 

機械学習プロジェクトの流れ

  1. 問題を定式化する
  2. 機械学習をしなくて良い方法を考える
  3. システム設計を考える
  4. アルゴリズムを選定する
  5. 特徴量、教師データとログの設計をする
  6. 前処理をする
  7. 学習・パラメータチューニング
  8. システムに組み込む

 

学習環境はAWSのSageMakerを使いました。言語はPythonです。

SageMakerの使い方はチュートリアルを参考に学習しました。※

 

1.問題の定式化

やりたいことは、ユーザーデータからカテゴリーの推定を行うことです。

イメージ図

未分類のユーザーに対して特定のカテゴリに興味があるかないかを推定します。

難しく言うと、ロジスティック回帰の2値分類です。教師あり学習です。

 

今回、機械学習に使用するデータは、ユーザーセグメントデータを扱いました。

社内にはその他にも多種多様なデータがありますが、ユーザーセグメントデータを選んだ理由は、個人が特定されない形でデータを保持しているためです。

 

機械学習の結果

元データをそのまま使用するとデータ量が膨大であるため、抽出した約5万件のユーザーデータを使用しました。今回のデータでは、およそ5万×2千の行列になります。

学習モデルにはAmazon SageMaker Built-in Algorithmsのlinear_learnerを使用しました。

 

モデル学習の時間は、トレーニングジョブの8並列、インスタンスタイプはml.c4.xlargeで15分ほどでした。学習結果は、学習用とテスト用にデータを分割し検証すると正解率、適合率、再現率、F値が95%以上になりました。100%に近いほど学習ができていますので、カテゴリー推定を行う精度の高い学習モデルを作成できました。セグメント(説明変数)の中に、推定対象(目的変数)と相関関係がとても高いセグメントがあったのだと思います。

 

機械学習の一連の工程を実施でき、工程全体をトライ&エラーで試行する部分が苦労しました。アルゴリズムの選定やハイパーパラメータの調整はしんどそうです。一般的には、予測の精度を追求するとなるとデータサイエンティストの専門的な力が必須だと思いますが、データや機械学習の目的などによっては、アルゴリズム部分に踏み込まなくても、精度の高いモデルが作成できると思います。

 

次回は、実施した機械学習の内容や苦労したことなどを紹介します。

 

https://docs.aws.amazon.com/sagemaker/index.html#lang/ja_jp