看这个笔记之前,可以先看看我之前发的一个回归算法笔记,这样就能连起来啦~
有监督学习
含义
-
给算法一个数据集,其中包含了正确的答案,告诉算法啥是对的啥是错的
-
我们想要在监督学习中,对于数据集中的每个样本,我们想要算法预测,并得出正确答案
分类
二分类
介绍
-
目的是预测离散值的输出
-
例如判断是否中彩票了,是用1,否用0来代表
-
也就是 y ∈ { 0 , 1 } y\in\left \{ 0, 1\right \} y∈{0,1}
-
其中的 0 代表负类,1代表正类,此处的负和正可以是良性肿瘤恶性肿瘤,或者上面提到的是否中彩票等
-
我们可以来看一下用线性回归的思想能否适用于分类问题
-
-
在上图中可看到,红色的x轴为肿瘤大小,粉色的线为线性回归的假设函数图像。
-
发现我们只需要在假设函数等于0.5处加一根竖线(绿色的线),就可以成功的将这里的回归问题转化成了分类问题,肿瘤大小在绿线左边的都是良性的,在右边的则都是恶性的
-
这样看样子,好像线性回归的假设函数可以直接运用到分类问题里,但是如果出现了下图情况呢
-
可以看到,在右方出现了一个巨大的肿瘤,导致我们的假设函数因为这个异常值的影响,预测的不再准确
-
究其原因是因为我们线性回归的假设函数太直了,所以我们需要找出一个不那么直的函数
逻辑回归
假设函数
-
这个新函数就是 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1
-
这个函数,叫logistic函数(逻辑),也叫Sigmoid函数
-
为什么选它作为假设函数,我们来看一下它的图像就知道了
-
-
发现这个函数将输入范围(负无穷到正无穷)映射到了输出范围(0,1),很具有概率意义
-
啥叫很具有概率意义,就是相当于我们将中彩票的样本输入到这个函数中,假如函数输出了0.7,就表示有70%的可能中彩票,相应的,也就有30%到可能不中彩票
-
那逻辑回归到假设函数参数从哪里设置呢?我们来看一下线性回归的假设函数: h θ ( x ) = Θ T X h_\theta(x)=\Theta^TX hθ(x)=ΘTX
-
线性回归的参数输入就是 Θ T X \Theta^TX ΘTX
-
而逻辑回归的假设函数则有一点不一样: h θ ( x ) = g ( Θ T X ) h_\theta(x)=g(\Theta^TX) hθ(x)=g(ΘTX)
-
其中的 Θ T X \Theta^TX ΘTX 我们用z来代替,再套用sigmoid函数,则 g ( Θ T X ) = g ( z ) = 1 1 + e − z g(\Theta^TX)=g(z)=\frac{1}{1+e^{-z}} g(ΘTX)=g(z)=1+e−z1
-
我们再将刚刚那两个公式给组合一下,就可以得出正式的假设函数为: h θ ( x ) = 1 1 + e − Θ T X h_\theta(x)=\frac{1}{1+e^{-\Theta^TX}} hθ(x)=1+e−ΘTX1
-
有了这个假设函数之后,接下来就和线性回归一样了,同样是找到一个合适的 θ \theta θ 值,来使得我们的假设函数最大程度的拟合我们给定的数据集
数学公式
- 例子:假如我们的假设函数是用来预测当输入给定的特征值X,y=1的概率为多少,以肿瘤为例
- 我们给定的特征值为一个,即肿瘤尺寸 X = [ x 0 x 1 ] = [ 1 肿瘤尺寸 ] X = \begin{bmatrix}x_0\\x_1\end{bmatrix} = \begin{bmatrix}1\\肿瘤尺寸\end{bmatrix} X=[x0x1]=[1肿瘤尺寸]
- 假设通过该特征值我们得出了 h θ ( x ) = 0.7 h_\theta(x)=0.7 hθ(x)=0.7,那么这个的意思就是有0.7也就是百分之70的概率患恶性肿瘤
- 数学公式为: h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta(x)=P(y=1|x;\theta) hθ(x)=P(y=1∣x;θ),这是一个概率论里的公式
- 意思为:在给定x的条件下,y=1的概率是多少,其中的 θ \theta θ 是参数
- 通过该公式,很容易得到以下推导
- P ( y = 0 ∣ x ; θ ) + P ( y = 1 ∣ x ; θ ) = 1 P(y=0|x;\theta)+P(y=1|x;\theta)=1 P(y=0∣x;θ)+P(y=1∣x;θ)=1
- 这是啥意思呢,就是y=0的概率加上y=1的概率之和为1,就相当于抛硬币,理想状态下抛到正面和反面的概率都是百分之五十,也就是0.5,那么相加后概率自然就为1了
- 也可以把上面的式子改写一下
- P ( y = 0 ∣ x ; θ ) = 1 − P ( y = 1 ∣ x ; θ ) P(y=0|x;\theta)=1-P(y=1|x;\theta) P(y=0∣x;θ)=1−P(y=1∣x;θ),意思为y=0的概率是1-(y=1)的概率
决策边界
- 我们知道了分类问题的假设函数是什么了: h θ ( x ) = 1 1 + e − Θ T X h_\theta(x)=\frac{1}{1+e^{-\Theta^TX}} hθ(x)=1+e−ΘTX1
- 从上图可知假设函数是处于0到1之间的,当z小于0时, h θ ( x ) h_\theta(x) hθ(x) 会无限趋近于0,z大于0时,函数会无限趋近于1
- 那么现在我们需要知道,该假设函数为何值时,会把y预测为1,或者把y预测为0
- 我们照搬上面的公式: h θ ( x ) = g ( Θ T X ) = P ( y = 1 ∣ x ; θ ) h_\theta(x)=g(\Theta^TX)=P(y=1|x;\theta) hθ(x)=g(ΘTX)=P(y=1∣x;θ)
- 我们可以选定一个阀值,当
h
θ
(
x
)
≥
0.5
h_\theta(x)\ge0.5
hθ(x)≥0.5 时,就意味着预测y=1的概率大于等于0.5,也就更有可能使得y=1,所以我们就预测y=1,当
h
θ
(
x
)
<
0.5
h_\theta(x)<0.5
hθ(x)<0.5 时,同理,我们就预测y=0
- 这个阀值不是一定的,看实际情况来选择,因为我们知道,分类的假设函数算出来的模型是一个概率值,就算算出来y=1的概率是0.9,那有一万个样例的情况下,还是会有一千个样本是y=0,也就是反例,所以无论我们怎么选,误差都是存在的
- 假设按照我们这里设置的阀值0.5来说,在医疗检查中,我们用机器学习检测患者得恶性肿瘤的概率为0.49,那模型就会认为他没有患恶性肿瘤,所以在这种情况下,就会把阀值设置的小一点,比如0.2、0.3等
- 一旦患恶性肿瘤的概率超过0.3,算法就会报警,就让这个人去做个全面检查
- 再来看一下图
- 我们可以发现,当z的值大于等于0的时候,假设函数是大于等于0.5的,而我们知道z也就是 Θ T X \Theta^TX ΘTX
- 相当于只要 Θ T X ≥ 0 , g ( z ) ≥ 0.5 \Theta^TX\ge0, g(z)\ge0.5 ΘTX≥0,g(z)≥0.5,那我们就令y=1,而 Θ T X < 0 , g ( z ) < 0.5 \Theta^TX<0,g(z)<0.5 ΘTX<0,g(z)<0.5 时,我们就令y=0
- 为了更好的理解这个例子,我们来可视化一下,现在这有一个训练集
-
- 而我们的假设函数为: h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2) hθ(x)=g(θ0+θ1x1+θ2x2)
- 在这里我们假设已经拟合好了该参数,也就是我们已经找到了合适的 Θ \Theta Θ 值,如下所示
- Θ = [ − 3 1 1 ] , X = [ x 0 x 1 x 2 ] \Theta=\begin{bmatrix}-3\\1\\1\end{bmatrix},X=\begin{bmatrix}x_0\\x_1\\x_2\end{bmatrix} Θ= −311 ,X= x0x1x2
- 如上所述,当我们这里的 Θ T X ≥ 0 \Theta^TX\ge0 ΘTX≥0 时,也就是当 − 3 + x 1 + x 2 ≥ 0 -3+x_1+x_2\ge0 −3+x1+x2≥0 时,我们就预测y=1
- 再更新一下式子,也就是当 x 1 + x 2 ≥ 3 x_1+x_2\ge3 x1+x2≥3 时,我们就预测y=1
- 此时我们把 x 1 + x 2 ≥ 3 x_1+x_2\ge3 x1+x2≥3 这条线给画出来
-
- 所以 x 1 + x 2 ≥ 3 x_1+x_2\ge3 x1+x2≥3 的平面就是上图中的叉叉区域,也就是我们预测y=1的区域,而 x 1 + x 2 < 3 x_1+x_2<3 x1+x2<3 的平面自然也就是那根线下面的区域了,也就是y=0的区域
- 而这根线,就是决策边界,也可以叫决策界限,它也就是 h θ ( x ) h_\theta(x) hθ(x) 正好等于0.5的区域
-
- 它将整个区域划分为了两块
- 这里要讲清楚一个关系,决策边界并不是由训练集所决定的,而是由 Θ \Theta Θ 的取值所决定的,只要 Θ \Theta Θ 值确定了,决策边界自然也就确定了,而训练集只是我们用来拟合 Θ \Theta Θ 参数的一些样本
- 我们再来看一个更复杂的样例
-
- 面对这个样例,我们怎么找出它的决策边界呢?或者说其假设函数的参数应该是什么样的呢?
- 在线性回归那里,我们知道,当碰到一个下图训练集时,我们可以用一次函数来拟合它: h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x hθ(x)=θ0+θ1x
-
- 为什么是一次函数呢?因为一次函数是一条直线嘛,这个训练集的样本基本也都处于一条直线上,所以能用一次函数来拟合
- 而换成下面的例子,线性回归又该如何处理呢?
-
- 此时用一次函数已经不能拟合这些样本了,于是我们就会使它的假设函数变成二次函数: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 2 h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2^2 hθ(x)=θ0+θ1x1+θ2x22
- 这样,这个假设函数就能够拟合这些样本了,因为大家都知道,二次函数的曲线就是一个弧形
- 因此,我们貌似得出一个规律,越复杂的训练集,我们的假设函数需要的高阶多项式也就越多
- 而到了逻辑回归这里,我们同样也可以用增加函数次数的方法来使假设函数更拟合训练集
- 再对上面的例子来说,我们的假设函数是这样的:
- h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2) hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)
- 我们再假设已经拟合好了参数, Θ = [ − 1 0 0 1 1 ] , X = [ x 0 x 1 x 2 x 1 2 x 2 2 ] \Theta=\begin{bmatrix}-1\\0\\0\\1\\1\end{bmatrix},X=\begin{bmatrix}x_0\\x_1\\x_2\\x_1^2\\x_2^2\end{bmatrix} Θ= −10011 ,X= x0x1x2x12x22
- 这样,按照之前所说的 Θ T X ≥ 0 \Theta^TX\ge0 ΘTX≥0 ,就相当于只要 − 1 + x 1 2 + x 2 2 ≥ 0 -1+x_1^2+x_2^2\ge0 −1+x12+x22≥0 ,我们就预测y=1
- 也就是 x 1 2 + x 2 2 ≥ 1 x_1^2+x_2^2\ge1 x12+x22≥1 ,没错,就是半径为1的圆的公式
-
- 这就是该参数的决策边界,只要在圆外面的区域,我们就预测y=1,圆内的区域,我们就预测y=0
-
- 这也就更加确定了,当遇到更复杂的训练集时,通过在特征值中增加复杂的多项式,我们也可以得到更复杂的决策边界
代价函数
- 线性回归的代价函数是: J ( Θ ) = 1 m ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\Theta)=\frac{1}{m}\sum\limits_{i=1}^m\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 J(Θ)=m1i=1∑m21(hθ(x(i))−y(i))2, 而逻辑回归的假设函数为 h θ ( x ) = 1 1 + e − Θ T X h_\theta(x)=\frac{1}{1+e^{-\Theta^TX}} hθ(x)=1+e−ΘTX1
- 我们令代价值 C o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ) ( i ) − y ( i ) ) 2 Cost(h_\theta(x),y)=\frac{1}{2}(h_\theta(x)^{(i)}-y^{(i)})^2 Cost(hθ(x),y)=21(hθ(x)(i)−y(i))2 ,则 J ( Θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ) , y ) J(\Theta)=\frac{1}{m}\sum\limits_{i=1}^mCost(h_\theta(x),y) J(Θ)=m1i=1∑mCost(hθ(x),y)
- 我们先看一下可不可以将线性回归的代价值函数直接运用于逻辑回归中,会发现图像如下所示
-
- 会发现出现了很多的局部最优值,这样我们在用梯度下降法的时候,几乎不能保证可以收敛到最小值
- 因为我们在线性回归那一块的时候,代价值函数的图像是这样的
-
- 这是一个凸函数,使用梯度下降法可以非常顺畅的使得代价值函数直接收敛到最小值
- 所以我们也希望逻辑回归的代价函数可以具有这样的特质,所以这就引入了下面的代价值公式
- C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) 如果 y = 1 − l o g ( 1 − h θ ( x ) ) 如果 y = 0 Cost(h_\theta(x),y)=\begin{cases}-log(h_\theta(x))&\text{ 如果 }y=1\\-log(1-h_\theta(x))&\text{ 如果 }y=0\end{cases} Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x)) 如果 y=1 如果 y=0
- 这个公式啥啥意思捏,先来看y=1时的公式图像
-
- 这个图像的意思就是,当我们的假设函数和样本值均等于1的时候,则代价值函数就等于0,这就说明我们预测的非常准确,没有任何误差,就拿我们线性回归的代价值函数来说,预测值减去训练集中的实际y值,若预测值等于实际值,就相当于预测的十分的准,于是相减就为0,逻辑回归的代价值函数同理
- 而当实际值y=1时,我们假设函数预测的越靠近0,从图可以看出来,则代价值函数是越趋近无穷的,也就代表了是非常大的误差
-
- 再来看一下y=0时的公式图像
-
- 意思于y=1时的公式同理,当实际值是y=0时候,我们的假设函数预测它的值越靠近1,则代价值函数越大,也就代表误差越大,假设函数越靠近0,则代价值函数的误差也就越小
-
简化代价函数
- 我们先来简化一下代价函数,从上述得知,现在的代价函数如下所示
- J ( Θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ) , y ) , C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) 如果 y = 1 − l o g ( 1 − h θ ( x ) ) 如果 y = 0 J(\Theta)=\frac{1}{m}\sum\limits_{i=1}^mCost(h_\theta(x),y),\ \ \ \ \ \ Cost(h_\theta(x),y)=\begin{cases}-log(h_\theta(x))&\text{ 如果 }y=1\\-log(1-h_\theta(x))&\text{ 如果 }y=0\end{cases} J(Θ)=m1i=1∑mCost(hθ(x),y), Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x)) 如果 y=1 如果 y=0
- 这样看起来太复杂了,我们可以将代价值函数简化成: C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) Cost(h_\theta(x),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x)) Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
- 其实也不算简化,就相当于把代价值函数弄成了一行就可以表现的公式,此时的代价函数如下所示
- J ( Θ ) = − 1 m [ ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(\Theta)=-\frac{1}{m}[\sum\limits_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))] J(Θ)=−m1[i=1∑my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
梯度下降法
- 好,既然我们已经知道了逻辑回归的代价函数,那么我们就需要最小化代价函数,然后把能最小化代价函数的参数 θ \theta θ 取出来就可以获得最能拟合我们数据集的假设函数了
- 公式如线性回归一样: θ j : = θ j − α ∂ ∂ θ j J ( Θ ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\Theta) θj:=θj−α∂θj∂J(Θ)
- 然后同步更新所有的 θ j \theta_j θj 即可
- 我们对导数项进行求导后可以得出: ∂ ∂ θ j J ( Θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial\theta_j}J(\Theta)=\frac{1}{m}\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} ∂θj∂J(Θ)=m1i=1∑m(hθ(x(i))−y(i))xj(i)
- 于是公式: θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
- 更新步骤也和线性回归一致,循环更新 Θ \Theta Θ 里的值
- 其中 Θ = [ θ 0 θ 1 . . . θ n ] \Theta=\begin{bmatrix}\theta_0\\\theta_1\\...\\\theta_n\end{bmatrix} Θ= θ0θ1...θn
- 使其向量化后就是: Θ : = Θ − α m X T ( g ( X Θ ) − y ⃗ ) \Theta:=\Theta-\frac{\alpha}{m}X^T(g(X\Theta)-\vec{y}) Θ:=Θ−mαXT(g(XΘ)−y)
多元分类
一对多
- 在二元分类中,我们知道了, y ∈ ( 0 , 1 ) y\in(0,1) y∈(0,1)
- 而在多元分类中, y ∈ ( 0 , 1 , 2 ⋅ ⋅ ⋅ ⋅ n ) y\in(0,1,2····n) y∈(0,1,2⋅⋅⋅⋅n),这取决于你有多少种情况
- 例如,你的医院来了个鼻塞患者,他有可能是因为:流感(y=1)、着凉了(y=2)、压根没生病(y=3)
- 或者是天气问题:天晴(y=1)、阴天(y=2)、下雨(y=3)、下雪(y=4)
- 这些都属于多分类问题,y可以取一些离散值,上面例子里的y不一定非得是我这样的,你随便怎么标注都行,只要体现出他们属于不同类就行
- 那么如何从多种分类的情况下预测其中的一个分类呢?
- 举个例子:下图训练集有三个分类
-
- 我们可以将这仨分类给自己再分一下类,也就是下面这样样子,三角形设置成1类,而圆形设置成2类
-
- 然后我们运行一波我们之前说的二分类的分类器(也就是成功预测的假设函数),会得到下面的结果
-
- 然后我们依次对其他的类别采取同样的方法
-
-
- 最后我们会得到三个这样的假设函数
- h θ ( i ) ( x ) = P ( y = 1 ∣ x ; θ ) , ( i = 1 , 2 , 3 ) h_\theta^{(i)}(x)=P(y=1|x;\theta),\ \ \ \ \ (i=1,2,3) hθ(i)(x)=P(y=1∣x;θ), (i=1,2,3)
- 这三个假设函数会给出我们上述所说的能使三个类别为正例的概率值,我们选择其中的最大值
- 然后把它设置成我们最后的正例,也就是y等于的那个值,因为它概率最大
过拟合问题
-
从例子来讲比较好
-
-
第一个属于欠拟合
- 为啥会出现欠拟合?主要原因就是特征值和参数给的太少了,就拿这个例子来说
- 假设你这个模型就设置一个特征值,就是房子的面积,这样预测肯定是不准的,哪个房子只看尺寸就能确定价格的
-
第二个就拟合的比较好
- 参数不多不少,刚刚好
-
第三个属于过拟合
- 主要原因就是特征值给的太多了,买个房子,特征值拿一个面积和房屋个数就差不多了,你又多加一个屋子灰尘数量参数,屋子的内饰颜色啥的,这样肯定就预测不准了,因为大部分人可能都不会在意灰尘多不多,大不了扫一下就好了
-
如何优化过拟合问题
- 一、手动减少部分的特征值
- 二、正则化
- 不需要额外的去除我们的特征值
正则化
- 思想
- 举例来说,当拥有一个这样的假设函数时: h θ ( x ) = θ 0 + θ 1 x 1 + 1000 x 2 2 + 1000 x 3 3 h_\theta(x)=\theta_0+\theta_1x_1+1000x_2^2+1000x_3^3 hθ(x)=θ0+θ1x1+1000x22+1000x33
- 而假设这个假设函数: h θ ( x ) = θ 0 + θ 1 x 1 h_\theta(x)=\theta_0+\theta_1x_1 hθ(x)=θ0+θ1x1可以刚好拟合训练集
- 那么最开始那一个假设函数后面的两个额外特征值是不是就会使该函数算出来的值变大很多
- 那么怎样在不去除最后两个特征值的情况下,把这俩特征值对该函数所造成的影响最小呢
- 很简单,缩小他们的系数就行了: h θ ( x ) = θ 0 + θ 1 x 1 + 0.01 x 2 2 + 0.01 x 3 3 h_\theta(x)=\theta_0+\theta_1x_1+0.01x_2^2+0.01x_3^3 hθ(x)=θ0+θ1x1+0.01x22+0.01x33
- 这样后面两个特征值对该假设函数所造成的影响就会变小很多
- 但是一般情况下,我们并不会知道到底是哪个参数影响了我们的最后的结果,所以我们需要缩小所有参数的权重
线性回归正则化
- 所以带正则项的线性回归代价函数等于: J ( Θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ] J(\Theta)=\frac{1}{2m}[\sum\limits_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda\sum\limits_{j=1}^n\theta_j^2] J(Θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]
- 其中的lambda叫做正则化参数,是用来控制对所有theta参数的惩罚程度的,如果将其设置的过大,那么就会将所有的参数无限接近于0,最后只剩theta0了,从而导致欠拟合
- 而一旦修改了线性回归的代价函数,那么梯度下降法中的求导项也要做相应的更改
- 更改后的梯度下降: θ j : = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] \theta_j:=\theta_j-\alpha[\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j] θj:=θj−α[m1i=1∑m(hθ(x(i))−y(i))xj(i)+mλθj]
- 变更一下式子可得: θ j : = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
- 观察上式,alpha一般非常小,而m一般非常大,所以他们的乘积应该是一个非常小的数,1减去一个非常小的数,就相当于会损失一点点,比如等于0.99,这样我们再观察上式可以看到,在梯度下降法的每次迭代中,我们都把当前的theta值减少了一点点,也就是前面说的系数项,从而达到防止过拟合
逻辑回归正则化
- 带正则项的逻辑回归代价函数为: J ( Θ ) = − 1 m [ ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m θ j 2 J(\Theta)=-\frac{1}{m}[\sum\limits_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))] + \frac{\lambda}{2m}\theta_j^2 J(Θ)=−m1[i=1∑my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+2mλθj2
- 而逻辑回归的梯度下降法的步骤则是: θ j : = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] \theta_j:=\theta_j-\alpha[\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j] θj:=θj−α[m1i=1∑m(hθ(x(i))−y(i))xj(i)+mλθj]
- 这里的逻辑回归的方程和线性回归的方程一样纯粹是因为巧合,实际上两者并不是同一个方程,因为他们的假设函数是完全不同的两个函数
参考链接
- https://www.bilibili.com/video/BV1FT4y1E74V/?spm_id_from=333.337.search-card.all.click&vd_source=97163a4e6e2704667559fdbd58743862