逻辑回归与正则化
在分类问题中,你要预测的变量 y 是离散的值,我们将学习一种叫做逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法。 在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问 题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;之前我们 也谈到了肿瘤分类问题的例子,区别一个肿瘤是恶性的还是良性的。 我们可以用逻辑回归来解决分类问题 假说表示我们引入一个新的模型,逻辑回归,该模型的输出变量范围始终在 0 和 1 之间。 逻辑 回归模型的假设是:
该函数的图像为: 判定边界
代价函数 对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们 也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将逻辑回归
这样构建的 Cost(hθ(x),y)函数的特点是:当实际的 y=1 且 hθ 也为 1 时误差为 0,当 y=1 但 hθ 不为 1 时误差随着 hθ 的变小而变大;当实际的 y=0 且 hθ 也为 0 时代价为 0,当 y=0 但 hθ 不为 0 时误差随着 hθ 的变大而变大。 简化的成本函数和梯度下降 在这段视频中,我们将会找出一种稍微简单一点的方法来写代价函数,来替换我们现在 用的方法。同时我们还要弄清楚如何运用梯度下降法,来拟合出逻辑回归的参数。因此,听 了这节课,你就应该知道如何实现一个完整的逻辑回归算法。
最小化代价函数的方法,是使用梯度下降法(gradient descent)。这是我们的代价函数:
现在,如果你把这个更新规则和我们之前用在线性回归上的进行比较的话,你会惊讶地 发现,这个式子正是我们用来做线性回归梯度下降的。 对于线性回归假设函数:
高级优化现在我们换个角度来看什么是梯度下降,我们有个代价函数 J(θ),而我们想要使其最小 化,那么我们需要做的是编写代码,当输入参数 θ 时,它们会计算出两样东西:J(θ) 以及 J 等于 0、1 直到 n 时的偏导数项 假设我们已经完成了可以实现这两件事的代码,那么梯度下降所做的就是反复执行这些 更新。 然而梯度下降并不是我们可以使用的唯一算法,还有其他一些算法,更高级、更复杂。 如果我们能用这些方法来计算代价函数 J(θ)和偏导数项两个项的话,那么这些算 j
就是其中一些更高级的优化算法,它们需要有一种方法来计算 J(θ),以及需要一种方 法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。这三种算法的具体细 节超出了本门课程的范畴。实际上你最后通常会花费很多天,或几周时间研究这些算法,你 可以专门学一门课来 高数值计算能力,不过让我来告诉你他们的一些特性: 这三种算法有许多优点: 高级优化matlab实现
如果我们不知道最小值,但你想要代价函数找到这个最小值,是用比如梯度下降这些算 function [jVal,gradient]=costFunction(theta) jVal=(theta(1)-5)^2+(theta(2)-5)^2;
gradient=zeros(2,1);
gradient(1)=2*(theta(1)-5);
gradient(2)=2*(theta(2)-5);
end
这样就计算出这个代价函数,函数返回的第二个值是梯度值,梯度值应该是一个 2×1 的向量,梯度向量的两个元素对应这里的两个偏导数项,运行这个 costFunction 函数后,你 就可以调用高级的优化函数,这个函数叫 fminunc,它表示 Octave 里无约束最小化函数。 调用它的方式如下 options=optimset('GradObj','on','MaxIter',100);
initialTheta=zeros(2,1);
[optTheta,functionVal,exitFlag]=fminunc(@costFunction,initialTheta,options);
你要设置几个 options,这个 options 变量作为一个数据结构可以存储你想要的 options, 多类别分类:一对多在本节视频中,我们将谈到如何使用逻辑回归 (logistic regression)来解决多类别分类问 题,具体来说,我想通过一个叫做”一对多” (one-vs-all) 的分类算法。 先看这样一些例子。 现在我们有一个训练集,好比上图表示的有三个类别,我们用三角形表示 y=1,方框表 示 y=2,叉叉表示 y=3。我们下面要做的就是使用一个训练集,将其分成三个二元分类问题。 我们先从用三角形代表的类别 1 开始,实际上我们可以创建一个,新的”伪”训练集,类 型 2 和类型 3 定为负类,类型 1 设定为正类,我们创建一个新的训练集,如下图所示的那
你现在知道了基本的挑选分类器的方法,选择出哪一个分类器是可信度最高效果最好的,那么就可认为得到一个正确的分类,无论 i 值是多少,我们都有最高的概率值,我们预测 y 就是那个值。这就是多类别分类问题,以及一对多的方法,通过这个小方法,你现在也可以 将逻辑回归分类器用在多类分类的问题上。 正则化(Regularization)过度拟合 下图是一个回归问题的例子:
第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集;第三个模型是一 个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。我们可以看 出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的 训练集但在新输入变量进行预测时可能会效果不好;而中间的模型似乎最合适。 就以多项式理解,x 的次数越高,拟合的越好,但相应的预测的能力就可能变差。 问题是,如果我们发现了过拟合问题,应该如何处理? 代价函数 假如我们 有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的 能防止过拟合问题的假设:
如果选择的正则化参数 λ 过大,则会把所有的参数都最小化了,导致模型变成 hθ(x)=θ0,也就是上图中红色直线所示的情况,造成欠拟合。 正则化线性回归 对于线性回归的求解,我们之前推导了两种学习算法:一种基于梯度下降,一种基于正 规方程。 正则化线性回归的代价函数为:
我们同样也可以利用正规方程来求解正则化线性回归模型,方法如下所示:
图中的矩阵尺寸为 (n+1)*(n+1)。 正则化的逻辑回归模型 针对逻辑回归问题,我们在之前的课程已经学习过两种优化算法:我们首先学习了使用 梯度下降法来优化代价函数 J(θ),接下来学习了更高级的优化算法,这些高级优化算法需要 你自己设计代价函数 J(θ)。
注意: 1.虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但 由于两者的 h(x)不同所以还是有很大差别。 2. θ0 不参与其中的任何一个正则化。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |