本篇主要讲线性回归和逻辑回归。
线性回归
还记得PLA吗?我们可以把他应用于分类申请信用卡的客户,以辅助决策是否发信用卡。但是仅仅决定是否给某个客户发信用卡还不够,我们还需要决定给他多少额度?
像这种目标是一个连续随机变量的预测问题就是一个回归问题。
线性回归即一个线性的回归问题。目标函数通常为平方损失函数。
最小二乘法
把常数项也当做一个特征维度,则线性回归的拟合函数可以表示为
h
(
x
)
=
w
T
x
h(x)=w^Tx
h(x)=wTx
我们希望样本点离h(x)越近越好。即目标损失函数为最小化他们的残差。通常使用残差损失平方函数
l
o
s
s
(
x
)
=
1
N
∑
i
(
w
T
x
n
−
y
n
)
2
=
1
N
∣
∣
X
W
−
Y
∣
∣
2
loss(x)=\frac1N\sum_i(w^Tx_n-y_n)^2=\frac1N||XW-Y||^2
loss(x)=N1i∑(wTxn−yn)2=N1∣∣XW−Y∣∣2
后面为矩阵向量表达方式,其中X是横着放,即一行代表一个样本。
现在我们来求解w.
l
o
s
s
(
X
)
=
1
N
(
X
W
−
Y
)
T
(
X
W
−
Y
)
loss(X)=\frac1N(XW-Y)^T(XW-Y)
loss(X)=N1(XW−Y)T(XW−Y)
=
1
N
(
W
T
X
T
X
W
−
2
W
T
X
T
Y
−
Y
T
Y
)
=\frac1N(W^TX^TXW-2W^TX^TY-Y^TY)
=N1(WTXTXW−2WTXTY−YTY)
∇
W
=
2
N
(
X
T
X
W
−
X
T
Y
)
=
0
\nabla_W=\frac2N(X^TXW-X^TY)=0
∇W=N2(XTXW−XTY)=0
⟹
  
W
=
(
X
T
X
)
−
1
X
T
Y
\Longrightarrow\;W=(X^TX)^{-1}X^TY
⟹W=(XTX)−1XTY
从上式可知当
X
T
X
X^TX
XTX可逆时,目标函数存在解析解。
一般情况下,当样本数量远大于特征维度d+1时,
X
T
X
X^TX
XTX是可逆的。当不可逆时,可以通过计算软件求解可行解甚至近似解。
特点:简单、计算快,容易理解(至少数学上容易理解),当样本数量远大于特征维度d+1时, X T X X^TX XTX是可逆的。可以得到解析解。但是如果特征间有很高的共线性,会导致帽子矩阵, X T X X^TX XTX趋于奇异矩阵,①不容易获得解析解,②对随机误差敏感,产生很大方差,泛化能力差。
Lasso
如果我们对目标函数做一定的惩罚以提高泛化能力,做L1正则。则目标函数为
1
N
∣
∣
X
W
−
Y
∣
∣
2
+
α
∣
∣
W
∣
∣
1
\frac1N||XW-Y||^2+\alpha||W||_1
N1∣∣XW−Y∣∣2+α∣∣W∣∣1
对目标函数做L1正则,会得到稀疏的解。通常用于特征太多,样本少时的情形。可以用来选择特征。
岭回归
对最小二乘法做L2正则。目标函数变为
1
N
∣
∣
X
W
−
Y
∣
∣
2
+
α
∣
∣
W
∣
∣
2
\frac1N||XW-Y||^2+\alpha||W||_2
N1∣∣XW−Y∣∣2+α∣∣W∣∣2
这个目标函数的解能解决一部分共线性,具有更好的泛化能力。
我们可以使用 α 和 W \alpha和W α和W画出岭脊图,根据系数的图变化情况选择特征。例如某个特征的线不是单调的,我们可以抛弃他。
使用线性回归来做分类
他们的关联如下我们发现线性分类的target是线性回归的子集,目标函数也仅仅是回归目标函数和指示函数sign的复合。
我们来比较两种误差方式如下图。
再根据VC理论有
E
o
u
t
(
0
/
1
)
≤
E
i
n
(
0
/
1
)
+
8
N
ln
4
(
2
N
)
d
v
c
δ
E_{out}(0/1)\leq E_{in}(0/1)+\sqrt{\frac8N\ln{\frac{4(2N)^{d_{vc}}}{\delta}}}
Eout(0/1)≤Ein(0/1)+N8lnδ4(2N)dvc
≤
e
r
r
s
q
r
+
8
N
ln
4
(
2
N
)
d
v
c
δ
\leq err_{sqr}+\sqrt{\frac8N\ln{\frac{4(2N)^{d_{vc}}}{\delta}}}
≤errsqr+N8lnδ4(2N)dvc
满足VC理论,故可以使用线性回归来做线性分类,且效果不会差太多。
逻辑回归
接下来开介绍概率模型。其实决策树也是一种概率,由于决策树家族的东西有点多,我觉得单独写一篇。
sigmoid function
如果我们去看病,医生给我们诊断的时候,并不仅仅是说是否患病,还关心准确率。患病的几率是多少?患某个病的概率又是多少?PLA显然无法解决这个问题。由于概率的范围在0——1之间,故我们希望输出的结果也是在这个范围内。
sigmoid function非常接近这个要求:
θ
(
s
)
=
1
1
+
e
−
s
\theta(s)=\frac 1 {1+e^{-s}}
θ(s)=1+e−s1
故目标函数为
1
1
+
e
−
w
T
x
\frac 1 {1+e^{-w^Tx}}
1+e−wTx1
sigmoid function有如下性质
θ
(
−
s
)
+
θ
(
s
)
=
1
\theta(-s)+\theta(s)=1
θ(−s)+θ(s)=1
θ
(
s
)
>
0
\theta(s)>0
θ(s)>0,故满足概率的定义:非负性、规范性(全概率为1)、可列可加性(相互独立事件集的概率等于各自的概率之和)。
具有性质:
θ
(
W
T
X
)
1
−
θ
(
W
T
X
)
=
W
T
X
\frac {\theta(W^TX)}{1-\theta(W^TX)}=W^TX
1−θ(WTX)θ(WTX)=WTX
表示事件发生概率和不发生的概率之比是一个X的线性组合,这个值称为事件发生的几率。(这是我把他和线性回归放一起的原因。)
逻辑回归的损失函数
我们的目标是希望预测正确的概率最大化。所以可以根据极大似然法来求解参数和评估误差。
当样本标签为1时,我们希望
π
(
x
)
=
P
(
y
=
1
∣
x
属
于
正
样
本
点
)
\pi (x)=P(y=1|x属于正样本点)
π(x)=P(y=1∣x属于正样本点)最大,
1
−
π
(
x
)
=
P
(
y
=
0
∣
x
属
于
负
样
本
点
)
1-\pi (x)=P(y=0|x属于负样本点)
1−π(x)=P(y=0∣x属于负样本点)最小。当样本标签为-1时,整好相反。则可以整合成一个式子:
[
π
(
x
)
]
y
[
1
−
π
(
x
)
]
(
1
−
y
)
[\pi (x)]^y[1-\pi (x)]^{(1-y)}
[π(x)]y[1−π(x)](1−y)
分别把
y
=
±
1
y=\pm 1
y=±1带入,发现完全就是对应的概率公式。则他们的似然函数为
∏
i
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
(
1
−
y
i
)
\prod_i[\pi (x_i)]^{y_i}[1-\pi (x_i)]^{(1-y_i)}
i∏[π(xi)]yi[1−π(xi)](1−yi)
为了便于计算,我们往往使用对数似然,即求对数,乘变加:
∑
i
[
y
i
ln
π
(
x
i
)
+
(
1
−
y
i
)
ln
[
1
−
π
(
x
i
)
]
]
\sum_i[y_i\ln{\pi (x_i)}+(1-y_i)\ln[1-\pi (x_i)]^{}]
i∑[yilnπ(xi)+(1−yi)ln[1−π(xi)]]
还可以进一步使用几率来做变化。
=
∑
i
[
y
i
ln
π
(
x
i
)
1
−
π
(
x
i
)
+
ln
[
1
−
π
(
x
i
)
]
]
=\sum_i[y_i\ln{\frac{\pi (x_i)}{1-\pi (x_i)}}+\ln[1-\pi (x_i)]^{}]
=i∑[yiln1−π(xi)π(xi)+ln[1−π(xi)]]
=
∑
i
[
y
i
ln
(
w
⋅
x
i
)
−
ln
[
1
+
e
w
⋅
x
i
]
=\sum_i[y_i\ln{(w\cdot x_i)}-\ln[1+e^{w\cdot x_i}]
=i∑[yiln(w⋅xi)−ln[1+ew⋅xi]
然后通常使用梯度下降法和拟牛顿法来求解近似解。
朴素贝叶斯
生成模型和判别模型
生成模型:通过数据学习联合概率分布,然后求出条件概率分布,并以此作为预测的模型。例如:朴素贝叶斯和隐马尔可夫模型。特点:
- 可以得到联合概率分布
- 样本容量增加时,能更快地收敛于真实模型
- 可以用于存在隐变量的情形
判别模型:直接学习决策函数或者条件概率分布,并以此作为模型。多数的监督学习模型都是判别模型。
- 直接学习决策函数或条件概率,直接预测,避免了测量误差增大,通常准确率更高。
- 可以对数据进行各种程度上的抽象、定义特征并使用特征,可以简化学习问题。
朴素贝叶斯原理
通过数据集可以获得先验概率分布
P
(
Y
=
c
k
)
P(Y=c_k)
P(Y=ck)
条件概率分布
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
X
(
2
)
=
x
(
2
)
,
X
(
3
)
=
x
(
3
)
,
.
.
.
.
∣
Y
=
c
k
)
P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},X^{(3)}=x^{(3)},....|Y=c_k)
P(X=x∣Y=ck)=P(X(1)=x(1),X(2)=x(2),X(3)=x(3),....∣Y=ck)
联合分布为
P
(
X
,
Y
)
=
∑
P
(
Y
=
c
k
)
P
(
X
=
x
∣
Y
=
c
k
)
P(X,Y)=\sum P(Y=c_k)P(X=x|Y=c_k)
P(X,Y)=∑P(Y=ck)P(X=x∣Y=ck)
这个时候,参数个数为
K
∏
n
i
K\prod n_i
K∏ni,K为Y标签数,n为对应的特征可能值个数。这是一个指数级别的值,非常大。通常不能用于学习。我们希望能简化条件概率模型。
朴素贝叶斯假设各个特征之间相互独立,则
P
(
X
=
x
∣
Y
=
c
k
)
=
∏
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
P(X=x|Y=c_k)=\prod P(X^{(i)}=x^{(i)}|Y=c_k)
P(X=x∣Y=ck)=∏P(X(i)=x(i)∣Y=ck)
参数个数为
∑
n
i
\sum n_i
∑ni,大幅减少,简化了模型。但通常也会损失一定的准确率。
则后验概率为
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
P(Y=c_k|X=x)=\frac{P(Y=c_k)P(X^{(i)}=x^{(i)}|Y=c_k)}{\sum_k P(Y=c_k)P(X^{(i)}=x^{(i)}|Y=c_k)}
P(Y=ck∣X=x)=∑kP(Y=ck)P(X(i)=x(i)∣Y=ck)P(Y=ck)P(X(i)=x(i)∣Y=ck)
=
P
(
Y
=
c
k
)
∏
i
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
i
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
=\frac{P(Y=c_k)\prod_i P(X^{(i)}=x^{(i)}|Y=c_k)}{\sum_k P(Y=c_k)\prod_i P(X^{(i)}=x^{(i)}|Y=c_k)}
=∑kP(Y=ck)∏iP(X(i)=x(i)∣Y=ck)P(Y=ck)∏iP(X(i)=x(i)∣Y=ck)
选择分类为后验概率最大的那个分类,又分母均相同。则朴素贝叶斯分类器为
y
=
max
c
k
P
(
Y
=
c
k
)
∏
i
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
y=\max_{c_k}P(Y=c_k)\prod_i P(X^{(i)}=x^{(i)}|Y=c_k)
y=ckmaxP(Y=ck)i∏P(X(i)=x(i)∣Y=ck)
为什么选择后验概率最大化?
损失函数为
l
o
s
s
=
E
X
∑
k
I
(
y
=
c
k
)
P
(
c
k
∣
X
)
loss=E_X\sum_k I(y=c_k)P(c_k|X)
loss=EXk∑I(y=ck)P(ck∣X)
因为假设条件独立,极小化loss等价于极小化各个X=x:
arg
min
x
l
o
s
s
=
arg
min
x
∑
k
I
(
y
=
c
k
)
P
(
c
k
∣
X
=
x
)
\arg\min_x loss=\arg\min_x \sum_k I(y=c_k)P(c_k|X=x)
argxminloss=argxmink∑I(y=ck)P(ck∣X=x)
=
arg
min
x
∑
k
P
(
y
=
̸
c
k
∣
X
=
x
)
=\arg\min_x \sum_k P(y =\not c_k|X=x)
=argxmink∑P(y≠ck∣X=x)
=
arg
min
x
∑
k
(
1
−
P
(
y
=
c
k
∣
X
=
x
)
)
=\arg\min_x \sum_k (1-P(y = c_k|X=x))
=argxmink∑(1−P(y=ck∣X=x))
等价于
arg
max
x
∑
k
P
(
y
=
c
k
∣
X
=
x
)
\arg\max_x \sum_k P(y = c_k|X=x)
argxmaxk∑P(y=ck∣X=x)
这个时候期望风险最小等价于后验概率最大化。
参数估计
朴素贝叶斯分类器需要估计
P
(
Y
=
c
k
)
、
P
(
X
(
i
)
=
x
(
i
)
∣
Y
=
c
k
)
P(Y=c_k)、P(X^{(i)}=x^{(i)}|Y=c_k)
P(Y=ck)、P(X(i)=x(i)∣Y=ck)。估计方法有两种:极大似然估计法和贝叶斯估计法
极大似然估计法
极大似然法最通俗的理解就是谁最大就听谁的。
估计的结果如下:
P
(
Y
=
c
k
)
=
∑
i
I
(
y
i
=
c
k
)
N
P(Y=c_k)=\frac{\sum_i I(y_i=c_k)}{N}
P(Y=ck)=N∑iI(yi=ck)
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
I
(
x
i
j
=
a
j
l
,
y
i
=
c
k
)
∑
i
I
(
y
i
=
c
k
)
P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_i I(x_i^j=a_{jl},y_i=c_k)}{\sum_i I(y_i=c_k)}
P(X(j)=ajl∣Y=ck)=∑iI(yi=ck)∑iI(xij=ajl,yi=ck)
(为了符合使用习惯,这里使用i表示样本索引,j表示特征索引,
l
l
l表示特征可能的取值个数)
推导如下(可以不看,只看公式也容易理解的):
p
(
y
)
=
∏
k
p
(
y
=
c
k
)
I
(
y
=
c
k
)
p(y)=\prod_k p(y=c_k)^{I(y=c_k)}
p(y)=k∏p(y=ck)I(y=ck)
p
(
x
∣
y
=
c
k
)
=
∏
j
∏
k
∏
l
p
(
x
i
j
=
a
j
l
∣
y
i
=
c
k
)
I
(
x
i
j
=
a
j
i
,
y
i
=
c
k
)
p(x|y=c_k)=\prod_j\prod_k\prod_lp(x_i^j=a_{jl}|y_i=c_k)^{I(x_i^j=a_{ji},y_i=c_k)}
p(x∣y=ck)=j∏k∏l∏p(xij=ajl∣yi=ck)I(xij=aji,yi=ck)
log似然函数为
log
P
(
x
,
y
)
=
log
∏
i
p
(
x
i
,
y
i
;
p
(
y
)
,
p
(
x
i
j
=
a
j
l
∣
y
i
=
c
k
)
)
\log P(x,y)=\log \prod_i p(x_i,y_i;p(y),p(x_i^j=a_{jl}|y_i=c_k))
logP(x,y)=logi∏p(xi,yi;p(y),p(xij=ajl∣yi=ck))
=
log
∏
i
p
(
y
i
)
∏
j
p
(
x
i
j
=
a
j
l
∣
y
i
=
c
k
)
=\log \prod_i p(y_i)\prod_j p(x_i^j=a_{jl}|y_i=c_k)
=logi∏p(yi)j∏p(xij=ajl∣yi=ck)
=
∑
i
log
p
(
y
i
)
+
∑
i
∑
j
log
p
(
x
i
j
=
a
j
l
∣
y
i
=
c
k
)
)
)
=\sum_i \log p(y_i)+\sum_i\sum_j \log p(x_i^j=a_{jl}|y_i=c_k)))
=i∑logp(yi)+i∑j∑logp(xij=ajl∣yi=ck)))
=
∑
i
∑
k
I
(
y
i
=
c
k
)
log
p
(
y
=
c
k
)
+
=\sum_i \sum_k I(y_i=c_k)\log p(y=c_k)+
=i∑k∑I(yi=ck)logp(y=ck)+
∑
i
∑
j
∑
k
∑
l
I
(
x
i
j
=
a
j
i
,
y
i
=
c
k
)
log
p
(
x
i
j
=
a
j
l
∣
y
i
=
c
k
)
)
\sum_i\sum_j \sum_k \sum_l I(x_i^j=a_{ji},y_i=c_k) \log p(x_i^j=a_{jl}|y_i=c_k))
i∑j∑k∑l∑I(xij=aji,yi=ck)logp(xij=ajl∣yi=ck))
又
∑
k
p
(
y
=
c
k
)
=
1
\sum_k p(y=c_k)=1
k∑p(y=ck)=1
引入拉格朗日乘子,然后求偏导有
∑
i
I
(
y
i
=
c
k
)
p
(
y
=
c
k
)
+
λ
=
0
\sum_i \frac{I(y_i=c_k)}{p(y=c_k)}+\lambda=0
i∑p(y=ck)I(yi=ck)+λ=0
p
(
y
=
c
k
)
=
−
∑
i
I
(
y
i
=
c
k
)
λ
p(y=c_k)=-\frac{\sum_i I(y_i=c_k)}{\lambda}
p(y=ck)=−λ∑iI(yi=ck)
因
∑
k
p
(
y
=
c
k
)
=
1
\sum_k p(y=c_k)=1
∑kp(y=ck)=1,带入可知
λ
=
−
N
\lambda=-N
λ=−N
⟹
p
(
y
=
c
k
)
=
∑
i
I
(
y
i
=
c
k
)
N
\Longrightarrow p(y=c_k)=\frac{\sum_i I(y_i=c_k)}{N}
⟹p(y=ck)=N∑iI(yi=ck)
同理通过引入拉格朗日乘子可得
P
(
x
i
j
=
a
j
l
∣
y
=
c
k
)
=
∑
i
I
(
x
i
j
=
a
j
l
,
y
i
=
c
k
)
∑
i
I
(
y
i
=
c
k
)
P(x_i^j=a_{jl}|y=c_k)=\frac{\sum_i I(x_i^j=a_{jl},y_i=c_k)}{\sum_i I(y_i=c_k)}
P(xij=ajl∣y=ck)=∑iI(yi=ck)∑iI(xij=ajl,yi=ck)
由于打字比较麻烦,可能下标错误。这里再叙述下思路。
- 朴素贝叶斯是生成模型,需要求联合分布 P ( X , Y ) P(X,Y) P(X,Y),故我们构造 P ( X , Y ) P(X,Y) P(X,Y)的似然函数。
- 似然函数一般都会取对数,便于计算
- 求偏导并令导数为0
- 引入拉格朗日乘子,利用(条件)概率和为1求解
贝叶斯估计
用极大似然法估计时可能会遇到所要估计的概率为0的情况,这个时候会影响后验概率,使分类产生偏差。可以使用贝叶斯法来估计参数。
结果如下:
P
λ
(
Y
=
c
k
)
=
∑
i
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
P_{\lambda}(Y=c_k)=\frac{\sum_i I(y_i=c_k)+\lambda}{N+K\lambda}
Pλ(Y=ck)=N+Kλ∑iI(yi=ck)+λ
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
I
(
x
i
j
=
a
j
l
,
y
i
=
c
k
)
+
λ
∑
i
I
(
y
i
=
c
k
)
+
S
j
λ
  
,
λ
≥
0
P_\lambda(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_i I(x_i^j=a_{jl},y_i=c_k)+\lambda}{\sum_i I(y_i=c_k)+S_j\lambda}\;,\lambda\geq0
Pλ(X(j)=ajl∣Y=ck)=∑iI(yi=ck)+Sjλ∑iI(xij=ajl,yi=ck)+λ,λ≥0
如果我们不考虑背后的原理,仅仅从结果来看,也就比极大似然估计多了
S
j
,
λ
S_j,\lambda
Sj,λ。相当于引入了松弛变量,强制使概率不为0。概率不为0,也就可以不用管是不是极大似然估计了。
当
λ
=
0
\lambda=0
λ=0时,他就是极大似然估计。
当
λ
=
1
\lambda=1
λ=1时,称为拉普拉斯平滑。
贝叶斯估计法和极大似然法的区别:
- 贝叶斯估计法把 θ \theta θ当成一个随机变量,服从Dirichlet分布。(当为二元分布时为 β \beta β分布)
- 极大似然估计把 θ \theta θ当成一个定值,通过求导来确定,不会改变
老规矩,证明如下,可看可不看。
证明之前先介绍几个知识点:
- 贝叶斯假设:贝叶斯估计首先要利用关于以往参数的信息,确定参数的先验分布。如果没有任何以往的信息来帮助确定先验分布,则假设该分布为均匀分布。
- 广元贝叶斯假设:如果参数 θ \theta θ的取值范围是无穷,则 θ \theta θ的密度函数 π ( y ) \pi (y) π(y)的积分为不穷,不等于1。这时是不合理的。引入广元贝叶斯分布。假设 π ( y ) \pi (y) π(y)在 θ \theta θ的取值范围内服从均匀分布。 π ( y ) = { C , y ∈ D , C > 0 0 , y ∉ D \pi (y)= \left \{\begin{array}{cc} C, & y\in D ,C>0\\ 0, & y\notin D \end{array}\right. π(y)={C,0,y∈D,C>0y∈/D
- 共轭分布:共轭分布要求先验分布和后验分布属于同一分布。这样当新的样本进来后,我们不用再考虑换先验分布,具有一定的优势。常用的共轭分布有:正太共轭与正太、 β \beta β共轭与0——1分布、 Γ \Gamma Γ分布共轭与泊松分布、 I Γ I\Gamma IΓ分布共轭与泊松分布。
由此可知,我们基于不同的假设,估计方法也不同。倾向于两种假设:
- 假设我们没有任何信息来确定先验分布。
- 由于对每一种label,发生和不发生是互斥事件,故可以假设服从多项式分布,此时使用 β \beta β分布的扩展版——dirichlet分布。
估计流程都是一样的:求出参数的后验概率密度函数,然后求其期望作为贝叶斯估计。
不想敲了,给个别人dirichlet方式的证明
如果有兴趣的话,可以看下孙荣恒的《应用数理统计》贝叶斯估计这一小节。
sklearn上常用的先验假设有:
- 高斯分布:适用于样本特征的分布大部分是连续的
- 多项式分布:适用于特征多为离散值的情形
- 泊松分布:适用于特征多为二元离散值或者稀疏值的多元离散值情形。