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

    文章

    8381

    浏览量

    132428
  • 线性回归
    +关注

    关注

    0

    文章

    41

    浏览量

    4300

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

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

收藏 人收藏

    评论

    相关推荐

    什么是回归测试_回归测试的测试策略

      1、什么是回归测试 回归测试(Regression testing) 指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现
    的头像 发表于 11-14 16:44 130次阅读

    构建语音控制机器人 - 线性模型和机器学习

    2024-07-31 |Annabel Ng 在该项目的[上一篇博客文章]中,我介绍了运行机器人电机、处理音频信号和调节电压所需的电路的基础知识。然而,机器人还没有完全完成!尽管机器人可以正确移动
    的头像 发表于 10-02 16:31 176次阅读
    构建语音控制<b class='flag-5'>机器</b>人 - <b class='flag-5'>线性</b>模型和<b class='flag-5'>机器</b><b class='flag-5'>学习</b>

    【「时间序列与机器学习」阅读体验】时间序列的信息提取

    个重要环节,目标是从给定的时间序列数据中提取出有用的信息和特征,以支持后续的分析和预测任务。 特征工程(Feature Engineering)是将数据转换为更好地表示潜在问题的特征,从而提高机器学习
    发表于 08-17 21:12

    运放THS4551理论上输入是线性的,DC扫描,输出也是线性的,为什么我们的输出不是线性的?

    运放THS4551 理论上输入是线性的,DC扫描,输出也是线性的,为什么我们的输出不是线性的?是哪里存在问题吗?请帮忙解决,谢谢
    发表于 08-15 07:20

    【「时间序列与机器学习」阅读体验】+ 鸟瞰这本书

    清晰,从时间序列分析的基础理论出发,逐步深入到机器学习算法在时间序列预测中的应用,内容全面,循序渐进。每一章都经过精心设计,对理论知识进行了详细的阐述,对实际案例进行了生动的展示,使读
    发表于 08-12 11:28

    【「时间序列与机器学习」阅读体验】全书概览与时间序列概述

    时间序列中的自相关性。 时间序列有基于线性场景,也有一些非线性性质周期性和不对称性、波动的聚集性、波动中出现的跳跃现象,以及时间的不可逆性。机器学习已经是目前非
    发表于 08-07 23:03

    MATLAB预测模型哪个好

    在MATLAB中,预测模型的选择取决于数据类型、问题复杂度和预测目标。以下是一些常见的预测模型及其适用场景的介绍: 线性回归(Linear Regression): 线性回归是最基本的
    的头像 发表于 07-11 14:31 385次阅读

    matlab预测模型有哪些

    环境,使其成为预测模型开发和实现的理想平台。本文将详细介绍MATLAB中常用的预测模型及其应用。 线性回归模型 线性回归是一种简单的预测模型,用于分析两个或多个变量之间的
    的头像 发表于 07-11 14:27 694次阅读

    不同类型神经网络在回归任务中的应用

    神经网络是一种强大的机器学习模型,可以用于各种任务,包括回归。在本文中,我们将讨论不同类型的神经网络,以及它们在回归任务中的应用。 基本的神经网络 基本的神经网络,也称为多层感知器(M
    的头像 发表于 07-11 10:27 1071次阅读

    机器学习算法原理详解

    机器学习作为人工智能的一个重要分支,其目标是通过让计算机自动从数据中学习并改进其性能,而无需进行明确的编程。本文将深入解读几种常见的机器学习
    的头像 发表于 07-02 11:25 796次阅读

    名单公布!【书籍评测活动NO.35】如何用「时间序列与机器学习」解锁未来?

    捕捉复杂非线性模式的场景中显得力不从心。 将时间序列的分析与预测用于大规模的数据生产一直存在诸多困难。 在这种背景下,结合机器学习,特别是深度学习技术的时间序列分析方法,成了研究和应用
    发表于 06-25 15:00

    机器学习六大核心算法深度解析

    算法历程:线性回归是一种古老的统计方法,它试图找到最佳拟合数据的直线或超平面,最早可以追溯到19世纪初的高斯最小二乘法理论
    发表于 04-23 16:25 1643次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>六大核心算法深度解析

    发展新质生产力,打造橡塑新高地 聚焦“国际橡塑展回归上海启航盛典”

    阔别六年,行业年度盛事 - “CHINAPLAS国际橡塑展”将重磅回归上海,于2024年4月23 - 26日在上海国家会展中心(虹桥)盛装绽放。开幕在即,“国际橡塑展回归上海启航盛典”3月28日在上
    的头像 发表于 03-29 15:30 940次阅读
    发展新质生产力,打造橡塑新高地 聚焦“国际橡塑展<b class='flag-5'>回归</b>上海启航盛典”

    深入探讨线性回归与柏松回归

    或许我们所有人都会学习的第一个机器学习算法就是线性回归算法,它无疑是最基本且被广泛使用的技术之一——尤其是在预测分析方面。
    的头像 发表于 03-18 14:06 588次阅读
    深入探讨<b class='flag-5'>线性</b><b class='flag-5'>回归</b>与柏松<b class='flag-5'>回归</b>

    华为公司经营基本回归常态 华为2023年销售收入超7000亿

    华为公司经营基本回归常态 华为2023年销售收入超7000亿 此前华为轮值董事长胡厚崑在新年致辞中就表示华为ICT基础设施业务保持稳健,终端业务好于预期,数字能源和云业务实现良好增长,智能汽车
    的头像 发表于 03-15 17:03 1665次阅读