学习笔记——机器学习–多项式分布及Softmax回归模型推导[通俗易懂]

学习笔记——机器学习–多项式分布及Softmax回归模型推导[通俗易懂]在一个多分类问题,预测变量yyy可以取kkk个离散值中的任何一个,即y∈{1,2,⋯,k}y∈{1,2,⋯,k}y\in\{1,2,\cdots,k\}。例如:在一个邮件分类系统将邮件分为私人邮件,工作邮件和垃圾邮件。由于yyy仍然是一个离散值,这种多分类问题,二分类模型在这里不太适用。多分类问题符合多项分布。有许多算法可用于解决多分类问题,像决策树、朴素贝叶斯等。本文主要讲解多分类算…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

  在一个多分类问题,预测变量 y  y 可以取
k 


k

个离散值中的任何一个,即 y{
1,2,,k}
 
y ∈ { 1 , 2 , ⋯ , k }

例如:在一个邮件分类系统将邮件分为私人邮件,工作邮件和垃圾邮件。由于 y  y 仍然是一个离散值,这种多分类问题,二分类模型在这里不太适用。

  多分类问题符合多项分布。有许多算法可用于解决多分类问题,像决策树、朴素贝叶斯等。本文主要讲解多分类算法中的Softmax回归(Softmax Regression)

推导思路为:首先证明多项分布属于指数分布族,这样就可以使用广义线性模型来拟合这个多项分布,由广义线性模型推导出的目标函数
h θ (x) 





h




θ





(


x


)

即为Softmax回归的分类模型。

多项式分布属于指数分布族的推导

  下面将根据多项式分布建模。考虑样本共有 k  k 类,每一类的概率分别为
ϕ 1 ,,ϕ k  





ϕ




1





,





,





ϕ




k




,由于  i=1 k ϕ i =1  ∑ i = 1 k ϕ i = 1 ,所以通常我们只需要 k1  k − 1 个参数即 ϕ 1 ,,ϕ k1   ϕ 1 , ⋯ , ϕ k − 1
 P(y=i;ϕ)=ϕ i   P(y=k;ϕ)=1 i=1 k1 ϕ i   (397)  (397) P ( y = i ; ϕ ) = ϕ i   P ( y = k ; ϕ ) = 1 − ∑ i = 1 k − 1 ϕ i  
为了推导方便,引入表达式:
T(1)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 1000 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , T(2)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 0100 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ , , T(k1)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 0001 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ,  T(k)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ 0000 ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥   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 ) k1  k − 1 维列向量,其中 y=1, 2, , k  y = 1 ,   2 ,   ⋯ ,   k T(y) i   T ( y ) i 表示向量 T(y)  T ( y ) 的第 i  i 个元素。

  还要引入表达式
1{} 


1


{





}

,如果大括号里面为真,则真个表达式就为1,否则为0。

1{
 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 } 


T





(


y


)




i





=


1


{


 


y


=


i


 


}



因为

y  y
只能属于某一个类别,于是


T(y) 


T


(


y


)


中只能有一个元素为1其他元素都为0,可以求出

k1  k − 1
个元素的期望:


E[T(y) i ]= y=1 k T(y) i ϕ i = y=1 k 1(y=i)ϕ i =ϕ i   E [ T ( y ) i ] = ∑ y = 1 k T ( y ) i ϕ i = ∑ y = 1 k 1 ( y = i ) ϕ i = ϕ i



即:


E[T(y) i ]=P(y=i)=ϕ i   E [ T ( y ) i ] = P ( y = i ) = ϕ i



多项式分布表达式转为指数分布族表达式推导过程如下:


 P(y;ϕ)=ϕ 1{
y=1}
 
1 
ϕ 1{
y=2}
 
2 
ϕ 1{
y=k}
 
k 
           =ϕ T(y) 1  1 ϕ T(y) 2  2 ϕ T(y) k1  k1 ϕ T(y) k  k            =ϕ T(y) 1  1 ϕ T(y) 2  2 ϕ T(y) k1  k1 ϕ 1 i=1 k1 T(y) i  k            =exp(T(y) 1 logϕ 1 ++(1 i=1 k1 T(y) i )logϕ k )           =exp(T(y) 1 logϕ 1 ϕ k  +T(y) 2 logϕ 2 ϕ k  ++T(y) k1 logϕ k1 ϕ 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 ( η ) )



其中


η=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ logϕ 1 ϕ k  logϕ 2 ϕ k  logϕ k1 ϕ k   ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ R k1 ,  a(η)=log(ϕ k ),  b(y)=1  η = [ log ⁡ ϕ 1 ϕ k log ⁡ ϕ 2 ϕ k ⋮ log ⁡ ϕ k − 1 ϕ k ] ∈ R k − 1 ,     a ( η ) = − log ⁡ ( ϕ k ) ,     b ( y ) = 1



  多项分布可以表示为指数分布的格式,所以它属于指数分布族,那么就可以用广义线性模型来拟合这个多项式分布模型。

Softmax函数(Softmax Function)

  在使用广义线性模型拟合这个多项式分布模型之前,需要先推导一个函数,这个函数在广义线性模型的目标函数中会用到。这个函数称为Softmax函数(Softmax Function)。
η  η 表达式可得:

η i =logϕ i ϕ k    η i = log ⁡ ϕ i ϕ k



这是

η i   η i
关于

ϕ i   ϕ i
的表达式,把它转化为

ϕ i   ϕ i
关于

η i   η i
的表达式过程为:


e η i  =ϕ i ϕ k      ϕ k e η i  =ϕ i    ϕ k  i=1 k e η i  =  i=1 k ϕ i =1  e η i = ϕ i ϕ k     ⇒     ϕ k e η i = ϕ i     ⇒   ϕ k ∑ i = 1 k e η i =   ∑ i = 1 k ϕ i = 1



所以


ϕ k =1 i=1 k e η i     ϕ k = 1 ∑ i = 1 k e η i



代入上面式子,所以


ϕ i =e η i   j=1 k e η j     ϕ i = e η i ∑ j = 1 k e η j



此函数称为
Softmax函数(Softmax Function)

使用广义线性构建模型

  根据广义线性模型的假设3:

η i =θ T i x  (i=1, ,k1)  η i = θ i T x     ( i = 1 ,   … , k − 1 )



由假设2可得


 h θ (x)=E[T(y)|x;θ]=E⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ 1{
y=1}
1{
y=2}
1{
y=k1}
 
 
|x;θ 
⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ 
          =⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ϕ 1 ϕ 2 ϕ k1  ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥  =⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ exp(θ T 1 x) j=1 k exp(θ T j x) exp(θ T 2 x) j=1 k exp(θ T j x) exp(θ T k1 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,,k1}
 
x ∈ { 1 , 2 , ⋯ , k − 1 }

中每一类的概率,当然属于第

k  k
类的概率就是:


1 i=1 k1 ϕ i  


1










i


=


1




k





1








ϕ




i






.

  下面开始拟合参数,同样使用最大化参数θ的对数似然函数:


 l(θ)= i=1 m logP(y (i) ∣ ∣ x (i) ;θ)       = i=1 m log l=1 k e θ T l x (i)   j=1 k e θ T j x (i)    (482)(483)  (482) l ( θ ) = ∑ i = 1 m log ⁡ P ( y ( i ) | x ( i ) ; θ ) (483)               = ∑ i = 1 m log ⁡ ∏ l = 1 k e θ l T x ( i ) ∑ j = 1 k e θ j T x ( i )



接下来使用梯度下降和牛顿法均可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182893.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • jQuery实现手机竖直手风琴效果

    效果:http://hovertree.com/texiao/jquery/65/效果图:手机扫描二维码查看效果:代码:转自:http://hovertree.com/h/bjaf/vk9yjrp

    2021年12月23日
  • 局域网城域网广域网和互联网的区别_局域网的互联设备有哪些

    局域网城域网广域网和互联网的区别_局域网的互联设备有哪些网络按照其所覆盖的地区范围分为以下四类(简要介绍): 1.局域网2.城域网3.广域网4.互联网  一.局域网 当一个单位需要将位于某个范围有限,行政可控的区域内的大量联网设备通过一种高速的方式相互连接起来,就需要通过组建一个局域网让这些设备实现相互通信(范围有限可以是一所高校,一个餐厅,一个家庭等) 局域网具有以下特点1.范围有限2.行政可控3.速率高4.安全性高 …

    2022年10月10日
  • python基础(7)内置函数divmod用法

    python基础(7)内置函数divmod用法前言我们都知道,python中//代表整数运算中的取整,%代表整数运算中的取余,那么有什么函数可以同时取到整数和余数吗?答案是有的,使用python内置函数divmoddivmod首先看一下源

  • 【C#】 Mutex简单示例

    【C#】 Mutex简单示例Mutex简单示例:namespaceMutexTest{classProgram{//用于Mutex的TeststaticvoidMain(string[]args){System.Security.Cryptography.MD5md5=newSystem.Securi…

  • 进程调度时间片轮转例题_进程调度算法java

    进程调度时间片轮转例题_进程调度算法java一、实验目的(1)加深对进程的理解(2)理解进程控制块的结构(3)理解进程运行的并发性(4)掌握时间片轮转法进程调度算法二、实验原理(1)建立进程控制块(2)设计两个链队列,分别表示就绪队列和完成队列(3)用户输入进程标识符,进程到达时间,进程所需的时间,申请空间存放进程,PCB信息。(

    2022年10月28日
  • QuoteName\生成Sql语句

    QuoteName\生成Sql语句ifexists(selectnamefromtempdb.dbo.sysobjectswhereid=object_id(N’tempdb.dbo.#tempWorkDate’)andtype=’u’)droptable#tempWorkDateCREATETABLE[#tempWorkDate]([WorkDate][varc…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号