装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

机器学习笔记(三):逻辑回归(二分类)

  • 2020-03-10
  • 本文字数:1710 字

    阅读完需:约 6 分钟

机器学习笔记(三):逻辑回归(二分类)

逻辑回归基本概念

前面提到过线性模型也可以用来做分类任务,但线性模型的预测输出 y = wx + b 可能是(-∞,+∞)范围内的任意实数,而二分类任务的输出 y={0,1},如何在这之间做转换呢?答案就是找一个单调可微函数将分类任务输出 y 和线性回归模型联系起来,对数几率函数(Sigmoid 函数)可以很好地胜任这个工作,函数图形如下,预测值 z 大于零判为正例,z 小于零判为负例,z 等于零处在临界值可任意判别。



将对数几率函数作为判别函数代入线性回归模型中,就得到逻辑回归的模型如下,x 不管怎么变化,预测输出 y 总是在[0,1]范围内,实际上给出的是 y=1 的概率,这样通过对数几率函数就将线性回归模型的预测输出从(-∞,+∞)压缩到[0,1],符合二分类问题的预测输出,所以逻辑回归也叫做对数几率回归,虽然名称上有“回归”二字,但实际上是分类模型。



逻辑回归代价函数

机器学习模型的代价函数要求是凸函数,左下图就是非凸函数,存在多个局部最小值,不利于求解全局最小值。而右下图则是凸函数的图形,可以保证局部最小点就是全局最小点,利用梯度下降算法可以很快地找到最小值。



这里略掉代价函数的推导过程,直接给出逻辑回归的代价函数:



分析下这个函数,h(x)是预测输出(输出范围[0,1]),y 为真实分类,代价函数也称为损失函数(loss funciton),预测和真实分类越吻合,代价函数越小,反之,代价函数越大。


(1)y = 1 时,Cost(h(x), y) = -log(h(x)),函数图形如左下图,h(x)的值趋近于 1 时,Cost 趋近于 0,说明预测和真实分类趋于一致,代价函数越小;h(x)趋近于 0,说明预测和真实分类相反,则 Cost 越来越大。


(2)y =0 时,Cost(h(x), y) = -log(1-h(x)),函数图形如右下图,h(x)的值趋近于 1 时,Cost 趋近于无穷大,说明预测和真实分类相反;h(x)趋近于 0 时,预测和真实分类趋于一致,Cost 的值趋近于 0。



逻辑回归特点


  • 模型简单,易于理解和实现,计算复杂度低;

  • 直接对分类可能性进行建模,无需事先假设数据分布,避免假设分布不准确带来的问题;

  • 不仅可以预测分类,还可以得到近似概率,对于辅助决策很有用;

  • 广泛应用于工业问题上,如垃圾邮件分类等;

  • 当特征属性很多,而数据量较小时,性能不太好;


逻辑回归练习


sklearn 中自带有 breast 数据集,是一组关于威斯康辛州的乳腺癌诊断数据库,共有 569 条数据,30 个属性特征,分类输出为两类(良性、恶性),是一个可以用来做逻辑回归的简单例子。随机抽取十分之一的数据作为测试数据集,剩下的作为训练数据。


Python 代码


import pandas as pdfrom sklearn import datasetsfrom sklearn.cross_validation import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_scorefrom sklearn import preprocessing
breast_data = datasets.load_breast_cancer()data = pd.DataFrame(datasets.load_breast_cancer().data)data.columns = breast_data['feature_names']
data_np = breast_data['data']target_np = breast_data['target']train_X,test_X, train_y, test_y = train_test_split(data_np,target_np,test_size = 0.1,random_state = 0) model = LogisticRegression(C=1.0, tol=1e-6)model.fit(train_X, train_y)
y_pred = model.predict(test_X)print(accuracy_score(test_y, y_pred))-----------------------------------------0.9649122807017544
复制代码


上面是直接将原始数据直接灌入模型,细心的读者可能会问,各维度数据的量纲、取值区间差异这么大,有的特征属性数据取值都在 1000 以上,而有的特征属性取值却小于 1,这样直接输入模型可以么?其实在训练前,还应该对数据进行标准化。数据标准化主要是将各维度数据按比例进行缩放,使之落入一个特定的区间内,同时去除数据的单位限制,转为为无量纲数据,便于不同单位或量级的特征能够进行加权和比较。


归一化是一种最常用的数据标准化方法,将数值变为[0,1]之间的小数,方法是将每个特征属性(列)的数据减去均值,并除以方差。对于每个特征属性来说,所有数据都聚集在[0,1]范围内,方差为 1。sklearn 中数据归一化可以使用 preprocessing.scale(X),在本例中,数据归一化后预测结果正确率可达 100%。


2020-03-10 14:50823

评论

发布
暂无评论
发现更多内容

28天瞎写的第二百三十六天:emacs 党的没落

树上

28天写作

offline app

lidaobing

28天写作 offline app

VUCA时代-不敏捷就得死

Ian哥

28天写作

区块链矿机挖矿游戏开发,区块链矿机游戏开发

v16629866266

产品训练营-第三次作业

Geek_娴子

开发质量提升系列:日常重视好投产,运维拍肩也不怕

罗小龙

最佳实践 方法论 28天写作 2月春节不断更

工业互联网的“第一高地”,在哪?

浪潮云

工业互联网

利益相关者的问题及方案

梁媛

超好用的文件转换神器!拿走不谢~

白色蜗牛

程序员 软件工具 生产工具

数据中心网络技术新贵:VXLAN与园区网络虚拟化

华为云开发者联盟

网络 数据中心 虚拟化 VXLAN 二层网络

火出圈的Clubhouse,究竟有什么奥秘?

拍乐云Pano

flutter RTC 语音聊天室 社交APP出海 clubhouse

03- 抽奖小助手的那个「谁」

学习高手song轻松

第 3 周作业

老元宵

漫话递归与迭代

Justin

算法 方法论 成长 心灵鸡汤 28天写作

浏览器同源策略,听说过么?

华为云开发者联盟

浏览器 jsonp CORS 同源策略 跨域

即兴演讲的几种实用脚本

熊斌

读书笔记 28天写作

考前复习必备MySQL数据库(关系型数据库管理系统)

我是哪吒

MySQL 程序员 面试 后端 2月春节不断更

【CSS】css控制鼠标点击事件(pointer-events)

德育处主任

html/css CSS小技巧 28天写作 纯CSS 2月春节不断更

为您收录的操作系统系列-进程管理(上篇)

Arvin

操作系统 进程

手机里什么APP都没有,一个很无趣的人 | 视频号28天(27)

赵新龙

28天写作

Elasticsearch Document 查询内部原理

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

熬夜肝了个IDEA插件整合程序员常用的工具,总有你能用上的

Silently9527

程序员 IDEA idea插件

深入理解 ProtoBuf 原理与工程实践(概述)

vivo互联网技术

数据结构 序列化 protobuf

GitHub 标星 167k!你要的优质书籍这都有,还开源!

沉默王二

GitHub 开源 电子书

产品训练营·第三周作业 & 总结

tiu

如果创意也可以被设计「幻想短篇 26/28」

道伟

28天写作

浅谈OKR工作法

一笑

管理 OKR 28天写作

智汇华云 | ArSDN之多集群简介

华云数据

华云数据

机器学习笔记之:最熟悉的陌生阵

Nydia

车载操作系统 (28天写作 Day26/28)

mtfelix

28天写作 车载操作系统 AOS QNX

从JNOS商业操作系统,看京东零售商业化之路新探索

京东科技开发者

零售 数字化转型

机器学习笔记(三):逻辑回归(二分类)_云计算_华为云开发者联盟_InfoQ精选文章