数据挖掘优秀论文(第九届“泰迪杯”数据挖掘比赛论文分享)
下面是好好范文网小编收集整理的数据挖掘优秀论文(第九届“泰迪杯”数据挖掘比赛论文分享),仅供参考,欢迎大家阅读!
我一看到题目就感觉今年“泰迪杯”的A题跟去年“泰迪杯”A题思路很像,甚至比去年的还要再简单是怎么回事,我觉得我飘了,还是要认真准备比较稳妥一点。
我用的都是很常规的库,数据导出导入用的是pandas,机器学习用的是sklearn,为了处理不平衡数据用了imlearn这个库,机器模型的代码基本上是封装好的,也不用去手写机器模型,甚至以前Stacking模型融合需要手写算法,现在sklearn库都直接有现成的函数可以直接用,给了我这个编程小白一个独自参加比赛的机会。
我用的是jupyter notebook这个平台来实现编程的,我其实也有pycharm但是不想用,第一交互式不行,用太久Matlab了,实在接受不了这种完全不知道自己跑出来是什么东西的编译器。甚至一开始不会python,还一度想用Matlab和SPSS Modeler,但是前者机器模型太少需要自己写代码,SPSS Modeler看不懂,最后还是选择用python,才发现,嗯,真香。
我不知道怎么写思路,我觉得摘要最能体现我的全部做法和思路,放出来给大家。
针对问题一,采用了基于惩罚项和基于树模型两种不同的嵌入法,前一种用了LR、LASSO、SVM三种模型,后一种用了RF、GBDT、XGBoost、LightGBM模型共七种来机器学习,求出对上市公司发生造假有相关性的特征。再根据特征重要性程度,得到每个算法排名的前30个指标,挑选出在所有算法中出现次数大于或等于3次的指标,作为与财务数据造假相关的数据指标。并以制造业和房地产业为例,对挑选出来的指标进行共性分析和差异性分析。
针对问题二,通过SMOTE采样解决不同行业的数据不平衡问题之后,利用F1-score和AUC指标,并基于k折交叉验证和网格搜索给第一问中效果较好的LR、RF、GBDT、XGBoost、LightGBM模型进行超参数调优。在调试好的机器模型的基础上,本文选择了基于Stacking 集成学习把模型融合成一个集成分类预测模型,第1层基学习器选择RF、GBDT、XGBoost、LightGBM模型,第2层元学习器选择了LR模型,从而确定了最优的Stacking集成学习分类预测模型。Stacking集成模型在测试集上的F1-score得分为0.96,AUC为0.79,高于所有的基学习器,不存在过拟合现象并且预测效果良好,并求出第6年制造业的预测结果为有20家上市公司发生财务数据造假。
针对问题三,采用了第二问的方法对其他行业进行预测,对没有发生造假情况的租赁和商务服务业使用OneClass SVM进行异常点检测,得到所有行业(除制造业)在第6年共有27家上市公司发生财务造假。本文旨在寻求一个能包含全行业的集成学习机器分类模型,但是在超参数调优的过程中,发现由于LR模型的局限性,限制了集成学习机器模型的能力,暂时不能得到此机器模型。
关于其中比较细节的做法,第一个是对于教育、居民服务、修理和其他服务业、卫生和社会工作、住宿和餐饮业和综合这些作假企业少得可怜的行业,因为这几个行业与普通居民的公共生活服务息息相关,所以将这几个行业进行合并成一个新的行业——公共服务业。
第二个我觉得也是往往会被忽视的点,就是题目第一问有让分析比较不同行业上市公司相关数据指标的异同。这种既有共性分析又有差异性分析的题目往往特别考验写作者的功底,毕竟有十九个行业,每个行业至少挑出来30个特征,全部分析的话篇幅不允许,时间 也不允许,而且也没必要。
所以我统计所有行业的数据指标出现次数,挑选出现次数大于和等于4次的指标,并将挑选出来的指标进行分成3类,包括现金流量、营运能力、营业能力,对分类的特征进行共性分析,并将制造业和房地产业两个行业为例,将不同于上面共性分析出现的特征进行差异性分析。
第三个就是在用Stacking融合模型的时候,突然想到可不可以将所有的企业进行合并,选用上面共性分析选出的特征来进行学习,但是结果不太行,最后选择放弃。
其他的我觉得就是写作给了我很大的底气,看过前几届的优秀论文,由于“泰迪杯”的论文没有篇幅限制,好像分析得越透彻拿奖的几率就越大。在报名的时候,我就疯狂寻找各种关于数据挖掘的物料,在前面的篇幅我将我会遇见的每个步骤都进行了详细的理论分析,包括常常被人家忽略的缺失值处理,我还将缺失值可能出现的种类都拆开来讲,力图使一个从来都没接触过机器学习的人都能尽量看得懂我的文章。
接上文的我对自己的要求是做的每一步都希望有自己的分析,我想分享我觉得还行的三点。
一是在Stacking机器融合的时候,我发现支持向量机跑得特别慢,没办法调参,经常跑到忘记都出不了答案,所以我放弃了使用支持向量机,但是我并没有因为不好用而放弃,我专门差了资料,补充了说明:
(1)SVM在样本量比较少的时候,容易抓住数据和特征之间的非线性关系(相比线性分类方法如logistic regression,或者linear SVM)。但是,在样本量比较多的时候,线性分类方法的劣势就要小了很多,例如可以通过手工拆分/离散化特征来模拟非线性关系。
(2)计算复杂度高。主流的算法是O(n^2)的,这样对大规模数据就显得很无力了。不仅如此,由于其存在两个对结果影响相当大的超参数(如果用RBF核,是核函数的参数gamma以及惩罚项C),这两个超参数无法通过概率方法进行计算,只能通过穷举试验来求出,计算时间要远高于不少类似的非线性分类器。
所以本文暂不考虑支持向量机。
二是我在处理数据不平衡的时候,发现在使用欠取样、过取样和SMOTE取样的时候,F1-score和AUC的变化并不是同样的,我探讨了其中的原因:
这是由于AUC希望训练一个尽量不误报的模型,也就是知识外推的时候倾向保守估计,而F1-score希望训练一个不放过任何可能的模型,即知识外推的时候倾向激进,这就是这两个指标的核心区别,样本不平衡往往会导致机器模型误判而导致AUC偏低。
第三,在最后实现统一模型的时候,一直因为LR的原因,最后模型的准确率一直上不去,最后放弃了,因为时间的原因,也没打算使用别的基学习器,就分析了原因:
猜测是由于LR模型的预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阈值。
所以就这样,不算坎坷地完成了比赛,顺利地拿到了奖。因为我在5月的同时还要做两份毕业设计,所以在劳动节期间一定要把文章写好,还好前期收集了比较多的物料,比赛时间也比较充裕,写作还算顺利,就是在最后修改的时候,天天看的文章最后实在是看不下去了,也没有人可以给我提供更好的点子,所以就提交了。最后我的文章有幸作为优秀论文的话,请各位读者见谅,我对于里面的一些错别字和不通顺的地方实在是麻木了。
话说我的答辩真的很差,PPT是黑白的,无模板,白底黑字。答辩当天教学楼里的网络太差了,我陈述的时候卡了三次,在最后一个问题回答结束后直接卡出去了,万幸可能我的文章受到评委的青睐,评委才会将最高奖给我。不过这是错误的,答辩还是需要好好准备,只是那时候我在做毕业设计,实在忙不过来。
就这样,等我拿到杯之后再分享给大家。