0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习:线性回归与逻辑回归的理论与实战

深度学习自然语言处理 来源:深度学习自然语言处理 作者:奋斗喵 2020-12-26 09:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、基本概念

要进行机器学习,首先要有数据。从数据中学得模型的过程称为“学习”或“训练”。其对应的过程中有几个基本术语需要知道。

(1)训练集:模型训练过程中使用的数据称为训练集,其中每个样本称为训练样本。如:D={X1,X2,X3,…,Xm}。

(2)特征向量:对于每个样本如Xi = (xi1, xi2,…xin)是一个n维列向量,表示样本Xi有n个属性。

2、理论

给定由n个属性描述而成的m个数据集为:D={X1,X2,X3,…,Xm},其中Xi = (xi1, xi2,…xin)。

线性模型是试图学得一个通过属性的线性组合来进行预测的函数,即:

4a9a63e8-4691-11eb-8b86-12bb97331649.png

其中4c0ac61e-4691-11eb-8b86-12bb97331649.png,其中4c480c40-4691-11eb-8b86-12bb97331649.png。当Θ和b确定之后,模型就得以确认。

2.1 线性回归

2.1.1 什么是回归

若我们欲预测的是连续值,如:房价,则此类学习任务称为“回归”。同理机器学习中还有“分类”任务,即我们欲预测的是离散值,如:“合格”、“不合格”。其中对于二分类任务,称为“正类”、“负类”;涉及多个类别时,则称为“多分类”任务。

在线性模型中,我们分为线性回归与逻辑回归两种模型,下面我们对两种模型分别进行讲解分析。

4c6ef86e-4691-11eb-8b86-12bb97331649.png

图1 线性回归

4cc1fc30-4691-11eb-8b86-12bb97331649.png

图2 逻辑回归

2.1.2 线性回归推导

1、线性回归试图学得:

4cfffa8a-4691-11eb-8b86-12bb97331649.png

2、参数估计

(1)首先衡量f(X)与Y之间的差别,我们使用均方误差来衡量。

均方误差的推导过程如下:

拟合函数为:

4d33a68c-4691-11eb-8b86-12bb97331649.png

矩阵形式为:

4d8bf86e-4691-11eb-8b86-12bb97331649.png

真实值和预测值之间通常情况下是会存在误差的,我们用ε来表示误差,对于每个样本都有:

4dbd2556-4691-11eb-8b86-12bb97331649.png

通常我们假设样本空间中全体样本中服从一个未知“分布”,我们获得的每个样本都是独立地从这个分布上采样获得的,即“独立同分布”(iid)。

在这里误差ε是独立并且具有相同的分布,并且服从均值为0,方差为4de875da-4691-11eb-8b86-12bb97331649.png的正态分布。

由于误差服从正态分布,那么有:

512ffa1a-4691-11eb-8b86-12bb97331649.png


将(5)代入到(6)可得:

54690b9a-4691-11eb-8b86-12bb97331649.png

用似然函数进行估计,即求出什么样的参数跟我们给出的数据组合后能更好的预测真实值,有:

54955c5e-4691-11eb-8b86-12bb97331649.png

对式8取对数,将连乘转化为加法为:

54d0ac00-4691-11eb-8b86-12bb97331649.png

对式9展开化简为:

550ded0e-4691-11eb-8b86-12bb97331649.png

由上式可以看出,右边第一项为一个常量,似然函数要取最大值,因而第二项越小越好,有:

5558358a-4691-11eb-8b86-12bb97331649.png

上述公式相当于最小二乘法的式子,即为均方误差的式子。

(2)求解Θ:闭式解。

我们试图让均方误差最小化,即

557411ec-4691-11eb-8b86-12bb97331649.png

基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。求解方法为对Θ求偏导。

55c20758-4691-11eb-8b86-12bb97331649.png

接下来需要对矩阵求偏导,过程如下:

55f8f498-4691-11eb-8b86-12bb97331649.png

最后令5648ba3c-4691-11eb-8b86-12bb97331649.png可得:

567488c4-4691-11eb-8b86-12bb97331649.png

s.t.56b13cc4-4691-11eb-8b86-12bb97331649.png为满秩矩阵时。


在现实中56b13cc4-4691-11eb-8b86-12bb97331649.png往往不是满秩矩阵,在许多变量中会遇到大量的变量,其数目超过样本数目,会导致解出多个Θ,常见的做法是引入正则化或者进行降维。

(3)求解Θ:梯度下降法。

沿着函数梯度方向下降最快的就能找到极小值:

590d357c-4691-11eb-8b86-12bb97331649.png

沿着梯度方向更新参数Θ的值:

59545650-4691-11eb-8b86-12bb97331649.png

批量梯度下降是用了训练集中的所有样本。因此在数据量很大的时候,每次迭代都要遍历训练集一遍,开销会很大,所以在数据量大的时候,可以采用随机梯度下降法或者批量梯度下降法。

2.2 逻辑回归

对于分类任务,用线性回归无法直接进行回归学习。对于二分类任务,其输出标记597a4d24-4691-11eb-8b86-12bb97331649.png,而线性回归模型产生的预测值59a21908-4691-11eb-8b86-12bb97331649.png是实值。

2.2.1 对数几率

一个事件的几率是指该事件发生的概率与该事件不发生的概率的比值。p(Y=1|X)是指事件发生的条件概率,p(Y=0|X)是指事件不发生的条件概率,则该事件的对数几率或logit函数是:

59cfef40-4691-11eb-8b86-12bb97331649.png

对数几率范围为[0,+∞),当p=1时候,logit(p)=+∞,当p=0时候,logit(p)=0。

对于逻辑回归而言,有:

59fe90d4-4691-11eb-8b86-12bb97331649.png

将其Θ*X转换为概率有:

5a4cfef4-4691-11eb-8b86-12bb97331649.png

其中

5a8a0100-4691-11eb-8b86-12bb97331649.png

也称为sigmoid函数,函数图如下所示:

5add3780-4691-11eb-8b86-12bb97331649.png

图3 Sigmoid函数图

2.2.2 参数估计

在逻辑回归进行模型学习时,应用极大似然估计来估计模型参数:

5b224398-4691-11eb-8b86-12bb97331649.png

对式22取对数,将连乘转化为加法为:

5b7e2b18-4691-11eb-8b86-12bb97331649.png

上述公式为求解逻辑回归的损失函数:交叉熵损失函数。

然后对J(Θ)进行求偏导,求最小值,得到Θ的估计值。沿着函数梯度方向下降就能最快的找到极小值:

5ba9c85e-4691-11eb-8b86-12bb97331649.png

沿着梯度方向更新参数Θ的值:

5c9031c2-4691-11eb-8b86-12bb97331649.png

3、实战

3.1 线性回归实战

3.1.1 从零开始实现

1、首先生成数据集

num_inputs = 2 # 数据集的属性 n : 2num_examples = 1000 # 数据集的树木 m : 1000true_w = [2, -3.4]true_b = 4.2 features = torch.randn(num_examples, num_inputs, dtype=torch.float32) # 输入labels = true_w[0]*features[:, 0] + true_w[1]*features[:, 1] + true_b # 标签labels+=torch.tensor(np.random.normal(0,0.01,size=labels.size()),dtype=torch.float32)#加上一些随机噪声

进行可视化后,如下图所示:

5cb5d800-4691-11eb-8b86-12bb97331649.png

图4 数据集

2、数据读取

def data_iter(batch_size, features, labels): num_examples = len(features) indices = list(range(num_examples)) random.shuffle(indices) for i in range(0, num_examples, batch_size): j = torch.LongTensor(indices[i : min(i + batch_size, num_examples)])yieldfeatures.index_select(0,j),labels.index_select(0,j)

如:当batch_size=10时,我们的输出结果如下所示:

5cda8fce-4691-11eb-8b86-12bb97331649.png


第一个为输入x(size=[10, 2]),第二个为标签y(size=[10])。

3、定义线性回归模型

def LinReg(X, w, b):returntorch.mm(X,w)+b#torch.mm表示两个矩阵相乘,[batch_size,num_inputs]*[num_inputs,1]=[batch_size,1]

4、定义损失函数

# 线性回归模型的损失函数为均方差损失函数def squared_loss(y_hat, y):return(y_hat-y.view(y_hat.size()))**2/2

5、定义优化算法

# 这里我们使用梯度下降算法:sdgdef sgd(params, lr, batch_size): for param in params:param.data-=lr*param.grad/batch_size

6、进行训练

训练步骤如下:

(1)首先读取一个batch_size的数据和标签
(2)然后进行模型计算;
(3)然后计算损失函数;
(4)然后反向求导优化参数;

lr = 0.03num_epochs = 3net = LinRegloss = squared_loss for epoch in range(num_epochs): # 训练模型一共需要num_epochs个迭代周期 # 在每一个迭代周期中,会使用训练数据集中所有样本一次(假设样本数能够被批量大小整除)。X # 和y分别是小批量样本的特征和标签 for X, y in data_iter(batch_size, features, labels): l = loss(net(X, w, b), y).sum() # l是有关小批量X和y的损失 l.backward() # 小批量的损失对模型参数求梯度 sgd([w, b], lr, batch_size) # 使用小批量随机梯度下降迭代模型参数 # 不要忘了梯度清零 w.grad.data.zero_() b.grad.data.zero_() train_l = loss(net(features, w, b), labels)print('epoch%d,loss%f'%(epoch+1,train_l.mean().item()))

最后输出结果如下所示:

epoch 1, loss 0.044750epoch 2, loss 0.000172epoch3,loss0.000049

3.2 逻辑回归实战

逻辑回归相比线性回归中,改变的地方为第3步:模型函数 和 第4步:损失函数。

3.2.1 从零实现逻辑回归

3、定义逻辑回归模型

def sigmoid(X, w, b): ''' 定义sigmoid函数 :param x: 参数x 返回计算后的值 ''' z = torch.mm(X, w) + breturn1.0/(1+np.exp(-z))

4、定义损失函数

# 在逻辑回归中,我们使用的是对数损失函数(交叉熵损失函数)def BCE_loss(y_hat, y): ''' 损失函数 :param y_hat: 预测值 :param y: 实际值 loss ''' m = np.shape(y_hat)[0] loss = 0.0 for i in range(m): if y_hat[i, 0] > 0 and (1 - y_hat[i, 0]) > 0: loss-= (y[i, 0] * np.log(y_hat[i, 0]) + (1 - y[i, 0]) * np.log(1 - y_hat[i, 0])) else: loss-= 0.0returnloss/m

责任编辑:xj

原文标题:【机器学习】线性回归与逻辑回归的理论与实战

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136232
  • 线性回归
    +关注

    关注

    0

    文章

    41

    浏览量

    4513

原文标题:【机器学习】线性回归与逻辑回归的理论与实战

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    任正非说 AI已经确定是第四次工业革命 那么如何从容地加入进来呢?

    从简单的AI应用入手,如使用机器学习算法进行房价预测。收集当地房价的相关数据,包括面积、房龄、周边设施等信息,然后选择合适的回归算法(如线性回归
    发表于 07-08 17:44

    【嘉楠堪智K230开发板试用体验】K230机器视觉相关功能体验

    、画十字交叉、写字符等多种操作。具体使用方法参考官方教程机器学习-画图 图像检测 K230能够使用MicroPython进行边缘检测、线段检测、圆形检测、矩形检测、快速线性回归。官方在
    发表于 07-08 17:25

    攻克FOC电机控制!257集系统课+STM32开发套件,从理论实战闭环学习

    告别FOC开发瓶颈!《乘风踏浪FOC实战课》手把手带你攻破永磁电机控制全链路,从理论推导到代码落地,从硬件设计到滑模观测器调试,工程师的电机控制进阶指南。立即购买01为什么工程师需要这门课?你是否
    的头像 发表于 07-08 08:04 770次阅读
    攻克FOC电机控制!257集系统课+STM32开发套件,从<b class='flag-5'>理论</b>到<b class='flag-5'>实战</b>闭环<b class='flag-5'>学习</b>

    机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统

    本文转自:DeepHubIMBA无监督异常检测作为机器学习领域的重要分支,专门用于在缺乏标记数据的环境中识别异常事件。本文深入探讨异常检测技术的理论基础与实践应用,通过IsolationForest
    的头像 发表于 06-24 11:40 1197次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>异常检测<b class='flag-5'>实战</b>:用Isolation Forest快速构建无标签异常检测系统

    瑞之辰:国内芯片须踏实前行,回归技术本质

    迷人眼的宣传中,深圳市瑞之辰科技却清醒地意识到:突破源于技术!芯片行业发展道阻且长,唯有脚踏实地,加大研发投入,回归技术本质,才能具备真正的竞争力。死磕工艺,国产
    的头像 发表于 06-11 16:50 911次阅读
    瑞之辰:国内芯片须踏实前行,<b class='flag-5'>回归</b>技术本质

    学电路设计分享学习心得、技术疑问及实战成果

    活动介绍:随着物联网、智能硬件等领域的快速发展,硬件开发与电路设计技能成为电子工程师和创客的核心竞争力。为帮助刚入行的电子小白、高校大学生高效掌握从基础理论实战应用的能力,电子发烧友平台推出学习
    的头像 发表于 05-20 08:07 439次阅读
    学电路设计分享<b class='flag-5'>学习</b>心得、技术疑问及<b class='flag-5'>实战</b>成果

    【「# ROS 2智能机器人开发实践」阅读体验】视觉实现的基础算法的应用

    : 一、机器人视觉:从理论到实践 第7章详细介绍了ROS2在机器视觉领域的应用,涵盖了相机标定、OpenCV集成、视觉巡线、二维码识别以及深度学习目标检测等内容。通过
    发表于 05-03 19:41

    机器视觉企业埃科光电的突围之路

    机器视觉发展至今,在经历过资本蜂拥而至的高光时刻后,逐渐回归行业的理性,整体呈现出两大方面。
    的头像 发表于 04-17 14:11 962次阅读

    UC3854 功率因数校正设计全攻略:从理论实战

    【限时下载】UC3854 功率因数校正(PFC)设计全攻略:从理论实战,工程师必备技术手册 *附件:《UC3854 功率因数校正设计全攻略:从理论实战》.pdf 为什么工程师必须掌
    的头像 发表于 04-09 15:35 1125次阅读
    UC3854 功率因数校正设计全攻略:从<b class='flag-5'>理论</b>到<b class='flag-5'>实战</b>

    十大鲜为人知却功能强大的机器学习模型

    本文转自:QuantML当我们谈论机器学习时,线性回归、决策树和神经网络这些常见的算法往往占据了主导地位。然而,除了这些众所周知的模型之外,还存在一些鲜为人知但功能强大的算法,它们能够
    的头像 发表于 04-02 14:10 916次阅读
    十大鲜为人知却功能强大的<b class='flag-5'>机器</b><b class='flag-5'>学习</b>模型

    蓝牙技术联盟宣布2025蓝牙亚洲大会重磅回归

    月22日至23日在深圳会展中心(福田)5号馆举办。作为蓝牙技术的年度盛会,2025蓝牙亚洲大会在时隔五年后重磅回归,旨在为全球行业领袖、开发者和创新人士分享蓝牙技术的最新进展,共探蓝牙生态的未来
    发表于 01-15 13:44 604次阅读

    蓝牙技术联盟宣布2025蓝牙亚洲大会重磅回归

    (福田)5号馆举办。作为蓝牙技术的年度盛会,2025蓝牙亚洲大会在时隔五年后重磅回归,旨在为全球行业领袖、开发者和创新人士分享蓝牙技术的最新进展,共探蓝牙生态的未来发展趋势。
    发表于 01-15 13:43 1183次阅读
    蓝牙技术联盟宣布2025蓝牙亚洲大会重磅<b class='flag-5'>回归</b>

    提升开关电源效率的理论分析与实战经验

    在这里有电源技术干货、电源行业发展趋势分析、最新电源产品介绍、众多电源达人与您分享电源技术经验,关注我们,与中国电源行业共成长! 提升开关电源效率的理论分析与实战经验 引言 开关电源设计中,为获得
    的头像 发表于 01-09 10:04 1799次阅读
    提升开关电源效率的<b class='flag-5'>理论</b>分析与<b class='flag-5'>实战</b>经验

    基于移动自回归的时序扩散预测模型

    在人工智能领域,目前有很多工作采用自回归方法来模拟或是替代扩散模型,其中视觉自回归建模(Visual AutoRegressive modeling,简称 VAR)就是其中的典型代表,该工作利用自
    的头像 发表于 01-03 14:05 1646次阅读
    基于移动自<b class='flag-5'>回归</b>的时序扩散预测模型

    垂直型回归反射光电开关的原理有哪些E3S-AR61

    垂直型回归反射光电开关的原理是基于光线的反射和光电传感器的检测机制。通过利用这一原理,它可以实现对物体的非接触式检测和控制,为工业自动化和机器人技术等领域提供了重要的技术支持。
    的头像 发表于 12-16 10:23 1191次阅读