最近手头有一份数据要分析,是关于心脏病的分析的。数据指标清理后有26个,其中因变量1个【0,1】,自变量25个,自变量中可以认为连续的变量有9个,非连续的变量有14个,都是【0,1】变量。因变量中0和1的比例是10比1。
我对其进行了如下处理:
第一步:对连续变量进行标准化,非连续变量保持不变,进行顺利。(没有标注化,进行了测试,F1非常低)
第二步:对数据进行拆分,分为训练集,验证集和测试集合
第三步:计划使用R中Unbalanced的ubRacing对traindata处理,希望能够找到比较好的一种方法平衡数据,但是处理中数据报错啦。在寻找最好的平衡方法的时候,我计划使用logistic,svm,netrual network,和ramdomforest进行测试。
ubConf <- list(type="ubUnder", percOver=200, percUnder=200, k=2, perc=50, method="percPos", w=NULL)
results <- ubRacing(strformula, traindata, "logreg", positive=1, ubConf=ubConf, ntree=5)
报错信息如下:
Error in predCandidate(Xtr, Ytr, Xts, Yts, algo, balanceTypes[j], positive, :
task 1 failed - "Assertion on 'x' failed: Must be of type 'atomic vector', not 'matrix'."
第四步:如果能够找到最好的平衡方法,就对其进行测试,然后使用验证机对参数进行优化,在验证数据集上,我不打算使用平衡方法,直接就是原来的数据(也就是第一步后处理的数据)
第五步:将各方法对test数据集进行测试,看哪个F1比较好。
我遇到的难题有几个:
- 第一步处理的是不是正确,在这里binary变量无需进行处理,直接使用就可以啦
- 第二步使用静态的划分就可以了,还是必须cross-validation
- 第一步标准化的方法,是否正确,或者应该与不同的方法相区别
- 第三步的问题该如何解决,问题出在哪里?
- 有没有必要将决策树算法列入其中,我个人觉得决策树算法和logistic可以并列,有了logistic算法就没必要再比较决策树算法啦
- 如果分类学习可以成功,目前我想到和异常检测算法做比较,如果有更好地算法,也欢迎提出来,我也想对其进行验证
大概就是这些问题,我搜索了下论坛,确认没有重复。