#Datawhale X 李宏毅苹果书 AI夏令营#1.2了解线性模型

2024-08-30 01:12

本文主要是介绍#Datawhale X 李宏毅苹果书 AI夏令营#1.2了解线性模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.2线性模型

什么是线性模型?

初始模型y=100+0.97x_{1},

其中y表示观看人数,x1表示前一天的观看人数,这个模型就是在用前一天的观看人数来预测当前的观看人数。

模型改进:

然而真实的数据是有周期性的,每隔7天,一个循环。这样只使用前一天的数据来预测就显得不准确,我们应该考虑7天的数据。

这样我们便有了第二个模型:

 这个模型考虑了前七天的数据,做了一个参数的加权求和,再加上偏置项。

如果我们使用28天的数据来预测呢?

这就有了第3个模型:

 如果我们使用更多的数据,56天的数据呢?这就有了第4个模型:

总结:以上4个模型都是线性模型,且随着我们使用的数据越多,模型预测的越准确,

损失比较:

模型训练损失未见过数据上的损失
初始模型1480580
模型2(7天)380490
模型3(28天)330460
模型4(56天)320460

随着我们使用数据的增加,训练损失和验证损失都在减少,到一定程度后,验证损失不在减小,表明仅靠增加数据,模型已达到上限。

这4个模型都是线性模型,我们就此给出线性模型的定义:

“这些模型都是把输入的特征x乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型(linear model)。”

分段线性曲线

线性模型是最简单的模型之一。这种模型存在局限性。线性模型只能模拟简单的线性关系,无法模拟复杂的非线性关系,然后现实中的问题通常是复杂的。是非线性的,这就需要一个更复杂、更有灵活性的模型。

所以我们需要对线性模型进行改进。一个非线性函数可以用多段线性曲线来逼近。

我们先举一个割圆术的例子,使用正切多边形逼近圆形是一个非常好的类比,可以帮助我们理解如何使用分段线性曲线来逼近非线性关系。理论上来说,只有多边形取得足够多,那么就可以无限接近圆,我们需要建立这种思想。

 回到我们非线性曲线。下面两张图是书本中的原图。

 图1的这条红色曲线,我们可以把它看作是由下面几段蓝色曲线叠加得到的,如果不理解的话,那么换个说法,这们可以把红色曲线看到是由自身的三段折线叠加组合而成。推广开来,对于右图中的黑色曲线,我们同样可以把他看作是由无数多的折线叠加而成的。这个思想可以参考割圆术。

那么使用分段曲线,理论上我们可以叠加得到任何形式的曲线,只要我们每一段折线取得够短。

这样我们就可以使用分段线性曲线叠加来表示一个非线性曲线了。随着线性段数量的增加,分段线性曲线能够更好地逼近非线性关系。类似于多边形逼近圆形的过程,分段线性曲线最终可以逼近任意连续曲线。

这里进一步,我们可以用Sigmoid函数来代替Hard Sigmoid(也就是图中的蓝色折线段),那么我们连续曲线可以是有多段Sigmoid函数叠加得到的。

模型变形

这里我们还可以进一步对模型进行变形,前面我们已经尝试了Hard Sigmoid和Sigmoid函数,我们可以替换成ReLU函数。

ReLU函数:

ReLU(x)=max⁡(0,x),如果 x<0,输出为 0;否则输出为 x。

同样一段非线性曲线可以是由多个ReLU函数叠加得到。

接下来是书中提到的一些概念。

激活函数:在机器学习里面,Sigmoid 或 ReLU 称为激活函数(activation function)。

神经网络:Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络 (neural network)。

隐藏层:每一排称为一层,称为隐藏层(hidden layer),很多的隐藏层就“深”,这套技术称为深度学习。

过拟合:在训练数据和测试数据上的结果是不一致的,训练数据上效果很好,在测试数据(没看过的数据)上,效果变差,这种情况称为过拟合(overfitting)。

机器学习框架

首先划分训练集和测试集。

训练步骤如下:

  • 定义一个含未知数的函数
  • 定义损失函数
  • 解优化问题,得到使损失函数最小的参数

喜欢的小伙伴收藏点赞关注吧。

这篇关于#Datawhale X 李宏毅苹果书 AI夏令营#1.2了解线性模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119376

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

usaco 1.2 Milking Cows(类hash表)

第一种思路被卡了时间 到第二种思路的时候就觉得第一种思路太坑爹了 代码又长又臭还超时!! 第一种思路:我不知道为什么最后一组数据会被卡 超时超了0.2s左右 大概想法是 快排加一个遍历 先将开始时间按升序排好 然后开始遍历比较 1 若 下一个开始beg[i] 小于 tem_end 则说明本组数据与上组数据是在连续的一个区间 取max( ed[i],tem_end ) 2 反之 这个