写给人类的机器学习AI专题程序员

写给人类的机器学习 2.2 监督学习 II

2017-10-14  本文已影响114人  布客飞龙

2.2 监督学习 II

原文:Machine Learning for Humans, Part 2.1: Supervised Learning

作者:Vishal Maini

译者:飞龙

协议:CC BY-NC-SA 4.0

使用对数几率回归(LR)和支持向量机(SVM)的分类。

分类:预测标签

这个邮件是不是垃圾邮件?贷款者能否偿还它们的贷款?用户是否会点击广告?你的 Fackbook 照片中那个人是谁?

分类预测离散的目标标签Y。分类是一种问题,将新的观测值分配给它们最有可能属于的类,基于从带标签的训练集中构建的模型。

你的分类的准确性取决于所选的算法的有效性,你应用它的方式,以及你有多少有用的训练数据。

sigmoid 函数,它将值压缩到 0 和 1 之间。

回忆我们的简单线性回归模型的原始形式,我们现在叫它g(X),因为我们打算在复合函数中使用它。

现在,为了解决模型输出小于 0 或者大于 1 的问题,我们打算定义一个新的函数F(g(X)),它将现行回归的输出压缩到[0,1]区间,来转换g(X)。你可以想到一个能这样做的函数吗?

你想到了 sigmoid 函数吗?太棒了,这就对了!

所以我们将g(x)插入 sigmoid 函数中,得到了原始函数的一个函数(对,事情变得高阶了),它输出 0 和 1 之间的概率。

换句话说,我们正在计算“训练样本属于特定类”的概率:P(Y=1)

这里我们分离了p,它是Y=1的概率,在等式左边。如果我们打算求解等式右边的,非常整洁的β0 + β1x + ϵ,以便我们能够直接解释我们习得的beta参数,我们会得到对数几率比值,简称对率,它在左边。这就是“对率模型”的由来。

对数几率比值仅仅是概率比值p/(1-p)的自然对数,它会出现在我们每天的对话中。

在这一季的“权力的游戏”中,你认为小恶魔挂掉的几率有多大?

嗯...挂掉的可能性是不挂掉的两倍。几率是 2 比 1。的确,他太重要,不会被杀,但是我们都看到了他们对 Ned Stark 做的事情...

当你看到像这样的长式子时,不要惊慌。将其拆成小部分,并从概念上思考每个部分都是什么。之后就能理解了。

第一个部分是数据损失,也就是,模型预测值和实际值之间有多少差异。第二个部分就是正则损失,也就是,我们以什么程度,惩罚模型的较大参数,它过于看重特定的特征(要记得,这可以阻止过拟合)。

我们使用低度下降,使损失函数最小,就是像上面这样。我们构建了一个对数几率回归模型,来尽可能准确地预测分类。

支持向量机

我们再次位于一个充满弹球的房间里。为什么我们总是在充满弹球的房间里呢?我可以发誓我已经把它们丢掉了。

SVM 是我们涉及的最后一个参数化模型。它通常与对率回归解决相同的问题,二元分类,并产生相似的效果。它值得理解,因为算法本质上是由几何驱动的,并不是由概率思维驱动的。

SVM 可解决的一些问题示例:

我们使用第三个例子,来展示 SVM 的工作方式。像这样的问题叫做玩具问题,因为它们不是真实的。但是没有东西是真实的,所以也没关系。

这个例子中,我们的二维空间中有一些点,它们是红色或者蓝色的,并且我们打算将二者干净地分开。

训练集画在了上面的图片中。我们打算在这个平面上划分新的未分类的点。为了实现它,SVM 使用分隔直线(在高维里面是个多维的超平面),将空间分成红色区域和蓝色区域。你可以想象,分隔直线在上面的图里面是什么样。

具体一些,我们如何选取画这条线的位置?

下面是这条直线的两个示例:

我希望你拥有一种直觉,觉得第一条线更好。直线到每一边的最近的点的距离叫做间距,而 SVM 尝试使间距最大。你可以将其看做安全空间:空间越大,嘈杂的点就越不可能被错误分类。

基于这个简单的解释,一个巨大的问题来了。

(1) 背后的数学原理是什么?

我们打算寻找最优超平面(在我们的二维示例中是直线)。这个超平面需要(1)干净地分隔数据,将蓝色的点分到一边,红色的点分到另一边,以及(2)使间距最大。这是个最优化问题。按照(2)的需求使间距最大的时候,解需要遵循约束(1)。

求解这个问题的人类版本,就是拿一个尺子,尝试不同的直线来分隔所有点,直到你得到了使间距最大的那条。

人们发现,存在求解这个最大化的数学方式,但是它超出了我们的范围。为了进一步解释它,这里是个视频讲义,使用拉格朗日优化展示了它的工作原理。

你最后求解的超平面的定义,有关它相对于特定x_i的位置,它们就叫做支持向量,并且它们通常是最接近超平面的点。

(2) 如果你不能干净地分隔数据,会发生什么?

处理这个问题有两个方式。

2.1 软化“分隔”的定义

我们允许一些错误,也就是我们允许红色区域里面有一些蓝色点,或者蓝色区域里有一些红色点。我们向损失函数中。为错误分类的样本添加成本C来实现。基本上我们说,错误分类是可以接受的,只是会产生一些成本。

2.2 将数据放到高维

我们可以创建非线性的分类器,通过增加维数,也就是,包含x^2x^3,甚至是cos(x),以及其它。突然,你就有了一个边界,当我们将其带回低维表示时,它看起来有些弯曲。

本质上,这就类似红的和蓝色的弹球都在地面上,它们不能用一条直线分隔。但是如果你让所有红色的弹球离开地面,像右图这样,你就能画一个平面来分隔它们。之后你让他们落回地面,就知道了蓝色和红色的边界。

决策边界展示为绿色,左边是三维空间,右边是二维空间。与上一张来源相同。

总之,SVM 用于二元分类。它们尝试寻找一个平面,干净地分隔两个类。如果这不可能,我们可以软化“分隔”的定义,或者我们把数据放到高维,以便我们可以干净地分隔数据。

好的!

这一节中我们涉及了:

在“2.3:监督学习 III”中,我们会深入非参数化监督学习,其中算法背后的概念都非常直观,并且对于特定类型的问题,表现都很优秀,但是模型可能难以解释。

练习材料和扩展阅读

2.2a 对数几率回归

Data School 拥有一个对数几率回归的非常棒的深入指南。我们也继续向你推荐《An Introduction to Statistical Learning》。对数几率回归请见第四章,支持向量机请见第九章。

为了解释对数几率回归,我们推荐你处理这个问题集。你需要注册站点来完成它。很不幸,这就是人生。

2.2b 深入 SVM

为了深入 SVM 背后的数学,在 MIT 6.034:人工智能课程中观看 Patrick Winston 教授的讲义,并查看这个教程来完成 Python 实现。

上一篇下一篇

猜你喜欢

热点阅读