之前的特征值有10几个,有点少了。增加特征值到40多个。特征选取参考https://blog.csdn.net/snoopy_yuan/article/details/75105724
使用pyspark.ml.classification import GBTClassifier 里的模型。
几个参数解释:
#maxIter 迭代次数
#maxDepth 树的最大深度
#stepSize 每次迭代优化步长(学习速率)
#seed 随机种子
在正反训练比例为1比1000左右做了几组测试。(验证集正反例比例为1:1)
GBTClassifier(maxIter=20,maxDepth=10,stepSize=0.4,seed=50
Testing Accuracy is 48.83653286794648 %
Testing f1 is 48.92483484100073 %
GBTClassifier(maxIter=20,maxDepth=10,stepSize=0.2,seed=50
Testing Accuracy is 48.632926119837116 %Testing f1 is 48.89735152944631 %
GBTClassifier(maxIter=20,maxDepth=10,stepSize=0.1,seed=50
无太大提升
可以看出调整参数无太大提升,考虑修改训练集的正反比例为1比30
Testing Accuracy is 52.065154159395 % Testing f1 is 52.344773727470994 %
有一些提升
再选择 1比20 和1比100的比例进行对比
1比20:
Testing Accuracy is 50.78534031413613 % Testing f1 is 50.98678995075511 %
1比100:
Testing Accuracy is 48.57475276323444 %
Testing f1 is 48.89881100109361 %
再做一个1比50:
Testing Accuracy is 50.08726003490401 % Testing f1 is 50.42111031072746 %
对比下来, 训练数据就用1比30的正反比例比较不错。
按这个训练模型,进行预测,提交结果,准确率依旧不高。
2.参考该比赛决赛团队的方案,对用户组进行清洗,筛选 只看不买和对商品子集无购买的用户。
对反例数据集进行采样 ,控制训练数据的正反比例1比20~1比30之间。
验证数据集 只用正例数据:
maxIter=20,maxDepth=10,stepSize=0.1,seed=50,验证结果:
maxIter=30,maxDepth=10,stepSize=0.1,seed=123123
验证结果为:
Testing Accuracy is 23.943661971830984 % Testing f1 is 38.63636363636363 %