Logistic回归的一般过程
(1) 收集数据:采用任意方法收集数据。
(2) 准备数据:由于需要进行距离计算,因此要求数据类型为数值型。另外,结构化数据 格式则最佳。
(3) 分析数据:采用任意方法对数据进行分析。
(4) 训练算法:大部分时间将用于训练,训练的目的是为了找到最佳的分类回归系数。
(5) 测试算法:一旦训练步骤完成,分类将会很快。
(6) 使用算法:首先,我们需要输入一些数据,并将其转换成对应的结构化数值; 接着,基于训练好的回归系数就可以对这些数值进行简单的回归计算,判定它们属于哪个类别;在这之后,我们就可以在输出的类别上做一些其他分析工作。
基于Logistic回归和 Sigmoid函数的分类
Logistic回归
-
优点:计算代价不高,易于理解和实现。
-
缺点:容易欠拟合,分类精度可能不高。
-
适用数据类型:数值型和标称型数据。
Sigmoid函数具体的计算公式如下:
当x为0时,Sigmoid函数值为0.5。 随着x的增大,对应的Sigmoid值将逼近于1;而随着x的减小,Sigmoid值将逼近于0。如果横坐标 刻度足够大(图5-1下图),Sigmoid函数看起来很像一个阶跃函数
梯度上升法
梯度上升算法到达每个点后都会重新估计移动的方向。从P0开始,计算完该点 的梯度,函数就根据梯度移动到下一点P1。在P1点,梯度再次被重新计算,并 沿新的梯度方向移动到P2。如此循环迭代,直到满足停止条件。迭代的过程中, 梯度算子总是保证我们能选取到最佳的移动方向
梯度下降算法
你最经常听到的应该是梯度下降算法,它与这里的梯度上升算法是一样的,只是公式中的 加法需要变成减法。因此,对应的公式可以写成 :
梯度上升算法用来求函数的最大值,而梯度下降算法用来求函数的最小值
训练算法:使用梯度上升找到最佳参数
梯度上升法的伪代码如下
每个回归系数初始化为1
重复R次:
计算整个数据集的梯度
使用alpha × gradient更新回归系数的向量
返回回归系数
训练算法:随机梯度上升
随机梯度上升算法可以写成如下的伪代码:
所有回归系数初始化为1
对数据集中每个样本
计算该样本的梯度
使用alpha × gradient更新回归系数值
返回回归系数值
示例:从疝气病症预测病马的死亡率
(1) 收集数据:给定数据文件。
(2) 准备数据:用Python解析文本文件并填充缺失值。
(3) 分析数据:可视化并观察数据。
(4) 训练算法:使用优化算法,找到最佳的系数。
(5) 测试算法:为了量化回归的效果,需要观察错误率。根据错误率决定是否回退到训练 阶段,通过改变迭代的次数和步长等参数来得到更好的回归系数。
(6) 使用算法:实现一个简单的命令行程序来收集马的症状并输出预测结果并非难事
准备数据:处理数据中的缺失值
- 使用可用特征的均值来填补缺失值;
- 使用特殊值来填补缺失值,如1;
- 忽略有缺失值的样本;
- 使用相似样本的均值添补缺失值;
- 使用另外的机器学习算法预测缺失值。
测试算法:用 Logistic回归进行分类
使用Logistic 回归方法进行分类并不需要做很多工作,所需做的只是把测试集上每个特征向量乘以优化方法 得来的回归系数,再将该乘积结果求和,后输入到Sigmoid函数中即可。如果对应的Sigmoid值 大于0.5就预测类别标签为1,否则为0。
本章小结
- Logistic回归的目的是寻找一个非线性函数Sigmoid的佳拟合参数,求解过程可以由优化
算法来完成。在优化算法中,常用的就是梯度上升算法,而梯度上升算法又可以简化为随机 梯度上升算法。 - 随机梯度上升算法与梯度上升算法的效果相当,但占用更少的计算资源。此外,随机梯度上
升是一个在线算法,它可以在新数据到来时就完成参数更新,而不需要重新读取整个数据集来进 行批处理运算。