数据分析之UCI数据集中的Statlog(澳大利亚信用审批)数据集预测准去率如何达到87%?



  • 可以在知乎上浏览,非常感谢。https://www.zhihu.com/question/51828030?from=profile_question_card

    最近在研究应用风险评定相关的模型,在UCI上找了两套数据,分别是Statlog (Australian Credit Approval) Data Set和Statlog (German Credit Data) Data Set,用了python编程。因为我也是python新手,所以也是在做实验的过程中慢慢学习。我的研究思路如下(以澳大利亚信用审批数据为例):
    1.先用各种算法(如贝叶斯、决策树、随机森林、逻辑回归、支持向量机跑),观察大致哪个算法比较好,结果是随机森林要好一点,大概是86.4%
    2.先将数据分成训练集和测试集(4:1),在训练集中用一种算法(比如PSO等)训练出SVM的C和gamma参数,然后用训练好的模型和参数去预测测试集中的数据,再与测试集中的label值做对比,得到预测准确率。但得到的结果不稳定,平均下来的结果也只有86%左右。
    3.Australian 的数据一共14维,去随机选择14维中的某些维(即随机去掉某些维)并结合SVM的C与gamma参数,就是在训练集中用PSO训练的时候每个个体开一个数组,用0,1表示选不选这个特征,这个数组就变成了16维(前面14维0或1的加上后面两维的C和gamma),SVM返回的预测值作为PSO的fitness,循环迭代,找到最好的个体,之后用这个个体代表的被选中的维数和C、gamma值去预测测试集中的数据,拿到最后的预测准确率。这个效果也不稳定,平均下来的结果就比第2步中的提高了一点点,而且每次选中被去除的特征不固定。如下图:
    我感觉这像是数据过拟合的问题。然后按照4的方法进行操作。
    4.在做训练之前先对数据集进行哑编码升维,从原来的14维升到38维。升维的特征分别为3, 4, 5, 11(按0维开始算,真实的第几维就是再加个1)维,然后用L1范式降维到18维,然后再做第3步的操作。结果也没提高多少,预测准确率87%的这个坎一直过不去。
    之后我还想了很多方法,比如去掉测试集中的奇异个体,用随机森林寻找出的每次试验检验时错误次数多的个体把它排除然后再进行第四步,但效果也不好,如下两图。图2为4次平均几百次随机森林预测错误的个体编号和错误次数;图3绿线为未删除测试集中的奇异个体测得的50次预测准确率、红线为删除测试集中的奇异个体测得的50次预测准确率,发现在测试集中删除奇异个体后预测的准确率居然还下降了一点。
    问题:想请知乎大神们给我提点意见,我该怎么样才能让平均的预测准确率达到87%以上?如果可以请讲一讲具体的步骤
    也可以在知乎上(有图)回复,非常感谢。https://www.zhihu.com/question/51828030?from=profile_question_card


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待