逻辑回归

实验名称:逻辑回归算法

已完成内容:

  • 理解逻辑回归算法的思想。

  • 使用Python实现逻辑回归算法 。

  • 使用UCI上面的adult数据集进行算法测试。

  • 记录测试结果。

知识点总结:

**概念**
回归:拟合过程,即用一条直线对数据点进行拟合(该直线称为最佳拟合直线)。

LogisticRegression是最优化算法之一,是一种用于估计某种事物的可能性的方法,可用作回归及分类(主要是二分类)。
主要思想:根据现在已有的数据集对分类边界建立回归公式,以此进行分类。
逻辑回归的实现过程主要包括构造预测函数与代价函数,选择优化方法更新参数以及决策函数阈值的选取三部分。

**一般过程**
1、收集数据:应使用连续型数据,本次实验使用Adult数据集(由于需要计算距离,所采用的数据集应为数值型)。 2、分析数据; 3、训练算法:找到最佳的分类回归系数。 4、测试算法:对测试数据进行分类 5、使用算法:输入测试集,并基于训练好的回归系数对数据简单的回归计算,判定类别。且可进一步画出图像。
**步骤详解**
(一)确定分类函数
确定用于分类的函数,最好的函数类型应该是能接受所有输入然后预测出类别。说到这里,有没有想起高数上面介绍的跃阶函数?想起来也没什么用,因为它在x=0时发生突变,跳跃的瞬间是很难处理的。所以这里告诉另外一个具有类似性质的函数:Sigmoid函数,至于其推导过程,我在这里就不再赘述了,其形式如下: $f(x) = \frac{1}{1+e^(-z)}$ 。

当x=0时,函数输出值为0.5;随着x增大,函数值逼近于1;随着x减少,函数值逼近于0。为了实现分类器功能,我们可以在每个特征上乘以一个回归系数,然后把所有的数值相加,并将总和代入上述函数,进而得到一个范围为0~1的数值。任何大于0.5的数据被分成1类,小于0.5的数据被分成0类。(类似于概率估计)

(二)寻找最佳回归系数
上诉公式中的z记为$z = w^T+x$,其中向量x是分类器的输出数据,向量w是我们要寻找的最佳参数。在本节中我们将使用**“梯度上升法”**寻找最佳的$w$。 其思想:要找到某函数的最大值,最好的方法是沿着该函数的梯度方向探寻(这意味着计算点必须有定义且可微,即不可以有缺失值)。通过每次迭代计算梯度算子$Alpha$,我们可以获得函数值增长最快的方向。迭代公式为:$w =w + Alpha*f(x)$
(三)实现过程
详细代码见下一篇博客—《逻辑回归的python实现代码》

ps:由于使用梯度上升的方法会导致计算复杂度升高,实验代码中包含三种可选方法,后两种是升级与改进。
1、随机梯度上升法:每次仅用一个样本点来更新回归系数(在线学习)。这种方法可以一定程度上减少计算复杂度,但是由于迭代次数相对减少,相比起未修改前,参数不太稳定,故拟合效果不太佳。进而得到第三种改进方法。
2、第三种改进方法改进了alpha,使其每次迭代都有相应的调整(但同时也要避免参数严格下降),以缓解数据的波动。但是alpha每次迭代减少,不会减少到0 ,这样保证每次计算alpha对数据仍有影响。

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