高斯过程回归预测每一次都要带着训练小样本回归进行预测吗

Bias度量了学习算法的期望预测与真實结果的偏离程度即刻画了算法本身的拟合能力。

Variance度量了同样大小的训练集的变动所导致的学习性能变化即刻画了数据扰动所造成的影响。

16、对于支持向量机高斯核一般比线性核有更好的精度,但实际应用中为什么一般用线性核而不用高斯核

如果训练的小样本回归嘚量很大,训练得到的模型中支持向量的数量太多在每次做预测时,高斯核需要计算带预测小样本回归与每个支持向量的内积然后做核函数变换,这回非常耗时;而线性核只需要计算

17、高斯混合模型中为什么各个高斯分量的权重和要保证为1?

为了保证这个函数是一个概率密度函数即积分值为1。

18、为什么很多时候用正太分布来对随机变量建模

现实世界中很多变量都服从或近似服从正太分布。中心极限定理指出抽样得到的多个独立同分布的随机变量小样本回归,当小样本回归数趋向于正无穷时它们的和服从正太分布。

19、协同过滤算法如何实现用户特征向量用哪些用户属性表示,如何挖掘更多的用户信息

20、说出计算用户之间相似度的三种方式?

杰卡德相似度(Jaccard similarity coefficient)也称为杰卡德指数(Jaccard similarity),是用来衡量两个集合相似度的一种指标Jaccard相似指数被定义为两个集合交集的元素个数除以并集的元素个数。

将向量根据坐标值绘制到向量空间中,求得它们的夹角并求得夹角之间的余弦值,此余弦值就可以用来表征这两个向量之间的相似性。夾角越小余弦值越接近于1,则越相似

Pearson系数(皮尔森系数)

皮尔逊系数也称为积差相关(或积矩相关),是英国统计学家皮尔逊提出的┅种计算直线相关的方法取值范围[-1.1]。

21、说出你的推荐算法的效果如何提升推荐准确率,如何知道推荐结果是否正确

22、数据预处理中,预处理哪些数据如何预处理?

协同过滤的数据源主要是收集用户数据如用户的行为,而预处理的工作是数据归一化、降维和去噪等

在使用用户行为时,针对不同的操作可能需要加权。有些特征量级可能非常大需要对数据做归一化,将其限制在一个相同的取值范圍内

观察哪些特征之间相关性比较高,后期可以考虑做特征组合

采用下采样,减少负小样本回归数目

采用去噪,减少异常操作(误操作/离群点)对推荐系统结果的影响

23、训练决策树时的参数是什么?

  • max_depth:树的最大深度如果为None,则深度不限直到所有的叶子节点都是純净的,即叶子节点中所有的小样本回归点都属于一个类别或者每个叶子节点小样本回归数目小于min_sample_split
  • min_sample_split:分裂一个叶子节点所需要的最小小樣本回归数
  • max_feature:分类时考虑的最多特征数
  • presort:是否需要提前排序数据

24、在决策树的节点处分割的标准是什么?

25、随机森林的优点

随机生成的具有多棵决策树的分类器。输出结果由多棵树的输出结果加权或者取平均而成

2.随机性体现在两个方面

  1. 训练数据采用bootstrap方式,从数据集中取絀一个小样本回归数为N的训练集
  2. 在每个节点上随机选择所有特征的一个子集
  1. 在很多数据集上表现良好
  2. 能够处理高纬度的数据,且不用做特征选择(特征子集是随机选择的)
  3. 训练速度快容易做成并行化方法(训练时,树与树之间相互独立)
  4. 训练过程中能检测到特征间的楿互影响

boosting思路:通过训练多个若学习器,最后整合为一个强学习器的过程

  1. 增大训练集中分错小样本回归的权重,减小分对小样本回归的權重
  2. 增大分错率低的学习器的权重减小分错率高的学习器的权重。

27、SVM中用到了哪些核SVM中的优化技术有哪些?

28、GBM和随机森林都是基于树嘚算法它们有什么区别?

  1. bagging技术数据集采用bootstrap随机采样的方法被划分为n个小样本回归,对多棵树的结果进行加权或者取平均;boosting在第一轮预測之后增加分类出错的小样本回归权重,减小错误率高的基学习器(树)的权重持续进行,一直到达停止标准
  2. RF采用减小方差提高模型精度,生成树之间没有相关性;GBM在提高精度的同时降低了偏差和方差某一个基学习器是以上一个基学习器的结果为基础,基学习器之間具有相关性

网上讲高斯过程回归的文章很少且往往从高斯过程讲起,我比较不以为然:高斯过程回归(GPR) 终究是个离散的事情,用连续的高斯过程( GP) 来阐述简直是杀鸡用牛刀。所以我们这次直接从离散的问题搞起然后把高斯过程逆推出来。
  这篇博客有两个彩蛋一个是揭示了高斯过程回归和Ridge回归的联系,叧一个是介绍了贝叶斯优化具体是怎么搞的后者其实值得单独写一篇博客,我在这里就是做一个简单介绍好了但没准就不写了,想想僦累

Disaster比赛选择了泰坦尼克号海难作為背景,并提供了小样本回归数据及测试数据要求我们根据小样本回归数据内容建立一个预测模型,对于测试数据中每个人是否获救做個预测小样本回归数据包括891条乘客信息及获救情况,测试数据有418条乘客信息小样本回归数据的样例如下:

  • SibSp:和该乘客一起旅行的兄弟姐妹和配偶的数量
  • Parch:和该乘客一起旅行的父母和孩子的数量

我们的目标就是根据上述字段信息以及乘客的获救情况,实现一个预测乘客是否存活的模型下面我们来看一下用到的模型。

通过分析案例我们可以看出这是一个很明显的二分类问题,即判断乘客是否遇难关于②分类的模型很多,这里用到了三种模型:线性回归模型、逻辑回归模型跟随机森林模型本次实验也参考了 以及。下面就对这三个模型进荇介绍

线性回归模型很简单,可以看成多项式方程的拟合问题只有一个自变量,称为一元线性回归;有多于一个的变量称为多元线性回归。对于一元线性回归经常采用最小二乘的方法拟合出一条最逼近各点的曲线,如下图所示:

多元线性回归自变量不止一个形式洳式子:Y = a1X1+a2X2+a3X3+a4X4+a5X5+.....+anXn。一元线性回归是找一条拟合直线而对于多元线性回归则是找到一个超平面,使这个超平面距离各点的距离最小

其实无论是┅元线性回归还是多元线性回归,它们的通式是Y = ω‘X+b通过训练数据,找到最合适的w‘和b也就实现了模型的求解。

这样我们输入不同嘚自变量,就可以找到对应的因变量达到预测的目的。

线性回归存在一个最大的问题就是它的自变量是连续变化的,是区间变量而現实生活中很多变量不是连续的,例如属性变量或者序列变量在这里,像我们小样本回归数据中的年龄属性就是序列变量因为年龄正瑺情况下不存在小数,不可能我们说一个人12.25岁;数据中的船舱等级、性别、登船港口等都是属性变量这些变量的取值都是固定的。

所以对於现实生活中很多实例线性回归模型不再很适用,这时候就要考虑逻辑回归模型

其实逻辑回归可以看做广义的线性回归,只不过它通過函数L把 w‘X+b对应一个隐状态pp = L(ω‘X+b),相当于对于结果Y又用一个函数L进行修饰得到L(Y)如果没有函数L则是线性回归,如果函数L是多项式函数僦是多项式回归,而如果L是logistic函数就是logistic回归。

logistic回归的因变量可以是二分类的也可以是多分类的,但是二分类的更为常用也更加容易解釋,多类可以使用softmax方法进行处理实际中最为常用的就是二分类的logistic回归。

我们通常用0和1来表示二分类的结果而ω‘X+b得到的值可能不是0-1范圍内,我们需要找到一个函数对于ω‘X+b结果进行处理使其值在[0,1]里面。于是便找到Sigmoid Function作为我们的L函数它的函数式如下:

11 #坐标轴上加一条竖矗的线(0位置)

我们又把L函数叫做激活函数,激活函数不只Sigmoid Function一种还有tanh函数、ReLU函数等等,函数的选择要根据适用场景来定

我们通过Sigmoid Function把结果值变为[0,1]之间的数值,那么怎么才能求出最合适的ω'跟b呢

对于单个小样本回归,这里就是每一个乘员数据我们定义了损失函数(Loss Functon)来評价预测的结果。它的形式是这样的:?(a,y)这里的a就是L(ω‘X+b),y则是预测的真值。?是一个衡量预测值与真值大小的函数,最常用的就是对数形式的函数为:?(a,y) = -[yloga +(1-y)log(l-y)]。

而成本函数(Cost Function)则是所有小样本回归函数的加权求平均我们要想求出最合适的ω'跟b,就要是成本函数的值最小首先对ω'跟b赋予初值,这时候我们对成本函数求导利用反向传播,可以得到一次dω'跟db

通过梯度下降法ω' = ω'+dω',b = b+db就得到更新后的ω'跟b最後通过一步步的梯度下降,使得成本函数C的值最小这时候我们就找到了最优的ω'跟b。如下图所示通过不断调整ω'跟b,使得损失函数C到達最低点

当然,我们的实现过程很简单只需要几行代码就可以搞定。

在谈随机森林模型前需要理解决策树模型。最简单的一个决策樹只有一个分支例如考到60分以上是及格,60分以下是不及格当影像因素很多事,会根据这些因素建立很多决策层最终得到结果。如下圖所示就是一个决策树:

决策树模型很容易产生过拟合现象,模型泛化能力很弱基于决策树模型,又出现了随机森林模型通过选择選择任意数量的决策树,通过从小样本回归数据数据中有放回的随机抽取一些小样本回归去训练这些决策树最终的结果是综合所有决策樹的判断给出最合理的决策。

说了这么多模型其实模型的实现过程很简单,因为python的sklearn库已经把上面这些函数通通封装好了只需要调用即鈳。

在进行实验之前这里先说明一下用到的库函数。pandas、sklearn、numpy以及绘图库函数matplotlib

机器学习的绝大多数运算是矩阵运算,需要输入的数据是数徝型而我们这里很多数据是字符型,我们首先需要对于数据进行预处理

 1 # 正则表达式模块
 4 # 由于年龄中有空值,需要先用平均值对年龄的缺失值进行填充因为矩阵运算只能是数值型,不能是字符串
 6 # 同理由于Embarked(登船地点)里面也有空值,所以也需要用出现最多的类型对它進行一个填充
 9 # 对于性别中的male与female用0和1来表示。首先看性别是否只有两个值
10 # 对于登船地点的三个值S C Q也用0 1 2分别表示
20 # 加上其余的属性特性
27 # 定义提取姓名中Mr以及Mrs等属性
36 # 对于姓名中的一些称呼赋予不同的数值
 

这时候,我们需要画图看一下这些数据对于最后获救的结果影响到底有多大

首先是乘客船舱等级获救情况统计:

4 # 图表汉字正常显示 6 # 图表负值正常显示 9 # 查看各等级乘客等级的获救情况

再看一下不同性别的获救情况:

还有不同年龄的获救情况统计:

1 # 不同年龄获救情况
 

不同港口登录乘客的获救情况:

 1 # 不同港口登录乘客获救情况
 

那么我们有必要对这10个字段分别计算一下重要度,也就是对于结果的影像我们通过对于每个字段,随机添加一些噪音值通过对于结果值的影像来判断相应的重偠程度。例如一个属性添加了很多噪音值但是对于结果预测的准确率没有太大影响,我们就认为这个属性重要程度相对较低反之亦然,统计代码及结果如下图所示:

 1 # 各特征属性的重要程度
 7 # 获取每个数据的重要值
10 # 画图表示看看哪一些属性对结果影响较大,即重要值高
 

我們发现船舱等级(Pclass)、性别(Sex)、船票价格(Fare)、名字称谓(Title)以及名字长短(NameLength)的重要性很大,其它的重要性则不是很高(数值越大偅要性越大)头等舱的确实有一定的优势,女性比男性更有优势(女人跟小孩优先)以及姓名长度跟称谓也有影响(姓名长度影响座位汾配),船票价格跟船舱等级是正相关所以也很重要。

好了模型我们也已经初步了解,数据也已经经过预处理那么我们就开始训練模型吧。

在此之前先讨论一下交叉验证。由于我们的测试数据是没有存活数据的也就是我们需要根据小样本回归数据训练出来的模型给出测试数据对应的存活结果,再在Kaggle平台上提交结果但是,我们又怎么知道我们训练模型的效果呢有种方法叫做交叉验证,它的思想就是对于训练小样本回归分成几份例如三份,然后分别取出不同的两份作为训练小样本回归另一份作为测试小样本回归,共取3次朂后取平均就得到了最终的最终的精度。最终的结果值就是预测出正确值数量/测试小样本回归的数量sklearn里面也提供了交叉验证的模型,所鉯很方便就可以测试我们的模型是否准确啦

首先我们看一下线性回归模型的训练及测试结果:

 1 # 导入线性回归模型跟逻辑回归模型
 6 # 在训练集上进行三次交叉验证
11 # 从train中取出分割后的训练数据
13 # 取出存活数量作为训练目标
15 # 使用训练小样本回归跟训练目标训练回归函数
17 # 我们现在可以茬测试集上做预测
21 # 检查回归的效果
 

好啦,然后我们可以看我们模型的预测准确率是0.459毕竟这是用线性回归做的,我们可以再试一下逻辑回歸看一下效果是否会更好。

结果出来了模型的预测准确度是0.1437,确实比线性回归的效果要好那么我们再试一下随机森林的结果。

1 # 导入隨机森林模型
 

模型的预测准确度是0.4961精度再一次提高。

到目前为止我们已经尝试了线性回归、逻辑回归以及随机森林实现了泰坦尼克号苼存预测。这时候我们在会考虑,模型精度能不能进一步提高呢模型融合可以是机器学习中提高精度的一大杀器。我们试着把逻辑回歸跟随机森林这两种模型结合到一起综合两种模型的预测得出更合理的结果,同时因为随机森林的精度更高,所以我们对于随机森林賦予权重为3逻辑回归模型的权重赋予1,下面我们看一下实现过程:

13 # 对于每一个测试集都做出预测 23 # 把所有的预测结果放到集合当中 26 # 计算与訓练数据真值比较的精度

这时候我们得到最终的精度为0.8249好吧对比单纯的随机森林精度并没有提高。

同时我们还可以对模型进行进一步的優化例如上面有一些字段属性的重要程度很低,那么我们就可以综合取舍这样不仅可以提高我们模型的精度,还可以提高我们模型的泛化能力同时,我们还可以尝试其它的模型以及多种模型的组合,以此来提高我们预测的精度

当然,这次模型训练的数据非常少洇为泰塔尼克号全部的乘客约2200人,模型的训练可能需要更多数据的训练在模型精度和泛化能力之间寻找一个合理平衡,也就是防止过拟匼跟欠拟合的问题

本次实验采用的python版本是3.6.0,实验用到的数据以及源代码在中(首页左上角点击即可进入)大家可以下载实验。

这次实驗就讲到这里啦欢迎大家提出宝贵的意见!

1.2 可视化部分数据集
1.4 定义梯度下降函数
1.5 预测函数进行预测


作业文件打包如下: 链接: 提取码:h20r

习题中给出的ex3data1.mat文件包含了 5000 个书写数字的训练小样本回归每个小样本回归的输叺是一张20*20的灰度图,特征是400维输出是一个标量,取值1-10,1-9分别表示数字1-9,10代表数字0首先:

2. 可视化 这里随机选取100个小样本回归进行可视化

# 设置顯示格式 100个小样本回归 分10行 10列显示 # 待显示的每张图片之间的间隔 # 显示的布局矩阵10行10列 初始化值为-1 # 随机抽取100个训练小样本回归 进行可视化

随機选取的100个小样本回归的可视化结果如下:

3. 定义代价函数 带正则化项的代价函数定义如下:

4. 定义梯度下降函数

# 方法一,原始方法定义梯度丅降算法
#方法二 向量化实现梯度下降法
 # 截距项不用进行正则化
 # 因为逻辑回归每次只能进行二分类,所以先将小样本回归分为正类和负类
 # 使用高级优化函数优化目标函数

5. 预测函数进行预测

# 找出每一行最大概率值所对应的索引值属于哪一类的概率最大,就判定为哪一类

这次玳码和之前并无多大差别 而且参数是数据中直接给出的,并不是自己大网络训练得出的所以这里直接给出结果:

# 设置显示格式 100个小样夲回归 分10行 10列显示 # 随机抽取100个训练小样本回归 进行可视化 p+=1 #最大位置+1 即为预测的标签

我们以一个简单的回归问题开始说明许多关键的概念。 假设我们观察到一个实值输入变量x我们想使用这个观察来预测实值目标变量t的值。

对于这个目的一个很好的方法是考虑一个使用已知的产生方式人工制造出的例子,因为这样我们就知道生成数据的精确过程(动力学过程)从而能够和我们学习箌得模型进行比较。这个例子的数据由函数sin(2πx)产生目标变量带有随机的噪声。

现在假设给定一个训练集这个训练集由x的N次观测组成,寫作:

伴随着对应的t的观测值记作:

下图展示了由N = 10个数据点组成的图像:

目标数据集t的获得方式是:

  • 首先计算函数sin(2πx)的对应的值。
  • 然后給每个点增加一个小的符合高斯分布的随机噪声从而得到对应的tn的值。

通过使用这种方式产生数据我们利用了许多真实数据集合的一個性质,即它们拥有一个内在的规律这个规律是我们想要学习的,但是独自的观察被随机噪声干扰

这种噪声可能由一个本质上随机的過程产生,例如放射性衰变但是更典型的情况是由于存在没有被观察到的具有变化性的噪声源。

我们的目标是利用这个训练集预测对于輸入变量的新值 x 的目标变量的值 t

这涉及到隐式地发现内在的函数sin(2πx)。这本质上是一个困难的问题因为我们不得不从有限的数据中生成模型

因为观察到的数据被噪声干扰因此对于一个给定的 x,合适的 t 值具有不确定性

现在,我们用一种相当非正式的、相当简单的方式來进行曲线拟合:

注意虽然多项式函数 y(x, w)是 x 的一个非线性函数,它是系数w的一个线性函数这一点对后面我们理解因为训练集不充分导致朂优解不唯一问题有帮助。

系数的值可以通过调整多项式函数拟合训练数据的方式确定这可以通过最小化误差函数 (error function)的方法实现。 

我们可鉯通过选择使得 E(w) 尽量小的 w 来解决曲线拟合问题由于误差函数是系数 w 的二次函数,因此它关于系数的导数是 w 的线性函数所以误差函数的朂小值有一个唯一解,记作w?可以用解析的方式求出。

最终的多项式函数由函数y(x, w?)给出这是一个纯数学问题,没有什么好特别讨论的我们本文的重点是讨论过拟合问题,过拟合问题和阶数 M 紧密相关

在下图中,我 们给出了4个拟合多项式的结果多项式的阶数分别为M = 0, 1, 3, 9:

鈈同阶数的多项式曲线,用红色曲线表示绿色表示原始目标函数曲线

  • 常数(M = 0),和一阶(M = 1)多项式对于数据的拟合效果相当差很难代表函数sin(2πx)。
  • 三阶(M = 3)多项式似乎给出了对函数sin(2πx)的最好的拟合
  • 当我们达到更高阶的多项式(M = 9),我们似乎得到了对于训练数据的一个完美的拟合事实上,多项式函数精确地通过了每一个数据点E(w?) = 0。然而拟合的曲线剧烈震荡,就表达函数sin(2πx)而言表现很差这种行为叫做过拟合(over-fitting)。 

正如我們之前提到的机器学习的目标是通过对新数据的预测实现良好的泛化性

我们可以定量考察模型的泛化性与 M 的关系考察的方式为:考慮一个额外的测试集,这个测试集由100个数据点组成这100个数据点的生成方式与训练集的生成方式完全相同,但是在目标值中包含的随机噪聲的值不同对于每个M的选择,我们计算训练集和测试集的误差:

  • 小的 M 值会造成较大的测试集误差这可以归因于对应的多项式函数相当鈈灵活,不能够反映出sin(2πx)的震荡
  • 当 M 的取值为3 ≤ M ≤ 8时,测试误差较小对于生成函数sin(2πx)也能给出合理的模拟。 
  • 对于 M = 9的情形训练集的误差為0,这符合我们的预期因为此时的多项式函数有10个自由度,对应于10个系数w0, . . . , w9所以可以调节模型的参数,使得模型与训练集中的10个数据点精确匹配然而,正如我们在上图中看到的那样测试集误差变得非常大,对应的函数y(x, w?)表现出剧烈的震荡 

这可能看起来很矛盾!为什麼会发生这样的事情呢?

从数学上的直觉理解来说给定阶数的多项式包含了所有低阶的多项式函数作为特殊情况。M = 9的多项式因此能够产苼至少与M = 3至少一样好的结果。

并且于新数据最好的预测是sin(2πx),这是生成数据所使用的函数而同时根据泰勒公式,我们也知道函数sin(2πx)嘚幂级数展开包含所有阶数的项所以我们可能会以为结果会随着 M 的增大而单调地变好。但事实却不是我们直觉理解的这样!原因是什么呢 

我们可以更深刻地思考这个问题,通过考察不同阶数多项式的系数w?的值如下表所示。

我们看到随着M的增大系数的大小通常会变夶。

对于M = 9的多项式通过调节系数,让系数取相当大的正数或者负数多项式函数可以精确地与数据匹配,但是对于数据之间的点(尤其是臨近区间端点处的点)函数表现出剧烈的震荡。

问题的原因可以被归纳为两句话:

  • 训练集的不充分导致了目标函数非唯一解的问题。这方面的讨论可以参阅另一个
  • 而随机噪声的存在,以及过度复杂的模型导致了过拟合问题的发生,即模型过度地进行了调参同时,训練集不充分问题又加剧了过拟合。

由此我们可以得出第一个直觉判断:

有效控制模型复杂度,可以有效缓解过拟合问题 

考察给定模型嘚行为随着数据集规模的变化情况也很有趣如下图所示。我们可以看到

对已一个给定的模型复杂度,当数据集的规模增加时过拟合問题变得不那么严重

数据集规模越大,目标函数的最优解搜索空间就越被约束在一个相对有限的空间内数据点的数量不应该小于模型的鈳调节参数的数量的若干倍(比如5或10)。

以上的讨论主要是一些直觉上的讨论我们接下来深入这个问题的本质,来讨论一下过拟合问题的数學原理以及相应的规避手段。

在一个项目中我们通过设计和训练得到了一个model,该model的泛化可能很好也可能不尽如人意,其背后的决定洇素是什么呢或者说我们可以从哪些方面去改进从而使下次得到的model更加令人满意呢?

”偏差-方差分解(bias-variance decomposition)“是解释学习算法泛化能力性能的一种重要工具偏差-方差分解试图对学习算法的期望泛化错误率进行拆解。

假设测试小样本回归为xyd 为 x 在数据集中的标记(注意,有鈳能出现噪声使得 yd != y即所谓的打标小样本回归不纯),y 为 x 的真实标记f(x;D)为在训练集 D 上训练得到的模型 f 在 x 上的预测输出。

以回归任务為例学习算法的期望预测为:

即,泛化误差可分解为:偏差、方差、噪声之和

0x1:方差:模型的预测稳定性 - 数据扰动对模型的影响

使用尛样本回归数相同,但是不同批次的训练集产生的预测方差为:

预测方差度量了同样大小的训练集的变动所导致的学习性能的变化即刻畫了数据扰动所造成的影响。

笔者插入:上式中其实也蕴含了结构风险公式的内涵即结构风险越小,模型抗扰动的能力就越强

一个具備良好泛化能力的模型应该有较小的扰动方差。这和算法模型采取的”归纳偏好策略“有关一个典型的例子就是SVM的支持向量最大距离策畧,这种策略保证了在相同的支持向量候选集(即候选假设空间)中选择距离支持向量相对距离最远的那个超分界面。同时这也符合”奧卡姆剃刀原则“若有多个假设与观察一致,则选最简单的那个

那么在实际操作中,有几种策略和方法可以降低模型的方差:

1. 控制训練轮数、提前停止训练、学习率逐渐减小渐进逼近等策略;
2. 使用例如决策树里的剪枝策略控制模型复杂度;
3. 使用正则化等手段,控制模型复杂度;
4. 使用Dropout手段控制模型复杂度;

0x2:噪声:模型在当前任务能达到的期望泛化误差的下届 - 数据决定算法的上界,算法只是在逼近这個上界

如果我们的打标小样本回归中存在噪声即错误标记,则噪声公式为:

很显然如果一个训练集中全部都是噪声(即所有小样本回歸都标记错误了),则模型的预测期望为0噪声表达了在当前任务上”任何“学习算法(和具体算法无关)所能得到的期望泛化误差的下堺,即刻画了学习问题本身的难度

毫无疑问,在开始机器学习的模型开发之前一件非常重要的事情就是”小样本回归打标提纯“,这件事非常重要甚至某种程度上来说比特征工程、模型选择、模型调参等环节都重要。但有时候会遭到开发者的忽略拿到小样本回归后僦急匆匆开始项目,笔者自己在项目中也吃过类似的亏需要牢记一句话:数据决定算法的上界,算法只是在逼近这个上界

0x3:偏差:考察模型本身拟合能力

期望输出与真实标记的差别称为偏差(bias),即:

它体现了模型的拟合能力这其实也就是经验风险的计算公式。

偏差-方差分解说明泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度共同决定的。给定一个学习任务为了取得好的泛囮性能,则需使偏差较小即能够充分拟合数据,并且使方差较小即使得数据扰动产生的影响小。

一般来说偏差与方差是有冲突的,這称为”偏差-方差窘境“下图中,给定学习任务假定我们能控制学习算法的训练程度,则在不同训练程度下偏差-方差的取值曲线如丅:

在训练不足时,学习器的拟合能力不够强训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;

随着训练程喥的加深学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到方差逐渐主导了泛化错误率;

在训练程度充足后,学習器的拟合能力已非常强训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的普遍特性被学习器学到叻则将发生过拟合。

0x5:经验误差与泛化能力之间的矛盾

在整个偏差-方差公式中提高训练小样本回归的数量N是我们无法控制的,在实际項目中高质量的打标小样本回归是比较困难获取的,即使可以获取也要付出比较高的成本我们能做的就是在现有的小样本回归集上,嘚到一个相对最好的模型 另一方面,打标小样本回归的提纯是我们可以做的但是人工的成本往往巨大,能否做到100%的提纯也是一个挑战

抛开这两个因素不谈,我们本文重点讨论一下模型预测方差和模型拟合偏差的问题也就是经验误差和泛化能力之间的平衡,即兼顾overfitting和underfitting嘚方法如何让我们的模型尽可能靠近上图中那个”交汇点“。

这里多谈一点可能有读者会有疑问,上图中的交汇点为什么不在横轴上呢即为什么取值不能为零?即找到一个完美的解决方案即没有方差也没有偏差。

关于这一点可以这样理解:机器学习面临的问题通瑺是 NP 难甚至更难,而有效的学习算法必然是在多项式时间内运行完成(假设搜索空间过于庞大)若可彻底避免过拟合,则通过经验误差朂小化就能获得最优解这就意味着我们构造性地证明了”P=NP“,因此主要相信”P != NP“,过拟合和欠拟合就不可完全调和

综上所述,在一個项目中针对算法部分我们需要做的最重要的工作就是防住过拟合,同时让模型尽量去拟合训练小样本回归我们接下来的内容会围绕過拟合这个话题以及如何避免过拟合展开讨论。

一般地我们把学习器的实际预测输出与小样本回归的真实输出之间的差异称为“误差(error)”,学习器在训练集上的误差称为“训练误差”或“经验误差”在未来的新小样本回归上的误差称为“泛化误差”。显然我们希望嘚到泛化误差小的学习器。

然而我们事先不可能知道新小样本回归是什么样的(即我们不可能知道事物的完整全貌),我们实际能做的昰努力使经验误差最小化但遗憾的是,经验最小化的学习器未必就是泛化误差小的学习器。

我们实际希望的是在新小样本回归上能表現得很好的学习器为了达到这个目的,应该从训练小样本回归中尽可能学出适用于所有潜在小样本回归的“普遍规律”这样才能在遇箌新小样本回归时做出正确的判别。 

然后当学习器把训练小样本回归学得“太好”了的时候,很可能已经把训练小样本回归自身的一些特点(甚至可能是噪音)当做了所有小样本回归都会具有的一般性质这样就会导致泛化性能下降。这种现象在机器学习中称为“过拟合(overfitting)”与过拟合相对的是”欠拟合(underfitting)“,这是指对训练小样本回归的一般性质尚未学号

给定学习算法 A,它所考虑的所有可能概念的集合称为假设空间用符号 H 表示。对于假设空间中的任一概念我们用符号 h 表示,由于并不能确定它是否真是目标概念因此称为“假设”(hypothesis)

在机器学习中,不管是常规的线性模式还是像深度学习这样的复合线性模型,几乎都可以看到损失函数后面会添加一个额外项

瑺用的额外项一般有两种,一般英文称作?1-norm?2-norm中文称作L1正则化L2正则化,或者L1范数L2范数

L1正则化和L2正则化可以看做是损失函数的惩罰项

所谓『惩罚』是指对损失函数中的某些参数做一些限制具体是什么限制,我们接下来会详细讨论

对于线性回归模型,使用L1正则囮的模型叫做Lasso回归使用L2正则化的模型叫做Ridge回归(岭回归)

线性回归模型中,Lasso回归的损失函数如下:

首先先抛出笔者的一个观点:从貝叶斯的角度来看,正则化等价于对模型参数引入先验分布

正则化参数等价于对参数引入 先验分布,使得 模型复杂度 变小(缩小解空间)对于噪声以及 outliers 的鲁棒性增强(泛化能力)。

整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计(MAP)

其中正则化项对应后验估计中的先验信息损失函数对应后验估计中的似然函数

两者的乘积即对应贝叶斯最大后验估计的形式

0x1:不包含正则化的原始线性回歸

从概率分布的角度来看,线性回归对应的概率分布为:

笔者认为经验风险/结构化风险更多地是一种指导理论,在实际的算法中更多嘚是以L1/L2惩罚、引入先验分布、结构dropout、提前剪枝等操作来实现该目的。

0x1:决策树中的正则化

关于决策树的剪枝相关的讨论读者可以参阅relevant link中嘚文章,这里就不赘述了

0x1:什么是概念描述空间

概念描述空间(concept description splace)是机器学习模型学习的结果,由一组规则表示例如下列一组有关天氣问题的规则:

带有数值属性的天气数据

假设机器学习数据中提取出的规则如下:

注意,对于一组数据集来说其中包含的规则集往往不呮一个,所有的规则集共同组成了代表特定问题域的概念描述空间

  • 记忆性规则集:最极端的情况下,对每个小样本回归生成一个对应的規则这样模型仅仅只是存储和记忆了原始数据集。
  • 概括泛化型规则集:最完美的情况下从所有小样本回归中提取出一个唯一的规则集。这个规则集可以完美概括训练数据集同时在测试集和未来的未知数据上也能有很好的表现。

0x2:训练学习的本质 - 枚举概念空间

机器学习模型训练的最核心目标就是得到一个泛化性能优良的模型而泛化的过程可以认为是在一个庞大的,但有限的搜索空间中进行搜索

1. 理想凊况下的泛化训练过程

原则上,可以枚举所有的描述从中删除一些不符合小样本回归的描述来解决问题:

  • 一个肯定的小样本回归会去除所有不匹配的描述;
  • 而一个否定的小样本回归则会去除所有匹配的描述;

每个小样本回归都会导致剩余的描述集缩小(或保持不变),如果训练到最后只剩下一个描述那么它就是目标描述(目标概念)。

2. 真实情况下的训练过程

在实际情况中整个处理过程只涵盖唯一一个鈳接受的描述是很少见的,所以会产生两种情况:

  • 小样本回归在处理后仍然存在大量的描述,模型不确定熵依然很高
  • 或者所有的描述都被去除

出现第一种情况的原因是没有充分理解小样本回归所以除”正确的描述“之外,其余的描述没有被去除

出现第二种情况的原因昰因为描述语言表达不充分,不能把握住真正的概念也即是模型逼近误差(欠拟合)。或者是因为小样本回归中有噪声

但是需要注意嘚是,如果剩下多个描述仍然可以用来对未知的事物进行分类:

  • 如果未知的事物与所有剩余的描述集相匹配,就应该将其分到所匹配的目标
  • 如果未知的事物不能和其中任何一个相匹配就把它分到目标概念以外
  • 如果未知的事物仅和其中一部分相匹配,就会出现模糊也就昰我们常说的误报和漏报的零和博弈。

0x3:从搜索角度看偏差

把泛化看成是一个在所有可能的概念空间的搜索就可以清楚地指出在机器学習系统里最重要的3大决策因素:

  • 概念描述语言:例如CART4结构或线性回归方程结构
  • 在空间中搜索的次序:启发式还是梯度导向式
  • 对于特定训练數据避免过度拟合的方法

当讨论搜索的偏差时,通常提到3个属性:

在选择一种表达概念的语言时、在为一个可以接受的描述搜索一个特殊途径时、在需要对一个复杂的概念进行简化时都会使学习方案产生偏差。

对于语言偏差来说最重要的问题是概念描述语言是否具有普遍性,或者它是否在能够被学到的概念上加约束条件

如果考虑一个包含所有可能性的小样本回归集,那么概念就是将这个集合划分为多個子集的分界线

如果概念描述语言允许包括逻辑或(析取),那么任何一个子集都能表示如果描述语言是基于规则的,那使用分开的規则就能够达到分离的目的

在实际的数据挖掘问题中,存在一些可选的概念描述它们都与数据相匹配,我们往往需要根据某些标准(通常是最简单的标准)找出”最好的“一个概念描述

我们使用统计学的术语拟合(fit),意味着寻找一个与数据合理拟合的最好的描述泹是,在整个空间进行搜索通常是计算不可行的所以搜索过程是启发式的,并且不能100%保证最终结构是最优的

这为产生偏差创造了空间,不同的搜索启发方式以不同的方式在搜索过程中产生偏差例如:

  • 采用”贪心(greedy)“搜索策略的搜索:在每一阶段找出最好的规则,然後将其加入规则集但是问题是,1+1不一定>=2最好的一对规则并不是单独两个最好规则的简单叠加。
  • 构造决策树:最先作出的基于一个特定屬性的分割但是问题是,在后续节点构建时会发现父节点的选择并不是一个好的决定

3. 避免过度拟合偏差

过度拟合是一种常见的学习现潒,通常解决这个问题的办法是从一个最简单的概念描述出发逐渐将它复杂化。这是一种避免过度拟合的好方法有时候称之为正向剪枝(forward pruning)或先剪枝(prepruning)。

直观上看”偏差“是一个贬义词,”避免过度拟合偏差“表面上看给模型带来了不安定的偏差因素但反过来,吔正是因为这种偏差给模型带来了更好的泛化能力。我们需要对立客观地看待这两个概念

我们已经讨论了很多关于正则化技术的原理忣应用方面的技术,现在我们将目光转向另一种非常有用的技术集成学习

集成学习通过将训练数据分成多个不同的训练集,在每一個训练数据集上学习一种模型然后将各个模型组合产生一个学习模型集群,这样的方法通常会获得更好的性能

按照哲学家伊壁鸠鲁(Epicurus)的观点,明智的人在作出某个关键决策时通常要考虑多个专家的意见而不是只依赖于自己的判断或依赖于某个唯一被信任的顾问。在囻主的条件下对不同的观点进行讨论也许可以达成一致意见,如果不能还可以进行投票不管采用哪种方法,不同专家的意见被组合在┅起

在机器学习中,是通过一种称为集成学习的方法来实现该目的的其中主要的方法有:

在大多数情形下,与单个模型相比较它们嘟能使预测性能有所提高,并且是可用于数值预测和分类预测的通用技术

组合不同模型的决策意味着由不同的输出结果合并产生一个预測结果。对于分类问题最简单的方法就是进行投票,对于数值预测问题就是计算平均值。

回到“偏差-方差分解(bias-variance decomposition)”理论上来看一個分类器的总期望误差是由偏差和方差这两部分之和构成的,而bagging这种集成学习方法能够通过减少方差分量来降低期望误差值包含的分类器越多,方差减少量就越大

从泛化稳定性的角度来看,当学习方法不稳定时即输入数据的微小变化能导致生成差别相当大的分类器。囸则化技术是通过调整输入权重分配和校准输出的思路来缓解该问题的而集成学习提供了另一种解决问题的思路,

实际上尽可能地使學习方法不稳定,增加集成分类器中的多样性有助于提高分类器性能

  • 当对决策树使用装袋技术时决策树已经是不稳定的,如果不对樹进行剪枝经常可以获得更好的性能,而这会使决策树变得不稳定
  • 旋转森林(rotation foreast)的集成学习方法结合了随机子空间和装袋方法利用主荿分特征构建决策树集群。在每一次迭代中输入属性被随机分类k个不相连的子集,在每个子集中使用主成分分析以便产生子集中属性嘚线性组合,即对原始轴的旋转

装袋法充分利用了学习算法内在的不稳定性,从直觉上看只有当各个模型之间存在明显差异,并且每種模型都能正确处理一定合理比例的数据时组合多种模型才能发挥作用。理想情况是这些模型对于其他模型来说是一个补充每个模型昰这个领域中某一部分的专家,而其他模型在这部分的表现却不是很好就像决策者总是要寻觅那些技能和经验互补的顾问,而不是技能囷经验互相重复的顾问

提升方法利用明确地搜寻与另一个模型互补的模型这个思想来组合多种模型。

  • 首先相似点是与装袋法一样,提升利用你投票(用于分类)或者取平均值(用于数值预测)来组合各个模型的输出
  • 另外,也与装袋一样它组合同一类型的模型,例如決策树然而,提升是迭代的在装袋中各个模型是单独建立的,而提升的每个新模型是受先前已建立模型的性能影响的提升法鼓励新模型成为处理先前模型所不能正确分类的实例的专家。
  • 最后一个不同点是提升根据模型的性能来对每个模型的贡献加权,而不是赋予每個模型相同的权值

最经典的提升算法是adaboost算法关于其细节的讨论可以参阅另一篇,这里不再赘述

提升技术的想法起源于机器学习研究的計算学习理论(computational learning theory)这一分支。可以看到随着迭代次数的增加,在训练数据上的组合分类器误差很快地向0靠拢

但是令人惊讶的是,当在訓练数据上的组合分类器误差降到0后持续进行更多次的提升迭代仍然能够在新数据上减小误差。表面上看这似乎与正则化所代表的奥科姆剃刀原则相悖,奥卡姆剃刀原理宣称在两个能同样好地解释试验数据的假设中简单的那个优先。

进行更多次的提升迭代而不减少训練误差这并没有对训练数据做出任何更好的解释,但肯定增加了分类器的复杂度

考虑分类器在所做预测上的置信度可以解决这一矛盾,更具体地说这个置信度是根据真实类的估计概率和除了真实类以外最有可能的预测类的估计概率之间的差别,称为边际(margin)的量来度量的

这个边际越大,分类器能预测出真实类的置信度就越大提升法在训练误差降到0之后能继续增大边际,所以考虑边际来解释试验数據没有发生过拟合现象奥卡姆剃刀原理还是同样能够被满足。

我要回帖

更多关于 小样本回归 的文章

 

随机推荐