逻辑回归原理解析


逻辑回归

逻辑回归模型

逻辑回归表达式:

$$h_\theta(x) = g(\theta^Tx)$$
$$z = \theta^Tx$$
$$g(z) = {1\over 1+e^{-z}}$$
综上,$$h_\theta(x) = {1\over 1+e^{-\theta^Tx}}$$



sigmoid函数:



选择题1:



接下来我们深入的来理解下这个sigmoid函数。通过图可以知道:

  • 如果想要判断预测分类$\color{red}{y=1}$,则必须保证$\color{red}{h_\theta(x)>=0.5}$,这里如果用$g(z)$来代替$h_\theta(x)$的话也即$g(z)>=0.5$,则对应的$x$轴则是$z>=0$,所以转换过来也即是$\color{red}{\theta^Tx>=0}$。
  • 如果想要判断预测分类$\color{red}{y=0}$,则必须保证$\color{red}{h_\theta(x)<0.5}$,这里如果用$g(z)$来代替$h_\theta(x)$的话也即$g(z)<0.5$,则对应的$x$轴则是$z<0$,所以转换过来也即是$\color{red}{\theta^Tx<0}$。


决策边界

  • 对于线性回归:假设$\theta$矩阵中的$\theta_0,\theta_1,\theta_2$已经确定,也就是$\theta^Tx$确定了,那么就会确定一条直线,比如图中的$\color{red}{x_1 + x_2 = 3}$这条直线,我们可以利用这条直线来确定一个边界,边界的一侧是y=1类,另一侧则是y=0类。

  • 对于非线性回归:假设$\theta$矩阵已经确定,也就是$\theta^Tx$确定了,那么就会确定一条曲线,比如图中的$\color{red}{x_3^2 + x_4^2 = 1}$这条曲线,我们可以利用这条曲线来确定一个边界,边界的外侧是y=1类,内侧则是y=0类。


代价函数:

我们由线性代价函数来引入,可以看到,如果将各个单个值的序号去掉那么线性的代价函数无非就是${1\over 2}(h_\theta(x)-y)^2$这个表达式,然而此时我们将线性代数的假设函数$h_\theta(x)$替换成了sigmoid函数,如果继续按着之前的表达式求它的代价cost的话那么它的函数曲线将会是一个“非凸”函数(non-convex),而非一个碗型的“凸”函数(convex)。所以,对于逻辑回归我们将会采用新的代价函数。如下图:

  • 对于$\color{red}{y=1}$来说:

此时的cost计算公式为:$$Cost(h_\theta(x)) = -log(h_\theta(x))$$

因为$h_\theta(x)$是sigmoid函数,所以它的值域为(0,1),故我们只讨论横坐标$h_\theta(x)$在(0,1)范围内的costJ代价的变化。

如果$y=1,h_\theta(x)=1$,那么就可以说我的预测值与实际值是无偏差的,可以说是$cost=0$,但是假如$y=1,h_\theta(x)=0$,那么意味着我的预测值与实际值是有很大偏差的,那么就要惩罚学习算法让它的代价变大,于是对应上图就可明白,当横坐标$h_\theta(x)=1$时,曲线确实cost=0,而当$h_\theta(x)=0$时,cost趋于了无穷大。

  • 对于$\color{red}{y=0}$来说:

此时的cost计算公式为:$$Cost(h_\theta(x)) = -log(1-h_\theta(x))$$

同样$h_\theta(x)$的值域为(0,1),所以我们只讨论横坐标在(0,1)的范围内的cost的变化。如果$y=0$,$h_\theta(x)=0$,那么就可以说我的预测值与实际值是无偏差的,可以说是$cost=0$,但是假如$y=0$,$h_\theta(x)=1$,那么意味着我的预测值与实际值是有很大偏差的,那么就要惩罚学习算法让它的代价变大,于是对应上图就可明白,当横坐标$h_\theta(x)=0$时,曲线确实cost=0,而当$h_\theta(x)=1$时,cost趋于了无穷大。

有时,我们也把上面的函数写成一个表达式:

$$Cost(h_\theta(x)) = -ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))$$

如果x和y变成多维,则代价函数变为:

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

$\color{red}{注意}$:上面是Andrew NG直接给出的cost function,并没有给出推导,这里我把具体的cost function由来给写一下供大家参考:

对于Logistic regression,$h_\theta(x)$函数代表的是等于1的概率,所以有如下的条件概率分布:

$$P(Y=1|x) = {1\over 1 + e^{-\theta^Tx}} = h_\theta(x)$$

$$P(Y=0|x) = 1-{1\over 1 + e^{-\theta^Tx}} = 1 - h_\theta(x)$$

那么将两个式子合并起来写在一起就是:
$$P(Y|x) = h_\theta(x)^y(1-h_\theta(x))^{1-y}$$
对上面这个式子求似然函数:
$$L(\theta) = \prod_{i=1}^{m}{P(Y_i|x_i)} = \prod_{i=1}^{m}{h_\theta(x_i)^{y_i}(1-h_\theta(x_i))^{1-y_i}}$$
在对上面的似然函数求对数为:
$$l(\theta) = logL(\theta) = \sum_{i=1}^{m}[{y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))}]$$
如果想求最优解则对上式求极大值时下的$\theta$,则此时运用的是梯度上升法,但是在Andrew NG的课程中使用的是梯度下降算法,故有:
$$J(\theta) = -{1\over m}l(\theta) = -{1\over m}[\sum_{i=1}^{m}y^{(i)}log(h_\theta(x^{(i)})) + (1-y^{(i)})log(1-h_\theta(x^{(i)}))]$$即为所求。



选择题2:



选择题3:



梯度下降



选择题4:



选择题5:

解析

  • 也可写成如下


优化梯度下降算法

在Octave中,用此方法来替代梯度下降算法,因为此优化算法不用人为指定conjugate:

  • 不需进行学习速率$\alpha$,所以可以将此算法看成是加强版的选择。
  • 通常比梯度下降算法快。


选择题6:

多分类

多分类的一种方法是采用“one-vs-all”的方法将多种类别区分:具体思想是针对每一个类别可以训练分类器以区分是否为该类,这样如果有$k$个类别,那么就会训练出$k$个模型。

然后如果想要预测$test$到底为哪一类别时,将$test$分别输入到这$k$个模型中,哪一类的输出概率最大就分类为哪一类。



选择题7:



小节测试题1:



小节测试题2:




小节测试题3:



小节测试题4:



小节测试题5:

解析

  • 线性回归是用来拟合数据对数据进行预测属于回归,但是逻辑回归是用来分类的属于分类。而区分类别是根据$h_\theta(x)$与0.5的关系,也就是$\theta^Tx$与0的关系,所以题中的$\theta^Tx$即为$-x+6$,所以当$x-6>0$时为$y=1$类,反之为$y=0$类。
  • 但是算法复杂。
    ### 多分类

解决过拟合问题

过拟合

产生过拟合问题的原因:数据集的特征非常多并且数据集很小。



选择题1:



如何解决过拟合:
1、减少特征的数量

  • 手动的选择要保留的特征。
  • 模型选择算法(会自动的选择要保留的特征,之后会讲到)

2、正则化

  • 保留所有的特征,并减小$\theta_j$的值或数量级

带正则化项的cost function

如图所示,将之前的cost function加上一个正则化项:
$$J(\theta)={1\over2}[\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^{n}\theta_j^2]$$

注意到,后面的正则项是从$j=1$开始的,不包括$\theta_0$。参数$\lambda$叫做正则化项参数,用来减小$\theta_j$的值,当$\lambda$很大时,$\theta_j$都会变得很小。所以就相当于只剩下$\theta_0$了。



选择题2:


带有正则化项的线性回归

  • 在梯度下降方法中
    如图,

在带有正则项的线性回归的梯度下降中,可以将$\theta$的更新分成两部分,一部分是$\theta_0$,另一部分是$\theta_j,j=1,2,3...$,而后者可以等价于:
$$\theta_j = \theta_j(1-\alpha{\lambda\over m})-\alpha{1\over m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$



选择题3:


  • 在正规方程中

在正规方程中,正则化项为一个$(n+1)*(n+1)$的矩阵。


带有正则项的逻辑回归

在逻辑回归中,cost function带有了正则项后就变成这样:
$$J(\theta)=-[{1\over m}\sum_{i=1}^{m}y^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]+{\lambda\over 2m}\sum_{j=1}^{n}\theta_j^2$$
于是,随后的计算梯度就变成了这样,但一定要注意的是$\color{red}{j=0}$与$\color{red}{j=1}$是不同的。

${\partial J(\theta)\over \partial\theta_0} = {1\over m}\sum_{i=1}^m{(h_\theta(x^{(i)})-y^{(i)})}x_j^{(i)}$ $\color{red}{for\ j=0}$

${\partial J(\theta)\over \partial\theta_0} = ({1\over m}\sum_{i=1}^m{(h_\theta(x^{(i)})-y^{(i)})}x_j^{(i)})+{\lambda\over m}\theta_j$ $\color{red}{for\ j>=1}$



选择题4:

时间: 2024-10-31 03:35:32

逻辑回归原理解析的相关文章

逻辑回归那些事—使用牛顿法解决实际问题

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 前言 在本篇博客中,我们要介绍的是牛顿法的原理,并且将之应用到实际的逻辑回归问题中.逻辑回归的主要知识点包括伯努利分布的对数似然和用来平滑的sigmoid函数. 我们还要介绍Hession,这是一个二阶偏导的方阵.看完了本片博客,您就知道如何使用Hession结合梯度来实现牛顿法. 和之前的博客一样,我们这篇也将从牛顿法的整体概述.数学推导以及编程实现几个方面展开.最终将理论和实践的结合,灵活运用牛顿法解决逻

Android中微信抢红包插件原理解析及开发思路_Android

一.前言 自从去年中微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导致了.或许是网络的原因,而且这个也是最大的原因.但是其他的不可忽略的因素也是要考虑到进去的,比如在手机充电锁屏的时候,我们并不知道有人已经开始发红包了,那么这时候也是让我们丧失了一大批红包的原因.那么关于网络的问题,我们开发者可能用相关技术无法解决(当然在Google和Facebook看来的话,他们

Android代码入侵原理解析(一)

Android代码入侵原理解析(一)           1.代码入侵原理 代码入侵,或者叫代码注入,指的是让目标应用/进程执行指定的代码.代码入侵,可以在应用进行运行过程中进行动态分析,也是对应用进行攻击的一种常见方式.我把代码入侵分为两种类型:静态和动态.静态代码入侵是直接修改相关代码,在应用启动和运行之前,指定代码就已经和应用代码关联起来.动态代码入侵是应用启动之后,控制应用运行进程,动态加载和运行指定代码. 2.静态代码入侵 静态代码入侵,有直接和间接的手段. 直接手段是修改应用本身代码

数据挖掘之--啥都不会到逻辑回归

QQ交流群:127591054 JackChiang QQ:595696297 欢迎大家来交流. 作者经历:17年7月刚毕业的童孩~~16年底实习半年在做DBA,中途有变,想把数据挖掘作为自己的长远职业,也就是职业规划定位:数据挖掘.偏爱做数据分析,没办法.但是!但是!但是!挖掘的门槛真的好高!好高!好高!快毕业的时候辞去在电信的工作,来了一场说走就走的旅途,一个人!!!去了云南,带上仅有的200块钱!!!(大家别张嘴,我在飞猪报的团),云南很美!就不发图了. 回来开始找工作,真的很难!很难!很

秋色园QBlog技术原理解析:性能优化篇:access的并发极限及超级分库分散并发方案(十六)

上节回顾:   上节 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五) 中, 介绍了 秋色园QBlog 在性能优化方面,从技术的优化手段,开始步入数据库设计优化,并从数据的使用情况上进行了分析,从而将文章内容进行分离,得到新的分表,由于内容比较大,进而分了库,达到一种基础减压.   本节内容:   本节将介绍秋色园 QBlog 的Super分库方案,以及何以如此Super分库的原因.   描述说明:   在进行上了上节的分库方案后,虽然感觉一度秋色园QBlog的访

SQL Server 内存数据库原理解析

原文:SQL Server 内存数据库原理解析 前言 关系型数据库发展至今,细节上以做足文章,在寻求自身突破发展的过程中,内存与分布式数据库是当下最流行的主题,这与性能及扩展性在大数据时代的需求交相辉映.SQL Server作为传统的数据库也在最新发布版本SQL Server 2014中提供了新利器 SQL Server In-Memory OLTP(Hekaton),使得其在OLTP系统中的性能有了几十倍甚至上百倍的性能提升,本篇文章为大家探究一二.         大数据时代的数据如何组织应

Java类加载原理解析

1       基本信息 摘要: 每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载.Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助. 由于关于java类加载的内容较多,所以打算分三篇文章简述一下: 第一篇:java类

秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL   附说: 为了加快 秋色园 和 CYQ.Data 数据框架 的开源速度及更好的发展, 目前正在寻找开源团队成员,有意向创业加入者, 欢迎点击看此贴:秋色园[CYQ.Data]开源团队寻人   OK

秋色园QBlog技术原理解析:页面内容填充及多语言翻译流程演示示例(十)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建