回归定义
寻找数值型变量之间的关系
方法
1. 将数值型变量当作离散型变量处理:回归树,概率模型,无参模型
2. 作为连续变量:基于平方误差的线性回归
线性回归
最简单的一维线性回归: y = wx
实际应用中,很难出现 真实的y恰好等于wx, 常见方法是最小化误差平方和来获得最好的模型。
对于误差平方和,计算公式是可导的,找最点小值的方法变成了求导后找f' = 0的
集成
集成是将一组分类器以某种方式结合在一起(如带权投票)。通常来说集成后的分类器要比单独一个分类器效果好,但是需要满足,各个分类器不一致,且单个分类器产生的错误率要比随机小。错误率在随机以下的分类器,它的误差在某种程度上至少是不相关的。
构造集成方法:
1. 操作训练集
(1) Bagging: 有放回抽取
(2) 交叉验证
(3) Boosting:训练集不变,样本的权值随上一轮结果发生改变
2. 选取特征子集
3. 操作输出结果
ECOC(Error Correcting Output Codes):将纠错输出码作为输出。首先将K个类别随机分到两个子集,得到一个分类器,重复L次,得到L个分类器。将测试数据放到L个分类器中,得到L个结果,组成一个编码,将其与每个类别各自的编码进行比较,距离最小的就是最终的结果。ECOC已经可以和adaboost结合使用了,也可以与特征选择结合使用。
4. 注入随机性
(1)人工神经网络中不同的初始权值
(2) 在构造决策树时,从最好的20个分裂规则里随机选一个
(3) 在人工神经网络,取样时给输入特征值加入高斯噪音
(4) MCMC方法:给一个和后验概率成正比例的投票
集成分类器的方法:
(1) 无权投票:bagging,ECOC,或者计算类的概率估计
(2) 带权投票:对于回归问题,权重应与方差成反比;对于分类问题,权重应与正确率成正比
(3) 通过学习得到好的权重
(4) 将L个分类的的预测结果作为一个新的训练集来得到一个新的学习器
集成的意义:
(1) 从数据方面来说,测试数据可能不够,如果只有一个模型,模型泛化性可能很低;或者有的时候我们可以在现有的数据上看到好几个表现一样好的模型,在他们之间做取舍是一个很难的决定,此时集成是一个好办法。
(2) 从计算方面来说,找到一个最好的模型,我们的搜索空间是十分大的, 问题很有可能是一个NP-hard问题,所以即使有一个更好的结果,但我们可能找不到他,所以找到一个第二好的近似模型也是可以的,集成可能把很多次优的模型结合在一起。
(3) 从代表性来说,带权的结合起来的模型可以表示出在假设空间之外的分类器
随机森林
每棵树的形成过程:
1. 在训练集中有放回的随机选取N个样本,这些样本将作为这棵树的训练集
2. 对于每个结点,在输入的M个变量中,随机选取m(远小于M)个变量,找到这m个变量中最好的一个分裂属性,如果下一次得到的分裂属性被父节点用过,则停止分裂。整个过程中未进行剪枝。
3. 重复以上过程可建立大量决策树,形成随机森林。
袋外误差
构建每棵树时采取有放回随机取样,因此是存在一些样本没有被抽取到的,这部分样本可以作为这棵树的oob样本,对每个样本来说,总有一些树没有用到它们去构建树,在这些树里,计算他们作为oob样本时的树对它的分类,以简单的投票分类作为该样本的分类结果,最后oob样本的误分总数的比例即为随机森林的oob error estimate, 并且该估计已经被证明是无偏估计。
随机森林的特征
1. 在现如今已有的算法里,随机森林的准确率是很优秀的
2. 在数据集很大时,它表现地很高效
3. 可以在不删除变量的情况下处理成千个变量
4. 给出了分类中哪些变量很重要的估计
5. 在随机森林地建造过程中,对于泛化误差地估计是无偏地
6. 它具有估计缺失数据的有效方法,并在大量数据缺失时保持准确性
其他集成方法
1. XGBoost 发展历史
(1) Adaboost:提高每一次分类错误样本地权值,降低被正确分类地样本权值,由于会更多的关注错误样本,因此对异常值会更敏感
(2) Gradient Boosting:通过在梯度下降地过程中最小化损失,相比较adaboost,对异常值鲁棒性更强
XGBoost在梯度下降的基础上做了优化,主要是目标函数的区别,比如加入了正则项防止过拟合
梯度下降的几个元素:
(1)损失函数,必须可导(求极值)
(2) 弱学习器,一般是决策树
(3)加起来的树
2. 随机梯度提升:创建每棵树之前使用子采样
3. Penalised Gradient Boosting: 使用(L1或L2)正则化贪婪森林学习非线性函数