吴恩达机器学习笔记(六):Logistic Regression(逻辑回归)
吴恩达机器学习笔记(六):Logistic Regression(逻辑回归)
利用线性回归进行二元分类
当数据分布于图中的两个部分时,常规的,我们利用线性回归会这样做:尝试在两个部分数据之间画出一条线,将整个数据分布图分成两个部分,并且设置一个阈值,当输入一个x的输出值y大于阈值的时候,他是A类,否则就是b类。
利用线性回顾做二元分类存在的缺陷
上面关于二元分类问题的处理,看起来比较能work,但是,看下面这个例子。
图中右上角的样本点啊,我们可以很明显的知道他是一个很“正确的”点,因为它的output是远远大于阈值点的,所以这样的点我们的模型无需为它做过多的考虑,但是悄悄相反的是,因为linear regression会考虑每一个样本,且这样的‘偏远’点更会让模型做出考虑,使其从原来的品红线–>蓝色线。这样一来,整体样本的划分就会产生很大的改变,使原来一些可能是positive的点变为negative,这样是很坏的,因为对于我们预测对的正确且十分正确点而做出调整,显然是不合理的。

Logistic Regression
因此,我们有了逻辑回归。
虽然名字里带有一个regression,但是事实上这是一个classification。
classification就是,输出的结果是1或者0,形成两个分类。
而logistic regression所做的就是,输出一个概率(0~1)之间,这个概率可以这样去理解
输入一个一个值x,用这个是代入模型,从而得到输出是1(或者0)的概率是多少。
Logistic Regression Model
若要把所有的数据的输出值压缩到0~1这个样本空间,我们一般采用sigmoid方程

假设函数在做什么?
正如我们上面说到的,这里的hypothesis function其实是在说:估计当输入值为x时,输出y=1的概率为多少。 
Decision Boundary
如何判断一个样本是否应该归于这一类?
采用decision boundary,粗略地讲,我们可以这样规定当h(x)>0.5时,y=1,当h(x)<0.5的时候,y=0.

更细致的,我们可以找出h(x)的具体函数表达式,h(x)=g(θ0+θ1x1+θ2x2),这里我们可以取θ=[-3,1,1]
然后我们可以得到h(x)=-3+x1+x2,所以由上面的h(x)>0,我们就可以画出一条分界线,来将样本分为两类,这条界线也就是decision boundary。
更复杂的,在遇到一些比较复杂的情况时,我们的decision boundary可能并不是线性的,他可以是光滑的曲线,可以是一个类似动物的图案。。。

Cost function
在linear regression中我们的cost function使用的最小化平方差函数(MSE)来求最优的θ,那是否可以在logistic regression中沿用这个方法呢?
先来看如果运用了会是什么样的:

图中左边部分便是logistic regression 使用 MSE 的函数图像,很明显这是一个非凹函数,有许多的局部最优值,会导致cost function在找最优值的时候非常缓慢甚至可能找不到最优解而仅仅只找到一个局部最优解,并非全局最优,这样心爱你个驴就大大折扣,我们需要的函数图像是一个像右边所示的凹函数,这样的函数既可以让gradient很好地work,也能为找到全局最优解做一个更好的保障。
所以我们如何来找到这么一个Cost function呢?
这里我们采用交叉熵来作为logistic regression的cost function。
可以证明,采用交叉熵的cost function是高度连续可导的,所以一定是凹函数,符合我们的期望。

上图中是将y=1和y=0两种情况分开来看的,下面我们将讨论更一般的情况,将两种情况糅合成一个方程:

稍微做一下数学计算,就可以发现这个cost function是满足要求的。
优化算法
有了cost function,就可以对参数进行优化了,这里我们依旧采用gradient decent来做。
不断地优化参数θ:

Logistic Regression如何处理一对多的问题
这是说,如果不是二元分类,而是三元四元等多元分类的时候,应该怎么做。
以三元分类微例子:

我们这样来分:

分成三个二元分类,然后train3个h(x)
在分类的时候,把分别代入三个h(x),哪一个的值最大就是属于那一类。
over!个人总结;感觉logistic regression主要做的就是一个概率,通过概率来进行分类划分。
疑难点:要区分logistics regression与linear regression的h(x)的区别。
2022.3.6
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)