转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki
个人网站:http://thinkgamer.github.io
两分类与多分类
- 两类分类(Binary Classification)
- 类别标签y只有两种取值,通常设为{0,1}
- 线性判别函数,即形如 y = w^T*x + b
- 分割超平面(hyper plane),由满足f(w,x)=0的点组成
- 决策边界(Decision boundary)、决策平面(Decision surface):即分分割超平面,决策边界将特征空间一分为二,划分成两个区域,每个区域对应一个类别。
- 有向距离(signed distance)
- 多样分类(Multi-class Classification)
- 分类的类别个数大于2,多分类一般需要多个线性判别函数,但设计这些判别函数有很多方式。eg:
- 一对其余:属于和不属于
- 一对一
- argmax(改进的一对其余):属于每个类别的概率,找概率最大值
- 参考:多分类实现方式介绍和在Spark上实现多分类逻辑回归
- 分类的类别个数大于2,多分类一般需要多个线性判别函数,但设计这些判别函数有很多方式。eg:
Logistic回归
LR回归
Logistic回归(Logistic Regression,LR)是一种常见的处理二分类的线性回归模型。
为了解决连续的线性回归函数不适合做分类的问题,引入函数g:R^d -> (0,1)来预测类别标签的后验概率p(y=1 | x)
其中g(.)通常称为激活函数(activation function),其作用是把线性函数的值域从实数区间“挤压”到了(0,1)之间,可以用概率表示。在统计文献中,g(.)的逆函数g(.)^-1也称为联系函数(Link Function)
在逻辑回归中使用Logistic作为激活函数,标签y=1的后验概率为(公式-1):
p
(
y
=
1
∣
x
)
=
σ
(
w
T
x
)
p(y=1 | x) = \sigma (w^T x)
p(y=1∣x)=σ(wTx)
p
(
y
=
1
∣
x
)
=
1
1
+
e
x
p
(
−
w
T
x
)
p(y=1 | x)= \frac{1}{1+exp(-w^T x)}
p(y=1∣x)=1+exp(−wTx)1
标签 y=0的后验概率为(公式-2):
p
(
y
=
0
∣
x
)
=
1
−
p
(
y
=
0
∣
x
)
p(y=0 | x) =1-p(y=0 | x)
p(y=0∣x)=1−p(y=0∣x)
p
(
y
=
0
∣
x
)
=
e
x
p
(
−
w
T
x
)
1
+
e
x
p
(
−
w
T
x
)
p(y=0 | x)= \frac{exp(-w^T x)}{1+exp(-w^T x)}
p(y=0∣x)=1+exp(−wTx)exp(−wTx)
将公式-1进行等价变换,可得(公式-3):
w
T
x
=
l
o
g
p
(
y
=
1
∣
x
)
1
−
p
(
y
=
1
∣
x
)
w^T x = log \frac{p(y=1 | x)}{1-p(y=1 | x)}
wTx=log1−p(y=1∣x)p(y=1∣x)
w
T
x
=
l
o
g
p
(
y
=
1
∣
x
)
p
(
y
=
0
∣
x
)
w^T x = log \frac { p(y=1 | x)}{p(y=0|x)}
wTx=logp(y=0∣x)p(y=1∣x)
其中
p
(
y
=
1
∣
x
)
p
(
y
=
0
∣
x
)
\frac { p(y=1 | x)}{p(y=0|x)}
p(y=0∣x)p(y=1∣x)
为样本x正反例后验概率的比例,称为几率(odds),几率的对数称为对数几率(log odds或者logit),公式-3中第一个表达式,左边是线性函数,logistic回归可以看做是预测值为“标签的对数几率”的线性回归模型,因为Logistic回归也称为对数几率回归(Logit Regression)。
附公式-1到公式-3的推导:
p
(
y
=
1
∣
x
)
=
1
1
+
e
x
p
(
−
w
T
x
)
p(y=1 | x)= \frac{1}{1+exp(-w^T x)}
p(y=1∣x)=1+exp(−wTx)1
=
>
e
x
p
(
−
w
T
x
)
=
1
−
p
(
y
=
1
∣
x
)
p
(
y
=
1
∣
x
)
=> exp(-w^Tx) = \frac{1-p(y=1 | x)}{p(y=1 | x)}
=>exp(−wTx)=p(y=1∣x)1−p(y=1∣x)
=
>
−
w
T
x
=
l
o
g
1
−
p
(
y
=
1
∣
x
)
p
(
y
=
1
∣
x
)
=> - w^T x = log \frac{1- p(y=1 | x)}{p(y=1 | x)}
=>−wTx=logp(y=1∣x)1−p(y=1∣x)
=
>
w
T
x
=
l
o
g
(
1
−
p
(
y
=
1
∣
x
)
p
(
y
=
1
∣
x
)
)
−
1
=> w^T x = log (\frac{1- p(y=1 | x)}{p(y=1 | x)})^{-1}
=>wTx=log(p(y=1∣x)1−p(y=1∣x))−1
=
>
w
T
x
=
l
o
g
p
(
y
=
1
∣
x
)
1
−
p
(
y
=
1
∣
x
)
=> w^T x = log \frac{p(y=1 | x)}{1-p(y=1 | x)}
=>wTx=log1−p(y=1∣x)p(y=1∣x)
=
>
w
T
x
=
l
o
g
p
(
y
=
1
∣
x
)
p
(
y
=
0
∣
x
)
=> w^T x = log \frac{p(y=1 | x)}{p(y=0 | x)}
=>wTx=logp(y=0∣x)p(y=1∣x)
参数学习
LR回归采用交叉熵作为损失函数,并使用梯度下降法对参数进行优化。给定N个训练样本{x_i,y_i},i<=N,使用LR对每个样本进行预测,并用输出x_i的标签为1的后验概率,记为y’i(x) (公式-4)
y
i
′
(
x
)
=
σ
(
w
T
x
i
)
,
i
∈
N
y'_i(x) = \sigma(w^Tx_i),i\in N
yi′(x)=σ(wTxi),i∈N
由于y_i属于{0,1},样本{x_i,y_i}的真实概率可以表示为(公式-5):
p
r
(
y
i
=
1
∣
x
i
)
=
y
i
p_r(y_i =1 | x_i) = y_i
pr(yi=1∣xi)=yi
p
r
(
y
i
=
0
∣
x
i
)
=
1
−
y
i
p_r(y_i =0 | x_i) = 1- y_i
pr(yi=0∣xi)=1−yi
使用交叉熵损失函数,其风险函数为(公式-6):
R
(
w
)
=
−
1
N
∑
n
=
1
N
(
p
r
(
y
i
=
1
∣
x
i
)
l
o
g
(
y
i
′
)
+
p
r
(
y
i
=
0
∣
x
i
)
l
o
g
(
1
−
y
i
′
)
)
R(w)= - \frac{1}{N}\sum_{n=1}^{N} (p_r(y_i =1 | x_i) log(y_i') + p_r(y_i =0 | x_i) log(1-y_i') )
R(w)=−N1n=1∑N(pr(yi=1∣xi)log(yi′)+pr(yi=0∣xi)log(1−yi′))
=
−
1
N
∑
n
=
1
N
(
y
i
l
o
g
(
y
i
′
)
+
(
1
−
y
i
′
)
l
o
g
(
1
−
y
i
′
)
)
= - \frac{1}{N}\sum_{n=1}^{N} ( y_i log(y_i') + (1-y_i') log(1-y_i') )
=−N1n=1∑N(yilog(yi′)+(1−yi′)log(1−yi′))
风险函数R(w)关于参数w的导数为(公式-7):
∂
R
(
w
)
∂
w
=
−
1
N
∑
n
=
1
N
(
y
i
y
i
′
(
1
−
y
i
′
)
y
i
′
x
i
−
(
1
−
y
i
)
y
i
′
(
1
−
y
i
′
)
1
−
y
i
′
x
i
)
\frac{ \partial R(w)}{ \partial w} = - \frac{1}{N}\sum_{n=1}^{N}( y_i \frac{y_i'(1-y_i')}{y_i'}x_i -(1-y_i)\frac{y_i'(1-y_i')}{1-y_i'}x_i )
∂w∂R(w)=−N1n=1∑N(yiyi′yi′(1−yi′)xi−(1−yi)1−yi′yi′(1−yi′)xi)
=
−
1
N
∑
n
=
1
N
(
y
i
(
1
−
y
i
′
)
x
i
−
(
1
−
y
i
)
y
i
′
x
i
)
= - \frac{1}{N}\sum_{n=1}^{N}( y_i(1-y_i')x_i -(1-y_i)y_i'x_i)
=−N1n=1∑N(yi(1−yi′)xi−(1−yi)yi′xi)
=
−
1
N
∑
n
=
1
N
x
i
(
y
i
−
y
i
′
)
= - \frac{1}{N}\sum_{n=1}^{N}x_i(y_i-y_i')
=−N1n=1∑Nxi(yi−yi′)
采用梯度下降算法,Logistic的回归训练过程为:初始化w_0 为0,然后通过下式来更新迭代参数(公式-8)。
w
t
+
1
←
w
t
+
α
1
N
∑
n
=
1
N
x
i
(
y
i
−
y
w
t
′
)
w_{t+1} \leftarrow w_t + \alpha \frac{1}{N}\sum_{n=1}^{N} x_i(y_i-y_{w_t}')
wt+1←wt+αN1n=1∑Nxi(yi−ywt′)
其中a是学习率,y{wt}'是当参数为w_t 时,Logistic回归的输出。
从公式-6可知,风险函数R(w)是关于参数w的连续可导的凸函数,因此除了梯度下降算法外,Logistic还可以使用高阶的优化算法,比如牛顿法来进行优化。
说明:
- 两个未知数相乘求导:
( a b ) ′ = a ′ b + a b ′ (ab)' = a'b + ab' (ab)′=a′b+ab′ - sigmoid函数求导后为:
σ ′ = σ ( 1 − σ ) x \sigma ' = \sigma (1-\sigma )x σ′=σ(1−σ)x
LR为什么使用交叉熵作为损失函数而不是MSE,参考:https://blog.csdn.net/weixin_37567451/article/details/80895309
参考
- https://zhuanlan.zhihu.com/p/44591359
- https://blog.csdn.net/wgdzz/article/details/48816307

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!