吴恩达机器学习笔记-逻辑回归(Logistic Regression)

  • 分类问题

在分类问题中,你要预测的变量y是离散的值,我们将学习一种叫做逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法。在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子如下:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;之前我们也谈到了肿瘤分类问题的例子,区别一个肿瘤是恶性的还是良性的。

                                           

我们从二元的分类问题开始讨论,将因变量(dependent variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class),则因变量y表示为0和1,其中 0 表示负向类,1 表示正向类。

                                                                            

接下来的要研究的算法就叫做逻辑回归算法,hΘ(x)的输出值永远在0到1之间。而线性回归的输出值可以远大于1或者远小于0,所以逻辑回归算法是分类算法,它适用于标签y取值离散的情况,如:1 0 0 1。

                                                        

  • 假说表示Hypothesis Representation

在分类问题中,要用什么样的函数来表示我们的假设。分类器的输出值我们希望在0和1之间,因此,假设函数的预测值要在0和1之间。为此我们引入sigmoid或者叫做logistic的函数,将输出范围控制在0-1。

                               

  逻辑回归模型的假设是:,X代表特征向量,g代表逻辑函数(logistic function)是一个常用的逻辑函数为S形函数(Sigmoid function),公式为: 

                                

hΘ(x) 的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性,即hΘ(x)=P(y=1|x;θ)。 如果对于给定的x,通过已经确定的参数计算得出hΘ(x)=0.7,则表示有70%的几率为正向类,相应地为负向类的几率为1-0.7=0.3。

  • 判定边界

决策边界(decision boundary)的概念能更好地帮助我们理解逻辑回归的假设函数在计算什么。

                              

根据上面绘制出的 S 形函数图像,我们知道当z=0,g(z)=0.5; z>0,g(z)>0.5; z<0,g(z)<0.5,。现在假设我们有一个模型:

                               

      并且参数θ是向量[-3 1 1]。 则当-3+X1+X2≥0,模型将预测y=1。 我们可以绘制这条直线直线,这条线便是我们模型的分界线,将预测为1的区域和预测为0的区域分隔开。 假使我们的数据呈现下列的分布情况,怎样的模型才能适合呢?

                                               

       因为需要用曲线才能分隔y=0的区域和y=1的区域,我们需要二次方特征: 。

我们得到的判定边界恰好是圆点在原点且半径为1的圆形,我们可以用非常复杂的模型来适应非常复杂形状的判定边界。

  • 代价函数

      我们如何拟合逻辑回归模型的参数。具体来说,我要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题。

                                                      

      对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将 带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convexfunction)。这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。

                                           

      线性回归的代价函数为: ,则定义逻辑回归的代价函数为:

其中cost如下图所定义。

                                                                

       函数hΘ(x)的值与cost (hΘ(x),y)之间关系如下图:

                                                

       将构建的cost (hΘ(x),y)简化如下:,带入代价函数得到

                                                   

       在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。参数更新规则如下:

                                               

      对J(θ) 求导得到:

                                                  

     代价函数重新定义后会是个凸函数,并且没有局部最优值。在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。一些梯度下降算法之外的选择: 除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS) ,fminunc是 matlaboctave 中都带的一个最小值优化函数,使用时我们需要提供代价函数和每个参数的求导。

  • 简化成本函数和梯度下降

如果你有n个特征,也就是说:,你就需要用这个式子来同时更新所有的参数值。最后还有一点,我们之前在谈线性回归时讲到的特征缩放,我们看到了特征缩放是如何提高梯度下降的收敛速度的,这个特征缩放的方法,也适用于逻辑回归。如果你的特征范围差距很大的话,那么应用特征缩放的方法,同样也可以让逻辑回归中,梯度下降收敛更快。

  • 高级优化

       当输入参数θ时,它们会计算出两样东西 J(θ)以及J在0-n的偏导。梯度下降并不是我们可以使用的唯一算法,还有其他一些算法,更高级、更复杂。如果我们能用这些方法来计算代价函数和偏导数项两个项的话,那么这些算法就是为我们优化代价函数的不同方法,共轭梯度法 BFGS (变尺度法) 和L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法,它们有一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。

                                                     

     使用这其中任何一个算法,你通常不需要手动选择学习率 ,所以对于这些算法的一种思路是,给出计算导数项和代价函数的方法,你可以认为算法有一个智能的内部循环,而且,事实上,他们确实有一个智能的内部循环,称为线性搜索(line search)算法,它可以自动尝试不同的学习速率 ,并自动选择一个好的学习速率 ,因此它甚至可以为每次迭代选择不同的学习速率,那么你就不需要自己选择。这些算法实际上在做更复杂的事情,不仅仅是选择一个好的学习速率,所以它们往往最终比梯度下降收敛得快多了。 现在我们有Octave 和与它密切相关的 MATLAB 语言可以使用。

                                    

          比方说,你有一个含两个参数的问题,通过这个代价函数,你可以得到两个参数的值,如果你将J(θ)最小化的话,那么它的最小值将是θ1和θ2=5。用比它更高级的算法,你要做的就是运行一个像这样的Octave 函数:

                                         

         这样就计算出这个代价函数,函数返回的第二个值是梯度值,梯度值应该是一个2×1的向量,梯度向量的两个元素对应这里的两个偏导数项,运行这个costFunction 函数后,你就可以调用高级的优化函数,这个函数叫 fminunc,它表示Octave 里无约束最小化函数。调用它的方式如下:

                                   

 

        你要设置几个options,这个 options 变量作为一个数据结构可以存储你想要的options,所以 GradObj 和On,这里设置梯度目标参数为打开(on),这意味着你现在确实要给这个算法提供一个梯度,然后设置最大迭代次数,比方说100,我们给出一个θ的猜测初始值,它是一个2×1的向量,那么这个命令就调用fminunc,这个@符号表示指向我们刚刚定义的costFunction 函数的指针。如果你调用它,它就会使用众多高级优化算法中的一个,当然你也可以把它当成梯度下降,只不过它能自动选择学习速率,你不需要自己来做。然后它会尝试使用这些高级的优化算法,就像加强版的梯度下降法,为你找到最佳的θ值。

  • 多类别分类:一对多

         我们现在已经知道如何进行二元分类,可以使用逻辑回归。对于多分类我们怎么做?

 

                                   

      我们将多个类中的一个类标记为正向类y=1,然后将其他所有类都标记为负向类, 记作模型,接着,类似地第我们选择另一个类标记为正向类y=2,再将其它类都标记为负向类,将这个模型记作,依此类推。

                                         

       最后我们得到一系列的模型简记为,i=1,2,3.....k。最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。即

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容,吴恩达机器学习课程中对逻辑回归进行了实验。逻辑回归是一种用于预测二分类问题的机器学习算法。在这个实验中,假设你是一个大学部门的管理员,想根据申请人在两次考试中的成绩来确定他们的入学机会。你可以使用以前申请人的历史数据作为逻辑回归的训练集。对于每个训练样本,你都有申请人在两门考试中的成绩和录取决定。通过建立一个逻辑回归模型,你可以根据申请人的考试成绩来预测他们是否会被大学录取。这个实验的目的是通过训练样本来构建一个逻辑回归模型,用以预测学生是否被录取。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [吴恩达机器学习--逻辑回归](https://blog.csdn.net/m0_68111267/article/details/129910241)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [吴恩达机器学习课后作业Python实现(二):逻辑回归](https://blog.csdn.net/weixin_50345615/article/details/125984757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值