Machine Learning
  • Introduction
  • 机器学习
    • 前言
      • 符号表
    • 监督式学习
      • 感知机
        • 感知机模型
        • 感知机学习算法
        • 算法python实现
      • Logistic回归
        • Logistic分布
        • Logistic回归模型
        • 算法python实现
      • 线性回归
        • 线性回归模型
        • 算法python实现
      • K近邻法
        • k近邻模型
        • kd树方法
        • kd树python实现
        • knn实例
      • 朴素贝叶斯法
        • 模型和原理
        • 参数估计
        • 算法和实现
      • 决策树
        • 模型与学习
        • 特征选择
        • 生成算法和剪枝
        • python实现
      • 支持向量机
    • 神经网络
      • 神经元模型和感知机
      • 神经网络
      • 神经网络的矩阵表达
      • 反向传播算法
        • 算法证明
        • 算法代码
        • 基于矩阵的计算
      • 改进神经网络的学习方法
        • 交叉熵代价函数
        • softmax
        • regularization
        • 权重初始化
      • 卷积神经网络
        • 基本介绍
    • 数学基础
      • 线性代数
        • 特征值和特征向量
      • 概率统计
        • 随机变量的特征
        • 样本统计量
        • 先验后验概率
      • 微积分
        • 向量内积
        • 方向导数和梯度
        • 梯度下降法
      • 信息论
        • 熵
        • 相对熵和交叉熵
        • 条件熵
        • 互信息
Powered by GitBook
On this page
  • 一、模型定义
  • 二、发生比
  • 三、极大似然估计
  • 四、梯度下降法
  • 1.批量梯度下降(Batch Gradient Descent)
  • 2.随机梯度下降(Stochastic Gradient Descent)
  1. 机器学习
  2. 监督式学习
  3. Logistic回归

Logistic回归模型

二项Logistic回归模型(binomial logistic regression model)是一种分类模型,由条件概率分布P(Y∣X)P(Y|X)P(Y∣X)表示,形式为参数化的logistic分布。

一、模型定义

模型是如下的条件概率分布:

P(Y=1∣X)=ew⋅x+b1+ew⋅x+bP(Y=1|X)=\dfrac{e^{w\cdot x+b}}{1+e^{w\cdot x+b}}P(Y=1∣X)=1+ew⋅x+bew⋅x+b​
P(Y=0∣X)=1−P(Y=1∣X)=11+ew⋅x+bP(Y=0|X)=1-P(Y=1|X)=\dfrac{1}{1+e^{w\cdot x+b}}P(Y=0∣X)=1−P(Y=1∣X)=1+ew⋅x+b1​

这里x∈Rnx\in R^nx∈Rn,Y∈0,1Y\in {0, 1}Y∈0,1,w∈Rnw \in R^nw∈Rn和b∈Rb\in Rb∈R是参数,www称为权值,bbb称为偏置。

给定输入实例xxx计算得到P(Y=1∣x)P(Y=1|x)P(Y=1∣x)和P(Y=0∣x)P(Y=0|x)P(Y=0∣x),然后比较两个条件概率的大小,将实例xxx分到概率值较大的那一类。

为了方便,将权值向量和输入向量加以扩展,即令w0=bw_0=bw0​=b,x0=1x_0=1x0​=1,扩展为

w=(w0,w1,w2,...,wn)Tw=(w_0,w_1, w_2, ..., w_n)^Tw=(w0​,w1​,w2​,...,wn​)T
x=(x0,x1,x2,...,xn)Tx=(x_0, x_1, x_2, ..., x_n)^Tx=(x0​,x1​,x2​,...,xn​)T

这样,上面的模型变成:

P(Y=1∣X)=ew⋅x1+ew⋅xP(Y=1|X)=\dfrac{e^{w\cdot x}}{1+e^{w\cdot x}}P(Y=1∣X)=1+ew⋅xew⋅x​
P(Y=0∣X)=1−P(Y=1∣X)=11+ew⋅xP(Y=0|X)=1-P(Y=1|X)=\dfrac{1}{1+e^{w\cdot x}}P(Y=0∣X)=1−P(Y=1∣X)=1+ew⋅x1​

二、发生比

在统计和概率理论中,一个事件或者一个陈述的发生比(英语:Odds)是该事件发生和不发生的比率,公式为:

odds(p)=p1−podds(p)=\dfrac{p}{1-p}odds(p)=1−pp​

其中ppp是该事件发生的概率,odds(p)odds(p)odds(p)是关于ppp的递增函数。

例如,如果一个人随机选择一星期7天中的一天,选择星期日的发生比是: 1/71−1/7=1/6\dfrac{1/7}{1-1/7}=1/61−1/71/7​=1/6。不选择星期日的发生比是 6/16/16/1。

对odds取对数(成为log of odds),也就是logp1−plog\dfrac{p}{1-p}log1−pp​,称为对数几率,这个在正式的数学文献中会记为logit(p)logit(p)logit(p),即:

logit(p)=logp1−plogit(p)=log\dfrac{p}{1-p}logit(p)=log1−pp​

该函数还是关于ppp的递增函数。

在Logistic回归中,对于某个实例xxx:

logp1−p=logP(Y=1∣x)1−P(Y=1∣x)=w⋅xlog\dfrac{p}{1-p}=log\dfrac{P(Y=1|x)}{1-P(Y=1|x)}=w\cdot xlog1−pp​=log1−P(Y=1∣x)P(Y=1∣x)​=w⋅x

也就是实例xxx输出Y=1Y=1Y=1的对数几率是xxx的线性函数。

三、极大似然估计

给定训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中,x(i)=(1,x1,x2,...,xn)T∈X=Rn+1x^{(i)}=(1, x_1, x_2, ..., x_n)^T\in X= R^{n+1}x(i)=(1,x1​,x2​,...,xn​)T∈X=Rn+1,y(i)∈Y={0,1}y^{(i)}\in Y=\{0, 1\}y(i)∈Y={0,1},应用极大似然估计发估计模型参数,从而得到Logistic回归模型。

设:P(Y=1∣x)=π(x)=ew⋅x1+ew⋅xP(Y=1|x)=\pi(x)=\dfrac{e^{w\cdot x}}{1+e^{w\cdot x}}P(Y=1∣x)=π(x)=1+ew⋅xew⋅x​,P(Y=0∣x)=1−π(x)=11+ew⋅xP(Y=0|x)=1-\pi(x)=\dfrac{1}{1+e^{w\cdot x}}P(Y=0∣x)=1−π(x)=1+ew⋅x1​

则似然函数为:

∏i=1m[π(x(i))]y(i)[1−π(x(i))]1−y(i)\displaystyle\prod_{i=1}^m[\pi(x^{(i)})]^{y^{(i)}}[1-\pi(x^{(i)})]^{1-y^{(i)}}i=1∏m​[π(x(i))]y(i)[1−π(x(i))]1−y(i)

对数似然函数为:

L(w)=∑i=1m[y(i)lnπ(x(i))+(1−y(i))ln(1−π(x(i)))]L(w)=\displaystyle\sum_{i=1}^m[y^{(i)}ln\pi(x^{(i)})+(1-y^{(i)})ln(1-\pi(x^{(i)}))]L(w)=i=1∑m​[y(i)lnπ(x(i))+(1−y(i))ln(1−π(x(i)))]
=∑i=1m[y(i)lnπ(x(i))1−π(x(i))+ln(1−π(x(i)))]=\displaystyle\sum_{i=1}^m[y^{(i)}ln\dfrac{\pi(x^{(i)})}{1-\pi(x^{(i)})}+ln(1-\pi(x^{(i)}))]=i=1∑m​[y(i)ln1−π(x(i))π(x(i))​+ln(1−π(x(i)))]
=∑i=1m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]=\displaystyle\sum_{i=1}^m[y^{(i)}(w\cdot x^{(i)})-ln(1+e^{w\cdot x^{(i)}})]=i=1∑m​[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]

该函数是高阶可导函数,对L(w)L(w)L(w)求极大值,即令每个样本的概率越大越好,得到www的估计值。

变换成求极小值:

min⁡wL(w)=−∑i=1m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]\min_{w} L(w)=-\displaystyle\sum_{i=1}^m[y^{(i)}(w\cdot x^{(i)})-ln(1+e^{w\cdot x^{(i)}})]wmin​L(w)=−i=1∑m​[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]

这样问题就变成了以对数似然函数为目标函数的最小值优化问题,Logistic回归学习中通常采用的方法是梯度下降和拟牛顿法。

计算梯度:

∂L(w)∂wj=−∂∑i=1m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]∂wj\dfrac{\partial L(w)}{\partial w_j}=-\dfrac{\partial \displaystyle\sum_{i=1}^m[y^{(i)}(w\cdot x^{(i)})-ln(1+e^{w\cdot x^{(i)}})]}{\partial w_j}∂wj​∂L(w)​=−∂wj​∂i=1∑m​[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]​
=−∑i=1m(y(i)xj(i))+∑i=1m∂ln(1+ew⋅x(i))∂wj= \displaystyle-\sum_{i=1}^m(y^{(i)}x^{(i)}_j)+\displaystyle\sum_{i=1}^m\dfrac{\partial ln(1+e^{w\cdot x^{(i)}})}{\partial w_j}=−i=1∑m​(y(i)xj(i)​)+i=1∑m​∂wj​∂ln(1+ew⋅x(i))​
=−∑i=1m(y(i)xj(i))+∑i=1m11+ew⋅x(i)∂ew⋅x(i)∂wj= \displaystyle-\sum_{i=1}^m(y^{(i)}x^{(i)}_j)+\displaystyle\sum_{i=1}^m\dfrac{1}{1+e^{w\cdot x^{(i)}}}\dfrac{\partial e^{w\cdot x^{(i)}}}{\partial w_j}=−i=1∑m​(y(i)xj(i)​)+i=1∑m​1+ew⋅x(i)1​∂wj​∂ew⋅x(i)​
=−∑i=1my(i)xj(i)+∑i=1mew⋅x(i)1+ew⋅x(i)xj(i)= \displaystyle-\sum_{i=1}^my^{(i)}x^{(i)}_j+\displaystyle\sum_{i=1}^m\dfrac{e^{w\cdot x^{(i)}}}{1+e^{w\cdot x^{(i)}}}x^{(i)}_j=−i=1∑m​y(i)xj(i)​+i=1∑m​1+ew⋅x(i)ew⋅x(i)​xj(i)​
=∑i=1m(ew⋅x(i)1+ew⋅x(i)−y(i))xj(i)= \displaystyle\sum_{i=1}^m\big(\dfrac{e^{w\cdot x^{(i)}}}{1+e^{w\cdot x^{(i)}}}-y^{(i)}\big)x^{(i)}_j=i=1∑m​(1+ew⋅x(i)ew⋅x(i)​−y(i))xj(i)​
=∑i=1m(θ(w⋅x(i))−y(i))xj(i)= \displaystyle\sum_{i=1}^m\big(\theta(w\cdot x^{(i)})-y^{(i)}\big)x^{(i)}_j=i=1∑m​(θ(w⋅x(i))−y(i))xj(i)​

其中θ(x)=ex1+ex=11+e−x\theta(x)=\dfrac{e^{x}}{1+e^{x}}=\dfrac{1}{1+e^{-x}}θ(x)=1+exex​=1+e−x1​,也称为sigmoidsigmoidsigmoid函数,然后得到:

∇L(w)=∑i=1m(θ(w⋅x(i))−y(i))x(i)\nabla L(w)= \displaystyle\sum_{i=1}^m\big(\theta(w\cdot x^{(i)})-y^{(i)}\big)x^{(i)}∇L(w)=i=1∑m​(θ(w⋅x(i))−y(i))x(i)

假定:

X=[(x(1))T(x(2))T(x(3))T...(x(m))T]=[1x1(1)x2(1)...xn(1)1x1(2)x2(2)...xn(2)1x1(3)x2(3)...xn(3)...1x1(m)x2(m)...xn(m)]X= \begin{bmatrix} (x^{(1)})^T \\ (x^{(2)})^T \\ (x^{(3)})^T \\ ... \\ ( x^{(m)} )^T \end{bmatrix} = \begin{bmatrix} 1 & x^{(1)}_1 & x^{(1)}_2 & ... & x^{(1)}_n \\ 1 & x^{(2)}_1 & x^{(2)}_2 & ... & x^{(2)}_n \\ 1 & x^{(3)}_1 & x^{(3)}_2 & ... & x^{(3)}_n \\ ... \\ 1 & x^{(m)}_1 & x^{(m)}_2 & ... & x^{(m)}_n \end{bmatrix}X=​(x(1))T(x(2))T(x(3))T...(x(m))T​​=​111...1​x1(1)​x1(2)​x1(3)​x1(m)​​x2(1)​x2(2)​x2(3)​x2(m)​​............​xn(1)​xn(2)​xn(3)​xn(m)​​​,Y=[y(1)y(2)y(3)...y(m)]Y=\begin{bmatrix} y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ ... \\ y^{(m)} \end{bmatrix}Y=​y(1)y(2)y(3)...y(m)​​,w=[w0w1w2...wn]w=\begin{bmatrix} w_0 \\ w_1 \\ w_2 \\ ... \\ w_n \end{bmatrix}w=​w0​w1​w2​...wn​​​

则:

X⋅w=[1x1(1)x2(1)...xn(1)1x1(2)x2(2)...xn(2)1x1(3)x2(3)...xn(3)...1x1(m)x2(m)...xn(m)]⋅[w0w1w2...wn]=[(x(1))T⋅w(x(2))T⋅w(x(3))T⋅w...(x(m))T⋅w]=[wT⋅x(1)wT⋅x(2)wT⋅x(3)...wT⋅x(m)]X\cdot w= \begin{bmatrix} 1 & x^{(1)}_1 & x^{(1)}_2 & ... & x^{(1)}_n \\ 1 & x^{(2)}_1 & x^{(2)}_2 & ... & x^{(2)}_n \\ 1 & x^{(3)}_1 & x^{(3)}_2 & ... & x^{(3)}_n \\ ... \\ 1 & x^{(m)}_1 & x^{(m)}_2 & ... & x^{(m)}_n \end{bmatrix}\cdot \begin{bmatrix} w_0 \\ w_1 \\ w_2 \\ ... \\ w_n \end{bmatrix}=\begin{bmatrix} (x^{(1)})^T\cdot w \\ (x^{(2)})^T\cdot w \\ (x^{(3)})^T\cdot w \\ ... \\ (x^{(m)})^T\cdot w \end{bmatrix}=\begin{bmatrix} w^T \cdot x^{(1)} \\ w^T \cdot x^{(2)} \\ w^T \cdot x^{(3)} \\ ... \\ w^T \cdot x^{(m)} \end{bmatrix}X⋅w=​111...1​x1(1)​x1(2)​x1(3)​x1(m)​​x2(1)​x2(2)​x2(3)​x2(m)​​............​xn(1)​xn(2)​xn(3)​xn(m)​​​⋅​w0​w1​w2​...wn​​​=​(x(1))T⋅w(x(2))T⋅w(x(3))T⋅w...(x(m))T⋅w​​=​wT⋅x(1)wT⋅x(2)wT⋅x(3)...wT⋅x(m)​​
θ(X⋅w)−Y=[θ(wT⋅x(1))−y(1)θ(wT⋅x(2))−y(2)θ(wT⋅x(3))−y(3)...θ(wT⋅x(m))−y(m)]\theta(X\cdot w)-Y=\begin{bmatrix} {\theta}(w^T \cdot x^{(1)})-y^{(1)} \\ {\theta}(w^T \cdot x^{(2)})-y^{(2)} \\ {\theta}(w^T \cdot x^{(3)})-y^{(3)} \\ ... \\ {\theta}(w^T \cdot x^{(m)})-y^{(m)} \end{bmatrix}θ(X⋅w)−Y=​θ(wT⋅x(1))−y(1)θ(wT⋅x(2))−y(2)θ(wT⋅x(3))−y(3)...θ(wT⋅x(m))−y(m)​​
XT=[x(1)x(2)x(3)...x(m)]X^T= \begin{bmatrix} x^{(1)} & x^{(2)} & x^{(3)} & ... & x^{(m)} \end{bmatrix}XT=[x(1)​x(2)​x(3)​...​x(m)​]
XT⋅(θ(X⋅w)−Y)=∑i=1m(θ(w⋅x(i))−y(i))x(i)X^T\cdot \big(\theta(X\cdot w)-Y\big) = \displaystyle\sum_{i=1}^m\big(\theta(w\cdot x^{(i)})-y^{(i)}\big)x^{(i)}XT⋅(θ(X⋅w)−Y)=i=1∑m​(θ(w⋅x(i))−y(i))x(i)

最终得到:

∇L(w)=XT⋅(θ(X⋅w)−Y)\nabla L(w)= X^T\cdot \big(\theta(X\cdot w)-Y\big)∇L(w)=XT⋅(θ(X⋅w)−Y)

同时也可以得到:

L(w)=−∑i=1m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]=−(X⋅w)T⋅Y+ln(1+eX⋅w)⋅IL(w)=-\displaystyle\sum_{i=1}^m[y^{(i)}(w\cdot x^{(i)})-ln(1+e^{w\cdot x^{(i)}})]=-(X\cdot w)^T\cdot Y+ln(1+e^{X\cdot w })\cdot IL(w)=−i=1∑m​[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]=−(X⋅w)T⋅Y+ln(1+eX⋅w)⋅I

其中III为全111向量。

四、梯度下降法

1.批量梯度下降(Batch Gradient Descent)

输入:训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x(i)∈X=Rnx^{(i)}\in X= R^nx(i)∈X=Rn,y(i)∈Y={0,1}y^{(i)}\in Y=\lbrace0,1\rbracey(i)∈Y={0,1},i=1,2,...,mi=1,2,...,mi=1,2,...,m,学习率η(0<η⩽1)\eta(0<\eta\leqslant1)η(0<η⩽1);

输出:www,bbb,其中w=(w1,w2,...,wn)Tw=(w_1, w_2, ..., w_n)^Tw=(w1​,w2​,...,wn​)T,模型P(y=1∣x)=sigmoid(w⋅x+b)P(y=1|x)=sigmoid ( w\cdot x+b)P(y=1∣x)=sigmoid(w⋅x+b)

1)将输入的每个xxx转换成x=(1,x1,x2,...xn)x=(1, x_1, x_2,...x_n)x=(1,x1​,x2​,...xn​),令w0=bw_0 =bw0​=b,输出为w=(w0,w1,w2,...,wn)Tw=(w_0, w_1, w_2, ..., w_n)^Tw=(w0​,w1​,w2​,...,wn​)T

2)选取初始w(0)=(w0,w1,w2,...,wn)Tw^{(0)}=(w_0, w_1, w_2, ..., w_n)^Tw(0)=(w0​,w1​,w2​,...,wn​)T

3)计算梯度XT⋅(θ(X⋅w(j))−Y)X^T\cdot \big(\theta(X\cdot w^{(j)})-Y\big)XT⋅(θ(X⋅w(j))−Y),其中w(j)w^{(j)}w(j)为第jjj次迭代的结果,则第j+1j+1j+1次为:

w(j+1)←w(j)−ηXT⋅(θ(X⋅w(j))−Y)w^{(j+1)} \gets w^{(j)} - \eta X^T\cdot \big(\theta(X\cdot w^{(j)})-Y\big)w(j+1)←w(j)−ηXT⋅(θ(X⋅w(j))−Y)

4)转到步骤(3),一直到L(w)L(w)L(w)满足一定条件,或者迭代到足够的次数。

在批量梯度下降算法中,每一步的迭代都需要计算所有样本,当样本数较大时,计算量会很大。

时间复杂度:

每次迭代更新X⋅w(j)=Y′X\cdot w^{(j)}=Y^{'}X⋅w(j)=Y′的计算次数为m×nm\times nm×n,θ(Y′)−Y=Z\theta(Y^{'})-Y = Zθ(Y′)−Y=Z的计算次数为nnn次,XT⋅ZX^T \cdot ZXT⋅Z的计算次数为m×nm\times nm×n,则每次迭代的时间复杂度为O(m×n)O(m\times n)O(m×n),假定迭代次数为kkk次,则总时间复杂度为O(k×m×n)O(k\times m\times n)O(k×m×n)。

2.随机梯度下降(Stochastic Gradient Descent)

将上面的步骤(3)改为:

3)随机选取某个样本x(i)x^{(i)}x(i),则:

w(j+1)←w(j)−η(θ(w(j)⋅x(i))−y(i))x(i)w^{(j+1)} \gets w^{(j)}-\eta \big(\theta(w^{(j)}\cdot x^{(i)})-y^{(i)}\big)x^{(i)}w(j+1)←w(j)−η(θ(w(j)⋅x(i))−y(i))x(i)

一直到迭代到足够的次数。

时间复杂度:

每次迭代更新w(j)⋅x(i)=y′w^{(j)}\cdot x^{(i)}=y^{'}w(j)⋅x(i)=y′的计算次数为nnn,θ(y′)−y(i)=z\theta(y^{'})-y^{(i)}=zθ(y′)−y(i)=z的计算次数为111,zx(i)zx^{(i)}zx(i)的计算次数为nnn,则每次迭代的时间复杂度为O(n)O(n)O(n),假设迭代次数为kkk,则总时间复杂度为O(k×n)O(k\times n)O(k×n)。

参考:

PreviousLogistic分布Next算法python实现

Last updated 7 years ago

https://zh.wikipedia.org/wiki/发生比
http://vividfree.github.io/机器学习/2015/12/13/understanding-logistic-regression-using-odds
http://blog.csdn.net/bitcarmanlee/article/details/51473567