开始学习机器学习算法的时候就接触了Logistic回归及梯度下降法,但是当时并没有深入去自己推导一下公式,写一写代码,现在学习xgboost的时候又碰到Logistic回归相关的知识,干脆自己推一遍,写一下代码吧。。
逻辑回归
逻辑回归可以用来进行回归与分类,两者仅有略微不同,主体算法是一样的,本文以分类进行讲解。如下图二分类问题,我们希望找到一个直线(高维空间为超平面)来将数据划分开。
这样的线性边界可以表示为: θ0x1+θ1x2+...+θmxm=θTx θ 0 x 1 + θ 1 x 2 + . . . + θ m x m = θ T x
上式右边x为向量。
我们取预测函数为Sigmoid函数,Sigmoid函数有一个很棒的特点是它的导数 f′(x)=f(x)(1−f(x)) f ′ ( x ) = f ( x ) ( 1 − f ( x ) )
则预测函数可表示为:
P(y=1|x;θ)=hθ(x) P ( y = 1 | x ; θ ) = h θ ( x )
P(y=0|x;θ)=1−hθ(x) P ( y = 0 | x ; θ ) = 1 − h θ ( x )
将这两个式子合并一下:
P(y|x;θ)=(hθ(x))y(1−hθ(x))1−y P ( y | x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y
显然:
当y=0的时候上式等价于 P(y=0|x;θ)=1−hθ(x) P ( y = 0 | x ; θ ) = 1 − h θ ( x )
当y=1的时候上式等价于 P(y=1|x;θ)=hθ(x) P ( y = 1 | x ; θ ) = h θ ( x )
取似然函数 L(θ)=∏mi=1(hθ(x(i)))yi(1−hθ(x(i)))1−yi L ( θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y i ( 1 − h θ ( x ( i ) ) ) 1 − y i
我们的目的就是求解似然函数的最大值,为了方便求解,我们取对数似然函数如下:
logL(θ)=∑i=1m(yiloghθ(x(i))+(1−yi)log(1−hθ(x(i)))) l o g L ( θ ) = ∑ i = 1 m ( y i l o g h θ ( x ( i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x ( i ) )