吴恩达机器学习6-逻辑回归

吴恩达机器学习6-逻辑回归

1.分类问题

如判断一封电子邮件是否是垃圾邮件:答案只有两种 是或不是

如果使用线性回归,如下图:
在这里插入图片描述

函数的输出值可能远大于 1,或者远小于 0,不便于判断

引入逻辑回归:

在这里插入图片描述

算法的性质是:它的输出值永远在 0 到 1 之间

当ℎ𝜃(𝑥) >= 0.5时,预测 𝑦 = 1。

当ℎ𝜃(𝑥) < 0.5时,预测 𝑦 = 0 。

2.sigmod函数引入

为避免线性回归导致的问题,所以引入sigmod函数,它的输出值永远在 0 到 1 之间:

在这里插入图片描述

在此基础上引入一个新的模型,逻辑回归,该模型的输出变量范围始终在 0 和 1 之间。 逻辑回归模型的假设是:

𝜃(𝑥) = 𝑔(𝜃𝑇𝑋)

其中: 𝑋 代表特征向量 𝑔 代表逻辑函数(logistic function)是一个常用的逻辑函数为 S 形函数(Sigmoid function),公式为: g ( z ) = 1 1 + e − 2 g(z)=\frac{1}{1+e^{-2}} g(z)=1+e21

𝜃(𝑥) = 𝑃(𝑦 = 1|𝑥; 𝜃)

在逻辑回归中,预测:

当ℎ𝜃(𝑥) >= 0.5时,预测 𝑦 = 1。

当ℎ𝜃(𝑥) < 0.5时,预测 𝑦 = 0

故:

当𝜃𝑇𝑥 >= 0 时,预测 𝑦 = 1

当𝜃𝑇𝑥 < 0 时,预测 𝑦 = 0

在这里插入图片描述

3.决策界限:

通俗来说,就是分隔开不同类别,比如:

线性分类:
在这里插入图片描述
非线性分类:
在这里插入图片描述

4.代价函数

相比于线性回归,逻辑回归中也有优化目标或者叫代价函数,

给出如下样本集和逻辑回归模型:
在这里插入图片描述

传统的代价函数(线性回归中的):

 Linear regression:  J ( θ ) = 1 m ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 \text { Linear regression: } \quad J(\theta)=\frac{1}{m} \sum_{i=1}^{m} \frac{1}{2}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}  Linear regression: J(θ)=m1i=1m21(hθ(x(i))y(i))2

cost函数:将是一个非凸函数,这意味着代价函数有许多局部最小值,不利于梯度下降法的求解。

Cost ⁡ ( h θ ( x ( i ) ) , y ( i ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 \operatorname{Cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right)=\frac{1}{2}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} Cost(hθ(x(i)),y(i))=21(hθ(x(i))y(i))2

在这里插入图片描述

重新定义的代价函数:

J ( θ ) = 1 m ∑ i = 1 m Cost ⁡ ( h θ ( x ( i ) ) , y ( i ) ) J(\theta)=\frac{1}{m} \sum_{i=1}^{m} \operatorname{Cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right) J(θ)=m1i=1mCost(hθ(x(i)),y(i))

cost函数:

Cost ⁡ ( h θ ( x ) , y ) = { − log ⁡ ( h θ ( x ) )  if  y = 1 − log ⁡ ( 1 − h θ ( x ) )  if  y = 0 \operatorname{Cost}\left(h_{\theta}(x), y\right)=\left\{\begin{aligned}-\log \left(h_{\theta}(x)\right) & \text { if } y=1 \\-\log \left(1-h_{\theta}(x)\right) & \text { if } y=0\end{aligned}\right. Cost(hθ(x),y)={log(hθ(x))log(1hθ(x)) if y=1 if y=0

对应图像:
在这里插入图片描述
这样构建的 Cost ⁡ ( h θ ( x ) , y ) \operatorname{Cost}\left(h_{\theta}(x), y\right) Cost(hθ(x),y) 函数的特点是: 当实际的 y=1 且 h θ ( x ) h_{\theta}(x) hθ(x) 也为 1 时误差为 0 , 当 y=1 但 h θ ( x ) h_{\theta}(x) hθ(x) 不为 1 时误差随着 h θ ( x ) h_{\theta}(x) hθ(x) 变小而变大; 当实际的 y=0 且 h θ ( x ) h_{\theta}(x) hθ(x) 也为 0 时 代价为 0 , 当 y=0 但 h θ ( x ) h_{\theta}(x) hθ(x) 不为 0 时误差随着 h θ ( x ) h_{\theta}(x) hθ(x) 的变大而变大。

将构建的 Cost ⁡ ( h θ ( x ) , y ) \operatorname{Cost}\left(h_{\theta}(x), y\right) Cost(hθ(x),y) 简化如下:
Cost ⁡ ( h θ ( x ) , y ) = − y × log ⁡ ( h θ ( x ) ) − ( 1 − y ) × log ⁡ ( 1 − h θ ( x ) ) \operatorname{Cost}\left(h_{\theta}(x), y\right)=-y \times \log \left(h_{\theta}(x)\right)-(1-y) \times \log \left(1-h_{\theta}(x)\right) Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))
带入代价函数得到:
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) log ⁡ ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ]  即:  J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J(\theta)=\frac{1}{m} \sum_{i=1}^{m}\left[-y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)-\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right] \\ \text { 即: } J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right] J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))] J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

5.梯度下降

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

R e p e a t { θ j : = θ j − α ∂ ∂ θ j J ( θ ) ( s i m u l t a n e o u s l y u p d a t e a l l θ j ) Repeat \left\{\theta_{j}: = \theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J(\theta)\right. (simultaneously update all \theta_{j} ) Repeat{θj:=θjαθjJ(θ)(simultaneouslyupdateallθj)
} \} }
求导后得到:
R e p e a t { θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ( s i m u l t a n e o u s l y u p d a t e a l l θ j ) Repeat \left\{\theta_{j}: = \theta_{j}-\alpha \frac{1}{m} \sum_{i = 1}^{m}\left(h_{\theta}\left(\mathrm{x}^{(i)}\right)-\mathrm{y}^{(i)}\right) \mathrm{x}_{j}^{(i)}\right. (simultaneously update all \theta_{j} ) Repeat{θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)(simultaneouslyupdateallθj)
} \} }

推导过程(统计学:极大似然法 了解):
在这里插入图片描述

编程举例:

在这里插入图片描述

function [jVal, gradient]=costFunction(theta)
 jVal=(theta(1)-5)^2+(theta(2)-5)^2;
 gradient=zeros(2,1);
 gradient(1)=2*(theta(1)-5);
 gradient(2)=2*(theta(2)-5);
end

注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的ℎ𝜃(𝑥) = 𝑔(𝜃𝑇𝑋)与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。

6.高级算法

除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS) ,fminuncmatlaboctave中都带的一个最小值优化函数。

function [jVal, gradient] = costFunction(theta)
 jVal = [...code to compute J(theta)...];
 gradient = [...code to compute derivative of J(theta)...];
end
options = optimset('GradObj', 'on', 'MaxIter', '100');
initialTheta = zeros(2,1);
 
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

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

7.推广到一对多问题

如果你正在做有关天气的机器学习分类问题,那么你可能想要区分哪些天是晴天、多云、雨天,那么有3个分类。

为了能实现这样的转变, 我们将多个类中的一个类标记为正向类 (y=1) , 然后将其 他所有类都标记为负向类, 这个模型记作 h θ ( 1 ) ( x ) h_{\theta}^{(1)}(x) hθ(1)(x) 。接着, 类似地第我们选择另一个类标记为 正向类 (y=2) , 再将其它类都标记为负向类, 将这个模型记作 h θ ( 2 ) ( x ) h_{\theta}^{(2)}(x) hθ(2)(x) , 依此类推。 最后我们得到一系列的模型简记为: h θ ( i ) ( x ) = p ( y = i ∣ x ; θ ) 其 中 : i = ( 1 , 2 , 3 … k ) \quad h_{\theta}^{(i)}(x)=p(y=i \mid x ; \theta) 其中: i=(1,2,3 \ldots k) hθ(i)(x)=p(y=ix;θ):i=(1,2,3k)

在这里插入图片描述

最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值