假设有如下数据集代表y=(0,1)两类不同数据
以P(yˆ=1|x,w)来表示yˆ=1的概率,而由于y的取值为0或1,有P(yˆ=1|x,w)+P(yˆ=0|x,w)=1,Logistic regression方法用线性方程加Sigmoid函数限制(0≤P≤1)的方式建立模型:
hw(x)=g(z)
g(z)=11+e−z
z=wTx
然后使用阈值(threshold)来判断具体分类结果:
y={0hw(x)<threshold1hw(x)≥threshold
计算损失函数如下:
loss=、frac1m∑i=1m12(hw(x(i)−y(i)))2
Cost(hw(x),y)=12(hw(x)−y)2
但是显然由于Sigmoid函数的影响损失函数是“非凸”的,所以需要通过变形来得到一个合适的形式:
Cost(hw(x),y)={−log(hw(x))y=1−log(1−hw(x))y=0
分析Cost函数:
* 当y=1,hw(x)=1时Cost=0,即P(y=1|w,x)=1时预测y=1的准确度极高。
* 当y=1,hw(x)=0时Cost→∞,即P(y=1|w,x)=0时预测y=1的准确度极低。
* 当y=0时的情况相同。
所以使用如下Cost形式:
Cost(hw(x),y)=−ylog(hw(x))−(1−y)log(1−hw(x))
需要求解的优化问题为:
minloss(w)=1m∑(i=1)mCost(hw(x),y)
ddwj(Cost(w))=−y1hw(x)hw(x)(1−hw(x))xj−(1−y)−hw(x)1−hw(x)(1−hw(x))xj
=(hw(x)−y)xj
ddwj(loss(w))=1m∑i=1m(hw(x(i))−y(i))x(i)j
以上为逻辑回归算法的基本思路,更详尽描述待补充
基于numpy的具体实现代码见:https://github.com/Alnlll/ML/tree/master/lgr