softmax 回归原理及python实现
2017-01-17 14:05
253 查看
softmax回归python实现程序
y∈{0,1}
L=∏hθ(x(i))y(i)(1−hθ(x(i)))1−y(i)
对数似然函数为:
logL=∑i=1m(y(i)log(hθ(x(i))+(1−y(i))log(1−hθ(x(i))))
J(θ)=−1m∑i=1m(y(i)log(hθ(x(i))+(1−y(i))log(1−hθ(x(i))))
代价函数的偏导数:
∂J(θ)∂θj=−1m(∑i=1m(y(i)−hθ(x(i)))x(i))
J(θ)=−1m(∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+λ2m∑j=1nθ2
θ迭代更新公式为
θj:=θj+αm(∑i=1m(y(i)−hθ(x(i))x(i)j)−αλmθj(j=1,...,n)
θj为每列x对应的参数,为一个数
x(m)表示x的一行数据,可能包含多列,是一个向量
p1l=exp(θTlx(1))∑kj=1exp(θTjx(1)),l=1,2,⋯,k
P=⎡⎣⎢⎢⎢⎢⎢p11p21⋮pm1p12p22⋮pm2⋯⋯⋮⋯p1kp2k⋮pmk⎤⎦⎥⎥⎥⎥⎥
θ为一个k×(n+1)的矩阵
θ=⎡⎣⎢⎢⎢⎢⎢θT1θT2⋮θTk⎤⎦⎥⎥⎥⎥⎥
损失函数的矩阵形式为:
Jθ=−1msum(Y logP)
对Y相应的解释
y=⎡⎣⎢⎢⎢⎢⎢⎢1100k⎤⎦⎥⎥⎥⎥⎥⎥
对应Y为
Y=⎡⎣⎢⎢⎢⎢⎢⎢0011011000⋯⋯⋯⋯⋯00001⎤⎦⎥⎥⎥⎥⎥⎥
y=k 则第k列数字对应1,其余列为0.
矩阵形式为:
▽θJ(θ)=−1m(Y−P)TX
(Y−P)维度为m×k,X为m×(n+1)
J(θ)=−1m⎡⎣∑i=1m∑j=1k1{y(i)=j}logexp(θTjx(i))∑kl=1exp(θTlx(i))⎤⎦+λ2∑j=1k∑b=0nθ2jb
损失函数关于θj的偏导为:
▽θjJ(θ)=−1m[∑i=1m(1{y(i)=j}−p(y(i)=j|x(i);θ)) x(i)]+λ θj
θj为一个向量
矩阵更新:
θ:=θ−▽θJ(θ)
θ为一个矩阵
1、Logistic回归:
1.1、逻辑回归数据集
[(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))]y∈{0,1}
1.2、 样本发生的概率,即y取1的概率:
hθ(x)=11+exp(−θ⋅x)1.3、整个样本的似然函数为:
似然函数L=∏hθ(x(i))y(i)(1−hθ(x(i)))1−y(i)
对数似然函数为:
logL=∑i=1m(y(i)log(hθ(x(i))+(1−y(i))log(1−hθ(x(i))))
1.4、代价函数,及代价函数偏导:
代价函数J(θ)=−1m∑i=1m(y(i)log(hθ(x(i))+(1−y(i))log(1−hθ(x(i))))
代价函数的偏导数:
∂J(θ)∂θj=−1m(∑i=1m(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.6、对参数L2正则化
对于逻辑回归,L2正则化之后,损失函数为:J(θ)=−1m(∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+λ2m∑j=1nθ2
θ迭代更新公式为
θj:=θj+αm(∑i=1m(y(i)−hθ(x(i))x(i)j)−αλmθj(j=1,...,n)
θj为每列x对应的参数,为一个数
2、softmax回归:
2.1、softmax回归数据集
[(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))]y∈{0,1,...,k}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);θ)⎤⎦⎥⎥⎥⎥⎥=1∑kj=1exp(θTjx(i))⎡⎣⎢⎢⎢⎢⎢exp(θT1x(i))exp(θT2x(i))⋮exp(θTkx(i))⎤⎦⎥⎥⎥⎥⎥p1l=exp(θTlx(1))∑kj=1exp(θTjx(1)),l=1,2,⋯,k
P=⎡⎣⎢⎢⎢⎢⎢p11p21⋮pm1p12p22⋮pm2⋯⋯⋮⋯p1kp2k⋮pmk⎤⎦⎥⎥⎥⎥⎥
θ为一个k×(n+1)的矩阵
θ=⎡⎣⎢⎢⎢⎢⎢θT1θT2⋮θTk⎤⎦⎥⎥⎥⎥⎥
2.3、softmax回归的损失函数为:
J(θ)=−1m⎡⎣∑i=1m∑j=1k1{y(i)=j}logexp(θTjx(i))∑kl=1exp(θTlx(i))⎤⎦损失函数的矩阵形式为:
Jθ=−1msum(Y logP)
对Y相应的解释
y=⎡⎣⎢⎢⎢⎢⎢⎢1100k⎤⎦⎥⎥⎥⎥⎥⎥
对应Y为
Y=⎡⎣⎢⎢⎢⎢⎢⎢0011011000⋯⋯⋯⋯⋯00001⎤⎦⎥⎥⎥⎥⎥⎥
y=k 则第k列数字对应1,其余列为0.
2.4、softmax回归损失函数的偏导为:
▽θjJ(θ)====−1m⎡⎣∑i=1m∑j=1k1{y(i)=j}∑kl=1exp(θTlx(i))exp(θTjx(i))(exp(θTjx(i))∑kl=1exp(θTlx(i)))′⎤⎦−1m⎡⎣∑i=1m∑kl=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)]矩阵形式为:
▽θJ(θ)=−1m(Y−P)TX
(Y−P)维度为m×k,X为m×(n+1)
2.5、对参数正则化处理
损失函数:J(θ)=−1m⎡⎣∑i=1m∑j=1k1{y(i)=j}logexp(θTjx(i))∑kl=1exp(θTlx(i))⎤⎦+λ2∑j=1k∑b=0nθ2jb
损失函数关于θj的偏导为:
▽θjJ(θ)=−1m[∑i=1m(1{y(i)=j}−p(y(i)=j|x(i);θ)) x(i)]+λ θj
2.6、更新参数
θj:=θj−α▽θjJ(θ) j=1,2,...,kθj为一个向量
矩阵更新:
θ:=θ−▽θJ(θ)
θ为一个矩阵
相关文章推荐
- 分类算法系列2----逻辑回归Logistic原理和Python实现
- 逻辑回归(Logistic Regression)原理及Python实现
- logistic回归算法原理及python实现
- 逻辑回归原理(python代码实现)
- 机器学习(2):Softmax回归原理及其实现
- 回归分析---线性回归原理和Python实现
- 深度学习入门---softmax回归 Python实现
- SoftMax回归简介及python代码实现
- 详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
- 【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)
- ID3算法的原理及实现(Python)
- Softmax 回归原理介绍
- Python中C++类特性的实现原理
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解
- Logistic回归分类算法原理分析与代码实现
- 机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树
- 逻辑回归详解及Python实现
- Python 线程池的原理和实现及subprocess模块
- 【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)