logistic regression 用来解决分类问题。其核心思想是寻找一个非线性函数sigmoid的最佳拟合参数,求解过程可以由最优化算法来完成。算法的输出是0到1之间的值,这个值是真实的概率吗?带着这个问题,我们来一探究竟。
logistic regression 可以概述为这样的过程:
1.寻找合适的hypothesis函数,即我们要找的分类函数,一般表示为h函数,它用来预测输入数据的判断结果。这一过程非常关键,需要对数据有初步了解或分析,猜测假设函数的“大概”形式,比如是线性函数还是非线性函数。
2.构造经验损失函数,该函数表示预测的输出h与训练数据的类别标签y之间的偏差,可以是二者之间的差(h-y)或其它形式。综合考虑所有训练数据的“损失”,将偏差求和或者求平均,记为J(θ)函数,表示所有训练数据预测值与实际类别的偏差。
3.找到J(θ)函数的最小值。显然,J(θ)函数的值越小表示h函数的预测值越准确。logistic regression中常用梯度下降法找其最小值。
1.构造hypothesis函数
由于h(x)函数的最终输出必须是两个值(分别代表两个类别),首先利用Sigmoid函数,将h(x)函数值的范围规范到两个对称区间内,Sigmoid函数形式为:
![](https://i-blog.csdnimg.cn/blog_migrate/dbe1b8b993902c94b45cc7c24f7fb466.png)
然后需要根据函数值分布,确定分类边界为线性还是非线性。这里我们只讨论线性边界的情况。线性边界的边界形式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/4346395875f09bfa3f2aaace7a961b46.png)
构造预测函数为:
![](https://i-blog.csdnimg.cn/blog_migrate/a348d47296dcabf82bce8507b576f4f0.png)
看到这里你一定会产生疑问,为什么要选择sigmoid函数?接着看,后面会揭晓答案。
2.构造损失函数
如果利用最大似然估计构造损失函数,求得使损失函数L(θ)取最大值时的θ,便可以得到我们要找的h(x)函数。对于输入x,分类结果y为1和0的概率分别为:
![](https://i-blog.csdnimg.cn/blog_migrate/be6eea905398ee6a57314c493d5c4fdb.png)
取似然函数为:
![](https://i-blog.csdnimg.cn/blog_migrate/7876450644dd1574c9202d885510f3db.png)
再取对数似然函数为:
![](https://i-blog.csdnimg.cn/blog_migrate/9738b60bbcd4b72d381bf325706234e8.png)
在L(θ)前乘一个负的系数-1/m:
![](https://i-blog.csdnimg.cn/blog_migrate/bc2ef61ed4f18688c93e4c29d073d343.png)
这时J(θ)取最小值时的θ,就是要求的h(x)函数的最佳参数。
3.向量化的梯度下降法求J(θ)的最小值
上面已得到适用梯度下降法求解的J(θ),根据梯度下降法可得θ的更新过程:
![](https://i-blog.csdnimg.cn/blog_migrate/81cc988d96268380aad3bcecd703b2bd.png)
训练数据x的矩阵形式如下,行为一条训练样本,列为不同特征取值:
![](https://i-blog.csdnimg.cn/blog_migrate/3dd5ee5ffa9a8f7ee88f89939973075e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ffc1ada39992d34eeb61d724764680.png)
先求x.θ并记为A:
![](https://i-blog.csdnimg.cn/blog_migrate/33f4c2a8897e33b1c367d0f0e450bdba.png)
再求hθ(x)-y并记为E:
![](https://i-blog.csdnimg.cn/blog_migrate/5d4265a88772f13d87d32371d6be0384.png)
由上式,hθ(x)-y可由g(A)-y一次计算求得。再来看θ的更新过程,可以改写为:
![](https://i-blog.csdnimg.cn/blog_migrate/d575e13525b2d53afc1f0cb6fc2e883e.png)
综上,vectorization后θ的更新步骤如下:
求A=x.θ
求E=g(A)-y
求θ:=θ-α.x’.E ;x’表示矩阵x的转置
综合起来写成:
![](https://i-blog.csdnimg.cn/blog_migrate/ad06effa880af214639a07494686f1a3.png)
目标函数J(θ)梯度计算的并行化
梯度下降法求J(θ)最小值时,超参数θ的更新公式为样本矩阵X的转置和误差矩阵E的点乘,整个梯度向量计算只需要进行向量间的点乘和相加。
可以将每个迭代过程拆分成相互独立的计算步骤,由不同的节点进行独立计算,然后归并计算结果。
数据分割
按行将样本进行划分,编号M,对每个计算节点分配M/m个样本和标签
按列对特征向量进行划分,编号N,对每个计算节点分配N/n维特征
按行并行
在计算误差矩阵E时,针对大样本数量并行,最后按行号归并。
按列并行
在计算x’.E时,针对高维特征并行,最后按列号归并。
4.Logistic Regression输出值是真实概率吗?
先说结论,只有在满足: y服从伯努利分布;η和x之间存在线性关系时,输出值才是概率值。不满足的情况下,得到的输出值,只是置信度 。
假设 y 是一个服从伯努利分布的二值随机变量。该分布的参数为Φ=P(y=1)。
伯努利分布属于指数分布族中的一种情况。指数分布族的形式为:
![](https://i-blog.csdnimg.cn/blog_migrate/373d729832410a2f6feb65b8a025c5a2.png)
它告诉我们:对于随机变量x,只要确定三个函数h(x)、T(x)、A(η),就可以确定一类分布。 η用来确定该类分布的具体参数。
从伯努利分布出发,可变形到与指数分布族一样的形式:
![](https://i-blog.csdnimg.cn/blog_migrate/455f755ca452fbb91947ae391ce96d63.png)
对应得到上面提到的三个函数:
![](https://i-blog.csdnimg.cn/blog_migrate/21d581846a27a3c55978fd1b19a42d73.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7fccea04f9b29fde7cd25e2de181af88.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8873f35680515be28b1be84db71ca463.png)
η与Φ之间的关系:
![](https://i-blog.csdnimg.cn/blog_migrate/d07e43c2ce75e7057f1cc0bce1836461.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83512af4700785e5f3aff025bbb884ca.png)
因此,伯努利分布可以改写为指数分布族的形式,而且,伯努利分布的参数Φ与η之间,还满足sigmoid函数的关系。
如果能找到x和η之间的关系,就找到了x和Φ之间的关系。假设η和x之间存在线性的关系,即:η = θx。
- 输入x,根据 θx算出η
- 根据η算出Φ
将Φ作为预测值。Φ既是伯努利分布的唯一参数,也是该分布的期望。我们又得到了logistic regression模型。