吴恩达机器学习个人笔记(二)-逻辑回归

       第一部分讲是线性回归,其大致目的是根据训练数据得到模型,再输入新的数据后得到预测的值,该值为一个连续值。而逻辑回归于线性回归其实并没有太大的区别,只不过逻辑回归是用于分类问题,二元分类居多,它对应训练数据中的结果值往往为 0或1。

1假说表示(Hypothesis Representation)

        在分类问题中,我们要预测的是离散的值,预测的结果是属于哪个类(例如正确或错误)。如判断一个肿瘤是良性还是恶性的。二元分类是最简单的分类问题,我们将类别分为两类,可以用0和1来描述。当我们用线性回归来进行分类时,由于输出的值往往大于1或者小于0,所以为了分类,我们要将假设函数的输出值设定在0到1之间。线性回归只能输出连续的值,因此我么可以这样预测

                                                       当  h_{\theta }(x)>0.5 时预测 y=1

                                                       当 h_{\theta }(x)<=0  时预测 y=0

      上面  h_{\theta }(x) 为假设函数,y 为预测的结果值。我们使用0.5作为分类的阀值,那么我们的假设函数的值必须为  0<h_{\theta }(x)<1

在此引入逻辑回归的假设函数  h_{\theta }(x)=g(\theta ^{T}X)  其中 X 为特征向量,\theta为之前讲述的关于\theta _{i}(i=0,1,2\cdots ) 的向量 g 代表逻辑函数(logistic function)是一个常用的逻辑函数为S形函数(Sigmoid function),公式为:g(z)=\frac{1}{1+e^{-z}}  该函数图像为

                                                         

上图可以看出sigmoid函数的值在0到1之间,那么合起来即为逻辑回归的假设函数即  z=h_{\theta }(x)h_{\theta }(x)的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性(estimated probablity)如果对于给定的x,通过已经确定的参数计算得出 h_{\theta }(x)=0.7,则表示有70%的几率y为正向类,相应地y为负向类的几率为1-0.7=0.3。

2 判定边界(decision boundary)

    这个概念可以帮助我们更好的理解逻辑回归,逻辑回归如下所示

                                    

现在假设我们有一个模型:

                                 

并且假设参数 \theta 是向量[-3 1 1]。 则当   -3+x_{1}+x_{2}\geq 0,即  x_{1}+x_{2}\geq 3时模型将预测 y=1. 我们可以绘制直线x_{1}+x_{2}=3,这条线便是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。如下图所示

                                                                          

3代价函数(Cost Function

线性回归的代价函数为

                                                                J\left (\theta\right )= \frac{1}{2m}\sum_{i=1}^{m} \left ( h_{\theta }\left ( x^{i} \right ) -y^{i}\right )^{2}

逻辑回归中我们沿用这个定义,但是将    h_{\theta }(x)=\frac{1}{1+e^{-\theta ^{T}x}} 带入到上述的代价函数中时,我们得到的是一个非凸函数(non-convexfunction

                                

如图所示,现在代价函数有许多的局部最小值,那么梯度下降算法就很难寻找到全局最小值,我们从新定义逻辑回归的代价函数为

                                                      J\left (\theta\right )= \frac{1}{2m}\sum_{i=1}^{m}Cost \left ( h_{\theta }\left ( x^{i} \right ) ,y^{i}\right )

  其中

                                

因此逻辑回归的代价函数综述输如下所示

                                           

Cost(h_{\theta }(x),y)可以合成为  Cost(h_{\theta }(x),y)=-y\times log(h_{\theta }(x))-(1-y)\times log(1-h_{\theta }(x))带入上述的 J(\theta ) 得到简化的逻辑回归代价函数为

                                   J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_{\theta }(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta }(x^{(i)}))]

接下来要做的就是使用梯度下降算法求得使 \underset{\theta }{min }J(\theta ) 的 \theta。还有一点注意的是我们使用逻辑回归对新的数据进行预测,预测出的结果y,就是一个概率值:p(y=1|x;\theta ) ,即关于x\theta为参数,y=1的概率,我们可以认为我们的假设就是估计y=1的概率,那么p(y=0|x;\theta )=1-p(y=1|x;\theta )

4梯度下降(Gradient Descent)

      最小化代价函数,即我们之前学习的梯度下降算法,我们常用的梯度下降的模板为

                                                 

       所以说假设你有n个特征,也就是说\theta =\begin{bmatrix} \theta _{0}\\ \theta _{1}\\ \theta _{2}\\ \cdots \\ \theta _{n}\end{bmatrix} ,\theta为 n+1 维的向量,那么就需要上述的式子更新所有的\theta _{i}的值。这与之前线性回归的公式是一样的,但其实由于逻辑回归的假设函数和线性回归的假设函数不同,虽然梯度下降的规则是一样的,但是逻辑回归和线性回归的梯度下降是不一样的。一般这样的同时更新所有参数,采用的是向量化的方法,这种思维很重要,也非常的便捷。

       我们之前在谈线性回归时讲到的特征缩放,我们看到了特征缩放是如何提高梯度下降的收敛速度的,这个特征缩放的方法,也适用于逻辑回归。如果你的特征范围差距很大的话,那么应用特征缩放的方法,同样也可以让逻辑回归中,梯度下降收敛更快。

5高级优化(Advanced Optimization)

        这个优化是针对梯度下降来讲,使用一些更复杂的算法来进行计算,使逻辑回归的效率大大提升,这也将使算法更加的合适解决大型的机器学习问题,比如,我们有数目庞大的特征量。 现在我们换个角度来看什么是梯度下降,我们有个代价函数J(\theta ),而我们想要使其最小化,那么我们需要做的是编写代码,当输入参数\theta 时,它们会计算出两样东西:J(\theta ) 以及 等于 0、1直到n时的偏导数项。如下图所示

                                                 

假设我们已经完成了可以实现这两件事的代码,那么梯度下降所做的就是反复执行这些更新。共轭梯度法 BFGS (变尺度法) 和L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法,它们需要有一种方法来计算 J(\theta ),以及需要一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。这些算法很复杂,如果需要研究透那么会花费大量的时间,我们可以直接调用一些库来使用。这些算法有许多优点,比如效率高,并且通常不需要选择学习率\alpha

6多类别分类:一对多( Multiclass Classification_ One-vs-all)

       前面所讲的都是使用逻辑回归进行二分类问题,结果的输出往往为y=1 或者 y=0。逻辑回归也可用于多分类问题,那么输出的结果就不只两种,例如下面的例子。将学习算法应用与自动的将邮件进行分类,或者说是加上标签,那么这些邮件就可以分为来自工作的邮件,来自朋友的邮件,来自家人的邮件或者是有关兴趣爱好的邮件。那么就有这样一个分类问题:其中类别有四个,分别用 y=1,y=2,y=3,y=4 来代表。

       然而对于二分类和多分类问题来讲,它们之间的数据集不一样,如下图所示

                                                

利用不同的符号来表示不同的类别。上诉逻辑回归是解决二分类问题,可以将数据集一分为二为正类和负类,用一对多的思想将其用于多分类问题上。上图中我们有三个类别用三角形表示 y=1 ,方框表示 y=2,叉叉表示 y=3。先从用三角形代表的类别1开始。实际上可以创建新的训练集,类型2和类型3定为负类,类型1设定为正类,创建一个新的训练集,如下图所示,拟合处一个合适的分类器

                                 

三角形为正样本,圆形代表负样本,设三角形的值为1,圆形的为0,训练出一个标准的逻辑回归分类器,这样就得到一个正边界,然后依次这样执行三次。为了能实现这样的转变,我们将多个类中的一个类标记为正向类(y=1),然后将其他分类都标记为父分类,这个模型记作 h_{\theta }^{(1)}(x) 接着,其他为h_{\theta }^{(2)}(x)h_{\theta }^{(3)}(x),最后我们得到一系列的模型简记为: h_{\theta }^{(i)}(x)=p(y=i|x;\theta )其中 i=(1,2,3\cdots k)最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。

7正则化(Regularization)

7.1过拟合问题The Problem of Overfitting

       过拟合问题是机器学习中常见的问题,与之对应的就是欠拟合问题。过拟合就是在机器学习算法根据数据集训练出模型,该模型对训练集数据有非常好的效果(代价函数可能几乎为0),那么这样对新输入的数据就不会有很好的结果,也就是输入新的数据,预测的结果不好。如下面回归问题的例子所示

                 

第一个模型是欠拟合,假设函数不能很好的适应我们的训练集,第二个模型是非常好的效果,第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。分类问题也存在这样的情况:

                   

如果发现过拟合问题,我们可以采用下面的方法进行处理:

           1 丢弃一些不能帮助我们正确预测的特征,也就是丢弃一些多余的特征。

           2 正则化。保留所有的特征,但是减少参数的大小(magnitude)

7.2代价函数(Cost Function)

       上面的例子中那个过拟合的情况出现时我们的模型是: h_{\theta }(x)=\theta _{0}+\theta _{1}x _{1}+\theta _{2}x^{2}+\theta _{3}x^{3}+\theta _{4}x^{4} 正是这些高次项导致了过拟合的产生,如果可以是这些高次项的系数(也就是上面式子中的 \theta _{3} 和 \theta _{4})接近为0的话,那么就可以很好的拟合了。所以我们所做的就是在一定程度上减小这些参数\theta的值,这就是正则化的基本思想。要减小这些高次项系数的值,那么就要修改代价函数,给 \theta _{3} 和 \theta _{4}设置惩罚。例如修改后的代价函数如下所示:

                                                \underset{\theta }{min}\frac{1}{2m}[\sum _{i=1}^{m}{(h_{\theta }(x^{(i)})-y^{(i)})}^{2}+1000\theta _{3}^{2}+1000\theta _{4}^{2}]

通过这样选择的\theta _{3} 和 \theta _{4}对预测结果的影响就非常的小,如果我们有非常多的特征,我们并不知道其中哪些特征我们需要惩罚,那么就可以对所有的特征进行惩罚,这样得到的是一个较为简单的防止过拟合问题的假设

                                                J(\theta )=\frac{1}{2m}[\sum _{i=1}^{m}{(h_{\theta }(x^{(i)})-y^{(i)})}^{2}+\lambda \sum _{j=1}^{n}\theta _{j}^{2}]

其中\lambda又称为正则化参数(Regularization Parameter),经过正则化处理的模型与原模型的对比如下图所示

                                                       

如果选择的正则化参数\lambda 过大,则会把所有的参数最小化,导致模型变成  h_{\theta }(x)=\theta _{0}即图中红色直线所示的情况,造成欠拟合。所以对于正则化,我们要取一个合适的\lambda的值,这样才能更好的应用正则化。

猜你喜欢

转载自blog.csdn.net/Huang_cainiao/article/details/82894290