您的位置:首页 > 其它

机器学习工作流程从数据清洗到模型调优

2016-04-26 10:46 393 查看

第1章 概述

1.1 机器学习技术路线图

数据准备/特征分析

样本整定

机器学习

模型检验

结果反馈优化

重要特征评估

取平均值、中值、分位数、众数、随机值等,效果一般,相当于人为的添加了噪声。

使用其它变量预测模型计算出缺失值。

把变量映射到高维。

删除缺失值过多的属性或实例,慎重删除。

第2章 数据清洗

2.1 处理缺失值

工具h2o.ai可以显示数据每个属性的缺失值情况,如下图:

2.2 数据集的格式

工具Weka要求数据是arff的,但也支持csv文件,在weka中arff文件有优势,可以设置属性的类型,其中weka有四种基本类型(numeric数值型、 nominal分类型, string字符串型
和 date日期类型)。

2.3 规范化

有时属性的区间跨度太大会影响分类的性能,可能导致过重视跨度的属性。例如,属性a的区间是[1,10000],属性b的区间是[1,10],显然属性a的影响要大于属性b。可以采用规范化的方法解决问题,把每个属性值除以它的最大跨度,就按比例规划化到了[0,1]区间。

2.4 数据的规范化

有时数据中存在中文字符,算法无法进行,可以用python编写一个脚本,利用字典这种数据结构,key值存中文字符,value值存一个自增的index,注意每次加入新的键值对时,判断新key值
not in 已有的键表,已保证相同的中文字符对应唯一的index值。

2.5 重复命名的属性

对于属性名相同的属性,采用重命名即可。

第3章 属性工程

3.1 属性约简

计算每个属性对决策属性的依赖度,若属性集A的依赖度大于等于属性集B的依赖度,并且属性集B包含属性集A,则属性集合B - A 的属性为冗余属性,删除即可。计算属性依赖度有很多方法,有粗糙集,信息熵等方法。

金融数据真实样本有240列属性,使用工具weka的监督方法AttributeSelection属性选择功能,可以把属性集约简到42条,还可以继续进行属性约简,手动删除,直到结果最优

第4章 建模

4.1 经典模型选择

经典的机器学习模型有朴素贝叶斯、SVM支持向量机、决策树、LR线性回归、IBK等。

注意每种模型的应用要求,比如SVM不支持处理日期类型的属性,某些算法不可以处理数值型的决策类等等。

4.2 组合模型选择

有时模型组合的方法的效果会好得多,比如GBDT或者rf,都是将简单的模型组合起来,效果比单个更复杂的模型好。组合的方式很多,随机化(比如random forest),Boosting(比如GBDT)都是其中典型的方法。

模型的预测结果都差不多,通过十折交叉验证就可以得到这个机器学习模型的大致性能,需要进行下一步的模型的调优操作。

第5章 模型评估

5.1 AUC评价指标

为什么需要AUC指标?举个例子,若有100个样本,有90个正样本和10个负样本组成,若分类器简单粗暴的将所有的样本分为正类,准确率是90%,这显然不是我们需要的结果,所以准确率不能很全面的预测分类的性能。

定义:分析结果采用AUC来评判模型的效果。AUC即以False Positive Rate为横轴,True Positive Rate为纵轴的ROC
(Receiver Operating Characteristic)curve下方的面积的大小。

M 为正样本个数,N 为负样本个数,M * N 为正负样本对的个数。Si为第i个正负样本对的得分,定义如下:

5.2 Precision准确率

又名查准率,precision = TP / ( TP + FP ) 。

5.3 Recall召回率

又名查全率,recall = FP / ( TP + FN ) 。

第6章 循环调优

6.1 调参

迭代找到最优的参数。

6.2 鉴别过拟合

最简单的方法就是分别计算 crossvalidationerror(Jcv) 跟trainingerror(Jtrain):当Jcv跟Jtrain差不多且Jtrain较大时,当前模型更可能存在欠拟合;当Jcv远远大于 Jtrain且Jtrain较小时,当前模型更可能存在过拟合。

解决方案:

添加其它特征

添加多项式特征

减小正则化参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: