机器学习(十五) ——logistic回归实践

机器学习(十五)——logistic回归实践

(原创内容,转载请注明来源,谢谢)

一、概述

logistic回归的核心是sigmoid函数,以及分类方式。当sigmoid值大于0.5时,判断结果为1,小于0.5时判断结果为0。公式为g(z)=1/(1+e-z)。其中,z=w0x0+w1x1…+wnxn,w为x的权重,其中x0=1。

决策边界是用于区分分类结果的一条线,线的两边代表分类的两种结果。

之前提到logistic,是使用梯度下降算法,用于获取代价函数J最小值时的参数。现在使用梯度上升算法,直接进行训练,不计算代价函数。

logistic的本质,就是计算出sigmoid的最佳参数。

二、梯度上升与决策边界

下面是一个用梯度上升算法进行分类的例子。

1、获取数据源

数据是存在txt文件中,需要读取出来。其中每一行的前面的列都是特征值,最后一列是分类结果。

需要注意的是,由于x0默认是1,在获取的内容中没有记录,因此需要手动把其加上。

2、定义sigmoid

3、梯度上升算法

和梯度下降,区别在于梯度下降的时候,weights是要减去α乘以偏导数,而梯度上升是采用加的方式。

这里训练500次,每次都是矩阵直接相乘的计算。

4、梯度上升的简化—随机梯度上升

梯度上升算法,每次都要进行矩阵的计算,当数据量很大时,这个矩阵的计算量非常大,因此可以改成随机梯度上升。

这里和梯度上升的区别,就是在于把矩阵运算改成了数值运算,按照顺序遍历样本,每次仅取一个样本进行梯度上升计算。

5、随机梯度上升优化

随机梯度上升,还有优化的空间。主要在于两点:

1)α

α表示的是每次改动的单位步长。由于随机梯度上升算法,在高频的地方会出现波动非常大的情况,这里让α在训练次数多的情况下略微递减,但又加上一个0.01,保证其不会减到0。这样可以改善高频抖动剧烈的现象。

2)随机样本

样本每次随机取一个,这样避免上下相关的数据出现问题,导致结果周期性波动。

随机梯度上升,是一种在线学习算法,其可以根据每次的输入,实时进行学习,而不用一次性读取全部的内容。相比之下,一次性读取全部内容的算法,称为批处理算法。

6、绘制结果

这个用到matplotlib,对里面的语法没有太多的研究。

7、绘制结果

下面三行weights分别是三种梯度上升,其在500次训练的情况下,基本上结果是一样的,因此图没有一一放出来。随机梯度的有点就是在于速度快,当特征值非常多或者样本非常大的时候,用随机梯度上升可以显著加快运算速度。

根据绘制出来的决策边界,可以看出只有两个红点和一个绿点存在误差,整体来说效果还是很好的。

三、实战-给定数据集进行预测

1、需求

下面进行一个实战。根据给定的数据量大的样本,进行分类。其是通过马的各种身体特征,预测马的身体情况。

2、分类函数

logistic回归,其分类就是根据sigmoid函数的计算结果,大于0.5时判断为1,否则是0。

3、读取数据并训练

整个过程和上面类似,不赘述。

4、测试训练结果

用训练出来的weights,配合测试数据进行测试,并比对实际结果,计算误差率。

5、执行测试

四、样本数据缺失情况下的处理

当采样存在问题,导致部分数据的特征值没有采集完全,或者分类结果没有采集到时,往往并不能重新采集,因为代价太大,因此可以用下面的方式来处理。

1、总体方式

用特征均值弥补、用特殊值如-1来弥补、忽略有缺失值的样本、使用相似样本的均值来弥补、用其他的机器学习算法预测缺失值等。

2、对于logistic回归

1)特征值缺失

特征值缺失的情况下,对于logistic,可以直接将缺失的特征值设置成0,这是因为在计算weights时,特征值为0的不会影响到最终的结果;另外结果是0的在sigmoid中也是正中间,没有趋向性。

2)分类结果缺失

分类结果缺失的,在logistic中,通常会抛弃,因为结果缺失的不太好知道实际的结果。

五、总结

logistic回归算法,总体来说还算好理解,理解好sigmoid和梯度下降/梯度上升算法,基本上就可以用logistic来解决问题了。

——written by linhxx 2018.01.16

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【最新TensorFlow1.4.0教程03】利用Eager Execution构建和训练卷积神经网络(CNN)

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视...

3715
来自专栏机器学习算法与Python学习

支持向量机(SVM)--(4)

回忆:在上一篇文章中我们谈到为了使支持向量机能够处理非线性问题,进而引进核函数,将输入空间的输入数据集通过一个满足Mercer核条件的核函数映射到更高...

3046
来自专栏AI研习社

Inception Network 各版本演进史

Inception 网络是卷积神经网络 (CNN) 分类器发展中的一个重要里程碑。在 inception 之前, 大多数流行的 CNN 只是将卷积层堆叠得越来越...

1203
来自专栏郭耀华‘s Blog

MaxPooling的作用

1262
来自专栏郭耀华‘s Blog

MaxPooling的作用

maxpooling主要有两大作用 1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺...

2867
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

优化的对比度增强算法用于有雾图像的清晰化处理(算法效果是我目前看到最为稳定的,且对天空具有天然的免疫力,极力推荐有需要的朋友研究)。

在未谈及具体的算法流程前,先贴几幅用该算法处理的效果。 ? ? ? ?   不知道各位对这个算法的效果第一印象如何。       这个算法的原理来自于文章...

2458
来自专栏Petrichor的专栏

深度学习: Regularization (正则化)

正则化,regularization,也即 约束 。是防止过拟合的诸多手段之一,很常用。

5644

如何使用统计显着性检验来解释机器学习结果

在比较两种不同的机器学习算法或比较相同的算法与不同的配置时,收集一组结果是一个好习惯。

56310
来自专栏ATYUN订阅号

Python中的白噪声时间训练

白噪声是时间序列预测中的一个重要概念。如果一个时间序列是白噪声,它是一个随机数序列,不能预测。如果预测误差不是白噪声,它暗示了预测模型仍有改进空间。 在本教程中...

6756
来自专栏机器之心

入门 | 如何通过梯度检验帮助实现反向传播

1295

扫码关注云+社区