机器学习笔记——概率生成模型

111 阅读2分钟

前言

吴恩达的视频里没提到概率生成模型,在李宏毅的作业2看到了,感觉挺有必要理解的,可以很自然而然地引出逻辑回归的模型。

参考:李宏毅机器学习中文课程 - 网易云课堂:分类:概率生成模型

一、问题描述

已知m组数据x(1),x(2),...,x(m)x^{(1)}, x^{(2)}, ..., x^{(m)},每组数据表示n个特征,可写为一个n维的向量
即:(x(i))T=(x1(i),...,xn(i))(x^{(i)})^T = ( x^{(i)}_1, ..., x^{(i)}_n)
且每组数据的真实值y(i)y^{(i)}只能为0或1

给定一个数据xx,预测xx对应的yy值。

二、解决方案

1. 贝叶斯公式求概率表达式

由题可知,我们根据真实值将mm组数据分为两类C0C_0C1C_1,其中C0C_0代表真实值为00的数据的集合,一共有m0m_0组,C1C_1代表真实值为11的数据的集合,一共有m1m_1

那么给定数据xx,由贝叶斯公式,xx出现在C0C_0的概率为

P(C0x)=P(xC0)P(C0)P(xC0)P(C0)+P(xC1)P(C1) P(C_0 | x) = \frac{P(x | C_0) P(C_0)} { P(x | C_0) P(C_0) + P(x | C_1) P(C_1) }

P(C0x)=11+P(xC1)P(C1)P(xC0)P(C0) P(C_0 | x) = \frac{1} { 1 + \frac{P(x | C_1) P(C_1)}{P(x | C_0) P(C_0)} }

其中,P(xC0)P(x | C_0)代表给定集合C0C_0,出现数据为xx的概率,即

P(xC0)=fμ0,Σ0(x)P(x | C_0) = f_{\mu^0, \Sigma^0}(x)

其中μ0\mu^0Σ0\Sigma^0C0C_0的均值和协方差矩阵,由C0C_0确定。

同理,P(xC1)=fμ1,Σ1(x)P(x | C_1) = f_{\mu^1, \Sigma^1}(x)

P(C0)P(C_0)代表随机取一组数据在C0C_0的概率,即P(C0)=m0m0+m1P(C_0) = \frac{m_0}{m_0 + m_1}

同理,P(C1)=m1m0+m1P(C_1) = \frac{m_1}{m_0 + m_1}

2. 由数据集求概率密度函数

当数据足够大时,由中心极限定理,C0C_0服从正态分布

fμ0,Σ0(x)=1(2π)n2Σ012exp(12(xμ0)T(Σ0)1(xμ0)) f_{\mu^0, \Sigma^0}(x) = \frac{1}{ (2\pi)^{\frac{n}{2}} |\Sigma^0|^{ \frac{1}{2}}} exp(-\frac{1}{2} (x - \mu^0)^T (\Sigma^0)^{-1} (x - \mu^0))

由已有数据求μ0\mu^0Σ0\Sigma^0的最大似然估计为

μ0=1m0i:y(i)=0x(i)\mu^0 = \frac{1}{m_0} \sum_{i: y^{(i)} = 0} x^{(i)}

Σ0=1m0i:y(i)=0(x(i)μ0)(x(i)μ0)T\Sigma^0 = \frac{1}{m_0} \sum_{i: y^{(i)} = 0} (x^{(i)} - \mu^0) (x^{(i)} - \mu^0)^T

同理,由C1C_1确定的概率分布函数、均值、协方差矩阵为

fμ1,Σ1(x)=1(2π)n2Σ112exp(12(xμ1)T(Σ1)1(xμ1)) f_{\mu^1, \Sigma^1}(x) = \frac{1}{ (2\pi)^{\frac{n}{2}} |\Sigma^1|^{ \frac{1}{2}}} exp(-\frac{1}{2} (x - \mu^1)^T (\Sigma^1)^{-1} (x - \mu^1))

μ1=1m1i:y(i)=1x(i)\mu^1 = \frac{1}{m_1} \sum_{i: y^{(i)} = 1} x^{(i)}

Σ1=1m1i:y(i)=1(x(i)μ1)(x(i)μ1)T\Sigma^1 = \frac{1}{m_1} \sum_{i: y^{(i)} = 1} (x^{(i)} - \mu^1) (x^{(i)} - \mu^1)^T

3. 公式整理

对1中表达式做变形,令

P(xC1)P(C1)P(xC0)P(C0)=ez \frac{P(x | C_1) P(C_1)}{P(x | C_0) P(C_0)} = e^{-z}

P(C0x)=11+ez=g(z) P(C_0 | x) = \frac{1} { 1 + e^{-z} } = g(z)

z=lnP(xC1)P(C1)P(xC0)P(C0)=lnP(xC0)P(xC1)+lnP(C0)P(C1) z = -\ln {\frac{P(x | C_1) P(C_1)}{P(x | C_0) P(C_0)} } = \ln {\frac{P(x | C_0) }{ P(x | C_1)} } + \ln { \frac{ P(C_0) }{ P(C_1) } }

将2中概率分布函数代入到表达式中,得

z=lnΣ1Σ012(xμ0)T(Σ0)1(xμ0)+12(xμ1)T(Σ1)1(xμ1))+lnm0m1 z = \ln{\frac{ |\Sigma|^1}{ | \Sigma|^0 } } - \frac{1}{2} (x - \mu^0)^T (\Sigma^0)^{-1} (x - \mu^0) + \frac{1}{2} (x - \mu^1)^T (\Sigma^1)^{-1} (x - \mu^1)) + \ln{ \frac{m_0}{m_1}}

若将Σ0\Sigma^0Σ1\Sigma^1等同为一个值Σ\Sigma(未考究),可继续化简得:

z=(μ0μ1)TΣ1x12(μ0)TΣ1μ0+12(μ1)TΣ1μ1+lnm0m1 z = (\mu^0 - \mu^1)^T \Sigma^{-1} x - \frac{1}{2} (\mu^0)^T \Sigma^{-1} \mu^0 + \frac{1}{2} (\mu^1)^T \Sigma^{-1} \mu^1 + \ln{ \frac{m_0}{m_1}}

z=ωx+b z = \omega x + b,则有

ω=(μ0μ1)TΣ1 \omega = (\mu^0 - \mu^1)^T \Sigma^{-1}

b=12(μ0)TΣ1μ0+12(μ1)TΣ1μ1+lnm0m1b = - \frac{1}{2} (\mu^0)^T \Sigma^{-1} \mu^0 + \frac{1}{2} (\mu^1)^T \Sigma^{-1} \mu^1 + \ln{ \frac{m_0}{m_1}}

三、总结

既然预测xx在一个分类中的概率P(C0x)P(C_0 | x),能被关于xx与某一向量的线性组合的函数,即ωx+b\omega x+ bg(ωx+b)=11+eωx+bg(\omega x + b) = \frac{1}{1+ e^{\omega x+ b}},我们不妨假设向量

θTx=ωx+b\theta^T x = \omega x + b

这就很好的解释了为什么要引入g(θTx)g(\theta^T x)作为逻辑回归的假设。

一文讲清楚线性回归(Linear Regression)、逻辑回归(Logistic Regression) | Andrew的个人博客 (andreww1219.github.io)