Lineage逻辑回归分类算法html
线性回归和逻辑回归参考文章:算法
http://blog.csdn.net/viewcode/article/details/8794401函数
http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html学习
一、概述spa
Lineage逻辑回归是一种简单而又效果不错的分类算法.net
什么是回归:好比说咱们有两类数据,各有50十个点组成,当我门把这些点画出来,会有一条线区分这两组数据,咱们拟合出这个曲线(由于颇有多是非线性),就是回归。咱们经过大量的数据找出这条线,并拟合出这条线的表达式,再有新数据,咱们就以这条线为区分来实现分类。code
学习过程:htm
下图是一个数据集的两组数据,中间有一条区分两组数据的线。blog
显然,只有这种线性可分的数据分布才适合用线性回归数学
逻辑回归的模型 是一个非线性模型,sigmoid函数,又称逻辑回归函数。可是它本质上又是一个线性回归模型,由于除去sigmoid映射函数关系,其余的步骤,算法都是线性回归的。能够说,逻辑回归,都是以线性回归为理论支持的。
只不过,线性模型,没法作到sigmoid的非线性形式,sigmoid能够轻松处理0/1分类问题。
二、算法思想
Lineage回归分类算法就是将线性回归应用在分类场景中
在该场景中,计算结果是要获得对样本数据的分类标签,而不是获得那条回归直线
2.一、算法图示
1) 算法目标()?
大白话:计算各点的y值到拟合线的垂直距离,若是
距离>0, 分为类A
距离<0, 分为类B
2) 如何获得拟合线呢?
大白话:只能先假设,由于线或面的函数均可以表达成
y(拟合)=w1*x1 + w2*x2 + w3*x3 + ...
其中的w是待定参数
而x是数据的各维度特征值
于是上述问题就变成了 样本y(x) - y(拟合) >0 ? A : B
3) 如何求解出一套最优的w参数呢?
基本思路:代入“先验数据”来逆推求解
但针对不等式求解参数极其困难
通用的解决办法,将对不等式的求解作一个转换:
从而将问题转化为逼近求解的典型数学问题
2.二、sigmoid函数
上述算法思路中,一般使用sigmoid函数做为转换函数
函数表达式:
注:此处的x是向量
函数曲线:
之因此使用sigmoid函数,就是让样本点通过运算后获得的结果限制在0~1之间,压缩数据的巨幅震荡,从而方便获得样本点的分类标签(分类以sigmoid函数的计算结果是否大于0.5为依据)
三、算法实现分析
3.一、实现思路
算法思想的数学表述:
把数据集的特征值设为x1,x2,x3......
求出它们的回归系数wi
设z=w1*x1+w2*x2..... ,而后将z值代入sigmoid函数并判断结果,便可获得分类标签
问题在于如何获得一组合适的参数wi?
经过解析的途径很难求解,而经过迭代的方法能够比较便捷地找到最优解
简单来讲,就是不断用样本特征值代入算式,计算出结果后跟其实际标签进行比较,根据差值来修正参数,而后再代入新的样本值计算,循环往复,直到无需修正或已到达预设的迭代次数
注:此过程用梯度上升法来实现。
3.二、梯度上升算法
通俗解释:经过小步前进——》调整方向——》继续小步前进——》最终逼近最优解
梯度上升是指找到函数增加的方向。在具体实现的过程当中,不停地迭代运算直到w的值几乎再也不变化为止。
如图所示: