数据挖掘实战之天池精准医疗大赛(2)——算法思路
Part 1-2 算法思路:
下面我们根据前文对数据集的认识,分析问题和解题思路。
其实讲述算法思路是一件十分复杂和困难的事儿,按照自上向下的顺序结合一位大佬的文章,谈一谈:
一,说到思路,其实就是数据、特征、模型三个部分,数据预处理服务于特征工程,特征服务于模型,又决定了模型的上限。这三部分密不可分,而且在后续的流程中还会返回来完善、改进前面的工作;
二,开始我们仍未对特征作用于模型的效果有所尝试,故首先建立一般框架,尤其是对新手来说的一些流程和经验,但是某个问题、思路说起来很容易深入下去,钻牛角尖;
三,从问题入手,这是一个有监督回归问题,常用的回归方法有哪些呢?
刚学习了算法的小伙伴,可能对于回归的算法心中只有一种:最小二乘线性回归;其实,各种分类算法都有他的回归算法实现。
少略总结如下:
线性回归类(lasso回归、岭回归),决策树-集成树回归类(决策树回归,随机森林回归,GBDT回归,xgboost回归),
SVM回归,神经网络回归等。调用sklearn包均可实现。。
四,泛泛的画图说一下分类与回归,具体内容还有待完善,毕竟我也是新手:
本次血糖预测是一个回归问题,但是前面分析也看到了,血糖分布极不均衡,而评分标准又是MSE,MSE会放大误差。
(此处转载一位大佬的分析,十分透彻,并作了适当修改)
一般把大于6.1的认为是高血糖,大于11.1的认为是糖尿病。在训练集提供的5642个实例中,大于6.1的911个,大于11.1的97个。如果测试集的分布与训练集一致,大约有17个实例血糖在11.1以上。
链接:https://www.jianshu.com/p/3e4e456b397e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
五,要注意数据量少,避免过拟合的问题。此处考虑模型和特征问题,有人说加上id竟然有用,这种特征实不可取,一定不具有泛化能力,体检日期若范围较大可能会有效果(实际上也是和天气相关),该问题体检时间比较集中在10,11月份的某几天,故体检日期字段去掉比较好。在构造特征的过程中,也要控制过拟合的问题。另外在调参中也要注意防止过拟合,提高模型鲁棒性,这一问题我们在比赛过程中一直难以衡量,用sklearn中的验证曲线、学习曲线函数很有必要,今后还要多多尝试,否则线下表现好了仍然要担心线上表现,因为你并不知道是否发生了过拟合。
六,特征工程是这一类问题的核心,一般模型我们就选工业上速度快、性能好的几个,并没有太大选择空间,不会去考虑神经网络、SVM那些的回归方法~ 新手们到达模型这一阶段时,有必要学习一下之前学习不曾涉及的xgboost,lightbgm等等。故特征工程会占用很大的精力,特征工程是一项十分复杂的东西,而一些课程、书面上的介绍十分浅显,内容不足,缺乏实践,详细的特征工程后面会细心介绍、探索。
七,我们从算法思路,到模型、特征,最后才是底层的数据分析和预处理,特征决定模型的上限,而数据的处理则是特征的基础,无需赘言吧,缺失值必须要填充,而数据的异常点(噪声或者标注错误的),也要通过数据 分析的手段识别出来并处理,后文会对此介绍。
八,杂乱无章的罗列了这些算法思路,希望对初次实践的新手有所帮助,我再次转载了那位大佬的一段话,一些想法:
(1) 一般去医院看病有问题的居多,所以相对正常值有些偏差,医生也可能作出有倾向性的判断。
(2) 该题可以把已有的知识和算法融合,使用一些现成的数据,比如正常范围。
(3) 周末检查拿结果的可能是比较特殊的病人。
(4) 岁数分成几段,更具代表意义。
(5) 可将数据修改为正常值,偏高,偏低,几个层次,做分段特征。
(6) 考虑病情比较严重的情况,可能需要分开处理,作为噪点先拿出来。
(7) 预测只是想知道被测试人是否为糖尿病,而不关注是预测与实际值的微小差距,所以也可以将其处理为分类问题。
(8) 可能需要对误差函数和评价函数做微调。
作者:xieyan0811
链接:https://www.jianshu.com/p/3e4e456b397e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
总结:对于数据挖掘,没有固定的流程和思路,也没有绝对的正确与错误,不同的业务领域,不同的目标值的分布,对于数据处理、特征工程都会有不同的套路,随时出现的一些小想法都可能对算法的改进有所帮助。既要有一整套方法论,也要有各种创新的idea.
对于算法的思路就介绍到此,后面每一部分都会渗透着整体的算法思想,还要在实践的过程中不断加深对问题的理解。考虑到每一步流水线都充斥着sklearn包的使用,下面一节对此工具包进行简要介绍~熟悉的跳过~