Help us understand the problem. What is going on with this article?

データサイエンスコンペ TianChiに挑む!(実践編)

前回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を連結させて、新たに特徴量を作ることなとが考えられます。また特徴量を畳み込みニューラルネットワークによって自動的に獲得したりすることも考えられます。

screencapture-gist-github-qfxkd-7361e3b14c980a9dfccb01f194e0e343-2019-10-21-19_14_11.png

  • 提出手順

最後、下図の手順のように、予測結果(csvファイル)を提出することができます。


皆さん、いかがでしょうか、以上はコンペの一連となります。実際にはTianchiに公開されている各種のコンペがまだ沢山ありますので、データサイエンティストにとらわれず、機械学習を勉強し始めた方でも、ぜひTianchiが提供されているデータをご利用して頂き、練習してください。また多くの皆様のご参加を心よりお待ちしております!

最後、TianChiシリーズの最終回(データ処理編)も近々公開したいと思いますので,引き続きよろしくお願いします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした