本程序是2016年CCF计算智能大赛的一道题目,主要的工作是针对用户查询词进行用户的属性分类,本人初次参加数据挖掘类的比赛, 经验不是很足,所以在特征工程方面和排名前10的队伍存在差距,本人最终排名为25。
1.数据预处理 针对用户的查询词,首先进行分词、去停用词操作,为了降低噪声词的干扰,过滤了http链接和单独的阿拉伯数字,同时为了在一定程度 上减少最终特征向量的维度,过滤了词频小于5的查询词。
2.特征工程 TFIDF特征:对分词后的用户搜索词列表计算TFIDF矩阵(取log10),卡方检验筛在集内cv会有一定提升,但是提交测评后发现效果并不理想。 SVD特征:对TFIDF矩阵进行SVD分解,在集内cv测试准确率提升2%左右,但是提交后效果依然不理想。
3.分类器模型 初赛时数据量较少,用SVC分类器效果是最好的,训练大概半个小时左右。复赛数据量翻了5倍,SVC分类器的时间成本难以忍受。 对TFIDF特征向量,采用投票学习的方法,分类器分别是SGD分类器、LR分类器(sag核)、LR分类器(线性核)
文件目录 2016ccf-sougou-personas-contest --data:存放训练集和测试集原始数据以及分割之后的数据 --temp:存放中间特征向量以及训练好的分类器模型 --data_cut.py:对原始数据进行分割 --preprocess.py:对分割好的训练集和测试集数据进行分词、去停用词等过滤操作,生成gensim词典 --tfidf_vote_classify.py:提取TFIDF特征向量并训练投票分类器,对测试集进行测试