机器学习(十五) ——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 条评论
登录 后参与评论

相关文章

来自专栏人工智能

未来的人工智能将有神经元结构?谷歌 Tensorflow 系统已经实现

神经网络是Tensorflow最擅长的机器学习领域。TensorFlow拥有一套符号引擎,它使得训练复杂模型变得更简单和方便。通过这套符号引擎,我们能够实现许多...

1729
来自专栏人工智能LeadAI

零基础入门深度学习 |最终篇:递归神经网络

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learni...

4855
来自专栏机器学习养成记

Twitter情感分析CNN+word2vec(翻译)

Rickest Ricky 对Twitter内容做了一系列的文本分析处理,并把内容整理成博文发布到:https://medium.com/@rickykim78...

1031
来自专栏人工智能LeadAI

线性回归回顾与logistic回归 | 机器学习笔记

01 再看线性回归 之前我们选择线性回归的时候,只是认为那些数据看上去很符合线性的样子,选择最小平方损失函数的时候,也是直接提出来的,没有考虑过为什么会是这个样...

35813
来自专栏专知

使用SSD进行目标检测:目标检测第二篇

【导读】近日,CV-Tricks.com发布了一篇文章,使用SSD进行目标检测,SSD是当前最流行的目标检测算法之一。作者从检测的基本概念、滑动窗口检测、减少滑...

4175
来自专栏书山有路勤为径

目标检测(Object detection)

这次我们学习构建神经网络的另一个问题,定位分类问题。这意味着我们不仅需要判断图片中是不是一辆车,还要在图片中将他标记出来。“定位”的意思是判断汽车在图片中的具体...

511
来自专栏李智的专栏

斯坦福CS231n - CNN for Visual Recognition(4)-lecture4反向传播

  在神经网络中,对应的是损失函数LL,输入xx包含训练数据和神经网络的权重。比如,损失函数为SVMSVM,输入包括了训练数据xi,yix_i,y_i、权重WW...

781
来自专栏技术小站

吴恩达深度学习笔记 course4 week 4 特殊应用:人脸识别与神经风格转换

output:如果图片是对应的K人中的一人,则输出此人ID,否则验证不通过    ,人脸识别比人脸验证更难一些,如果一个人脸验证系统的正确率为99%,即错误率为...

762
来自专栏决胜机器学习

​ 机器学习(九) ——构建决策树(离散特征值)

机器学习(九) ——构建决策树(离散特征值) (原创内容,转载请注明来源,谢谢) 一、概述 1、概念 决策树,这个概念是一个很常见的概念,应该是机器学习中最...

3275
来自专栏数据派THU

自创数据集,用TensorFlow预测股票教程 !(附代码)

来源:机器之心 本文长度为4498字,建议阅读8分钟 本文非常适合初学者了解如何使用TensorFlow构建基本的神经网络。 STATWORX 团队近日从 Go...

3507

扫码关注云+社区