前回TianChiの紹介編の話をさせて頂きましたが、今回は実際のコンぺを交えながら、データのダウンロード・前処理・訓練・予測・提出までの一連の流れをご紹介させて頂きたいと思います。
コンテストの概要
今回取り上げた例としては『Offline to Online (O2O) Prediction of Coupon Redemption』となりますが、まずコンテストの背景を簡単に説明させて頂きたいと思います。
O2O (オンラインからオフライン) とは、オンラインからオフラインへ送客するためのWebマーケティングの施策だといいます。例えば、オンラインで割引クーポン券を配布したり、商品広告やチラシを出したりすることが、よく使われる手段です。
ただし、このようなマーケティング施策は1つ課題があります。不特定多数のユーザーに訴求できる一方、お客様にとっては、欲しいクーポンを貰うなら当然満足しますが、欲しくない場合は、数多くのクーポンをひたすら送られると、逆効果になる恐れがあります。
そのため、今回のコンテストでは、O2Oリアルシーンに関するデータセットが提供され、お客さんが配布されたクーポン券が指定期間中(15日以内)にオフラインでの利用率はどれくらいなのかを予測できるモデルを応募しております!
- データの概要
今回訓練用データセットとして与えられるのは、オフラインでクーポンの使用状況のデータとオンラインでクーポンの受領状況のデータです。
2016/01/01から2016/06/30まで半年間以内にオフラインでクーポンの使用状況のデータ(ccf_offline_stage1_train.zip)
項目 | 説明 |
User_id | ユーザーID |
Merchant_id | 店舗ID |
Coupon_id | クーポンID。※ Nullの場合、クーポンが使われてないを指します。 |
Discount_rate | 2つタイプがあります。 0<x<1 (割引率。例えば, 0.3, 0.8) x:y (x人民元以上購入する場合、y人民元OFF。例えば, 100:20, 200:40) |
Distance |
ユーザーの家から店舗までの距離
|
Date_received | クーポンをもらった時の日付 |
Date | クーポンを利用した時の日付 |
2016/01/01から2016/06/30まで半年間以内にオンラインでクーポンの受領状況のデータ(ccf_online_stage1_train.zip)
項目 | 説明 |
User_id | ユーザーID |
Merchant_id | 店舗ID |
Coupon_id | クーポンID。※ Nullの場合、クーポンが使われてないを指します。 |
Discount_rate | 2つタイプがあります。 0<x<1 (割引率。例えば, 0.3, 0.8) x:y (x人民元以上購入する場合、y人民元OFF。例えば, 100:20, 200:40) |
Action |
0:ただクリックするだけ
1:オンラインで購入する
2: クーポンを受領する
|
Date_received | クーポンをもらった時の日付 |
Date | クーポンを利用した時の日付 |
そして、テストデータセットとしては、2016/07/01から2016/07/30まで一ヶ月間以内のオフラインデータで、訓練データと異なり、クーポンを利用した時の日付の項目('Date')が含まれてないことを確認することができます。
項目 | 説明 |
User_id | ユーザーID |
Merchant_id | 店舗ID |
Coupon_id | クーポンID。※ Nullの場合、クーポンが使われてないを指します。 |
Discount_rate | 2つタイプがあります。 0<x<1 (割引率。例えば, 0.3, 0.8) x:y (x人民元以上購入する場合、y人民元OFF。例えば, 100:20, 200:40) |
Distance |
ユーザーの家から店舗までの距離
|
Date_received | クーポンをもらった時の日付 |
- 評価方法:
2016年7月に各クーポンを貰った時点から15日以内にクーポンの利用率が求められます。最終評価点数の計算方法としては、各クーポンの利用率をもとにAUC値(ROC曲線下の面積)を個別に計算し、さらにすべてのクーポンの AUC 値の平均値(0と1の間)となります。その平均値(0.5以上)が大きければ、予測精度が高いと意味します。
※ AUCの詳細にこちらに省略しますが、ROC曲線とAUCの説明はWikiをご参照ください。
- 提出データの形式
User_id | ユーザーID |
Coupon_id | クーポンID |
Date_received | クーポンをもらった時の日付 |
Probability | クーポンの利用率(15日以内) |
実行方法:
- 事前準備:
まず、データセットをダウンロードする前に、下図のように、「Sign up」をする必要があります。
「Source of information」撰択リストから該当の項目を撰択してから「Next」をクリックしてください。
そうすると、データセットをダウンロードできるようになります。
- 実行詳細
チュートリアルのソースコードは以下のjupyther notebookをご参照いただければと思います。
※ 本チュートリアルはccf_offline_stage1_train.csvのみを使い、特徴抽出を行いましたが、さらなる改善案として、ccf_onfline_stage1_train.csvを連結させて、新たに特徴量を作ることなとが考えられます。また特徴量を畳み込みニューラルネットワークによって自動的に獲得したりすることも考えられます。
- 提出手順
最後、下図の手順のように、予測結果(csvファイル)を提出することができます。
皆さん、いかがでしょうか、以上はコンペの一連となります。実際にはTianchiに公開されている各種のコンペがまだ沢山ありますので、データサイエンティストにとらわれず、機械学習を勉強し始めた方でも、ぜひTianchiが提供されているデータをご利用して頂き、練習してください。また多くの皆様のご参加を心よりお待ちしております!
最後、TianChiシリーズの最終回(データ処理編)も近々公開したいと思いますので,引き続きよろしくお願いします。