Gunosyデータ分析ブログ

Gunosyで働くデータエンジニアが知見を共有するブログです。

Gunosy における AWS 上での自然言語処理・機械学習の活用事例: AWS Summit dev day 2017

はじめに

こんにちは。Gunosyデータ分析部の大曽根(@dr_paradi) です。最近はJOHN TROPEA BAND featuring STEVE GADD etcのライブを観に行きました。 業務では主にニュースパスのユーザ行動分析、記事配信アルゴリズム開発全般を担当しています。

先日開催されました、AWS Dev Day Tokyo 2017において、「Gunosy における AWS 上での自然言語処理・機械学習の活用事例」というタイトルで発表してきましたので、その内容について簡単ですが書きたいと思います。

発表内容

私が発表した内容は下記のスライドにまとまっています。弊社が提供するサービスのニュースドメインのもの(グノシー、ニュースパス)における処理の流れを大まかに話しました。

発表内容では以下の3点を中心に話しました

  • 記事分類
  • 属性推定 + スコアリング
  • 効果測定 (ABテスト)

各項目に関して過去の発表資料を含め簡単に解説します。

記事分類

文書分類に関しては多くの手法がありますが、基本的には文書を(いろいろな方法で) ベクトル化し*1、教師あり多クラス分類問題として解きます。 ナイーブベイズを用いた例に関しては下記の資料にまとまっております。

qiita.com

教師あり分類問題においては、教師データの作成、収集が重要になります。 教師データおよびモデルの管理に関しては以前の勉強会で私が簡単に話しました。

発表資料にある通り、作成したモデルはアプリケーションのdeploy時にS3から取得します。 deployの際に下記のようなスクリプトを実行しています。

# get models
execute "aws s3 cp --region #{s3_region} s3://#{s3_bucket}/#{s3_prefix} #{application_data_dir}/ --recursive"

属性推定 + スコアリング

属性推定

属性推定の手法に関してはWebDB Forum 2016の技術報告で発表済みで、下記のエントリにまとまっています。 属性推定でも、記事分類と同様にユーザのクリック履歴をベクトル化し、教師あり多クラス分類問題として解いています。

data.gunosy.io

スコアリング

今回紹介しているニュースのドメインにおいては、記事に鮮度がある*2ので、リアルタイムでのコンテンツ評価が重要になります。 集計および可視化の具体的な方法に関しては下記のエントリが詳しいです。

data.gunosy.io

また、GunosyでのKinesis Analyticsの利用し始めた経緯、詳細については下記のイベントで発表予定です。 AWS Solution Days 2017 ~AWS DB Day~(2017 年 7 月 5 日開催) | AWS

効果測定 (ABテスト)

Gunosyではデータに基づいた意思決定を非常に重要視していますが、ニュースアプリのであるため、時流や季節要因などの影響を受けやく、データに予期しないノイズが乗り、計測が困難になることが多くあります。 そのため、ABテストを用いてできるだけ施策の効果を正確に継続することを重要視しています。

ABテスト実施および測定の際に参考にしたブログは下記のエントリにまとまっています。 data.gunosy.io

マイクロサービスにおけるABテスト実装時のTipsなどは下記の資料にまとまっています。 ABテスト対象であるかどうかのパラメタをログに含めることで、解析を容易にすることができます。

ABテストの重要性に関しては下記の論文発表が詳しいです。

おわりに

AWS Dev Day Tokyo 2017での発表について簡単にまとめました。

機械学習ライブラリの充実により、ある程度の精度のもの(分類器などは)を作成するコストは下がっているように思えますので、今後は実際のサービスで動かすことがより重要になってくるかと思います。 今回の発表が、実サービスで機械学習を応用する際の参考に少しでもなれれば幸いです。

*1:文書のベクトル化についてはそのうち当ブログにて公開される予定です

*2:既知のニュース記事は読まれにくい