大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
在一个多分类问题,预测变量 y y 可以取
k
个离散值中的任何一个,即 y∈{
1,2,⋯,k} y ∈ { 1 , 2 , ⋯ , k } 。
例如:在一个邮件分类系统将邮件分为私人邮件,工作邮件和垃圾邮件。由于 y y 仍然是一个离散值,这种多分类问题,二分类模型在这里不太适用。
多分类问题符合多项分布。有许多算法可用于解决多分类问题,像决策树、朴素贝叶斯等。本文主要讲解多分类算法中的Softmax回归(Softmax Regression)
推导思路为:首先证明多项分布属于指数分布族,这样就可以使用广义线性模型来拟合这个多项分布,由广义线性模型推导出的目标函数
h θ (x)
即为Softmax回归的分类模型。
多项式分布属于指数分布族的推导
下面将根据多项式分布建模。考虑样本共有 k k 类,每一类的概率分别为
ϕ 1 ,⋯,ϕ k
,由于 ∑ i=1 k ϕ i =1 ∑ i = 1 k ϕ i = 1 ,所以通常我们只需要 k−1 k − 1 个参数即 ϕ 1 ,⋯,ϕ k−1 ϕ 1 , ⋯ , ϕ k − 1 。
P(y=i;ϕ)=ϕ i P(y=k;ϕ)=1−∑ i=1 k−1 ϕ i (397) (397) P ( y = i ; ϕ ) = ϕ i P ( y = k ; ϕ ) = 1 − ∑ i = 1 k − 1 ϕ i
为了推导方便,引入表达式:
T(1)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 100⋮0 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , T(2)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 010⋮0 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , ⋯, T(k−1)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 000⋮1 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , T(k)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 000⋮0 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ T ( 1 ) = [ 1 0 0 ⋮ 0 ] , T ( 2 ) = [ 0 1 0 ⋮ 0 ] , ⋯ , T ( k − 1 ) = [ 0 0 0 ⋮ 1 ] , T ( k ) = [ 0 0 0 ⋮ 0 ]
上面 T(y) T ( y ) 是 k−1 k − 1 维列向量,其中 y=1, 2, ⋯, k y = 1 , 2 , ⋯ , k ; T(y) i T ( y ) i 表示向量 T(y) T ( y ) 的第 i i 个元素。
还要引入表达式
1{⋅}
,如果大括号里面为真,则真个表达式就为1,否则为0。
ture}=1 ; 1{
false }=0 1 { t u r e } = 1 ; 1 { f a l s e } = 0
例如:1{2=3} = 0和1{3=3} = 1.
则上面的
k k
个向量就可以表示为:
T(y) i =1{ y=i }
因为
y y
只能属于某一个类别,于是
T(y)
中只能有一个元素为1其他元素都为0,可以求出
k−1 k − 1
个元素的期望:
即:
多项式分布表达式转为指数分布族表达式推导过程如下:
y=1} 1 ϕ 1{
y=2} 2 ⋯ϕ 1{
y=k} k =ϕ T(y) 1 1 ϕ T(y) 2 2 ⋯ϕ T(y) k−1 k−1 ⋅ϕ T(y) k k =ϕ T(y) 1 1 ϕ T(y) 2 2 ⋯ϕ T(y) k−1 k−1 ⋅ϕ 1−∑ i=1 k−1 T(y) i k =exp(T(y) 1 logϕ 1 +⋯+(1−∑ i=1 k−1 T(y) i )logϕ k ) =exp(T(y) 1 logϕ 1 ϕ k +T(y) 2 logϕ 2 ϕ k +⋯+T(y) k−1 logϕ k−1 ϕ k +logϕ k ) =b(y)exp(η T T(y)−a(η)) (398)(399)(400)(401)(402)(403) (398) P ( y ; ϕ ) = ϕ 1 1 { y = 1 } ϕ 2 1 { y = 2 } ⋯ ϕ k 1 { y = k } (399) = ϕ 1 T ( y ) 1 ϕ 2 T ( y ) 2 ⋯ ϕ k − 1 T ( y ) k − 1 ⋅ ϕ k T ( y ) k (400) = ϕ 1 T ( y ) 1 ϕ 2 T ( y ) 2 ⋯ ϕ k − 1 T ( y ) k − 1 ⋅ ϕ k 1 − ∑ i = 1 k − 1 T ( y ) i (401) = exp ( T ( y ) 1 log ϕ 1 + ⋯ + ( 1 − ∑ i = 1 k − 1 T ( y ) i ) log ϕ k ) (402) = exp ( T ( y ) 1 log ϕ 1 ϕ k + T ( y ) 2 log ϕ 2 ϕ k + ⋯ + T ( y ) k − 1 log ϕ k − 1 ϕ k + log ϕ k ) (403) = b ( y ) exp ( η T T ( y ) − a ( η ) )
其中
多项分布可以表示为指数分布的格式,所以它属于指数分布族,那么就可以用广义线性模型来拟合这个多项式分布模型。
Softmax函数(Softmax Function)
在使用广义线性模型拟合这个多项式分布模型之前,需要先推导一个函数,这个函数在广义线性模型的目标函数中会用到。这个函数称为Softmax函数(Softmax Function)。
由 η η 表达式可得:
这是
η i η i
关于
ϕ i ϕ i
的表达式,把它转化为
ϕ i ϕ i
关于
η i η i
的表达式过程为:
所以
代入上面式子,所以
此函数称为
Softmax函数(Softmax Function)。
使用广义线性构建模型
根据广义线性模型的假设3:
由假设2可得
y=1}1{
y=2}⋮1{
y=k−1} |x;θ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ =⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ϕ 1 ϕ 2 ⋮ϕ k−1 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ =⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ exp(θ T 1 x)∑ j=1 k exp(θ T j x) exp(θ T 2 x)∑ j=1 k exp(θ T j x) ⋮exp(θ T k−1 x)∑ j=1 k exp(θ T j x) ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ (480)(481) (480) h θ ( x ) = E [ T ( y ) | x ; θ ] = E [ 1 { y = 1 } 1 { y = 2 } ⋮ 1 { y = k − 1 } | x ; θ ] (481) = [ ϕ 1 ϕ 2 ⋮ ϕ k − 1 ] = [ exp ( θ 1 T x ) ∑ j = 1 k exp ( θ j T x ) exp ( θ 2 T x ) ∑ j = 1 k exp ( θ j T x ) ⋮ exp ( θ k − 1 T x ) ∑ j = 1 k exp ( θ j T x ) ]
就是输出了
x∈{
1,2,⋯,k−1} x ∈ { 1 , 2 , ⋯ , k − 1 }
中每一类的概率,当然属于第
k k
类的概率就是:
1−∑ i=1 k−1 ϕ i
.
下面开始拟合参数,同样使用最大化参数θ的对数似然函数:
接下来使用梯度下降和牛顿法均可。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182893.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...