机器学习——线性回归算法、代价函数、梯度下降算法基础

线性回归

还是以之前的预测房价为例,根据不同尺寸的房子对应不同的售价组成的数据集画图,图如下

监督学习算法工作流程

假设函数其实就是我们所说的函数,在房价这个例子中,我们可以从上图中看出房价和房子面积是一个一元的线性函数(当然有更复杂更贴近数据集的函数拟合数据集,但是我们从最简单的开始学习),所以我们要来预测y关于x的线性函数,可以简单写成:y = h(x),但它更完整的写法是下图的形式:

接下来的例子中会用到的一些符号

训练集:数据集又称为训练集,如下面的房价数据集

小写字母m:训练集中样本的数量,也就是数据集中总的数据个数

小写字母x:输入变量,这里指的是房子的面积

小写字母y:输出变量,预测的对应面积x的房子售价

(x, y):表示某一个训练样本,如房价数据集中的某一行数据

(x^i, y^i);i是上标,表示第i个样本

代价函数

下面介绍的代价函数称为平方误差函数,有时还称为平方误差代价函数。,是代价函数中的一种,在解决线性回归问题中比较常用,当然还有其他代价函数

模型参数介绍

如图,我们要做的是如何选择两个模型参数,以让假设函数更贴近训练集,也就是选择对两个模型参数θ0和θ1,会让预测结果更准确

 模型参数的选择

选择不同的模型参数,会得到不同的假设函数

现在我们要根据训练集,得出两个模型参数的值,进而得到具体的假设函数,让该假设函数尽可能多的与训练集中的数据点拟合。那我们该怎么选择这两个模型参数呢?

思路是:对于训练集中的每个数据,每个房子面积x都对应着已知的售价y,假如已经确定两个模型参数,即已经得到假设函数,应该使得对该假设函数输入训练集中的某个x得到的yy,与实际的y最接近(也就是我们说的要最大程度的拟合数据点)

总之就是,我们要使得预测的房价和真实的售价之间差值的平方越小越好(至于为什么是平方,是因为预测价和真实价的差值可能正可能负)

代价函数的数学定义

理解代价函数

为了更好理解,现在我们简化一下假设函数,如图(因为公式不好写,所以都用截图表示了)

 θ1可以取不同的值,包括正数、负数、0,我们的目标是找到让J(θ1)最小的θ1,由J(θ1)的图像可以看出,在这个例子中,θ1 = 1时,J(θ1)能取到最小值,而当θ1=1时,假设函数也是能最大程度的拟合训练集的每个样本的(在这个例子中,假设函数完全拟合训练集中的三个数据点)

上面我们为了容易理解,简化了假设函数,让θ0=0,即假设函数中只有一个模型参数,现在讨论原本的假设函数(有两个模型参数θ0,θ1)

代价函数J(θ0,θ1)的函数图像如下:

 我们用等高线图代替上面的立体图,可以看出,越接近等高线图的中心,代价函数的值就越小,而对应的假设函数就越拟合训练集数据。

我们都是随便取某个点来进行分析,但是实际上不可能一个个列举,所以算法要做的就是快速找到最小的代价函数值J(θ0,θ1)对应的θ0和θ1.

梯度下降算法

上面我们的需求是想得到最小的代价函数值,那么我们此时可以使用梯度下降算法来实现这个需求。梯度下降算法不仅仅可以最小化线性回归的代价函数,还可以最小化其他函数,即梯度下降算法可以最小化任意函数,被广泛应用于机器学习的众多领域。

梯度下降算法可以最小化任意函数J(θ0,θ1,θ2,...,θn),即得到任意函数的最小值或局部最小值,下面为了更容易理解,以两个模型参数为例J(θ0,θ1)描述梯度下降算法的思路

在每一个位置选择不同方向的路时,实际上上就是在不断修改θ0和θ1的值

梯度下降算法的数学定义

公式中的α控制着以多大幅度更新参数θj

梯度下降算法的理解

导数项的意义

我们先来看导数的概念及基本含义,这里只写出了最基本的一点(来自百度,因为我也忘完了(╥╯^╰╥)):

导数是用来描述函数局部变化率的度量。对于给定的函数,它在某一点处的导数,就是函数曲线在该点处的切线斜率。具体地说,若函数y=f(x)在点x0处可导,则点(x0, f(x0))处切线的斜率就是f(x)在点x0处的导数f'(x0)。导数本质上是一个极限,即函数在某个点x0处的导数,就是其在此点附近取极限时的极限值,即:f'(x0) = lim (x->x0) [f(x) - f(x0)] / [x - x0]

为了容易理解,现在假设代价函数只有一个模型参数,即J(θ1),跟之前一样,我们可以得到J(θ1)的函数图像如下,由上面的导数概念,可以知道函数J(θ1)在位置A的导数,就是在函数图像上的位置A作一条切线,该切线的斜率就是J(θ1)在位置A的导数值。

我们再看看另一个位置B的导数,如下

梯度下降算法的运行过程

学习率α大小的影响,如下

 从上面可以出α是一个固定值,不影响梯度下降算法会自动根据导数值的不同来调整每一步走的步子大小。说到这里,好像也没说α的用处,也没说该如何定义α的值,以及为什么还要乘以α,而不是直接减去导数值?

我看了一下视频弹幕,说我们现在举的都是最简单的函数,但是实际应用中,函数会很复杂,非常有可能是多维的,而且函数不一定连续等等。所以这里就当做是理解梯度下降算法的思想吧。如果后面的视频讲到原因,会做笔记的(B站视频链接 这个专栏里的文章应该都是这个视频的笔记)

梯度下降算法在代价函数中的应用

求梯度下降算法中的导数项

我们先求梯度下降算法中的导数项的值,这里求导数的过程使用了复合函数求导和偏导数这两个知识点。

偏导就是当一个函数中有多个变量,如这里代价函数中有两个变量θ0和θ1,在对其中某一个变量求导数时,将其他变量都视作常数项,如对变量θ0求偏导时,将θ1项都看作是常数项,而复合函数求导法则如下(来自知乎):

 下图中,隐函数为假设函数h(x) = θ0 + θ1*x,在对θ0求偏导时,h(θ0)` = 1(θ1*x这一项看作常熟项),在对θ1求偏导时,h(θ1)` = x(θ0和x都看作常熟项

外函数J(h(x)) = (1/2m)[h(x) - y]^2,对J函数偏导时,由于J是复合函数,所以运用复合函数的求导法则,首先J(h(x))` = (1/m)(h(x) - y) (说明:将h(x)看作一个变量,相当于((x-a)²)'=2(x-a),所以求导之后平方没了,前面的二分之一也消掉了2,这也是为什么之前要写成1/2m的原因),结合上面的h(x)对θ0和θ1的偏导,可以得到图中针对θ0和θ1的导数项的值

将计算得到的导数项代入梯度下降算法公式,如下:

梯度下降函数在线性回归中的具体实现过程

在下面这张图中,从不同的位置出发,即初始化的值不同会得到不同的局部最优解

但是我们所举例的房价这一线性回归的例子的代价函数的图像是一个弓状函数(这种称为凸函数,具体的自行百度一下吧,我也不懂),这个函数没有局部最优解,只有全局最优,从图形也可以看出这一点,当计算这种代价函数的梯度下降时,总能得到全局最优解

首先,先初始化θ0和θ1的值,一般都初始化为0,在这里为了方便演示,从图中的点开始

 

上面所展示的梯度下降算法,有时也称为batch梯度下降,从上面的过程中可以看到,batch梯度下降算法每运行一次,即从一个点到另一个点所运行的一次梯度下降,都会遍历训练集中的每个样本(因为在单独的一次梯度下降中,计算偏导时最终都是计算m个样本的总和\sum (h(x) - y)).所以batch梯度下降算法每一次都是从整个训练集入手,而还有其他的梯度下降算法,只从训练集的小子集入手

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/488275.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【openGL教程08】关于着色器(02)

LearnOpenGL - Shaders 一、说明 着色器是openGL渲染的重要内容,客户如果想自我实现渲染灵活性,可以用着色器进行编程,这种程序小脚本被传送到GPU的显卡内部,起到动态灵活的着色作用。 二、着色器简述 正如“Hello Triangle”一章…

windows下onlyoffice重启

winr之后输入services.msc打开服务,找到ONLYOFFICE相关的服务全部重启即可 参考

ClickHouse 指南(三)最佳实践 -- 稀疏主索引

在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中,我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…

【前端素材】推荐优质后台管理系统PORTAL平台模板(附源码)

一、需求分析 后台管理系统是一种具有多层次结构的软件系统,用于管理网站、应用程序或系统的后台操作和管理。下面是对后台管理系统的分层次、详细分析: 第一层:用户界面层 登录界面:提供用户登录验证,确保只有经过授…

Java Stream API的二度深入

Java Stream API的二度深入 前言 为什么会写这样一篇文章呢? 1.面试的时候,一位前辈对我这方面有过一次提问,我随口回答,前辈很信任我,以此文致敬前辈! 2.去回顾,去扎实,对得起前辈的…

Leetcode 209.长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&…

算法沉淀——动态规划之斐波那契数列模型(leetcode真题剖析)

算法沉淀——动态规划之斐波那契数列模型 01.第 N 个泰波那契数02.三步问题03.使用最小花费爬楼梯04.解码方法 动态规划(Dynamic Programming,简称DP)是一种通过将原问题分解为相互重叠的子问题并仅仅解决每个子问题一次,将其解存…

vue3前端项目开发,具备纯天然的防止爬虫采集的特征

vue3前端项目开发,具备纯天然的防止爬虫采集的特征!众所周知,网络爬虫可以在网上爬取到一些数据,很多公司,为了自己公司的数据安全, 尤其是web端项目,不希望被爬虫采集。那么,您可以使用vue技术…

Linux快速修改ip地址

Linux修改IP配置 一 、查找ip配置文件 ifcfg-ens33二、编辑 vi ifcfg-ens33文件三、重启网络或者重启系统 一 、查找ip配置文件 ifcfg-ens33 cd /etc/sysconfig/network-scripts/ls //查看network-scripts文件夹下面的文件二、编辑 vi ifcfg-ens33文件 vi ifcfg-ens33注意&…

阿里云国际-在阿里云服务器上快速搭建幻兽帕鲁多人服务器

幻兽帕鲁是最近流行的新型生存游戏。该游戏一夜之间变得极为流行,同时在线玩家数量达到了200万。然而,幻兽帕鲁的服务器难以应对大量玩家的压力。为解决这一问题,幻兽帕鲁允许玩家建立专用服务器,其提供以下优势: &am…

【mysql】1000w数据量的分页查询SQL,如何优化提升性能?

文章目录 优化场景特别注意!!!有前提,谨慎使用 优化场景 当表数据量非常大时,需要进行分页查询如果慢的时候,可以考虑优化下。 假设一页展示10条,查询第10w条后面的数据时候变慢了… 优化思路&…

Sora是什么?

文章目录 前言Sora是什么?功能特色优点 缺点Sora模型的工作原理如何使用Sora模型Sora模型的应用场景Sora模型带来的问题虚假信息版权问题 后记 前言 Sora是美国人工智能研究公司OpenAI发布的一款令人惊叹的人工智能文生成视频大模型。近年来,人工智能技…