小白的机器学习笔记(八)----Logistic回归处理二分类

前面介绍了针对连续值的线性回归,现在我们继续学习针对离散值的Logistic回归。在绪论里面已经说过,回归针对连续,分类针对离散,这里又说Logistic回归针对离散,到底是怎么一回事?其实Logistic回归问题就是一种分类问题,只是名字叫这个而已······

我们来看看为啥说线性回归不太适合分析离散值。

第一点原因,因为数据离散分布,受描点的影响大,很容易因为少数几种情况导致拟合的线偏离正确轨道。

第二点原因,假如是二分类问题,y=0或1,我们却很有可能得到h(x)>1,y=0或h(x)<0,y=1的情况,十分奇怪

Logistic回归就是让h(x)介于0与1之间的一种算法。这里主要介绍利用Logistic回归解决二分类问题。

1、假设函数

Logistic函数(Sigmoid函数):g(z)=1/(1+e^-^z),0<g(z)<1,且趋向正无穷时无限趋近于1,趋向负无穷时无限趋近于0。

Logistic回归的假设函数:h(k)=g(k^TX),显然介于0与1之间。

例:假设:如果h>=0.5时,y=1。如下图,即k^TX>=0时,y=1;k^TX<0时,y=0。

P.S:matlab作图代码:x=[-10:0.01:10]; 

                                      y=sigmf(x,[1,0]);

                                      plot(x,y)

2、决策边界

首先强调决策边界是假设函数及模型参数的属性,而非训练集的属性。再进一步说,训练集确定模型参数,但只要有了模型参数,决策边界也就确定了。简单来说,决策边界是边界,是将y=0与y=1的点分开的边界。决策边界的形状不限,可以是直线,可以是圆,还可以是任意不规则的曲线。

3、代价函数

 当y=1,Cost(h(x),y)=-log(h(x))

 当y=0,Cost(h(x),y)=-log(1-h(x))  

综合上述: 

Cost(h(x),y)=-ylog(h(x))-(1-y)log(1-h(x))

J(k)=1/m*\sum Cost(h(x),y),m是训练样本数

J(k)=-1/m*[\sum y^(^i^)logh(x^(^i^))+(1-y^(^i^))log(1-h(x^(^i^)))]

 

当h(x)=1,Cost=0;但是当h(x)=0,Cost=无穷

当Cost=0,h(x)=0;但是当h(x)=1时,Cost=无穷

4、梯度下降算法

kj=kj-\alpha *\partial J(k)/\partial kj

化简后:kj=kj-\alpha *\sum (h(x^(^i^))-y^(^i^))xj^(^i^)

另拓展多分类问题:

将多分类问题转换成多个二分类问题来解决!

例:将三角形,圆形,叉形分类

将三角形,圆形,叉形记为1,2,3类,将该三分类问题视作三个独立的二分类问题;

创建新的训练集,将1类视作正类,2,3类视作负类,拟合一个分类器(分类器就是一组权值k0,k1·····kn)h1;

类似可得h2,h3。此处hi(X)的意义是输入为X时,y=i的概率。

输入测试集,测试数据为X=【1,x1,x2·····xn】,分别通过h1,h2,h3,得到hi(X),哪个hi(X)大,就选哪个

                                                                                                                                          BY   ZJQ

猜你喜欢

转载自blog.csdn.net/qq_41641805/article/details/81514851