achineearningitho第章:回归腾讯云开发者社区

我们将探究的第一组机器学习技术通常被称为回归(regression),我们可以将回归理解为一个变量(例如销售额)的变化是如何影响到其他变量(如用户数)的。对于机器学习技术来说,这是一个很好的开端,它们是构成其他更加复杂技术的基础。

机器学习中的回归技术通常会注重评估连续值(如股票价格、温度或疾病进展等)。下一章讨论的归类(Classification)则会注重离散值,或离散的类集合(如欺诈/非欺诈、坐下/起立/跑动,或热狗/非热狗等)。正如上面提到的,回归技术会贯彻到机器学习中,并作为归类算法的一部分,但本章中,我们将会注重其基本的应用--预测连续值。

正如前面提到的,回归本身是一个分析一个变量和另一个变量之间关系的过程,但在机器学习中还用到了一些术语来描述这些变量以及各种类型的回归和与回归有关的过程:

部分术语会在回归上下文和本书的其他上下文中使用。

线性回归是最简单的机器学习模型之一,但不能出于某些原因而忽略该模型。正如前面提到的,它是其他模型的基础,且有一些非常重要的优势。

正如在本书中讨论的,完整性在机器学习应用中非常重要,模型越简单,解释性越强,则越容易维护其完整性。此外,如果模型简单且具有解释性,那么就可以帮助理解变量之间的推断关系,并简化开发过程中的检查工作。

未来是算法,可解释模型在人类和智能机器之间建立了一种更安全、更高效、最终更具协作性的关系。

在线性回归中,我们会尝试使用如下线性方程,使用一个自变量x,对因变量y进行建模:

`$y = mx + b

$`

这里,m为直线的斜率,b为截距。例如,我们想要通过每天访问网站的users对sales进行建模,为了使用线性回归,我们会希望通过确定m和b来让预测公司的销售额:

`$sales = m * (number~of~users) + b

$`

这样,我们的训练模型就是该参数化函数。通过输入Number of Users 来预测 sales,如下:

线性回归的训练或拟合需要确定m和b的值,这样得出的公式就有预测响应的能力。有多种方式来确定m和b,但最常见的是普通最小二乘法(ordinary least squares (OLS))。

为了使用OLS来确定m和b,首先为m和b选择一个值来创建第一条示例线(example line)。然后测量每个已知点(如训练集)和示例线之间的垂直距离,这些距离称为误差(errors)或残差(residuals)。下图展示了评估和验证:

下面,我们计算这些误差平方和:

`$\frac{error^2_1+error^2_2+...+error^2_N}{N}

$`

通过调整m和b来最小化误差的平方和。换句话说,我们训练的线性回归直线是平方和最小的直线。

有很多种方式可以找出误差平方和最小的直线,如通过OLS可以找出并分析这条直线。但最常用的减少误差平方和的优化技术称为梯度下降法(gradient descent)。相比于分析法,这种方法更容易实现,且便于计算(如内存),也更加灵活。

可以说,线性回归和其他回归的实现都利用梯度下降来拟合或训练线性回归线。实际上,梯度下降法在机器学习中无处不在,由此可以产生更加复杂的模型技术,如深度学习。

梯度下降法

梯度下降法有很多变种,且在机器学习世界中无处不在。最重要的是,它们用于确定线性或逻辑回归等算法的最佳系数,同时也在更复杂的技术中发挥着重要作用(至少部分基于线性/逻辑回归(如神经网络))。

梯度下降法的一般思想是确定某些参数的变化方向和幅度,这些参数将使预测曲线朝着正确的方向移动,以优化某些度量(如误差)。想象站在某个地方,如果要向较低的位置移动,则需要朝向下的方向移动。这基本上就是梯度下降算法在优化参数时所做的事情。

让我们看一下所谓的随机梯度下降(SGD),这是一种增量的梯度下降,从而对这个过程有更多直觉上的了解。我们在第5章"分类"的逻辑回归实现中使用了SGD。在该示例中,我们实现了对逻辑回归参数的训练或拟合,如下所示:

// Iteratively optimize the weights注释下面的循环实现了通过SGD来优化逻辑回归参数。下面选择这部分循环来看下到底发生了什么。

首先,我们使用当前权重和预测值与理想值(即实际观察值)之间的差值来计算模型的输出:

根据SGD,我们将根据如下公式来计算参数(在本例中为权weights)的更新:

`$update=leaning~rate\times~gradient~of~the~parameters

$`

gradient是cost函数的数学梯度。

然后将该更新应用到参数,如下所示:

`$parameter=parameters-update

$`

在我们的逻辑回归模型中,计算结果如下:

机器学习中广泛使用了这种类型的SGD,但在某些场景下,这种梯度下降法可能导致过拟合或陷入局部最小值/最大值(而不是寻找全局最优值)。

为了解决这些问题,可以使用一个梯度下降的变种,称为批量梯度下降(batch gradient descent)。在批量梯度下降中,可以基于所有训练数据集中的梯度来计算每个参数更新,而不针对数据集的特定观测值或行。这种方式有助于防止过度拟合,但它也可能很慢,并且存在内存问题,因为需要计算每个参数相对于整个数据集的梯度。微批量梯度下降(Mini-batch gradient descent)是另一个变种,它在试图保持批量梯度下降的某些好处的同时,更易于计算。在微批量梯度下降法中,梯度是在训练数据集的子集上计算的,而不是在整个训练数据集上计算的。

与所有机器学习模型一样,线性回归并不能适用于所有场景,它的前提是假设你的数据之间的关系是确定的:

从技术上讲,为了使用线性回归,需要满足上述所有假设。但最重要的是我们需要知道数据是如何分布的,以及它们是如何表现的。后续在使用线性回归的示例中会深入讨论这些假设。

作为一个数据科学家或分析师,在使用线性回归时需要注意到线性回归的不足:

该数据集包括一系列表示广告媒体属性(TV,Radio和Newspaper)以及对应的销售额(Sales),本例中我们的目标是对销售额(因变量)和广告支出(因变量)进行模型。

为了构建模型(或流程),并确保能够对模型的结果进行检查,首先需要对数据进行分析(所有机器学习模型的第一个步骤)。我们需要了解变量是如何分布的,以及变量的范围和可变性。

编译并运行后得到如下结果:

上面以表格形式打印出所有的汇总数据,包括平均值、标准偏差、最小值、最大值、25%/75%百分位和中位数(或50%百分位)。

这些值为我们提供了良好的数值参考,后续会在训练线性回归模型时将看到这些数字。但缺乏直观上的理解,为此,我们需要为每列数值创建一个直方图:

本程序会为每个直方图创建一个.png图像:

观察上图以及计算出的汇总信息,下一步考虑是否符合线性回归的假设条件。可以看到并不是所有的变量都是正态分布的(钟形的)。可以看到销售额是钟形的,而其他则不是正态的。

我们可以使用分位图(quantile-quantile (q-q) p)统计工具来确定分布与正态分布的接近程度,甚至通过统计测试来确定变量是否服从正态分布的概率。但大多数情况下,通过图表就可以得出一个大致的结论。

下一步要做出决策,但至少有一部分数据在技术上并不会拟合到我们的线性回归模型中,可以选择如下一种方式进行处理:

可能还有其他解决问题的方式,但我的建议是首先尝试第三种选项。由于可以快速地训练线性回归模型,因此该选项并不会带来多少坏处。如果最后得出满意的模型,那么就可以避免引入更多的复杂性。如果得到的模型不尽如人意,那么此时再诉诸于其他选项。

现在对我们的数据有了一些直觉上的了解,并且已经了解到数据是如何拟合线性回归模型的假设的。那么现在应该选择哪个变量作为我们的自变量来预测因变量?

如此可以创建如下散点图:

通过这些散点图,我们需要推断出哪些属性 (TV, Radio, 和/或 Newspaper)与我们的因变量(Sales)具有线性关系。是否可以在这些散点图上画一条线,以符合销售趋势和各自的属性?这种方法并不总是行得通,且对于一个特定的问题,并不一定可以将其关联到所有的属性。

上述场景中,Radio和TV与Sales呈线性关系,Newspaper可能与Sales有一定的关系,但相关性并不明显。与TV的相关性是最明显的,因此先选择TV作为线性回归模型的自变量,线性回归公式如下:

`$Sales = m~TV+b

$`

这里要注意的另一件事是,变量TV可能不是严格等方差的(在线性回归的假设中讨论过)。这一点需要注意(可能值得在项目中归档的),下面将继续探究是否可以创建具有预测能力的线性回归模型。当模型表现不佳时,需要重新审视这种假设。

为了避免过度拟合并保证模型的推广,我们需要将数据集划分为训练集和测试集即评估和验证(Evaluation and Validation)。这里我们不会聚焦某个测试集,因为只需要进行一次模型训练即可,而不会在训练和测试之间来回迭代。但如果需要多个因变量进行验证和/或需要迭代调整模型参数时,你可能希望创建一个保留集,保存到模型开发过程结束后进行验证。

上述代码会输出如下训练和测试集:

这里使用的数据并没有经过排序。但如果需要按照响应、日期或其他方式处理数据,则最好随机划分训练和测试集。如果不这么做,训练和测试集可能会包含特定范围的响应,这样响应可能会受到时间/日期等人为因素的影响。

编译执行上述代码,训练的线性回归公式会打印到标准输出:

从结果可以看到,引用的包输出的线性回归的截距为7.07,斜率为0.5。这里可以进行一些简单的检查,因为我们在散点图中看到了TV和Sales之间的相关性是上升和向右的(即正相关),这也意味着公式的斜率应该是正数。

下面需要通过评估模型的表现来查看是否可以使用自变量TV来预测Sales。为此,需要加载测试集,使用训练过的模型对每个测试例进行预测,然后计算第3章"评估和验证"中讨论的某个评估指标。

为此,我们使用平均绝对误差(Mean Absolute Error (MAE))作为评估指标,这样就可以直接对比结果和Sales,而不必太担心异常值或极端值。

编译并运行评估程序,得到如下结果:

那么如果MAE = 3.01,我们怎么知道该值是好的还是坏的?这也是为什么拥有一个良好的数据心智模型很重要的原因。我们已经计算了销售额的平均值、范围和标准差。平均销售额为14.02,标准差为5.21。这样我们的MAE小于销售额数值的标准差,约为平均值的20%,说明我们的模型具有一定的预测能力。

恭喜,我们构建了第一个具有预测能力的机器学习模型。

然后创建可视化的回归线:

编译和运行后得到如下图:

可以看到,我们训练的回归线与实际的数据趋势相匹配。

线性回归并不局限于依赖单个自变量的简单线性公式。多元线性回归与前面讨论的类似,但具有多个自变量(_x_1,_x_2等)。这种场景下的直线方程如下:

`$y=m_1x_1+m_1x_2+...+m_Nx_N+b

$`

这里x作为自变量,m作为与自变量相关的斜率,此外还有一个截距b。

多元线性回归相对比较难以可视化和思考,因为它不再是一条可以在二维中可视化的直线。而是一条在二维、三维或多维的线性曲面。但它使用了很多在一元线性回归中用过的技术。

记住以上两点,下面尝试将Sales模型从一元线性回归模型扩展到多元线性回归模型。回顾一下前面章节中的散点图,可以看到Radio似乎也与Sales呈线性关系,因此可以尝试创建一个多元线性回归模型,如下:

`$Sales=m_1TV+m_2Radio+b

$`

编译并运行,得到如下回归公式:

可以看到,回归公式增加了一个额外的自变量项。截距值也发生了变化。

可以用与一元线性回归模型类似的方式,使用Predict()方法来测试该模型:

运行该程序将为我们的新多元回归模型得出如下MAE:

新的多元回归模型提高了MAE值。现在,我们可以根据广告支出来预测Sales了。你还可以尝试将Newspaper添加到模型。

注意,模型复杂性增加的同时,也会牺牲掉简易性,并增加过拟合的风险,因此只考虑当添加的复杂性能够提升模型的表现、并带来更大的价值时。

虽然本章节主要关注线性回归,但不会仅限于使用线性方程来执行回归。你可以使用一个或多个非线性(如幂、指数或其他变换)自变量来为因变量建模。例如,我们可以通过一系列TV项来为Sales建模:

`$Sales=m_1TV+m_2TV^2+m_3TV^3+...+b

$`

注意,增加复杂性的同时也增加了过拟合的风险。

除了OLS外还有其他线性回归技术,可以帮助克服最小二乘线性回归中的一些假设和弱点。包括岭回归和套索回归(lasso regression)。这两种技术使用惩罚回归系数来减轻自变量的多重共线性和非正态性带来的影响。

编译并运行程序,得出如下回归公式:

可以看到TV和Radio的系数与最小二乘回归得到的结果类似,但略微不同。另外可以看到添加了一个Newspaper项。

可以通过创建自己的预测函数来测试岭回归公式:

然后使用该predict函数和测试数据来测试岭回归公式:

编译并运行,等到新的MAE:

注意在模型中添加Newspaper并不会提高MAE,因此在这种场景下并不适合添加Newspaper项,因为此时提高了复杂度,但并没有显著影响到模型。

添加到模型中的任何复杂性或复杂度都应该有其可衡量的理由。使用一个复杂的模型,这看起来很有趣,但同时也会让人头疼。

THE END
0.旧城改造论文通用12篇因此,建设方最终决定采用人工挖孔桩作为基础形式进行施工。 3 人工挖孔桩单桩承载力计算及构造要求 3.1 对于单桩承载力的计算是简单的一拆了之还是对其进行适宜的改造,使其重新焕发生机与活力。一些成功的例子也许对我们会有所启发。 2.2.1 德国鲁尔工业区北杜伊斯堡景观公园jvzquC41ol}y0zguj{/exr1jcuxgw48:4>40qyon
1.三角形程序测试三角形的问题在很多软件测试的书籍中都出现过,问题虽小,五脏俱全,是个很不错的软件测试的教学例子。本文借助这个例子结合教学经验,从更高的视角来探讨需求分析、软件设计、软件开发与软件测试之间的关系与作用。 题目:根据下面给出的三角形的需求完成程序并完成测试: jvzquC41dnuh0lxfp0tfv8gwfkth2952235bt}neng5eg}fknu599>9737
2.FLAC3D快速入门及简单实例发布版.pdf一 8 初识 FLAC3D 种由 2 个节点和 1 个线性单元组成,可以表示梁、锚杆和桩的力学行为;另一种 由3 个节点和 1个三角形单元组成,可以表示壳体、衬砌和土工格栅的力学行为。 结构单元能够模拟实际结构对土体或岩体的支撑作用,非线性材料也可以用结构 单元模拟。 任何结构单元都由 3 个要素组成:节点、单元个体(SELs)和节点连接。这 jvzquC41oc~/dxtm33>/exr1jvsm1;53;1684>4823713;5332632>60ujzn
3.Abaqus使用点滴21是单元形式问题2“ABAQUS对SOIL GEOSTATIC初始应力的假定”这个初始应力是你假定的3"由于土体的力学参数很低,致使在计算中会出现重力作用下位移很大的情况" 这个我不同意力学参数跟geostatic能不能平衡没有多大关系,就算在你的例子中把模量调成混凝土的级别,就算量级变小,但结果一样不合理。 ABAQUS中对于土体的初始jvzquC41yy}/5?5fqey/pny1fqi0kwkq/:idc9hef8749nj28glg;:=f70nuou
4.益智故事300篇精选等到把驾马的横木加在马的身上,用遮眼的东西加在马的头上,使马的行止齐一,马方才知怎用眼睛斜看“还没有过螃蟹学跳舞的例子呢。”妈妈不太赞成,“不过,你要是一定要学的话,那你就去学吧。” jvzquC41yy}/srlwujo/exr1sk528@6295?24;<::;
5.国内有哪些比较成功的城市更新例子?国内有哪些比较成功的城市更新例子? 回答 提问 举报 | 来自北京 用Deepseek满血版问问看 >>用【当贝酷狗音乐】海量正版、无损音乐! duyjy004 | 来自上海 街头是可以漫步的,社区邻里有温度的,艺术是融于生活的,这或许就是微更新的意义所在。 01 ​上海 ​愚园路历史街区 ​社区微更新典范之作 ​ “jvzquC41yf4{pmx0eqs03:<8324ivvq
6.智能家居市场竞争分析样例十一篇霍尼韦尔只是众多安防企业转战三四线城市的一个例子。2011年,安讯士成都办事处和西南分公司相继成立,标志其充电设施主要有:分散设置的交流充电桩;配备多台直流充电机和交流充电桩、集中设置的充电站;配备地面jvzquC41yy}/uofdkcu/exr1jcuxgw45;7780qyon
7.励志故事(50篇)父亲买了一些梨子,特地拣了一个的梨子给孔融,孔融摇摇头,却另拣了一个最小的梨子说:“我年纪最小,应该吃小的梨,你那个梨就给哥哥吧。”父亲听后十分惊喜,又问:“那弟弟也比你小啊?"孔融说"弟弟比我小,我也应该让给他.”孔融让梨的故事,很快传遍了曲阜,并且一直流传下来,成了许多父母教育子女的好例子jvzquC41yy}/eqnpgukk{7hqo1€x1;57;26/j}rn
8.梅花易数23个精彩案例(梅花易数怎么看结果)5:这桩婚事你内心很不满意,但是又很无奈你们俩性格差异很大, 你太聪明,而她实在或不太聪明。“她有举个例子来说:前几天有两个 人拿着所买房屋的图纸给我看,我问他:“你是不是有两个小孩,大的 jvzq<84mwco48B3eqo5og€x134551::9;34ivvq
9.铁路管理安全条例范例6篇铁路运输企业应当在铁路线路安全保护区边界设立标桩,并根据需要设置围墙、栅栏等防护设施。 企业或者单位内部的专用铁路需要划定铁路线路安全保护区的,参照本条第一款的规定划定。 第十一条在铁路线路安全保护区内,除必要的铁路施工、作业、抢险活动外,任何单位和个人不得实施下列行为: jvzquC41yy}/dj~ycvii0ls1jcuxgw4327?8;7mvon
10.客观性原则的例子地铁车友交流懂车帝提供客观性原则的例子地铁的车友交流详细内容,懂车帝是一个汽车资讯平台,懂车更懂你。我们提供最新汽车报价,汽车图片,汽车价格大全,行情、评测、导购等内容,看车选车买车就上懂车帝。jvzquC41yy}/fxsiejkek7hqo1zbi8zie1765<<;87
11.我和老师的故事作文(通用43篇)随后进行的`语文单元测验,我考了98分,全班第一名。罗老师在课堂上对大家说:“海彬就是一个很好的例子,只要你们认真学习,都能考出好成绩。”那一刻,全班响起了掌声。 罗老师刚来我们班时,我感觉她很严厉。慢慢适应了她的进度之后,才了解她苦心。在这里,我要说一声:“谢谢!”,感谢罗老师的悉心教导。 jvzquC41yy}/qq6220ipo8f142822<4537>99?3jvor
12.毒殇——临泉县吸毒案例篇(上)从我的身上以及身边许多毒友中都能看到鲜活的例子。吸毒实际上吸的就是钱,就像打现代化战争,打的是高科技和综合国力一样。我吸毒时间不长,很快就把自己辛苦打拼挣来的几十万元钱吸光了,陷入了穷困潦倒、尴尬万分的境地。想吸没有钱,想戒又戒不掉。为此,我真是伤透了脑筋。为了筹到毒资,我只好在一位毒友的jvzq<84yyy4oplh8484dqv4423<.2?4471i`3;>2:77457mvo
13.GeoStudio工程应用实例简介及下载联接|边坡工程『支挡|防护四十九 桩拔出试验 这个例子模拟将一个桩拔出地面。检验Sigma/W模型的滑移原理。一个桩沿着两种不同材料属性的结构物中心被拔出。 进入下载页面 五十CTRAN / 教程 这个例子说明了如何用CTRAN/W模拟平流和分散的稳态渗流系统。此外,对一个粒子进行跟踪,分析污染物运动过程中的扩散。 进入下载页面 五十一 本算例以三轴实验验证了弹塑性本构jvzquC41ddy/{jsvwenjpj3eqo5tkvung1Eu;>75;0nuou
14.教你拿下380V充电桩电表(内附资料)从申请电表到安装成功教你拿下380V充电桩电表(内附资料) 从申请电表到安装成功,耗时3天,为上海效率鼓掌。 ▲申请所需材料列表 车位产权 或 长租证明,购车订单(特斯拉销售可以提供模板,自己修改上传即可,我这边截图了一个模板,正式的会有盖章的),物业施工同意证明,380V充电说明(也可以找销售领取)。 jvzquC41o0pqsnc0eun1yfigu5eqwlvck5jpmjzAkj>499732614/ktqoettlBdklo`vjg
15.土木工程专业的论文6篇(全文)举一些简单的例子,如:在讲悬臂梁的内力计算和位移计算时,可以与雨篷板的实例相结合,让学生从分析内力分布的基础上讨论理解挑梁根部截面面积大、端部相对较小以及构造上应保证板中纵向手拉钢筋要有足够的受拉长度的原因。在分析两端固定的单跨超静定梁求杆端剪力,杆端弯矩和杆端剪力自相平衡时,可以举例“方向盘jvzquC41yy}/;B}wgunv0lto1y5gkuj2htn2l|0jvsm