线性回归和概率模型(逻辑回归和朴素贝叶斯)

本篇主要讲线性回归和逻辑回归。

线性回归

还记得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(wTxnyn)2=N1XWY2
后面为矩阵向量表达方式,其中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(XWY)T(XWY) = 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(WTXTXW2WTXTYYTY) ∇ W = 2 N ( X T X W − X T Y ) = 0 \nabla_W=\frac2N(X^TXW-X^TY)=0 W=N2(XTXWXTY)=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 N1XWY2+αW1
对目标函数做L1正则,会得到稀疏的解。通常用于特征太多,样本少时的情形。可以用来选择特征。

岭回归

对最小二乘法做L2正则。目标函数变为 1 N ∣ ∣ X W − Y ∣ ∣ 2 + α ∣ ∣ W ∣ ∣ 2 \frac1N||XW-Y||^2+\alpha||W||_2 N1XWY2+αW2
这个目标函数的解能解决一部分共线性,具有更好的泛化能力。

我们可以使用 α 和 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+es1
故目标函数为 1 1 + e − w T x \frac 1 {1+e^{-w^Tx}} 1+ewTx1

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=1x)最大, 1 − π ( x ) = P ( y = 0 ∣ x 属 于 负 样 本 点 ) 1-\pi (x)=P(y=0|x属于负样本点) 1π(x)=P(y=0x)最小。当样本标签为-1时,整好相反。则可以整合成一个式子:
[ π ( x ) ] y [ 1 − π ( x ) ] ( 1 − y ) [\pi (x)]^y[1-\pi (x)]^{(1-y)} [π(x)]y[1π(x)](1y)
分别把 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)](1yi)
为了便于计算,我们往往使用对数似然,即求对数,乘变加:
∑ 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)+(1yi)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(wxi)ln[1+ewxi]

然后通常使用梯度下降法和拟牛顿法来求解近似解。

朴素贝叶斯

生成模型和判别模型

生成模型:通过数据学习联合概率分布,然后求出条件概率分布,并以此作为预测的模型。例如:朴素贝叶斯和隐马尔可夫模型。特点:

  • 可以得到联合概率分布
  • 样本容量增加时,能更快地收敛于真实模型
  • 可以用于存在隐变量的情形

判别模型:直接学习决策函数或者条件概率分布,并以此作为模型。多数的监督学习模型都是判别模型。

  • 直接学习决策函数或条件概率,直接预测,避免了测量误差增大,通常准确率更高。
  • 可以对数据进行各种程度上的抽象、定义特征并使用特征,可以简化学习问题。

朴素贝叶斯原理
通过数据集可以获得先验概率分布 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=xY=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=xY=ck)
这个时候,参数个数为 K ∏ n i K\prod n_i Kni,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=xY=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=ckX=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)iP(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=EXkI(y=ck)P(ckX)
因为假设条件独立,极小化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=argxminkI(y=ck)P(ckX=x)
= arg ⁡ min ⁡ x ∑ k P ( y = ̸ c k ∣ X = x ) =\arg\min_x \sum_k P(y =\not c_k|X=x) =argxminkP(y≠ckX=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(1P(y=ckX=x))
等价于 arg ⁡ max ⁡ x ∑ k P ( y = c k ∣ X = x ) \arg\max_x \sum_k P(y = c_k|X=x) argxmaxkP(y=ckX=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)=NiI(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)=ajlY=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)=kp(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(xy=ck)=jklp(xij=ajlyi=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)=logip(xi,yi;p(y),p(xij=ajlyi=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) =logip(yi)jp(xij=ajlyi=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))) =ilogp(yi)+ijlogp(xij=ajlyi=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)+ =ikI(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)) ijklI(xij=aji,yi=ck)logp(xij=ajlyi=ck))
∑ k p ( y = c k ) = 1 \sum_k p(y=c_k)=1 kp(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 ip(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)=NiI(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=ajly=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)=ajlY=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,yD,C>0y/D
  • 共轭分布:共轭分布要求先验分布和后验分布属于同一分布。这样当新的样本进来后,我们不用再考虑换先验分布,具有一定的优势。常用的共轭分布有:正太共轭与正太、 β \beta β共轭与0——1分布、 Γ \Gamma Γ分布共轭与泊松分布、 I Γ I\Gamma IΓ分布共轭与泊松分布。

由此可知,我们基于不同的假设,估计方法也不同。倾向于两种假设:

  • 假设我们没有任何信息来确定先验分布。
  • 由于对每一种label,发生和不发生是互斥事件,故可以假设服从多项式分布,此时使用 β \beta β分布的扩展版——dirichlet分布。

估计流程都是一样的:求出参数的后验概率密度函数,然后求其期望作为贝叶斯估计。
不想敲了,给个别人dirichlet方式的证明
如果有兴趣的话,可以看下孙荣恒的《应用数理统计》贝叶斯估计这一小节。
sklearn上常用的先验假设有:

  • 高斯分布:适用于样本特征的分布大部分是连续的
  • 多项式分布:适用于特征多为离散值的情形
  • 泊松分布:适用于特征多为二元离散值或者稀疏值的多元离散值情形。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值