100日後にプロになるワシ13日目(python)
やったこと
SIGNATEを使った機械学習
テーマ:ECサイトにおける購買率の最適化
今日は昨日やった機械学習モデルの改善
学習データの量を調整する
たくさん勉強したらいい点が取れるのと同じで
機械もデータが多いほど精度が上がるらしい
とのことで学習データを増やします。
とは言え、今は1ヶ月分のデータしかありません。
どうするのかというと
1ヶ月のデータの分配の割合を変えます
前回2週間づつ前半と後半に2当分にしました。
今回は3当分にします。
すると、データを増やすことができます。
# pandasをpdとしてインポート
import pandas as pd
# データ'train_B.tsv'の読み込み
data = pd.read_csv('train_B.tsv', sep='\t')
# 'time_stamp'カラムをdatetime型に変換
data['time_stamp'] = pd.to_datetime(data['time_stamp'])
# 期間を三等分したときの長さ
start = data['time_stamp'].min()
end = data['time_stamp'].max()
interval = (end - start)/3
# 学習用データの部分を抽出
data_train = data[data['time_stamp']<=start+2*interval]
# 検証用データの部分を抽出
data_val = data[data['time_stamp']>=start+interval]
データの抽出まで。(あとは同じ)
学習パラメータを調整する
前回学習に利用した学習方法のlightGBMですが、学習をどう進めるかについて色々なパラメータを設定できます。
機械学習では、与えられた問題から解答に近づけるために。
モデルが持つパラメータを少しづつ調整していきます。
ただし、それがいきすぎてしまうと、テストで利用した限定的なパターンのみに精度が高く、それ以外のパターンでは予測が外れてしまうという過学習
という状態に陥りがちです
なので今回はlightGBMのパラメータの一つであるearly_stopping_roundsという。その名の通り学習を早めに終わらせるパラメータを調整して、過学習を防ぎます。
結果はこんな感じ
no early stopping:
0.5
early stopping:
0.6309297535714575
1に近い方が精度が高いのでearly stoppingを設定した方が精度が高いです。
(63%)
感想
はい。ということでね
ECのレコメンドを作成するAIができたんですけれども
流石にこれじゃあ「ワタシはAIチョットデキル」には程遠いとのことで
リアルコンペ!やっちゃいます
AIってコンペあるらしいよ。って前言ったっけ?
賞金も出るところは1位で100万円とか。(これって副業になるのかしら)
今回挑戦するのはこちら!!
引っ越し需要予測→https://signate.jp/competitions/269
ちなみに、このコンペ。期限は
終わってます
なんで、過去のコンペに挑戦できる仕様みたいなのでやってみます。
ちなみにこれ自体は2017年10月にやってたみたい。
賞金は1位が30万円。ふむ。
まあ。賞金はないけど、引っ越し需要予測って今回のECのおすすめ予想と似たようなものなので行けると思ってます!
ではまた明日!