第一部分讲是线性回归,其大致目的是根据训练数据得到模型,再输入新的数据后得到预测的值,该值为一个连续值。而逻辑回归于线性回归其实并没有太大的区别,只不过逻辑回归是用于分类问题,二元分类居多,它对应训练数据中的结果值往往为 0或1。
1假说表示(Hypothesis Representation)
在分类问题中,我们要预测的是离散的值,预测的结果是属于哪个类(例如正确或错误)。如判断一个肿瘤是良性还是恶性的。二元分类是最简单的分类问题,我们将类别分为两类,可以用0和1来描述。当我们用线性回归来进行分类时,由于输出的值往往大于1或者小于0,所以为了分类,我们要将假设函数的输出值设定在0到1之间。线性回归只能输出连续的值,因此我么可以这样预测
当 时预测
当 时预测
上面 为假设函数, 为预测的结果值。我们使用0.5作为分类的阀值,那么我们的假设函数的值必须为 。
在此引入逻辑回归的假设函数 其中 为特征向量,为之前讲述的关于 的向量 代表逻辑函数(logistic function)是一个常用的逻辑函数为S形函数(Sigmoid function),公式为: 该函数图像为
上图可以看出sigmoid函数的值在0到1之间,那么合起来即为逻辑回归的假设函数即 。的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性(estimated probablity)如果对于给定的,通过已经确定的参数计算得出 ,则表示有70%的几率为正向类,相应地为负向类的几率为1-0.7=0.3。
2 判定边界(decision boundary)
这个概念可以帮助我们更好的理解逻辑回归,逻辑回归如下所示
现在假设我们有一个模型:
并且假设参数 是向量[-3 1 1]。 则当 ,即 时模型将预测 . 我们可以绘制直线,这条线便是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。如下图所示
3代价函数(Cost Function)
线性回归的代价函数为
逻辑回归中我们沿用这个定义,但是将 带入到上述的代价函数中时,我们得到的是一个非凸函数(non-convexfunction)
如图所示,现在代价函数有许多的局部最小值,那么梯度下降算法就很难寻找到全局最小值,我们从新定义逻辑回归的代价函数为
其中
因此逻辑回归的代价函数综述输如下所示
可以合成为 带入上述的 得到简化的逻辑回归代价函数为
接下来要做的就是使用梯度下降算法求得使 的 。还有一点注意的是我们使用逻辑回归对新的数据进行预测,预测出的结果,就是一个概率值: ,即关于以为参数,的概率,我们可以认为我们的假设就是估计的概率,那么
4梯度下降(Gradient Descent)
最小化代价函数,即我们之前学习的梯度下降算法,我们常用的梯度下降的模板为
所以说假设你有个特征,也就是说 ,为 维的向量,那么就需要上述的式子更新所有的的值。这与之前线性回归的公式是一样的,但其实由于逻辑回归的假设函数和线性回归的假设函数不同,虽然梯度下降的规则是一样的,但是逻辑回归和线性回归的梯度下降是不一样的。一般这样的同时更新所有参数,采用的是向量化的方法,这种思维很重要,也非常的便捷。
我们之前在谈线性回归时讲到的特征缩放,我们看到了特征缩放是如何提高梯度下降的收敛速度的,这个特征缩放的方法,也适用于逻辑回归。如果你的特征范围差距很大的话,那么应用特征缩放的方法,同样也可以让逻辑回归中,梯度下降收敛更快。
5高级优化(Advanced Optimization)
这个优化是针对梯度下降来讲,使用一些更复杂的算法来进行计算,使逻辑回归的效率大大提升,这也将使算法更加的合适解决大型的机器学习问题,比如,我们有数目庞大的特征量。 现在我们换个角度来看什么是梯度下降,我们有个代价函数,而我们想要使其最小化,那么我们需要做的是编写代码,当输入参数 时,它们会计算出两样东西: 以及 等于 0、1直到时的偏导数项。如下图所示
假设我们已经完成了可以实现这两件事的代码,那么梯度下降所做的就是反复执行这些更新。共轭梯度法 BFGS (变尺度法) 和L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法,它们需要有一种方法来计算 ,以及需要一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。这些算法很复杂,如果需要研究透那么会花费大量的时间,我们可以直接调用一些库来使用。这些算法有许多优点,比如效率高,并且通常不需要选择学习率
6多类别分类:一对多( Multiclass Classification_ One-vs-all)
前面所讲的都是使用逻辑回归进行二分类问题,结果的输出往往为 或者 。逻辑回归也可用于多分类问题,那么输出的结果就不只两种,例如下面的例子。将学习算法应用与自动的将邮件进行分类,或者说是加上标签,那么这些邮件就可以分为来自工作的邮件,来自朋友的邮件,来自家人的邮件或者是有关兴趣爱好的邮件。那么就有这样一个分类问题:其中类别有四个,分别用 来代表。
然而对于二分类和多分类问题来讲,它们之间的数据集不一样,如下图所示
利用不同的符号来表示不同的类别。上诉逻辑回归是解决二分类问题,可以将数据集一分为二为正类和负类,用一对多的思想将其用于多分类问题上。上图中我们有三个类别用三角形表示 ,方框表示 ,叉叉表示 。先从用三角形代表的类别1开始。实际上可以创建新的训练集,类型2和类型3定为负类,类型1设定为正类,创建一个新的训练集,如下图所示,拟合处一个合适的分类器
三角形为正样本,圆形代表负样本,设三角形的值为1,圆形的为0,训练出一个标准的逻辑回归分类器,这样就得到一个正边界,然后依次这样执行三次。为了能实现这样的转变,我们将多个类中的一个类标记为正向类,然后将其他分类都标记为父分类,这个模型记作 接着,其他为和,最后我们得到一系列的模型简记为: 其中 最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。
7正则化(Regularization)
7.1过拟合问题The Problem of Overfitting
过拟合问题是机器学习中常见的问题,与之对应的就是欠拟合问题。过拟合就是在机器学习算法根据数据集训练出模型,该模型对训练集数据有非常好的效果(代价函数可能几乎为0),那么这样对新输入的数据就不会有很好的结果,也就是输入新的数据,预测的结果不好。如下面回归问题的例子所示
第一个模型是欠拟合,假设函数不能很好的适应我们的训练集,第二个模型是非常好的效果,第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。分类问题也存在这样的情况:
如果发现过拟合问题,我们可以采用下面的方法进行处理:
1 丢弃一些不能帮助我们正确预测的特征,也就是丢弃一些多余的特征。
2 正则化。保留所有的特征,但是减少参数的大小(magnitude)
7.2代价函数(Cost Function)
上面的例子中那个过拟合的情况出现时我们的模型是: 正是这些高次项导致了过拟合的产生,如果可以是这些高次项的系数(也就是上面式子中的 和 )接近为0的话,那么就可以很好的拟合了。所以我们所做的就是在一定程度上减小这些参数的值,这就是正则化的基本思想。要减小这些高次项系数的值,那么就要修改代价函数,给 和 设置惩罚。例如修改后的代价函数如下所示:
通过这样选择的 和 对预测结果的影响就非常的小,如果我们有非常多的特征,我们并不知道其中哪些特征我们需要惩罚,那么就可以对所有的特征进行惩罚,这样得到的是一个较为简单的防止过拟合问题的假设
其中又称为正则化参数(Regularization Parameter),经过正则化处理的模型与原模型的对比如下图所示
如果选择的正则化参数 过大,则会把所有的参数最小化,导致模型变成 即图中红色直线所示的情况,造成欠拟合。所以对于正则化,我们要取一个合适的的值,这样才能更好的应用正则化。