softmax 回归原理及python实现

softmax回归python实现程序

1、Logistic回归:

1.1、逻辑回归数据集

[(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))] [ ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) ]

y{0,1} y ∈ { 0 , 1 }

1.2、 样本发生的概率,即y取1的概率:

hθ(x)=11+exp(θx) h θ ( x ) = 1 1 + e x p ( − θ ⋅ x )

1.3、整个样本的似然函数为:

  • 似然函数
    L=hθ(x(i))y(i)(1hθ(x(i)))1y(i) L = ∏ h θ ( x ( i ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i )
  • 对数似然函数为:
    logL=i=1m(y(i)log(hθ(x(i))+(1y(i))log(1hθ(x(i)))) l o g L = ∑ i = 1 m ( y ( i ) l o g ( h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) )

1.4、代价函数,及代价函数偏导:

  • 代价函数
    J(θ)=1mi=1m(y(i)log(hθ(x(i))+(1y(i))log(1hθ(x(i)))) 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(θ)θj=1m(i=1m(y(i)hθ(x(i)))x(i)) ∂ J ( θ ) ∂ θ j = − 1 m ( ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x ( i ) )

1.5、梯度下降更新参数:

θj:=:=θjαJ(θ)θjθj+αm(i=1m(y(i)hθ(x(i)))x(i)j)(1)(2) (1) θ j := θ j − α ∂ J ( θ ) ∂ θ j (2) := θ j + α m ( ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) )

1.6、对参数L2正则化

  • L2 对 于 逻 辑 回 归 , L 2 正 则 化 之 后 , 损 失 函 数 为
    J(θ)=1m(i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))+λ2mj=1nθ2 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 = 1 n θ 2
  • θ θ 迭 代 更 新 公 式 为
    θj:=θj+αm(i=1m(y(i)hθ(x(i))x(i)j)αλmθj(j=1,...,n) θ j := θ j + α m ( ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) x j ( i ) ) − α λ m θ j ( j = 1 , . . . , n )

    θjx θ j 为 每 列 x 对 应 的 参 数 , 为 一 个 数

2、softmax回归:

2.1、softmax回归数据集

[(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))]y{0,1,...,k}(3)(4) (3) [ ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) ] (4) y ∈ { 0 , 1 , . . . , k }

x(m)x x ( m ) 表 示 x 的 一 行 数 据 , 可 能 包 含 多 列 , 是 一 个 向 量

2.2、softmax概率函数

hθ(x(i))=p(y(1)=1|x(i);θ)p(y(1)=2|x(i);θ)p(y(1)=k|x(i);θ)=1kj=1exp(θTjx(i))exp(θT1x(i))exp(θT2x(i))exp(θTkx(i)) h θ ( x ( i ) ) = [ p ( y ( 1 ) = 1 | x ( i ) ; θ ) p ( y ( 1 ) = 2 | x ( i ) ; θ ) ⋮ p ( y ( 1 ) = k | x ( i ) ; θ ) ] = 1 ∑ j = 1 k e x p ( θ j T x ( i ) ) [ e x p ( θ 1 T x ( i ) ) e x p ( θ 2 T x ( i ) ) ⋮ e x p ( θ k T x ( i ) ) ]
p1l=exp(θTlx(1))kj=1exp(θTjx(1)),l=1,2,,k p 1 l = e x p ( θ l T x ( 1 ) ) ∑ j = 1 k e x p ( θ j T x ( 1 ) ) , l = 1 , 2 , ⋯ , k
P=p11p21pm1p12p22pm2p1kp2kpmk P = [ p 11 p 12 ⋯ p 1 k p 21 p 22 ⋯ p 2 k ⋮ ⋮ ⋮ ⋮ p m 1 p m 2 ⋯ p m k ]

θk×(n+1) θ 为 一 个 k × ( n + 1 ) 的 矩 阵

θ=θT1θT2θTk θ = [ θ 1 T θ 2 T ⋮ θ k T ]

2.3、softmax回归的损失函数为:

J(θ)=1m[i=1mj=1k1{y(i)=j}logexp(θTjx(i))kl=1exp(θTlx(i))] J ( θ ) = − 1 m [ ∑ i = 1 m ∑ j = 1 k 1 { y ( i ) = j } l o g e x p ( θ j T x ( i ) ) ∑ l = 1 k e x p ( θ l T x ( i ) ) ]


  • 损失函数的矩阵形式为:
    Jθ=1msum(Y logP) J θ = − 1 m s u m ( Y ⊙   l o g P )
  • 对Y相应的解释
    y=1100k y = [ 1 1 0 0 k ]

    对应Y为
    Y=001101100000001 Y = [ 0 1 ⋯ 0 0 1 ⋯ 0 1 0 ⋯ 0 1 0 ⋯ 0 0 0 ⋯ 1 ]

y=k 则第k列数字对应1,其余列为0.

2.4、softmax回归损失函数的偏导为:

θjJ(θ)====1m[i=1mj=1k1{y(i)=j}kl=1exp(θTlx(i))exp(θTjx(i))(exp(θTjx(i))kl=1exp(θTlx(i)))]1m[i=1mkl=1exp(θTlx(i))exp(θTjx(i))1{y(i)=j} exp(θTjx(i)) kl=1exp(θTlx(i))exp(θTjx(i)) exp(θTjx(i))(kl=1exp(θTlx(i)))2 x(i)]1m[i=1m(1{y(i)=j}exp(θTjx(i))kl=1exp(θTlx(i))) x(i)]1m[i=1m(1{y(i)=j}p(y(i)=j|x(i);θ)) x(i)](5)(6)(7)(8) (5) ▽ θ j J ( θ ) = − 1 m [ ∑ i = 1 m ∑ j = 1 k 1 { y ( i ) = j } ∑ l = 1 k e x p ( θ l T x ( i ) ) e x p ( θ j T x ( i ) ) ( e x p ( θ j T x ( i ) ) ∑ l = 1 k e x p ( θ l T x ( i ) ) ) ′ ] (6) = − 1 m [ ∑ i = 1 m ∑ l = 1 k e x p ( θ l T x ( i ) ) e x p ( θ j T x ( i ) ) 1 { y ( i ) = j }   e x p ( θ j T x ( i ) )   ∑ l = 1 k e x p ( θ l T x ( i ) ) − e x p ( θ j T x ( i ) )   e x p ( θ j T x ( i ) ) ( ∑ l = 1 k e x p ( θ l T x ( i ) ) ) 2   x ( i ) ] (7) = − 1 m [ ∑ i = 1 m ( 1 { y ( i ) = j } − e x p ( θ j T x ( i ) ) ∑ l = 1 k e x p ( θ l T x ( i ) ) )   x ( i ) ] (8) = − 1 m [ ∑ i = 1 m ( 1 { y ( i ) = j } − p ( y ( i ) = j | x ( i ) ; θ ) )   x ( i ) ]
  • 矩阵形式为:
    θJ(θ)=1m(YP)TX ▽ θ J ( θ ) = − 1 m ( Y − P ) T X

    (YP)m×k,Xm×(n+1) ( Y − P ) 维 度 为 m × k , X 为 m × ( n + 1 )

2.5、对参数正则化处理

  • 损失函数:
    J(θ)=1m[i=1mj=1k1{y(i)=j}logexp(θTjx(i))kl=1exp(θTlx(i))]+λ2j=1kb=0nθ2jb J ( θ ) = − 1 m [ ∑ i = 1 m ∑ j = 1 k 1 { y ( i ) = j } l o g e x p ( θ j T x ( i ) ) ∑ l = 1 k e x p ( θ l T x ( i ) ) ] + λ 2 ∑ j = 1 k ∑ b = 0 n θ j b 2
  • 损失函数关于 θj θ j 的偏导为:

θjJ(θ)=1m[i=1m(1{y(i)=j}p(y(i)=j|x(i);θ)) x(i)]+λ θj ▽ θ j J ( θ ) = − 1 m [ ∑ i = 1 m ( 1 { y ( i ) = j } − p ( y ( i ) = j | x ( i ) ; θ ) )   x ( i ) ] + λ   θ j

2.6、更新参数

θj:=θjαθjJ(θ) j=1,2,...,k θ j := θ j − α ▽ θ j J ( θ )   j = 1 , 2 , . . . , k

θj θ j 为 一 个 向 量

矩阵更新:

θ:=θθJ(θ) θ := θ − ▽ θ J ( θ )

θ θ 为一个矩阵

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值