机器学习基础(二)——LogisticRegression

假设有如下数据集代表y=(0,1)两类不同数据

机器学习基础(二)——LogisticRegression

P(y^=1|x,w)来表示y^=1的概率,而由于y的取值为0或1,有P(y^=1|x,w)+P(y^=0|x,w)=1,Logistic regression方法用线性方程加Sigmoid函数限制(0P1)的方式建立模型:

hw(x)=g(z)

g(z)=11+ez

z=wTx

然后使用阈值(threshold)来判断具体分类结果:

y={0hw(x)<threshold1hw(x)threshold

计算损失函数如下:

loss=frac1mi=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=1log(1hw(x))y=0

分析Cost函数:
* 当y=1,hw(x)=1Cost=0,即P(y=1|w,x)=1时预测y=1的准确度极高。
* 当y=1,hw(x)=0Cost,即P(y=1|w,x)=0时预测y=1的准确度极低。
* 当y=0时的情况相同。

所以使用如下Cost形式:

Cost(hw(x),y)=ylog(hw(x))(1y)log(1hw(x))

需要求解的优化问题为:

minloss(w)=1m(i=1)mCost(hw(x),y)

ddwj(Cost(w))=y1hw(x)hw(x)(1hw(x))xj(1y)hw(x)1hw(x)(1hw(x))xj

=(hw(x)y)xj

ddwj(loss(w))=1mi=1m(hw(x(i))y(i))xj(i)

以上为逻辑回归算法的基本思路,更详尽描述待补充

基于numpy的具体实现代码见:https://github.com/Alnlll/ML/tree/master/lgr