OGeek算法挑战赛总结

断断续续地结束了这个比赛,对我而言,这是入门自然语言处理的第一课,也是搜索推荐中,根据用户query与预测列表prediction_List,预测用户的点击率。

参赛总结:

1. 首先,json、list相加、读写文件以及一些pandas的操作,都需要用的足够多,才会越熟练。

2. 这次遇到的两个最大的挑战是:1)数据泄露;2)进行groupby后,样本乱序对结果产生影响。

3. 数据泄露:对训练集和验证集的tag、title、prefix以及它们的组合对label求转化率(直接用sum/count),但是,验证集和测试集都有新词,并且分布几乎是一致的。直接求转化率时,在验证集上的新词的转化率是真实有效的,但是,测试集上新词的转化率都是0,这样就造成了验证集和测试集的分布不一致。解决方法:1)将新词、旧词分开,对新词不用转化率作为特征求点击率;2)使用平滑操作得到转化率。(CTR平滑,针对稀疏数据)

4. groupby后,样本乱序对结果产生影响。造成这个问题的原因是没有一个全局的index,在设置一个全局index后,这个问题就解决了。

参赛收获:

1. 对NLP有了一个浅显的认识。主要是文本分词、文本相似度计算、文本主题抽取方面,对词袋模型(bag of words)有了一定的了解。

2. 学会如何使用word2vec表示一个词,使用LSI、LDA计算文本相似度(gensim)。

3. 知道了更多的计算句子相似度的方法:WMD,fuzz,cosine,jaccard,cityblock,canberra,euclidean,minkowski,braycurtis等。

你可能感兴趣的:(数据挖掘竞赛)