Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课

最近翻Peter Harrington的《机器学习实战》,看到Logistic回归那一章有点小的疑问。算法

做者在简单介绍Logistic回归的原理后,当即给出了梯度上升算法的code:从算法到代码跳跃的幅度有点大,做者本人也说了,这里略去了一个简单的数学推导。机器学习

那么其实这个过程在Andrew Ng的机器学习公开课里也有讲到。如今回忆起来,大二看Andrew的视频的时候内心是有这么一个疙瘩(Andrew也是跳过了一步推导)函数

这里就来说一下做者略去了怎样的数学推导,以及,怎么推导。学习

在此以前,先回顾一下Logistic回归。code

Logistic回归视频

  基本原理:《实战》这本书上是这么讲的,“回归”就是用一条直线对一堆数据点进行拟合,这个拟合过程就称为“回归”。利用Logistic回归进行分类的主要思想是,根据现有数据对分类边界线创建回归公式,以此进行分类。事件

  以Andrew公开课的例子说明:数学

 

 

  圆(蓝色)和叉(红色)是两类数据点,咱们须要找到一个决策边界将其划分开,如图所示的边界形式显然是线性的形式,如图中所描述的:入门

  咱们记为:table

  这里,括号里的就是决策边界的表达式,咱们找一个函数g,将表达式结果做为输入,生成一个预测函数hθ(x).这里咱们使用Sigmoid函数

  从而:

 

  然而有时候,决策边界用一维直线没法区分,也就是这里的θ参数个数是变数,好比下面这堆数据

  这是一种非线性的决策边界。

  能够看到这里,将x1,x2参数所有平方处理,找得一个圆形边界。

  

公式推导

  讲到这里,咱们能够把边界形式作以下推广:

  

  边界的最后一项是向量相乘的形式,即:

  将其输入到sigmoid函数去判断其所属类别,就有了咱们的预测函数,记为:

  根据sigmoid图像,这个预测函数输出值大于0,那么表明x(数据点)所属类别为1,不然是0(对于二分类问题)。

  可是别忘了咱们的最初的目标,这里的θ向量未知。咱们的目的是:

    肯定θ的参数值,使得咱们这个决策边界能更好地划分数据集。

  这个过程,在Andrew的课程里,被略过了,他直接给出了cost函数和J(θ)函数,而后经过梯度降低求得最优的θ参数。其中,J(θ)函数是这样的:

  利用上面的公式以及梯度降低算法,咱们就能求出θ的值。也就能求出最能拟合数据的决策边界。

  接下来就要讲讲这个公式是怎么被推导出来的。

  咱们先来看看如今咱们已经知道什么:

      一、一堆数据点+它们的类别(2类)

      二、它们的几率分布hθ(x):虽然目前θ仍然是未知参数

  咱们的目标是求出未知参数,使得每一个样本数据点属于它当前所标记的类别的几率最大。

  因而就引出了Fisher的极大似然估计

  这里就不讲极大似然估计的具体概念和公式推导了,不过仍是用个例子来形象的说明极大似然估计的做用吧:

        一个猎人和一个学生一块儿走在山路上,忽然从山间跑出一只兔子,啪一声枪响,兔子倒地而亡。问:谁最有可能杀死了兔子?

  答案显而易见:猎人。那么这里,猎人就是那个参数θ。极大似然估计的目标就是预测出待估参数,使得样本事件发生的几率最大。

  对于上述例子,用极大似然估计的思想来讲明其中的几个重要信息:

样本事件 兔子被枪杀
待估参数 射死了兔子的人(记为θ:θ属于{猎人,学生})

 

  极大似然估计就是找出最有可能杀死兔子的人。

  一样,对于本实验的一堆数据点,咱们对应着看:

 

样本事件 每一个样本数据点属于他本身的label  
待估参数 决策边界参数向量θ

        P.S.虽然样本里的每条数据都代表了数据点自己的类别,可是使用极大似然估计的时候,你并不知道样本自己所属的类别,样本数据自带的类别标签是你估计好坏的一个评价标准。换句话说,数据点全体就是一个样本事件

  接下来就是估计所须要的数学推导了。

  对于一个连续性的分布,咱们须要它的几率密度函数,在本例中,其实就是那个sigmoid函数(取值范围0-1恰好表示的是发生几率),咱们从新写在这里:

  把这两个式子写在一块儿:

 

  能够验证一下,当y=1或者y=0的时候,上式分别知足上上式。对每一个样本数据点,知足上式,因此对于群体,咱们接下来继续。

  根据极大似然估计的求解步骤,取似然函数:

    

  要求L(θ)的最大值对应的θ参数。其中m是样本数据点的个数

  连乘不容易求解,同时又容易形成下溢出。这里因为x和ln(x)单调性相同,两边取对数

  这个就是Andrew给的那个J(θ)了,惟一的区别就是,Andrew在前面乘了一个负系数,使得这里求最大值变成了最小值,从而可使用梯度降低算法。

  不过其实用本式也能够完成任务,只是用的算法就变成梯度上升了,其实没有区别。

结语

  这里安利一下《机器学习实战》这本书,真的蛮不错的,实践性很强,既入门了ML,又锻炼了动手能力。

相关文章
相关标签/搜索