Scikit-Learn线性回归(四)

Scikit-Learn线性回归四:梯度下降

    • 1、梯度下降
      • 1.1、梯度下降概述
      • 1.2、梯度下降及原理
      • 1.3、梯度下降的实现
    • 2、梯度下降法求解线性回归的最优解
      • 2.1、梯度下降法求解的原理
      • 2.2、梯度下降法求解线性回归的最优解
      • 2.3、梯度下降法求解线性回归案例(波士顿房价预测)
    • 3、Scikit-Learn梯度下降法
      • 3.1、随机梯度下降
      • 3.2、Scikit-Learn梯度下降法API
      • 3.3、Scikit-Learn梯度下降法案例(波士顿房价预测)
      • 3.4、Scikit-Learn梯度下降法与Pipeline



1、梯度下降

1.1、梯度下降概述


在第一篇文章 Scikit-Learn线性回归(一) 中,我们给出了线性回归的损失函数的定义:
L = ∑ i = 1 m ( y i − f ( x i ) ) 2 L=\sum_{i=1}^m(y_i-f(x_i))^2 L=i=1m(yif(xi))2

回忆一下,损失函数主要用于评估模型拟合的好坏,损失函数衡量了我们构造的模型的预测值与真实值的差异,因此,我们希望我们的预测结果与真实值的差异越小越好。也就是我们希望损失函数取得最小值

损失函数取得最小值是我们构建模型的本质要求,求解模型的特征向量 ω \omega ω是我们构建模型的核心问题

根据损失函数(最小二乘法),我们的求解目标可以转换为求解误差平方和(残差平方和)的最小值:
m i n ω = ∣ ∣ Y − X ω ∣ ∣ 2 2 min_\omega={||Y-X\omega||_2}^2 minω=∣∣YXω22

而根据数学知识,当我们的误差平方和取得最小值时,线性回归模型特征 ω \omega ω就是最优解

最优解的求解方法主要有两种:最小二乘法(数学方式)和梯度下降法。最小二乘法通过数学求导的方式求函数的极值进而推导出线性回归的解;而梯度下降采用近似逼近,是一种迭代方法

在线性回归(详见:传送门)一文中,我们已经通过最小二乘法推导了线性回归的解析解的正规方程:
ω = ( X T X ) − 1 X T Y \omega=(X^TX)^{-1}X^TY ω=(XTX)1XTY

然而,很多模型通过这种数学方式求解是推导不出解析解的,所以就需要使用梯度下降法来搜索最优解。基于梯度下降我们可以推导出线性回归的最优解析解。梯度下降法是使用最广泛的一种优化方法

梯度下降法不是机器学习专属的算法,它是一种基于搜索的优化方法,也就是通过不断的搜索然后找到损失函数的最小值

1.2、梯度下降及原理


观察我们的损失函数转换后的求解目标,根据数学知识,误差平方和(函数)为二次函数形式,且函数开口向上,因此,函数一定有唯一最小值。当函数取得最小值时的 ω \omega ω就是最优解

在这里插入图片描述

上图中,纵坐标表示损失函数L的值,横坐标表示系数 ω \omega ω,每一个 ω \omega ω都会对应一个损失函数L的值,我们希望损失函数收敛,即找到一个 ω \omega ω值,使得损失函数L的值最小

根据数学知识,要判断一个点A是否是损失函数L的最小值,即求该点的导数。点A的导数就是该点切线的斜率,所以导数描述了一个函数在某一点附近的变化率,并且导数大于零时,函数在区间内单调递增,导数小于零时函数在区间内单调递减

所以, ∂ L ∂ ω \frac{\partial L}{\partial\omega} ωL表示损失函数L增大的变化率,- ∂ L ∂ ω \frac{\partial L}{\partial\omega} ωL表示损失函数L减小的变化率

再在曲线上定义一点B,B点的 ω \omega ω就是A点的 ω \omega ω值加上损失函数L递减变化率- η ∂ L ∂ ω \eta\frac{\partial L}{\partial\omega} ηωL
ω B = ω A − η ∂ L ∂ ω = ω A + ∇ J ( ω ) \omega^B=\omega^A-\eta\frac{\partial L}{\partial\omega}=\omega^A+\nabla J(\omega) ωB=ωAηω

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

女性需要了解的健康知识

女性需要了解的健康知识 一:脸部 羊大师发现,你的面容不断透露出你的生活态度,可以从一个女人的脸上看出她过得好不好。从脸色是苍白无华还是红润可见一斑;从是否素颜自然还是妆容精致,这一切都显露在他人面前。因此&…

vue接入海康4G版摄像头通过萤石云平台推送视频流教程

需求 最近需要接入海康视频摄像头,然后把视频的画面接入到自己的网站系统中。以前对接过rtsp固定IP的显示视频,这次的不一样,没有了固定IP。海康的解决办法是,摄像头通过配置服务器到萤石云平台,然后购买企业版账号和…

【开源】基于JAVA语言的智能教学资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程档案表3.2.2 课程资源表3.2.3 课程作业表3.2.4 课程评价表 四、系统展示五、核心代…

Vue CLI初识

脚手架Vue CLI 基本介绍 Vue CLI 是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 好处 开箱即用,零配置内置babel等工具标准化的webpack配置 使用步骤 全局安装(只需安装一次即可…

lenovo联想小新Pro-13 2020 Intel IML版笔记本电脑(82DN)原装出厂Win10系统镜像

链接:https://pan.baidu.com/s/1bJpfXudYEC7MJ7qfjDYPdg?pwdjipj 提取码:jipj 原装出厂Windows10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式&a…

机器学习项目标记图像数据 - 安装LabelImg及功能介绍

什么是LabelImg? LabelImg 是一款流行的图像标注工具,主要用于计算机视觉领域。它允许用户为机器学习项目标记图像数据,特别是用于训练目标检测模型。 如何安装LabelImg pip install PyQt5 pip install pyqt5-tools pip install lxml pip …

WPF使用 MahApps.Metro,如何更改MetroWindow标题的字体?

WPF 使用 MahApps.Metro, 如何更改MetroWindow标题的字体? WPF中,在使用 MahApps.Metro后,MetroWindow窗口头部标题的字体默认是大写的;标题显示大写很多时候不是实际需要的,那怎么修改根据XAML输入的内容显示呢&#…

【unity小技巧】实现没有动画的FPS武器摇摆和摆动效果

文章目录 前言开始完结 前言 添加程序摇摆和摆动是为任何FPS游戏添加一些细节的非常简单的方法。但是并不是所以的模型动画都会配有武器摆动动画效果,在本文中,将实现如何使用一些简单的代码实现武器摇摆和摆动效果,这比设置动画来尝试实现类…

数据结构OJ实验14-哈希查找

A. DS哈希查找—线性探测再散列 题目描述 定义哈希函数为H(key) key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。 输入 测试次数t 每组测试数据为: …

漫谈大模型的[幻觉]问题

# 如何解决大模型的幻觉问题?# 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:漫谈LLMs带来的AIGC浪潮​​​​​​​ 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质…

人工智能:模拟人类智慧的科技奇迹

人工智能(Artificial Intelligence,简称AI)作为一项模拟人类智慧行为的科学与技术,正以惊人的速度改变着我们的世界。它旨在让计算机系统具备感知、推理、学习、决策和交互等人类智慧的能力,成为当今科技领域的巨大突破…

卷积神经网络(CNN)、循环神经网络(RNN)和自注意力(self-attention)对比

考虑同一个的问题:将由个词元组成的序列映射到另一个长度相同的序列,其中的每个输入词元或输出词元由维向量表示。 我们将比较能够解决上述问题的三种常用方法:卷积神经网络(CNN)、循环神经网络(RNN&#x…

麒麟镜像下载

试用版下载链接 产品试用申请国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站 下载自己对应的操作系统 我下载的是 共享文件下载 - Kylin Distro 然后用迅雷下载就可以了

使用jmeter从0开始完成性能测试

使用JMeter从0开始完成性能测试 介绍 在软件开发过程中,性能测试是一项关键任务,它可以帮助我们评估系统在不同负载条件下的性能表现,发现潜在的性能瓶颈。JMeter是一款功能强大且易于使用的性能测试工具,它可以帮助我们完成各种…

Android Studio 模拟器卡死的解决方法!

目录 前言 一、常规方法 二、简便解决方法 前言 在开发过程中,使用Android Studio模拟器是一种常见的方式来测试和调试应用程序。然而,有时候你可能会遇到模拟器卡死的情况,这给开发工作带来了一定的困扰。模拟器卡死可能会让你无法正常进…

CTFhub-Web-Web前置技能-“302跳转“

题目信息 HTTP临时重定向,题目截图如下所示: 分析过程 看到跳转路径为:http://challenge-d1a96d97eaecf029.sandbox.ctfhub.com:10800/index.html 分析可能存在重定向问题,如果要想获得flag,则可能存在http://chal…

C练习——鸡兔同笼

题目: 有若干只鸡和兔子在同一个笼子里,从上面数,有98个头;从下面数,有386只脚。问笼中各有几只鸡和兔? 解析: 数学上列二元一次方程组求解,所以采用穷举法,但可以缩小…

PyTorch基础操作

一、Tensor 在 PyTorch 中,张量(Tensor)是一个核心概念,它是一个用于存储和操作数据的多维数组,类似于 NumPy 的 ndarray,但与此同时,它也支持 GPU 加速,这使得在大规模数据上进行科…

Fontfabric:一款字体与设计的完美结合

一、产品介绍 Fontfabric是一款由国际字体设计公司Fontfabric开发的字体设计软件。它提供了一整套完整的字体设计工具,让用户可以轻松地创建、设计和定制自己的字体。Fontfabric拥有丰富的字体库,包括各种风格和类型,能够满足用户在不同场景…

Android 13.0 SystemUI状态栏居中显示时间和修改时间显示样式

1.概述 在13.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了 效果图如下: 2.SystemUI状态栏居中显…