逻辑回归算法及其实现

一、算法简介
说到逻辑回归,我们应该先提一下与其紧密相关的线性回归。

在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合(自变量都是一次方)。 函数的输入是特征向量及其对应的标签(因为是监督学习方式),输出是学得的模型,也就是一个线性函数y=wx + b。这里的关键是根据损失函数求得最佳回归系数w.常见的优化方法包括梯度下降法和最小二乘法,优化思想这里不做介绍,以后会专门介绍。对于线性回归函数

优点:结果易于理解,计算上不复杂。
缺点:对非线性数据拟合不好。
适用数据类型:数值型和标称型数据。
算法类型:回归算法

而逻辑回归,其算法思路跟线性回归基本一样,只不过在线性回归的基础上加了一层特征到结果的映射函数,即sigmoid=g(z)=1/(1+exp(-z))函数,将值连续映射到0~1之间,**注意一下,虽然算法名字中含回归二字,但他们都是用来做分类的算法。** 用逻辑回归来做分类,我们是通常基于如下假设: if (z>=0.5) g(z)=1 else g(z)=0 其中z是求得的最佳的线性回归系数之和。

二、算法步骤
1、获取数据集
2、数据格式化以满足算法输入要求
3、训练模型
4、测试模型
5、模型应用
对于得到的文本数据,我们首先对其进行处理,提取出每个实例的特征和对应的标签,并存到矩阵中。对于特征含有异常值或者缺失值的实例,我们可以将异常值剔除或者对缺失值来进行填充的方式来处理。常见的填充方式包括用特征平均值填充、全0填充、全1填充、相似特征值填充等。对于标签缺失的实例,我们不能进行填充,因为我们算法的目的就是来预测标签的,填充后会引入较大误差,通常做法是将这样的实例删除。数据处理好之后,接下来就是对算法模型进行训练了,反复迭代,直到达到最优的效果。中间为了方便理解,我们可以 借助matplotlib将迭代的过程进行可视化。
三、算法实现
我们用Python将算法进行实现,并用来做一个病马死亡的预测,具体实现可参考我github源代码,上面有详细注释。
https://github.com/GritCoder/Logistic.git
四、算法优化
本文采用的是梯度上升法来进行优化的,即求出最大回归系数。
原因是因为本文没有涉及到损失函数,如果利用损失函数来求解问题,则可以利用梯度下降法或者最小二乘法来进行优化。
具体各种优化策略的思想,后面会专门有文章来结束,这里暂不细说。
参考来源:
机器学习实战;统计学习方法

你可能感兴趣的:(机器学习)