前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习(十五) ——logistic回归实践

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

作者头像
用户1327360
发布2018-03-07 16:45:45
6730
发布2018-03-07 16:45:45
举报
文章被收录于专栏:决胜机器学习决胜机器学习

机器学习(十五)——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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决胜机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档