0. 前言
-
本次实践的是[天池比赛O2O优惠券赛题]https://tianchi.aliyun.com/competition/entrance/231593/information ,由于是初接触机器学习,所以参考了天池技术圈等很多博客,关于该赛题的思路,网上已经有很多篇写的很好的文章了(见下面参考博客),我在这里主要是记录下我自己将该赛题的分数从0.53一直提升到0.80的过程,留作学习记录。
-
关于该赛题的思路可以参考如下博客:
[1]. [Xgboost实践+第一名天池o2o优惠券的使用预测思路完整版]
https://blog.youkuaiyun.com/weixin_42001089/article/details/85013073[2]. [[天池竞赛系列]O2O优惠券使用预测复赛第三名思路]
https://tianchi.aliyun.com/notebook-ai/detail?postId=8462 -
本篇文章接下来的所有源码及数据如下:
https://github.com/myourdream/tianchi_O2O_predict -
使用GPU的环境及遇到的问题解决办法请参考我的另外两篇博客:
[1]. https://blog.youkuaiyun.com/myourdream2/article/details/86586281
[2]. https://blog.youkuaiyun.com/myourdream2/article/details/86603300
1. auc0.53
在天池新人赛报名之后,就先到技术圈去学习了下,看到一个100行代码入门天池O2O优惠券使用新人赛【精简教程版】,就拿来练了下手,运行很顺利,代码也相对比较简单,部分代码如下所示:
-
【使用的库】
import os, sys, pickle import numpy as np import pandas as pd import matplotlib.pyplot as plt from datetime import date from sklearn.linear_model import SGDClassifier, LogisticRegression dfoff = pd.read_csv('datalab/1990/data/ccf_offline_stage1_train.csv') dftest = pd.read_csv('datalab/1990/data/ccf_offline_stage1_test_revised.csv') dfon = pd.read_csv('datalab/1990/data/ccf_online_stage1_train.csv') print('data read end.')
-
【使用的模型】
# feature original_feature = ['discount_rate','discount_type','discount_man', 'discount_jian','distance', 'weekday', 'weekday_type'] + weekdaycols print("----train-----") model = SGDClassifier(#lambda: loss='log', penalty='elasticnet', fit_intercept=True, max_iter=100, shuffle=True, alpha = 0.01, l1_ratio = 0.01, n_jobs=1, class_weight=None ) model.fit(train[original_feature], train['label'])
-
【使用的feature】
# feature original_feature = ['discount_rate','discount_type'