Logistic回归

来源:互联网 发布:体检的意义 知乎 编辑:程序博客网 时间:2024/06/06 05:42

逻辑回归在业界比较常用,用于估计某种事物的可能性。例如广告预测,根据某广告被用户点击的可能性,把最可能被用户点击的广告摆在用户能看见的地方。还有类似的某买某商品的可能性,患某种疾病的可能性等。逻辑回归比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

祝大家顺利

原创粉丝点击