线性模型的介绍

news2024/11/13 20:33:46

一、背景

在一个理想的连续世界中,任何非线性的东西都可以被线性的东西来拟合,所以理论上线性模型可以模拟物理世界中的绝大多数现象。

线性模型(Linear Model)是机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型。给定有d个属性描述的示例x = (x_{1};x_{2};...;x_{d}),线性模型试图学得一个通过属性的线性组合来进行预测的函数,即:

f(x)=\omega _{1}*x_{1}+\omega _{2}*x_{2}+...+\omega _{d}*x_{d}

一般用向量形式写成:

二、线性模型参数求解的本质

不管对 f(x) 施加什么样的变化,从方程求解角度来看,f(x)=\omega _{1}*x_{1}+\omega _{2}*x_{2}+...+\omega _{d}*x_{d}是一个线性方程组。

在这个方程组中,x 是我们已知的,因为我们有训练样本,所以在初始化时,我们的线性方程组看起来是如下形式:

y1 = 1 * w1 + 2 * w2 + .... + 3 * wn;
....
yn = 3 * w1 + 4 * w2 + .... + 3 * wn;

每个样本代表线性方程组的一行,样本中完全线性共线的可以约去。

这样,我们就得到了一个 N(样本数) * M(特征维度) 的巨大矩阵。而样本的值和标签即(x,y)共同组成了一个巨大的增广矩阵。注意,是样本组成了系数矩阵,不是我们要求的模型参数!

求解线性模型的参数向量(w,b)就是在求解线性方程组的一个方程解,所有的方程解组成的集合称为线性方程组的解集合。

同时,在机器学习中,我们称 w 和 b 为线性模型的超参数,满足等式条件的(w,b)组合可能不只一种,所有的超参数构成了一个最优参数集合。实际上,根据线性方程组的理论,线性方程组要么有唯一解,要么有无限多的解。

唯一解的条件比较苛刻,在大多数的场景和数据集下,解空间都是无限的,机器学习算法的设计目标就是:

基于一种特定的归纳偏置,选择一个特定的超参数(w,b),使得模型具备最好的泛化能力,机器学习算法的目的不是解方程,而是获得最好的泛化能力。

当超参数通过训练拟合过程确定后,模型就得以确定。

三、线性回归

线性回归(linear regression)试图学得一个线性模型:

,以尽可能准确地预测实值输出标记。

注意,这里用”尽可能地准确“这个词,是因为在大多数时候,我们是无法得到一个完美拟合所有样本数据的线性方程的,即直接基于输入数据构建的多元线性方程组在大多数时候是无解的。

如下图所示:

这个时候怎么办呢?数学家高斯发现了最小二乘法,它的主要思想是:寻找一个解向量,它和目标数据点的距离尽可能地小。

所以现代线性回归算法所做的事情是:在一定的线性约束条件下,求解线性目标函数的极值问题,这是一个线性规划问题。

四、损失函数的选择

损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。

我们刚说道,直接基于输入数据求解对应线性方程组是无解的,高斯为了解决这个问题,引入了最小二乘。在此之上,之后的数学家又发展出了多种损失评估函数,其数学形式各异,但其核心思想是一致的。损失函数的选择,本质上就是在选择一种误差评价标准,选择何种损失函数取决于我们如何看待我们的问题场景,以及我们希望得到什么样的解释。

我们讨论主要的常用损失函数:

4.1 最小二乘法

线性模型试图学得

同时在噪声符合高斯分布的假设前提下,均方误差是衡量 f(x) 和 y 之间的差别的最佳损失函数。

因此我们可以试图让均方误差最小化,即:

均方误差有非常好的几何意义,它对应了常用的欧几里得距离或简称欧氏距离。基于均方误差误差最小化来进行模型求解的方法称为“最小二乘法(least square method)”。

注意:这里 E(w,b) 是关于 w 和 b 的凸函数,当它关于 w 和 b 的导数均为零时,得到 w 和 b 的最优解。但是对于更高维的线性模型甚至非线性模型,目标函数往往并不是全局凸函数,因此不能继续使用导数为零的方式进行最优解求解,这个时候就需要例如梯度下降法这种递归优化求解算法。 

4.2 梯度下降法

 线性模型无论多复杂其本质上都是凸函数,凸函数一定可以求得全局最优的极值点,也即最优参数。但是,当函数复杂度继续提高,例如增加了非线性变换之后的复合函数之后,目标函数不一定就是凸函数了(例如深度神经网络),这个时候我们就很难直接求得闭式解,矩阵求逆也不一定可以完成。针对这种复杂函数,GD梯度下降就是一种相对万能通用的迭代式参数求解算法。

我们从某些初始解出发,迭代寻找最优参数值。每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向。例如,由于负梯度方向是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解.若误差函数在当前点的梯度为零,则已达到局部极小,更新量将为零,因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值,选择不同的初始参数组合,可能会找到不同的局部最小值。
 


 

下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了。其中m是训练集的记录条数,j是参数的个数。这里J( θ)中的1/2是为了求导便利.

 

 

其中 α 是学习率(learning rate) , 它决定了我们沿着能让代价函数下降程度最大的方
向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速
率乘以代价函数的导数。
 

参考:

Python机器学习之线性模型 - 简书

 https://www.cnblogs.com/LittleHann/p/10498579.html#_label0

详解梯度下降算法_梯度下降法_JaysonWong的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生产力提速增效的4大敲门砖

引言: 本文章将分四大板块介绍提高程序员生产力的方案,最大化利用你的IDE ,其中Live Template篇,插件篇非常值的一看, 用好才能提速增效 Productity Guide篇 Postfix Completion篇 Live Template篇 插件篇 Product…

NGFW的protal认证实验

实验topo 用到工具:ensp,kali,cloud云的网段是192.168.43.0;连接cloud的g0/0/0地址就是你登录web,protal的地址 实验说明:建议不在真机上面配置直接用,因为真机不稳定。这里用kali当真机&#x…

【网络应用开发】实验5—— JDBC数据库访问与DAO设计模式

目录 JDBC数据库访问与DAO设计模式预习报告 一、实验目的 二、实验原理 三、实验预习内容 1. JDBC常用的类对象与接口有哪些?它们的功能如何? 2.使用数据源访问数据库的基本思想是什么?这样做有什么好处? 3.什么是DAO&am…

vscode使用虚拟环境

我的conda没有添加入path,每次打开总是报错 一、选择对应虚拟环境的解释器 1.点击vscode的右下角这里 2.点击后可能会在vscode上方出现下图样子,如果出现下图,则点击第二项Select at workspace level, 3.接着出现下图样式&#…

2022年营收破百亿,零跑汽车展现超强实力

此前,零跑已正式公布了2022年的财务数据。可以看到,零跑去年的营收破百亿,增速将近300%,这一成绩在汽车界是相当优越的。说到为何零跑能够实现如此快速的成长,那就不得不提其全域自研的核心优势。 如今,无论…

有始有终的编码原则

基本情况 在程序员的修炼之道之中,说到: 这个建议能简单地应用到大多数场合。简单说就是,分配资源的函 数或对象,对释放资源应负有责任。 这其实就是我们常说的谁分配的就谁负责释放,这也是内存释放的一个原则&#x…

微搭低代码实现投票功能

经常有一类需求,就是投票的功能,需要限制每一个选项每个人只可以投一票,投完之后需要统计票数。本篇教程我们讲解一下如何利用微搭低代码工具来实现投票功能。 1 设计数据源 我们需要设计一个数据源来记录用户的投票,如何限制用…

Docker网络模式详解

文章目录 一、docker网络概述1、docker网络实现的原理1.1 随机映射端口( 从32768开始)1.2 指定映射端口1.3 浏览器访问测试 二、 docker的网络模式1、默认网络2、使用docker run 创建Docker容器时,可以用--net或--network 选项指定容器的网络模式 三、docker网络模式…

代码审计实战3-android java

jks java keystore 作用:保证应用的唯一性 简介:可以理解为java的密钥库,是一个用来存放密钥和证书的仓库。 (而keytool就是密钥和证书的管理工具,它把key(密钥)和certificate(证…

一零五六、Jsp+mysql 实现学生选课系统(附源码及数据库)

目录 实现效果 项目代码 数据库 结语 实现效果 login.jsp index.jsp course_query.jsp course_selection.jsp course_withdraw.jsp selection_query.jsp 项目代码 checkSelectionStatus.jsp % page contentType"text/html;charsetUTF-8" language"java&q…

图像处理:均值滤波算法

目录 前言 概念介绍 基本原理 Opencv实现中值滤波 Python手写实现均值滤波 参考文章 前言 在此之前,我曾在此篇中推导过图像处理:推导五种滤波算法(均值、中值、高斯、双边、引导)。这在此基础上,我想更深入地研…

4月23号软件更新资讯合集.....

微软发布 Web 渲染引擎 Babylon.js 6.0 Babylon.js 是一个强大、简单、开放的游戏和 Web 渲染引擎,并被封装在一个友好的 JavaScript 框架中。 Babylon.js 6.0 带来了性能改进、渲染增强和一系列新功能。 新物理插件 Havok 团队通过一个特殊的新 WASM 插件和对 Ba…

sar基本命令格式操作及使用方法学习笔记

目录 SAR说明Centos7安装Sar命令sar命令显示时间改为24小时制查询某天某个时间段内的数据 SAR说明 sar是一个采集,报告和存储计算机负载信息的工具。自下载安装好后每10分钟对系统性能进行一次采集,每天的日志文件保存再/var/log/sa/下,sa17…

Docker 部署Redis

由于项目需要,上了redis。公司用的是OKD4.x,所以在自己的环境上也直接上docker,比下载、编译、安装省心多了。 1、下载镜像 官网地址:https://hub.docker.com/_/redis 我选择的是docker pull redis:7.0-bullseye 具体版本号的含…

Web3D包装生产线 HTML5+Threejs(webgl)开发

生产线三维可视化解决方案就是通过物联网、虚实联动和三维建模等先进技术,以一个3D立体模型展现出来,可以让我们很直观的看到生产线的运作以及对数据的监控。3D运用数据孪生技术可以让工业3D物联网管理系统的界面变得非常的简单易看,并且能够…

软件测试的新技术和方法

作为一位资深的IT领域博主,我一直在关注软件测试领域的发展趋势。随着技术的不断发展,软件测试领域也在不断更新换代。在本文中,我将分享一些最新的软件测试技术和方法,希望能对广大软件测试工程师提供一些参考。 一、自动化测试…

【教程】保姆级红米AX6000刷UBoot和OpenWrt固件

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 开启SSH 刷入UBoot 刷入Openwrt 设置Openwrt 刷回小米原厂固件 开启SSH 1、下载官方指定版本固件:https://share.qust.me/redmi-ax6000-1.2.8.bin 2、进入路由器后台升级固件:h…

Nginx +Tomcat 负载均衡,动静分离集群

介绍 通常情况下,一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等情况,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案 Nginx 是一款非常优秀的http服务软件,它能够支持高达 50000 个并发…

IndexedDB的包装器JsStore - 分页功能

JsStore是IndexedDB的包装器。它提供了简单的SQL像api,这是容易学习和使用。IndexedDb查询可以在web worker内部执行,JsStore通过提供一个单独的worker文件来保持这种功能。 由于之前使用IndexedDB时,提供api不太丰富,就自己写了一…

Ubuntu2204安装pycharm社区版

最近在学习人工智能相关的知识,比较流行的开源框架对windows操作系统的支持并不太友好,因此把学习测试的环境搭在了Ubuntu2204上。一开始我都是在win10系统中的pycharm上写python代码,然后再上传到Ubuntu2204中运行测试,这么做降低…