机器学习之逻辑回归和softmax 回归及代码⽰例
⼀、逻辑回归
在 机器学习之线性回归 中,我们可使⽤梯度下降梯度下降的⽅法得到⼀个映射函数映射函数 来去贴近样本点,这个函数是对连续值的⼀个预测。
⽽逻辑回归是解决分类问题的⼀个算法,我们可以通过这个算法得到⼀个映射函数 ,其中 为特征向量,, 为预测的结果。在逻辑回归这⾥,标签 为⼀个离散值。
⼆、判定边界
当将训练集的样本以其各个特征为坐标轴在图中进⾏绘制时,通常可以到某⼀个 判定边界 去将样本点进⾏分类。例如:
线性判定边界
线性判定边界:⾮线性判定边界
⾮线性判定边界:在图中,样本的标记类型有两种类型,⼀种为正样本,另⼀种为负样本,样本的特征 和 为坐标轴。根据样本的特征值,可将样本绘制在图上。
在图中,可到某个 判定边界 来对不同标签的样本进⾏划分。根据这个判定边界,我们可以知道哪些样本是正样本,哪些样本为负样本。
因此我们可以通过学习得到⼀个⽅程 来表⽰ 判定边界,即 判定边界 为 的点集。(可以看作是等⾼超平⾯等⾼超平⾯)
其中 ,为保留 中的常数项,令特征向量 。
为使得我们的边界可以⾮线性化,对于特征 可以为特征的⾼次幂或相互的乘积。
对于位于判定边界上的样本,其特征向量 可使得 。因此,判定边界 是 满⾜ 的特征向量 表⽰的点的集合。
三、⼆分类和sigmoid 函数
在上⾯,可以通过到⼀个判定边界来区别样本的标签,得到⼀个⽅程 来表⽰判定边界。
对于 ⼆分类问题
⼆分类问题,即样本标签的类型只有两种类型。当样本标记的类型只有两种时,其中⼀类的样本点在 判定边界的⼀边,其会有,⽽另⼀类的样本会在判定边界的另⼀边,会有 。
当样本点离 判定边界 越远时, 的绝对值越⼤于0,这时样本的标签是某种类型的概率会很⼤,可能会等于1;当样本点离 判定边界 越近时,的接近0,样本的标签是某种类型的概率会在0.5左右。
因此,我们可以将 函数 转换 为⼀种概率函数,通过概率来判断样本的标签是某⼀种类型的概率会是多少。⽽这种 转换 可以使⽤ sigmoid 函数函数来实现 :
h θ(X)(X)h θf :X →y f :X →y X X X={x0,x1,x2,…,xn}X ={,,,…,}x 0x 1x 2x n y y y y x0x 0x1x 1E θ(X)=0(X)=0E θE θ(X)=0(X)=0E θE θ(X)=XT θ
(X)=θE θX T θ={θ0,θ1,θ2,...,θn}θ={,,,...,}θ0θ1θ2θn E θ(X)=0(X)=0E θX={1,x1,x2,…,xn}X ={1,,,…,}x 1x 2x n xi x i X X E θ(X)=0(X)=0E θE θ(X)=0(X)=0E θX X E θ(X)=0(X)=0E θE θ(X)>0(X)>0E θE θ(X)<0(X)<0E θE θ(X)(X)E θE θ(X)(X)E θE θ(X)(X)E θg(z)=11+e−z g(z)=11+e −z
sigmoid 函数图像
函数图像如下:从sigmoid 函数图像可看出:当z 为0左右时,函数值为0.5左右;z 越⼤于0时,函数值越⼤于0.5越收敛于1;z 越⼩于0时,函数值越⼩于0.5越收敛于0。
因此,sigmoid 函数可适⽤于在⼆分类问题中将 函数 转换为概率函数。
当时,样本标记的类型为某⼀类型的概率会⼤于0.5;当时,样本标记的类型为某⼀类型的概率会⼩于0.5;当 约等于 0时,样本标记的类型为某⼀类型的概率会在0.5左右。
在⼆分类问题中,可以到逻辑回归函数,判定边界
可看作 时的等⾼线。
四、损失函数
由上⾯,到了⼆分类问题中的⼀个逻辑回归函数 。
在逻辑回归函数中,特征向量系数 是未知的,需要从样本中学习得来的。当从样本中学习得到⼀个特征向量系数 时,怎么知道它对应的 函数的预测能⼒会更好?判断更准确?因此,需要⼀个损失函数来表⽰逻辑回归函数 的好坏程度。
1. 定义
在⼆分类问题中,若⽤ 的值 表⽰正样本的概率正样本的概率,且 ,需要的损失函数应该是这样的:
1. 当样本标签的类型是正类型时,若该样本对应的 值为1时,即为正类型的概率为1,这时候损失函数
值应为0;若该样本对应的 值为0.0001时,即为正样本的概率为0.0001,这时候损失函数值应该是⼀个很⼤的值。
2. 当样本标记的类型是负类型时,若该样本对应的 值为0时,即为正样本的概率为0,这时损失函数值应为0;若该样本对应的 值为0.9999时,即为正样本的概率为0.9999,这时候损失函数值应该是⼀个很⼤的值。
因此⼆分类问题中,为满⾜这种需求,对于单个样本来说,其损失函数损失函数可以表⽰为:
( 的值表⽰正样本的概率)
其中 y = 1 表⽰样本为正样本,y = 0 表⽰样本为负样本。
结合起来的写法:
上式的代价函数也称作:交叉熵代价函数交叉熵代价函数
对于训练集所有样本来说,共同造成的损失函数的均值 可以表⽰为:
将 Cost 函数 代⼊ 中:
对于样本来说,其标记y 为1 (正样本)或为 0(负样本),对于预测概率函数 来说,预测到样
E θ(X)(X)E θE θ(X)>0(X)>0E θE θ(X)<0(X)<0E θE θ(X)(X)E θh θ(X)=sigmoid( E θ(X) )(X)=sigmoid( (X) )
h θE θh θ(X)=0.5(X)=0.5h θθθθθh θ(X)(X)h θh θ(X)(X)h θh θ(X)(X)h θh θ(X)∈(0,1)(X)∈(0,1)h θh θ(X)(X)h θh θ(X)(X)h θh θ(X)(X)h θh θ(X)(X)h θh θ(X)(X)h θJ θ(X)(X)J θJ θ(X)(X)J θh θ(X)(X)h θ
本为正样本的概率值在0到1之间。
2. 极⼤似然估计
上述的损失函数 也可以通过极⼤似然估计极⼤似然估计来求得:以 的值 表⽰正样本的概率正样本的概率,且以 y = 1 表⽰ 正样本 ,y = 0 表⽰ 负样本,则有:
合并上述两个式⼦则有:
对m 个样本,求极⼤似然估计:
取对数似然估计:
对数似然取极值(极⼤值)时的 θ 取值便是我们想要的,因此需要对⽬标函数 进⾏最⼤化,即相当于 对 上述的 进⾏最⼩化:。
3. 正则化
同时,当预测概率函数 过拟合,会导致⾼次项的特征向量系数 过⼤(因为为
分清每个样本点的类型时会使得它⾜够的扭曲,这种扭曲通常由⾼次项的特征向量系数造成)。因此,为防⽌过拟合可以添加正则化项,即在损失函数的后⾯加个“尾巴”。
添加L2正则化项后的损失函数表⽰为:
五、最⼩化损失函数
在上⾯得到了 ⼆分类问题 的逻辑回归的损失函数 。为达到不错的分类效果,需要对损失函数进⾏最⼩化。
与 线性回归 相类似的是,这⾥的损失函数也是⼀个凸函数,因此,可以通过梯度下降法梯度下降法来得到合适的特性系数向量Θ。
同样,上式中的a 为学习率(下⼭步长)。将上式的偏导展开,可得:
⾮正则化的损失函数的偏导:
含正则化项的损失函数的偏导:
(X)
θJ θ(X)(X)J θh θ(X)(X)h θP(y=1|x;θ)=h θ(x)P(y=0|x;θ)=1−h θ(x)P (y =1|x;θ)P (y =0|x;θ)=(x)h θ=1−(x)
h θp(y | x;θ)=(h θ(x))y(1−h θ(x))1−y p (y | x;θ)=((x))h θy (1−(x))
h θ1−y L(θ)=∏i=1mp(yi|xi;θ)=∏i=1m(h θ(xi))yi(1−h θ(xi))1−yi L(θ)=p (|;θ)
∏i=1m y i x i =∏i=1m (())h θx i y i (1−())
h θx i 1−y i
l(θ)=logL(θ)=∑i=1myilogh θ(xi)+(1−yi)log(1−h θ(xi))
l(θ)=log L(θ)
=log ()+(1−)log(1−())
∑i=1m y i h θx i y i h θx i h θ(X)=11+e−XT θ
(X)=h θ1
1+e −θX T l(θ)l(θ)J(θ)J(θ)l(θ)=−J(θ)l(θ)=−J(θ)h θ(X)(X)h θθi θi E θ(X)=0(X)=0E θJ θ(X)(X)J θ
其中 λ 为正则化的强度。
同线性回归般,可以通过学习率a 对特征系数向量中的元素不断进⾏迭代,直到元素值收敛到某⼀值即可,这时可以得到损失函数较⼩时的特征向量系数Θ。
六、从⼆分类过渡到多分类
在上⾯,我们主要使⽤逻辑回归解决⼆分类的问题,那对于多分类的问题,也可以⽤逻辑回归来解决?
1. one vs rest
由于概率函数 h Θ(X) 所表⽰的是样本标记为某⼀类型的概率,但可以将⼀对⼀(⼆分类)扩展为⼀对多(one vs rest ):
1. 将类型class1看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的
概率p1;
2. 然后再将另外类型class2看作正样本,其他类型全部看作负样本,同理得到p2;正则化解决过拟合
3. 以此循环,我们可以得到该待预测样本的标记类型分别为类型class i 时的概率pi ,最后我们取pi 中最⼤的那个概率对应的样本标记类型作为我们的待预测样本类型。
2. softmax 函数
使⽤softmax 函数
函数构造模型解决多分类问题。softmax 回归分类器需要学习的函数为 :
其中 k 个 类别的个数 ,
和 为 第 i 个 类别对应的 权重向量 和 偏移标量。其中 可看作样本 X 的标签 为 第 j 个 类别的概率,且有
。与 logistic 回归 不同的是,softmax 回归分类模型会有多个的输出,且输出个数 与 类别个数 相等,输出为样本 X 为各个类别的概率 ,最后对样本进⾏预测的类型为 概率最⾼ 的那个类别。
我们需要通过学习得到 和 ,因此建⽴⽬标损失函数为:
上式的代价函数也称作:对数似然代价函数对数似然代价函数。
在⼆分类的情况下,对数似然代价函数 可以转化为 交叉熵代价函数。
其中 m 为训练集样本的个数,k 为 类别的个数, 为⽰性函数,当
为真时,
函数值为 1 ,否则为 0 ,即 样本类别正确时,函数值才为 1 。
利⽤ 对数的性质 ,将 损失函数 展开有:继续展开:
通过 梯度下降法 最⼩化损失函数 和 链式偏导,使⽤ 对 求偏导:化简可得:
再次化简可有:
log(ab)=log(a)−log(b)log()=log(a)−log(b)a b
因此由梯度下降法进⾏迭代:
同理通过梯度下降法最⼩化损失函数也可以得到的最优值。
同逻辑回归⼀样,可以给损失函数加上正则化项。
3. 选择的⽅案
当标签类别之间是互斥时,适合选择softmax回归分类器 ;当标签类别之间不完全互斥时,适合选择建⽴多个独⽴的logistic回归分类器。
4. tensorflow代码⽰例:
使⽤softmax回归对sklearn中的digit⼿写数据进⾏分类
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论