機械学習によるユーザ離脱率の予測論文:「I Know You’ll Be Back: Interpretable New User Clustering and Churn Prediction on a Mobile Social Application」

I Know You’ll Be Back: Interpretable New User Clustering and Churn Prediction on a Mobile Social Application
Carl Yang (University Of Illinois, Urbana Champaign); Xiaolin Shi (Snap Inc.); Jie Luo (Snap Inc.); Jiawei Han (University of Illinois, Urbana Champaign)
https://www.kdd.org/kdd2018/accepted-papers/view/i-know-youll-be-back-interpretable-new-user-clustering-and-churn-prediction

KDD2018の論文読み2本目。産業界の応用事例を集めたApplied Data Science Trackのほうが自分の興味に近いのでそちらにシフトして上から読み始めた。

Snapchatの大規模なデータを集めて、ユーザタイプをクラスタリングにより6種類に分類して、その中の3種類のユーザタイプが平均よりも登録2週間後の離脱率が高いということが分かった。
このクラスタリング結果をもとにして、著者らはユーザ登録後の2週間のデータをもとにして離脱予測のモデルを作成した。

予測モデル作成において、いくつかの課題がある。
データが非常にノイズが多く、変動が大きいため、隠れマルコフモデルのような典型的な時系列モデルでは上手くいかない。また、データは非常にスパースであり、activityの数も非常に偏った(一部のユーザが非常に多くのactivityを行っている)データのため予測が難しいといえる。また、ユーザタイプによって離脱率が異なってくるが、最初の2週間のデータが少ない状態でユーザタイプの情報はそろっていないため、今までのモデルではユーザタイプの情報を使うことはできていなかった。

これらの課題を解決するために、複数のLSTMを組み合わせた予測モデルを用いて離脱率の予測を行っている。具体的には、活動をEmbeddingするレイヤーをLSTMの前に持たせてスパースなデータに対応し、2週間のデータからユーザタイプをクラスタリングシステムで予測し、そのユーザタイプを予測するようなK個のLSTMをトレーニングして、Attentionで着目するLSTMを決めて離脱率を予測するモデルを構築している。

この論文で書かれている離脱率予測のモデルはClusChurnというシステムとして、Snap Inc.のリアルタイム予測システムに組み込まれている。
機械学習による離脱率予測モデルの一例として参考となる論文であると思う。

[KDD2018 論文読み] Smoothed Dilated Convolutions for Improved Dense Prediction

Smoothed Dilated Convolutions for Improved Dense Prediction
Zhengyang Wang (Washington State University); Shuiwang Ji (Washington State University)
https://www.kdd.org/kdd2018/accepted-papers/view/smoothed-dilated-convolutions-for-improved-dense-prediction

KDD2018の論文読みを始めた。1本目。

Image Segmentationの分野でよく使われているdilated convolutionという手法はグリッド状のアーチファクトがでるという課題があった。
Dilated Convolutionは周期的なサンプリングをしてそこに畳み込みフィルターをかけて、並びなおすという操作を行う。並べなおされた後は、隣のピクセルは離れたピクセルの畳み込み後の値なのでアーチファクトが出てしまう。

これを解消するために、著者らはSmoothed Dilated Convolutionsという手法を提案し、公開データセットにて通常のDilated Convolutionに比べて精度が向上していることと、実際にグリッド状のアーチファクトが軽減されていることを確かめた。

具体的には、Group Interaction Layerという各Dilated Convolutionフィルタ間の全結合ネットワークを用いて、各フィルタ間の関係性を学習させている。

また、Dilated Convolutionをかける前に、Separable and Shared Convolutionという各チャネルごとにフィルタをかける形の処理を行うことで、Dilated Convolution処理の前に関係性を学習することができる。

PSCAL VOC2012データセットを用いて評価しており、全体的に過去の高性能モデルよりも良い結果が出ている。また、ERF可視化という方法でグリッド状のアーチファクトが軽減されていることを確認している。

XGBoost 0.81でtrain()が落ちる

タイトルの通り、XGBoostの現時点での最新バージョンを入れてtrain()を呼び出したところ、Jupyter Notebookで「”The kernel appears to have died. It will restart automatically.”」と出て強制終了となった。どうもデータかパラメータに依存して起きる現象っぽい。

色々と調べて試してみたが、ここを参考にしてバージョンを下げたところ問題なく動くようになったのでバグっぽい。

インストール方法:

pip install xgboost==0.80