こんなモノが開催されているので、ちょっと参加してみています。
https://www.kaggle.com/c/coupon-purchase-prediction
http://www.recruit.jp/news_data/release/2015/0716_15946.html
Kaggleって?
Kaggleというのは、"The world's largest community of data scientists compete to solve your most valuable problems." だそうです。簡単に言えば「データ解析コンペティションを簡単に行うことができる」場所です。きっとネット調べるともっとちゃんと説明してくれている人がいると思うけれど。
一人で作業をするよりも、100倍くらい競争するのは楽しいわけで、十分な結果がたくさん出たりするわけですね。そんなわけで、結構にぎわってます。
データ解析コンペティション?ということは?そうです。賞金が出ます。これが、5桁ドルとか、結構な大金だったりします。
まあ相手は世界のプロ、なかなか勝つのは容易ではありませんが。。。
RECRUIT Challenge?
最初にも書いちゃったんですが、RECRUIT HoldingsがKaggleに問題を出しまして、それがRECRUIT Challengeです。
内容はクーポンサイト「ポンパレ」の購入予測ですね。過去1年くらいの閲覧・購入クーポン情報から次の1週間の購入を予測します。
他の問題と同様に賞金がでかいです。( https://www.kaggle.com/c/coupon-purchase-prediction/details/prizes )
- 1位 30,000ドル
- 2位 10,000ドル
- 3位 5,000ドル
しかも、学生だと追加でお金と権利がもらえます。( http://challenge.recruit.ai/studentAward.html )
こっちは応募が日本語だから、事実上日本人学生間での勝負になりますかね。
- 1位 100,000円
- 2位 50,000円
- 3位 30,000円
-
- AI分野の著名な先生とお話ができる
という。
え、お金ほしい!
じゃあ調べましょう。
ただ取っ掛かりで躓いても悲しいので(4回フォーマットエラーしたのは秘密)、pandasを利用してランダムに10個の予測を出力するコードを書いてみました。
あ、csvファイルはdatフォルダの中にあると仮定します。
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
ul = pd.read_csv('./dat/user_list.csv')
cl_test = pd.read_csv('./dat/coupon_list_test.csv')
sampler = np.random.permutation(len(cl_test)) #cl_testの順番を入れ替えるものを生成
cids = cl_test.take(sampler[:10]).COUPON_ID_hash #ランダム順番に10個を取得し、そのCOUPON_ID_hashをとる
cids = " ".join(cids) #とったIDを半角スペース区切りでまとめる(求められている出力形式がこれ)
output = pd.DataFrame({"USER_ID_hash":ul.USER_ID_hash, "PURCHASED_COUPONS":cids}, columns=["USER_ID_hash", "PURCHASED_COUPONS"]) #出力用DataFrameを作成する
output.to_csv("./output_random.csv", index=False)