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函数形式为:
然后需要根据函数值分布,确定分类边界为线性还是非线性。这里我们只讨论线性边界的情况。线性边界的边界形式如下:
构造预测函数为:
看到这里你一定会产生疑问,为什么要选择sigmoid函数?接着看,后面会揭晓答案。
2.构造损失函数
如果利用最大似然估计构造损失函数,求得使损失函数L(θ)取最大值时的θ,便可以得到我们要找的h(x)函数。对于输入x,分类结果y为1和0的概率分别为:
取似然函数为:
再取对数似然函数为:
在L(θ)前乘一个负的系数-1/m:
这时J(θ)取最小值时的θ,就是要求的h(x)函数的最佳参数。
3.向量化的梯度下降法求J(θ)的最小值
上面已得到适用梯度下降法求解的J(θ),根据梯度下降法可得θ的更新过程:
训练数据x的矩阵形式如下,行为一条训练样本,列为不同特征取值:
先求x.θ并记为A:
再求hθ(x)-y并记为E:
由上式,hθ(x)-y可由g(A)-y一次计算求得。再来看θ的更新过程,可以改写为:
综上,vectorization后θ的更新步骤如下:
求A=x.θ
求E=g(A)-y
求θ:=θ-α.x’.E ;x’表示矩阵x的转置
综合起来写成:
目标函数J(θ)梯度计算的并行化
梯度下降法求J(θ)最小值时,超参数θ的更新公式为样本矩阵X的转置和误差矩阵E的点乘,整个梯度向量计算只需要进行向量间的点乘和相加。
可以将每个迭代过程拆分成相互独立的计算步骤,由不同的节点进行独立计算,然后归并计算结果。
数据分割
按行将样本进行划分,编号M,对每个计算节点分配M/m个样本和标签
按列对特征向量进行划分,编号N,对每个计算节点分配N/n维特征
按行并行
在计算误差矩阵E时,针对大样本数量并行,最后按行号归并。
按列并行
在计算x’.E时,针对高维特征并行,最后按列号归并。
4.Logistic Regression输出值是真实概率吗?
先说结论,只有在满足: y服从伯努利分布;η和x之间存在线性关系时,输出值才是概率值。不满足的情况下,得到的输出值,只是置信度 。
假设 y 是一个服从伯努利分布的二值随机变量。该分布的参数为Φ=P(y=1)。
伯努利分布属于指数分布族中的一种情况。指数分布族的形式为:
它告诉我们:对于随机变量x,只要确定三个函数h(x)、T(x)、A(η),就可以确定一类分布。 η用来确定该类分布的具体参数。
从伯努利分布出发,可变形到与指数分布族一样的形式:
对应得到上面提到的三个函数:
η与Φ之间的关系:
因此,伯努利分布可以改写为指数分布族的形式,而且,伯努利分布的参数Φ与η之间,还满足sigmoid函数的关系。
如果能找到x和η之间的关系,就找到了x和Φ之间的关系。假设η和x之间存在线性的关系,即:η = θx。
- 输入x,根据 θx算出η
- 根据η算出Φ
将Φ作为预测值。Φ既是伯努利分布的唯一参数,也是该分布的期望。我们又得到了logistic regression模型。