見出し画像

100日後にプロになるワシ13日目(python)

やったこと

SIGNATEを使った機械学習

テーマ:ECサイトにおける購買率の最適化

今日は昨日やった機械学習モデルの改善

学習データの量を調整する

たくさん勉強したらいい点が取れるのと同じで
機械もデータが多いほど精度が上がるらしい

とのことで学習データを増やします。

とは言え、今は1ヶ月分のデータしかありません。
どうするのかというと

1ヶ月のデータの分配の割合を変えます

前回2週間づつ前半と後半に2当分にしました。

画像1

今回は3当分にします。

画像2

すると、データを増やすことができます。

# 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万円とか。(これって副業になるのかしら)

今回挑戦するのはこちら!!

スクリーンショット 2020-08-24 23.59.10

引っ越し需要予測→https://signate.jp/competitions/269

ちなみに、このコンペ。期限は

終わってます

なんで、過去のコンペに挑戦できる仕様みたいなのでやってみます。
ちなみにこれ自体は2017年10月にやってたみたい。

賞金は1位が30万円。ふむ。

まあ。賞金はないけど、引っ越し需要予測って今回のECのおすすめ予想と似たようなものなので行けると思ってます!

ではまた明日!

いつもサポートありがとうございます。 難しい方は感想をコメントでいただけると嬉しいです。