(吴恩达机器学习)Logistic 回归

逻辑回归提出的原因:

对于分类问题,为什么不能用我们之前学习的线性回归算法来解决呢?有以下两点:
1:不能很好地说明实际情况的真正意义
2:函数值可能大于1或者小于0(对于二类分类0,1)

假设函数:

为了使函数值在0~1之间,假设函数h(x)从h(x) = θ’x换为 h(x) = g(θ’x)
其中g(z)=1/(1+e^-z)

h(x)的含义为:对于给定的输入x,y=1的概率为多少? 如下图所示:

这里写图片描述

由h(x)的含义可知,我们可以得到:
P(y=1|x;θ) = h(x)
P(y=0|x;θ) = 1-h(x)

代价函数:

对于线性回归问题,代价函数如下所示:
这里写图片描述
但是若对于逻辑回归问题(分类)同样使用上面的代价函数的话,将会发现J并不是一个凸函数(这里不进行说明),函数中间会存在很多的局部最优解,这对我们使用梯度下降算法来说不是很好。所以要改变逻辑回归问题的代价函数,如下:
这里写图片描述
对于为什么逻辑回归的代价函数是上图所示的原因,我先不进行解释,也许是上面的e^-z和下面的log(z)函数相对应了。这里我们先对上面的代价函数进行验证,看它是否能够满足我们问题的实际要求,即预测的好代价小,预测的差代价大。

(1):这里写图片描述代价函数如图所示:
这里写图片描述
当y=1时
h(x)的值越接近1,代表结果为1的可能性越大,预测值和实际值相符,代价函数值也越趋于0。当h(x)越接近0时,代表预测的结果越差,所以代价函数值越大,满足要求。

(2):这里写图片描述代价函数如图所示:
这里写图片描述
同理,也满足实际要求。

所以逻辑回归算法的整体代价函数如下分段函数:
这里写图片描述
将分段函数整合后,如下所示:
这里写图片描述

逻辑回归的梯度下降算法如下:
这里写图片描述
经过计算偏导数项,逻辑回归梯度下降具体计算过程如下:
这里写图片描述

你会惊讶的发现,现在逻辑回归的迭代计算过程和线性回归的一模一样!(可能是数学家的总结),不过它们的h(x)的表达式改变了。

高级算法对梯度下降的引用:fminunc函数

对于不同的问题,使用梯度下降算法,它们之间的不同点在于
1:所选的代价函数不同,因此它们对每个参数的偏导数的计算结果也不同。
2:达到最优点,迭代的次数不同。
并且通过学习梯度下降算法,我们知道对于各个参数的偏导数其实只用求解一次表达式即可,后面每次迭代只用代入不同的参数值即可。
而有关具体的迭代更新过程,都是相同的,学习率也可以进行自动选择,因此这些相同的过程可以使用一个高级算法函数来表示,再像此函数输入不同的参数(不同点)即可,fminunc就是这样的函数。
这里写图片描述
上图就是使用fminunc函数的一个简单的例子。我们只需要在costFunction中写出代价函数J的表达式,并计算出每一个参数的偏导数表达式,设置引用外部代价函数,设置最大的迭代数为100,初始化theta向量即可。
fminunc函数会返回:最优的theta值、代价函数的最小值、函数是否收敛的信息。

下图为写costFunction函数的一般步骤:
这里写图片描述

一对多分类算法

这里写图片描述

如上图所示,现在有多分类问题(三角形,矩形,叉)。我们知道一个逻辑回归函数只能将样本分为不同的两类0和1,并且h(x)的值表示样本为1的概率。现在对于多类问题,我们的处理是用不同的预测函数hi(x)计算出新的样本属于每一类的概率,最后选定概率最大的类。

对于上图问题,我们先将三角形看为1类,其他的看为0类,这就变成了我们熟悉的二类问题了,通过拟合样本训练得到h1(x),可以计算出新的样本为三角形这一类的概率。对于矩形和叉同理,训练出的h2(x),h3(x)分别表示新的样本为矩形或叉这一类的概率。最后比较三个函数值的大小,将新样本归为最大值的那一类。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值