阿里巴巴如何做网站,锦州网站开发招聘,东莞网站建设推广平台,wordpress自动播放视频支持向量机(Support Vector Machines)
在监督学习中#xff0c;许多学习算法的性能都非常类似#xff0c;因此#xff0c;重要的不是你该选择使用学习算法 A 还是学习算法 B#xff0c;而更重要的是#xff0c;
应用这些算法时#xff0c;所创建的大量数据在应用这些算…支持向量机(Support Vector Machines)
在监督学习中许多学习算法的性能都非常类似因此重要的不是你该选择使用学习算法 A 还是学习算法 B而更重要的是
应用这些算法时所创建的大量数据在应用这些算法时表现情况通常依赖于你的水平。
比如你为学习算法所设计的特征量的选择以及如何选择正则化参数诸如此类的事。
还有一个更加强大的算法广泛的应用于工业界和学术界它被称为支持向量机(Support Vector Machine)。
与逻辑回归和神经网络相比支持向量机或者简称 SVM在学习复杂的非线性方程时提供了一种更为清晰更加强大的方式。 与Logistics回归成本函数的不同
1、删去常量 1/m
2、LogisticAλ×BSVM C×AB。如果给定λ一个非常大的值意味着给予 B 更大的权重。而这里就对应于将 C 设定为非常小的值那么相应的将会给 B 比给 A 更大的权重。因此这只是一种不同的方式来控制这种权衡或者一种不同的方法 即用参数来决定是更关心第一项的优化 还是更关心第二项的优化。当然你也可以把这里的参数 C 考虑成 1/λ同 1/λ 所扮演的角色相同。
3、Logistic输出概率SVM直接预测y的值为0还是1。 成本函数 接下来会考虑一个特例将常数 C 设置成一个非常大的值。
比如假设 C 的值为100000 或者其它非常大的数然后来观察支持向量机会给出什么结果
如果 C 非常大则最小化代价函数的时候我们将会很希望找到一个使第一项为 0 的最优解。即不希望出现分错的点相当于过拟合。
此时两类点完全分类正确。黑线有更大的距离这个距离叫做间距 (margin)。 当画出这两条额外的蓝线看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近在分离样本的时候就会比黑线表现差。因此这个距离叫做支持向量机的间距 而这是支持向量机具有鲁棒性的原因 因为它努力用一个最大间距来分离样本。 因此支持向量机有时被称为大间距分类器。 将这个大间距分类器中的正则化因子常数 C 设置的非常大我记得我将其设置为了 100000因此对这样的一个数据集也许我们将选择这样的决策界从而最大间距地分离开正样本和负样本。 那么在让代价函数最小化的过程中我们希望找出在 y1 和 y0 两种情况下都使得代价函数中左边的这一项尽量为零的参数。如果我们找到了这 样的参数则我们的最小化问题便转变成 事实上 支持向量机现在要比这个大间距分类器所体现得更成熟。 尤其是当你使用大间距分类器的时候你的学习算法会受异常点 (outlier) 的影响。 在这里如果你加了这个样本为了将样本用最大间距分开也许我最终会得到这条粉色的线仅仅基于一个异常值就将决策界从这条黑线变到这条粉线这实在是不明智的。而如果正则化参数 C设置的非常大这事实上正是支持向量机将会做的。
但是如果 C 设置的小一点则你最终会得到这条黑线。
因此大间距分类器的描述仅仅是从直观上给出了正则化参数 C 非常大的情形同时要提醒你 C 的作用类似于 1/λλ是我们之前使用过的正则化参数。这只是C 非常大的情形或者等价地λ非常小的情形。你最终会得到类似粉线这样的决策界但是实际上应用支持向量机的时候当 C 不是非常非常大的时候它可以忽略掉一些异常点的影响得到更好的决策界。甚至当你的数据不是线性可分的时候支持向量机也可以给出好的结果。 回顾 C1/λ因此 C 较大时相当于 λ 较小可能会导致过拟合高方差。 C 较小时相当于 λ 较大可能会导致低拟合高偏差。 这节课给出了一些关于为什么支持向量机被看做大间距分类器的直观理解。它用最大间距将样本区分开尽管从技术上讲这只有当参数 C 是非常大的时候是真的但是它对于理解支持向量机是有益的。 ————————————————————————————————————————————————————————— Mathematics Behind Large Margin Classification ————————————————————————————————————————————————————————————————————————————— 核函数
回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题 为了获得上图所示的判定边界我们的模型可能是
可以用一系列的新的特征 f 来替换模型中的每一项。例如令
得到 hθ(x)f1f2...fn。 然而除了对原有的特征进行组合以外有没有更好的方法来构造 f1,f2,f3
可以利用核函数来计算出新的特征。 这里是一个高斯核函数Gaussian Kernel。
注这个函数与正态分布没什么实际上的关系只是看上去像而已。 如果使用高斯核函数那么在使用之前进行特征缩放是非常必要的。
另外 支持向量机也可以不使用核函数 不使用核函数又称为线性核函数 linear kernel。
当不采用非常复杂的函数 或者训练集特征非常多而实例非常少的时候 可以采用这种不带核函数的支持向量机。 支持向量机的两个参数 C 和 σ 的影响 C 较大时相当于 λ 较小可能会导致过拟合高方差 C 较小时相当于 λ 较大可能会导致低拟合高偏差 σ 较大时导致高方差 σ 较小时导致高偏差。 ————————————————————————————————————————————————————————— 使用支持向量机
强烈建议使用高优化软件库中的一个 而不是尝试自己落实一些数据。
有许多好的软件库我正好用得最多的两个是 liblinear 和 libsvm。 在高斯核函数之外我们还有其他一些选择如
多项式核函数Polynomial Kernel 字符串核函数String kernel 卡方核函数 chi-square kernel 直方图交集核函数histogram intersection kernel 等等...
这些核函数的目标也都是根据训练集和地标之间的距离来构建新特征。
这些核函数需要满足 Mercers 定理才能被支持向量机的优化软件正确处理。 多类分类问题
假设我们利用之前介绍的一对多方法来解决一个多类分类问题。 如果一共有 k 个类 则我们需要 k 个模型以及 k 个参数向量 θ。我们同样也可以训练 k 个支持向量机来解决多类分类问题。 但是大多数支持向量机软件包都有内置的多类分类功能 我们只要直接使用即可。 尽管你不去写你自己的 SVM支持向量机的优化软件但是你也需要做几件事 1、是提出参数 C 的选择。即误差/方差在这方面的性质。 2、你也需要选择内核参数或你想要使用的相似函数其中一个选择是选择不需要任何内核参数没有内核参数的理念也叫线性核函数。因此如果有人说他使用了线性核的 SVM支持向量机这就意味这他使用了不带有核函数的 SVM支持向量机。 Logistics和SVM该如何选择
下面是一些普遍使用的准则
m 为训练样本数n 为特征数。
(1)如果相较于 m 而言n 要大许多即训练集数据量不够支持我们训练一个复杂的非线性模型我们选用逻辑回归模型或者不带核函数的支持向量机。
(2)如果 n 较小而且 m 大小中等例如 n 在 1-1000 之间而 m 在 10-10000 之间使用高斯核函数的支持向量机。
(3)如果 n 较小而 m 较大例如 n 在 1-1000 之间而 m 大于 50000则使用支持向量机会非常慢解决方案是创造、增加更多的特征然后使用逻辑回归或不带核函数的支持向量机。 逻辑回归和不带核函数的支持向量机它们都是非常相似的算法 不管是逻辑回归还是不带核函数的 SVM通常都会做相似的事情并给出相似的结果。 值得一提的是 神经网络在以上三种情况下都可能会有较好的表现 但是训练神经网络可能非常慢选择支持向量机的原因主要在于它的代价函数是凸函数不存在局部最小值。 通常更加重要的是你有多少数据你有多熟练是否擅长做误差分析和排除学习算法 指出如何设定新的特征变量和找出其他能决定你学习算法的变量等方面通常这些方面会比你使用逻辑回归还是 SVM 这方面更加重要。