逻辑回归问题

此系列笔记来源于

Coursera上吴恩达老师的机器学习课程


逻辑回归问题

逻辑回归问题由于历史原因,是属于分类问题的一种

下面都以二元分类问题为例

假设函数

在线性回归问题中,我们设定假设函数为hθ(x)=θTx

但在逻辑回归问 题中,如果y{0,1},那么显然hθ<0orhθ>1是不合理的。为了能有利于分类,我们便希望0hθ(x)1

因此我们设hθ=g(θTx),g(z)=11+ez,z=θTx

我们称g(z)为逻辑函数 Logistic Function 或者 Sigmoid Function

函数图像如下:

image-20220501153243759

这样对任意xR我们都可以得到hθ(x)(0,1)

而在这里的hθ(x)告诉了我们输出值为1的可能性,同时输出值为0的可能性也就是1hθ(x)

hθ(x)=P(y=1|x;θ)=1P(y=0|x;θ)

决策边界

hθ<0.5 时,我们预测 0,当 hθ0.5 时,我们预测 1。

我们很容易发现当 z<0 时,我们会得到 0,而 z0 时,我们会得到 1

根据训练集,我们拟合出 θ 后便能得到 z(x) 的表达式。从而我们便能根据 z(x)0z(x)<0 来画出图像,从而得到这一条决策边界,帮助我们划分出两块区域。

例:

image-20220501155839189

image-20220501160014457

代价函数

为了能使用梯度下降算法,我们希望代价函数是凸函数(convex),因此我们令

J(θ)=1mi=1mCost(hθ(x(i),y(i)))

Cost(hθ(x),y)=log(hθ(x))ify=1

Cost(hθ(x),y)=log(1hθ(x))ify=0

函数图像如下:

image-20220502133421730

我们可以知道当 hθ=y 时,Cost(hθ,y)=0

而当 hθtty 时,则 Cost(hθ,y)

可以理解为学习了一个错误,花了极大代价。

如此一来,我们便能令代价函数为凸函数,为了逻辑回归。

最终我们还可以简化 Cost函数,不用分类,即:

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

代价函数则为:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

向量化(vectorized) 后则为:

h=g(Xθ)

J(θ)=1m(yTlog(h)(1y)Tlog(1h))

梯度下降算法

运用到梯度算法中,公式并没有改变,区别仅在于 hθ 函数的改变。

Repeat{

θj:=θjαmi=1m(hθ(x(i))y(i))xj(i)

}

向量化后:

Repeat{

θ:=θαmXT(g(Xθ)y)

}

Advanced Optimization

"Conjugate gradient", "BFGS", and "L-BFGS"比起梯度下降更加高效,但更加复杂。我们可以通过调用相关被封装好的库函数,来代替梯度下降。

首先我们需要写一个函数,根据 θ 得到 JθθjJ(θ)

f unction [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end

之后便可以通过调用 “fminunc()”函数 和 “optimset()”函数来进行计算

options = optimset('GradObj', 'on', 'MaxIter', 100); %GradObj 'on'意味着要给该算法提供一个梯度,MaxIter 100意味着最多迭代一百次
initialTheta = zeros(2,1);
   [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

多元分类

当 y 的值拓宽到 1 - n 时,我们可以将问题转化为二元分类问题

我们设定 n 个分类器,每个分类器将第 i 个类和其他类分为两类。

即:hθi(x)=P(y=i|x;θ),i{0,1...n}

此时我们的 prediction值即为maxi(hθ(i)(x))

过度拟合 Overfitting

过度拟合指的是,根据训练集,我们设定的假设函数过度与训练集拟合,这可能会对接下来的预测产生不好的影响。

image-20220503194140675

在线性回归问题中,当我们设定的特征函数不够拟合训练集,称为 ”欠拟合“(underfitting) 或者 “高偏差“(high bias),相反过度拟合训练集时,称为”过度拟合“(overfitting) 或者 “高方差”(high variance)

而这两种情况都无法很好的预测数据的趋势。

如何解决这两种情况:

1、减少特征数量

2、正则化 Regularization

正则化 Regularization

为了去减少特征值的影响力,而不是直接删除,我们可以通过加一些项来达到这一效果。

这样一来,如果原来假设函数是一个四次函数,且我们通过正则化去减少最高两项的系数θ3θ4的值,从而使假设函数更加quadratic,那么便能得到一个更为简单的假设,更不易发生过度拟合。

同理,我们可以通过一个式子对所有 θ参数进行正则化:

$ min_\theta\frac{1}{2m}[\summ_{i=1}(h_\theta(x)-y{(i)})2+\lambda\sumn_{j=1}\theta_j2]$

λ 称为正则化参数。正则化参数过大可能会导致欠拟合,

正则化后的线性回归

梯度下降:

Repeat{

θ0:=θ0αmi=1m(hθ(x(i))y(i))x0(i)

θj:=θjα[(1mi=1m(hθ(x(i))y(i))xj(i))+λmθj],j{1,2...n}

}

在这里,λmθj便是正则化的部分。

第二个式子进行变形后可以得到:θj:=θj(1αλm)αmi=1m(hθ(x(i))y(i))xj(i)

而第一项中的 1αλm 始终小于1

正规方程

image-20220503204833428

经过证明后,我们可以得到 XTX+λL 是一定可逆的

正则化后的逻辑回归

代价函数

image-20220503214201416

梯度计算

Jθj=1mi=1m((hθ(x(i))y(i))xj(i))+λmθj,forj1

梯度下降

Repeat{

θ0:=θ0αmi=1m(hθ(x(i))y(i))x0(i)

θj:=θjα[(1mi=1m(hθ(x(i))y(i))xj(i))+λmθj],j{1,2...n}

}

posted @   Yra  阅读(188)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示