第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较小时,当前模型更可能存在过拟合。
解决方案:
-
- 添加其它特征
- 添加多项式特征
- 减小正则化参数