Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【机器学习】算法原理详细推导与实现(二):逻辑回归

【机器学习】算法原理详细推导与实现(二):逻辑回归

原创
作者头像
机器学习和大数据挖掘
修改于 2019-07-16 02:11:40
修改于 2019-07-16 02:11:40
58700
代码可运行
举报
文章被收录于专栏:数据挖掘数据挖掘
运行总次数:0
代码可运行

【机器学习】算法原理详细推导与实现(二):逻辑回归

在上一篇算法中,线性回归实际上是 连续型 的结果,即

,而逻辑回归的

是离散型,只能取两个值

,这可以用来处理一些分类的问题。

logistic函数

我们可能会遇到一些分类问题,例如想要划分 鸢尾花 的种类,尝试基于一些特征来判断鸢尾花的品种,或者判断上一篇文章中的房子,在6个月之后能否被卖掉,答案是 或者 ,或者一封邮件是否是垃圾邮件。所以这里是

,这里是

在一个分类问题中,

只能取两个值0和1,这就是一个二元分类的问题,如下所示:

image

可以使用线性回归对以上数值进行划分,可以拟合出如下那么一条线,用

作为临界点,如果

在这个临界点的右侧,那么

的值就是1,如果在临界点的左侧,那么

的值就是0,所以确实会有一些人会这么做,用线性回归解决分类问题:

image

线性回归解决分类问题,有时候它的效果很好,但是通常用线性回归解决像这样的分类问题会是一个很糟糕的主意,加入存在一个额外的训练样本

,如果现在对这个训练集合做线性拟合,那么可能拟合出来那么一条直线:

image

这时候

的临界点估计已经不太合适了,可以知道线性回归对于分类问题来说,不是一个很好的方法。

假设

,当如果已知

,那么至少应该让假设

预测出来的值不会比1大太多,也不会比0小太多,所以一般不会选择线性函数作为假设,而是会选择一些稍微不同的函数图像:

被称为 sigmoid函数 ,也通常被称为 logistic函数,它的函数图像是:

image

变得非常小的时候,

会趋向于0,当

变得非常大的时候,

会趋向于1,它和纵轴相较于0.5。

逻辑回归

那么我们的假设

要尝试估计

的概率,即:

以上可以把两个公式合并简写为(如果

那么公式为

;如果

那么公式为

):

如果对《概率论和数理统计》学得好的人不难看出,以上函数其实就是 伯努利分布 的函数。

对于每一个假设值

,为了使每一次假设值更准确,即当

时估计函数

趋向于1,当

时估计函数

趋向于0。则对于每一个

,参数

的似然估计

为:

如果每一个

都准确,即

趋向于1,则应该使似然估计

最大化,也就是转化成熟悉的问题:求解

的极大似然估计

为了调整参数

使似然估计

最大化,推导如下(取

是为了去掉叠乘方便计算):

为了使这个函数最大,同样可以使用前面学习过的梯度下降算法使对数似然估计最大化。之前学习的是要使误差和 最小化,所以梯度下降的公式为:

而本次为了求解似然估计最大化,使用的是梯度上升:

对数似然性是和

有关,同样的为了计算 梯度上升 最快的方向,要对上述公式求偏导得到极值,即是上升最快的方向:

则对于 m 个样本,则有:

所以总结来说:

逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

鸢尾花分类

为了划分 鸢尾花 的种类,尝试基于一些特征来判断鸢尾花的品种,选取100条鸢尾花数据集如下所示:

花萼长度(单位cm)

花萼宽度(单位cm)

种类

5.1

3.5

0

4.9

3.0

0

4.7

3.2

0

7.0

3.2

1

6.4

3.2

1

...

...

...

其中:

种类

含义

0

山鸢尾(setosa)

1

变色鸢尾(versicolor)

2

维吉尼亚鸢尾(virginica)

数据集的图像分布为:

image

计算损失函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 损失函数
def computeCost(theta, X, y):
    theta = np.matrix(theta)
    X = np.matrix(X)
    y = np.matrix(y)
    first = np.multiply(-y, np.log(sigmoid(X * theta.T)))
    second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))
    return np.sum(first - second) / (len(X))

梯度下降函数为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 梯度下降
def gradient(theta, X, y):
    theta = np.matrix(theta)
    X = np.matrix(X)
    y = np.matrix(y)

    parameters = int(theta.ravel().shape[1])
    grad = np.zeros(parameters)

    error = sigmoid(X * theta.T) - y

    for i in range(parameters):
        term = np.multiply(error, X[:, i])
        grad[i] = np.sum(term) / len(X)

    return grad

最终预测准确率为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
accuracy = 99%

结果分类的图像为:

image

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【机器学习】算法原理详细推导与实现(一):线性回归
今天我们这里要讲第一个有监督学习算法,他可以用于一个回归任务,这个算法叫做 线性回归
机器学习和大数据挖掘
2019/07/16
6780
吴恩达机器学习笔记-2
逻辑回归 (Logistic Regression)是分类问题的一个代表算法,这是目前最流行使用最广泛的一种学习算法。
happy123.me
2019/12/30
4630
Python机器学习的练习三:逻辑回归
在这篇文章中,我们将把我们的目标从预测连续值(回归)变成分类两个或更多的离散的储存器(分类),并将其应用到学生入学问题上。假设你是一个大学的管理人员,你想要根据两门考试的结果来确定每个申请人的录取机会。你可以把以前申请人的历史资料作为训练集使用。对于每一个训练例子,你有申请人的两门考试成绩和录取决定。为了达到这个目的,我们将根据考试成绩建立一个分类模型,使用一种叫逻辑回归的方法来估计录取的概率。 逻辑回归 逻辑回归实际上是一种分类算法。我怀疑它这样命名是因为它与线性回归在学习方法上很相似,但是成本和梯度函数
AiTechYun
2018/03/02
1.8K0
Python机器学习的练习三:逻辑回归
机器学习 | 逻辑回归算法(一)理论
逻辑回归是线性分类器,其本质是由线性回归通过一定的数学变化而来的。要理解逻辑回归,得先理解线性回归。线性回归是构造一个预测函数来映射输入的特性矩阵和标签的线性关系。线性回归使用最佳的拟合直线(也就是回归线)在因变量(
数据STUDIO
2021/06/24
1.6K0
吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化
假设预测的变量y是离散的值,需要使用逻辑回归Logistic Regression,LR的算法,实际上它是一种分类算法
红色石头
2022/01/20
2630
吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化
吴恩达笔记3_回归问题和正则化
假设预测的变量y是离散的值,需要使用逻辑回归Logistic Regression,LR的算法,实际上它是一种分类算法
皮大大
2021/03/02
6840
机器学习算法整理(三)逻辑回归
逻辑回归是解决分类问题的,那回归问题怎么解决分类问题呢?将样本的特征和样本发生的概率联系起来,概率是一个数。
算法之名
2021/09/14
3450
机器学习算法整理(三)逻辑回归
机器学习算法之逻辑回归(一)
本文介绍了机器学习中的逻辑回归算法,包括其背景、原理、优缺点以及应用。逻辑回归是一种用于解决分类问题的机器学习算法,其基本原理是通过对输入特征进行线性组合,然后通过sigmoid函数将输出映射到0到1之间,从而实现二元分类。在逻辑回归中,每个样本的输出都是独立的,并且服从高斯分布。逻辑回归的优点是可以直接处理线性可分数据,并且计算速度较快;缺点是对于非线性数据拟合能力不足。逻辑回归的应用领域非常广泛,包括垃圾邮件过滤、疾病诊断、金融风险评估等。
企鹅号小编
2018/01/08
6930
机器学习算法之逻辑回归(一)
【机器学习基础】(三):理解逻辑回归及二分类、多分类代码实践
我们把连续的预测值进行人工定义,边界的一边定义为1,另一边定义为0。这样我们就把回归问题转换成了分类问题。
黄博的机器学习圈子
2021/02/08
4.3K0
Python机器学习的练习四:多元逻辑回归
在本系列的第3部分中,我们实现了简单的和正则化的逻辑回归。但我们的解决方法有一个限制—它只适用于二进制分类。在本文中,我们将在之前的练习中扩展我们的解决方案,以处理多级分类问题。 在语法上快速标注,为了显示语句的输出,我在代码块中附加了一个“>”,以表明它是运行先前语句的结果。如果结果很长(超过1-2行),那么我就把它粘贴在代码块的另一个单独的块中。希望可以清楚的说明哪些语句是输入,哪些是输出。 此练习中的任务是使用逻辑回归来识别手写数字(0-9)。首先加载数据集。与前面的示例不同,我们的数据文件是MATL
AiTechYun
2018/03/02
1.5K0
Python机器学习的练习四:多元逻辑回归
Python机器学习的练习二:多元线性回归
在第1部分中,我们用线性回归来预测新的食品交易的利润,它基于城市的人口数量。对于第2部分,我们有了一个新任务——预测房子的售价。这次的不同之处在于我们有多个因变量。我们知道房子的大小,以及房子里卧室的数量。我们尝试扩展以前的代码来处理多元线性回归。 首先让我们看一下数据。 path= os.getcwd()+ '\data\ex1data2.txt' data2= pd.read_csv(path, header=None, names=['Size','Bedrooms','Price']) data
AiTechYun
2018/03/02
1.8K0
Python机器学习的练习二:多元线性回归
机器学习-逻辑回归:从技术原理到案例实战
逻辑回归(Logistic Regression)是一种广泛应用于分类问题的监督学习算法。尽管名字中含有“回归”二字,但这并不意味着它用于解决回归问题。相反,逻辑回归专注于解决二元或多元分类问题,如邮件是垃圾邮件还是非垃圾邮件,一个交易是欺诈还是合法等。
TechLead
2023/10/30
1.8K0
机器学习-逻辑回归:从技术原理到案例实战
完全汇总,十大机器学习算法!!
接下来我会从每个算法模型的介绍、基本原理、优缺点以及适用场景注意叙述,最后会基于开源数据集给出一个比较入门型的案例供大家学习~
Python编程爱好者
2024/04/12
4110
完全汇总,十大机器学习算法!!
机器学习-对数几率回归(逻辑回归)算法
对数几率回归(Logistic Regression),也称逻辑回归,虽然名字中含有回归,但其实是一种分类算法。找一个单调可微函数将分类任务中的真实标记与线性回归模型的预测值联系起来,是一种广义线性回归。
唔仄lo咚锵
2023/05/23
8630
机器学习-对数几率回归(逻辑回归)算法
Python机器学习的练习一:简单线性回归
检查数据 在练习的第一部分,我们的任务是利用简单的线性回归去预测食品交易的利润。假设你是一个餐厅的CEO,最近考虑在其他城市开一家新的分店。连锁店已经在各个城市有交易,并且你有各个城市的收益和人口数据,你想知道城市的人口对一个新的食品交易的预期利润影响有多大。 首先检查“ex1data1”文件中的数据。“txt”在“我的存储库”的“数据”目录中。首先导入一些库。 import os import numpy as np import pandas as pd import matplotlib.pyp
AiTechYun
2018/03/02
1.6K0
Python机器学习的练习一:简单线性回归
7、 正则化(Regularization)
  到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fitting)的问题,可能会导致它们效果很差。
全栈程序员站长
2022/09/07
4310
7、 正则化(Regularization)
机器学习作业1-线性回归
单变量和多变量线性回归:给出一组数据数据,用线性回归方法拟合函数。预测开一家餐馆的盈利,预测房价。涉及的内容不少,连学python到全部理解用了两天时间。
公号sumsmile
2021/03/04
7930
机器学习作业1-线性回归
温州大学《机器学习》课程代码(三)逻辑回归
在训练的初始阶段,我们将要构建一个逻辑回归模型来预测,某个学生是否被大学录取。设想你是大学相关部分的管理者,想通过申请学生两次测试的评分,来决定他们是否被录取。现在你拥有之前申请学生的可以用于训练逻辑回归的训练样本集。对于每一个训练样本,你有他们两次测试的评分和最后是被录取的结果。为了完成这个预测任务,我们准备构建一个可以基于两次测试评分来评估录取可能性的分类模型。
黄博的机器学习圈子
2021/04/16
9350
温州大学《机器学习》课程代码(三)逻辑回归
【机器学习笔记】:从零开始学会逻辑回归(一)
逻辑回归是一个非常经典,也是很常用的模型。之前和大家分享过它的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的
Python数据科学
2018/12/17
8080
【机器学习笔记】:从零开始学会逻辑回归(一)
线性回归回顾与logistic回归 | 机器学习笔记
01 再看线性回归 之前我们选择线性回归的时候,只是认为那些数据看上去很符合线性的样子,选择最小平方损失函数的时候,也是直接提出来的,没有考虑过为什么会是这个样子。接下来就从概率的角度来解释这些问题。
用户1332428
2018/03/08
1.2K0
线性回归回顾与logistic回归 | 机器学习笔记
相关推荐
【机器学习】算法原理详细推导与实现(一):线性回归
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验