赛题:https://pan.baidu.com/s/1Re0k81XieiXFI6hkwgL8oA
分析:
1.用户是多个,广告也是多个,一个用户可能对多个广告产生行为,一个广告也可能被对多个用户点击,这显然是不好处理的.我们假设只有一个广告,那么他对于用户而言只有两种情况,被点击和不被点击,这就成了一个二分类的问题.我们把用户特征与广告特征拼接,作为x,把与x对应的是否点击作为y,对于离散数据做分类可以使用knn,支持向量机,决策树/随机森林..对于离散数据.使用这些方法之前最好先做稀疏处理,我们最常用的方法是onehot.在另一篇博文里介绍了这种方法的优缺点,我想可以用w2v或者autoencoding处理一些关联较大的数据,比如interest1.我们的数据有四个g,稀疏处理后将会变得更大,可以对数据先拆分,我会分享顺序拆分的代码.
2.我还有一种思路,就是先对用户特征稀疏化,做kmeans聚类,判断同类用户与广告之间的关系,这样问题可能会简单一些
3.亲测只有knn或者的决策树的话准确率不会比随机猜测高太多,我们在他之前再套一层boosting算法
4.考虑到内存溢出,我把训练集分块进行训练,得到每块的模型,当用整个测试集进行测试的时候出现了shape不匹配的问题,问题应该是数据集不完全包括测试集的特征,导致one-hot编码后维度不同,解决的办法:把每块数据集与测试集整合编码。
5.第一周结果出来,有大佬做了总结,他们采用里gbdt和deepfm结合的方式来做,前一个是梯度提升树,属于treemodel,后者是一个深度模型,华为2017年提出的用户推荐算法,它基于特征工程,对小块数据用gbdt做特征挖掘,再进行特征的拼接和分割,然后用deepfm训练,大佬的算法就是厉害,这些我都不会
数据:可以联系我要