逻辑回归在业界比较常用,用于估计某种事物的可能性。例如广告预测,根据某广告被用户点击的可能性,把最可能被用户点击的广告摆在用户能看见的地方。还有类似的某买某商品的可能性,患某种疾病的可能性等。逻辑回归比SVM温柔,SVM是一锤子买卖,买或不买!而逻辑回归会给你提供的是你这个样本属于正类的可能性,好比说你49%买。
概念及其主要思想:
假设现在有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合的过程就称为回归。
利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。
Logistic回归的一般过程:
(1) 收集数据:任意方法
(2) 准备数据:由于需要进行距离计算,因此要求数据类型为数值型。另外,结构化数据格式为最佳
(3) 分析数据:任意方式对数据进行分析
(4) 训练算法:大部分时间将用于训练,训练的目的是为了找到最佳的分类回归系统
(5) 测试算法:一旦训练步骤完成,分类将会很快
(6) 使用算法:首先需要输入一些数据,并将其转换成对应的结构化数值;接着基于训练好的回归系数就可以对这些数值进行简单的回归计算,判定它们属于哪个类别,在这之后就可以在输出的类别上做一些其他分析工作。
优点:计算代价不高,易于理解和实现
缺点:容易欠拟合,分类精度可能不高
适用数据类型:数值型和标称型数据
Logistic回归的目的是寻找一个非线性sigmoid函数的最佳拟合参数,采用梯度上升法优化,而在这个过程中,为了减少时间复杂度,又可以使用随机梯度上升法来简化梯度上升法。
具体的公式推导以后会再添加,这里只做大概的介绍。下面进行实现:
(1)、收集数据并使用梯度上升找到最佳参数
(2)利用随机梯度上升( stocGradAscent0)算法、改进的随机梯度上升(stocGradAscent1)算法分类
结果:
1)、使用梯度上升画出决策边界
2)、随机梯度上升算法:梯度上升算法处理100个左右的数据集时尚可用,如果有数十亿样本和成千上万的特征,算法复杂度就会变得极高。改进:随机梯度上升算法,此法一次仅用一个样本点来更新回归系数。其占用更少的计算资源,是一种在线算法,可以在数据到来时就完成参数的更新,而不需要重新读取整个数据集来进行批处理运算。一次处理所有的数据被称为批处理。
3)、改进的随机梯度上升算法
改进部分:alpha在每次迭代的时候都会调整,这会缓解数据波动或高频波动;通过随机选取样本来更新回归系数,这样可以减少周期性波动;增加一个迭代参数。
3、使用算法
从疝气病症预测病马的死亡率
样本包含368个,以及28个特征(一些病症的指标),另外该数据集中存在一个问题,数据集的30%的数据是缺失的。
处理数据中缺失值方法:
使用可用特征的均值来填补缺失值
使用特殊值来填补缺失值,如-1
忽略有缺失值的样本
使用相似样本的均值填补缺失值
使用另外的机器学习算法预测缺失值
但是对于类别标签缺失的数据,只能采用将该数据放弃的方法。
Python使用的numpy数据类型不允许包含缺失值,这里选择0代替所有的缺失值,正好适用于logistic回归。
平均错误率在30%左右,可以通过修改步长来减小错误率。也可以修改改进的随机梯度上升函数和迭代的次数。
资源:
http://download.csdn.net/download/qq_34385827/9950144
祝大家顺利