最小二乘线性回归

线性回归(linear regression):试图学得一个线性模型以尽可能准确地预测实际值的输出。

以一个例子来说明线性回归,假设银行贷款会根据 年龄 和 工资 来评估可放款的额度。即:

数据:工资和年龄(2个特征)

目标:预测银行放款额度(标签)

参数:考虑工资和年龄分别对放款额度的影响程度

可以写成这样: Y = X 1 θ 1 + X 2 θ 2 Y=X_1\theta_1+X_2\theta_2 Y=X1θ1+X2θ2,这里 X 1 、 X 2 就是特征, Y X_1、X_2 就是特征,Y X1X2就是特征,Y就是银行最终放款额度。

​ 找到最合适的一个平面来拟合数据点:
在这里插入图片描述

​ 拟合的平面方程: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2 hθ(x)=θ0+θ1x1+θ2x2,这里 θ 0 \theta_0 θ0是偏置项。整合该方程可以写成如下形式:
h θ ( x ) = ∑ i = 0 n θ i x i = θ ⊤ x h_{\theta}(x)=\sum_{i=0}^n \theta_ix_i=\theta^\top x hθ(x)=i=0nθixi=θx
注意这里 x 0 = 1 x_0=1 x0=1,添加一个全为1的特征,方便表示。

​ 真实值和预测值之间肯定存在误差,用 ϵ \epsilon ϵ来表示误差。对于每个样本:
y i = θ ⊤ x i + ϵ i y_i = \theta^\top x_i + \epsilon_i yi=θxi+ϵi
这里 y i y_i yi 为真实值, θ ⊤ x i \theta^\top x_i θxi为预测值, ϵ i \epsilon_i ϵi为误差项

对于误差的理解:误差 ϵ i \epsilon_i ϵi是独立同分布的,且服从均值为0方差为 θ 2 \theta^2 θ2的高斯分布

  • 独立:每个样本 x i x_i xi是没有关系的(张三李四一起放款,他俩没关系)
  • 同分布:每个 x i x_i xi都是对于同一个问题的(他俩都是来同一家银行 )
  • 高斯分布:误差可大可小,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况。

​ 由于误差服从高斯分布:
p ( ϵ i ) = 1 2 π σ e − 1 2 ( ϵ i σ ) 2 p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2} p(ϵi)=2π σ1e21(σϵi)2
将预测值和误差带入上式得:
y i = θ ⊤ x i + ϵ i 带入   p ( ϵ i ) = 1 2 π σ e − 1 2 ( ϵ i σ ) 2 : p ( y i ∣ x i ; θ ) = 1 2 π σ e − 1 2 ( y i − θ ⊤ x i σ ) 2 y_i = \theta^\top x_i + \epsilon_i \\ 带入\ \ p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2}:\\ p(y_i|x_i;\theta)=\frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2} yi=θxi+ϵi带入  p(ϵi)=2π σ1e21(σϵi)2p(yixi;θ)=2π σ1e21(σyiθxi)2
上式的似然函数如下:
L ( θ ) = ∏ i = 1 m p ( y i ∣ x i ; θ ) = ∏ i = 1 m 1 2 π σ e − 1 2 ( y i − θ ⊤ x i σ ) 2 L(\theta) = \prod_{i=1}^mp(y_i|x_i;\theta)=\prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2} L(θ)=i=1mp(yixi;θ)=i=1m2π σ1e21(σyiθxi)2
对似然函数的解释:

什么样的参数跟我们的数据组合后恰好是真实值

对数似然:
l o g L ( θ ) = l o g ∏ i = 1 m p ( y i ∣ x i ; θ ) = l o g ∏ i = 1 m 1 2 π σ e − 1 2 ( y i − θ ⊤ x i σ ) 2 = m l o g 1 2 π σ − 1 σ 2 ∗ 1 2 ∗ ∑ i = 1 m ( y i − θ ⊤ x i ) 2 log L(\theta) =log \prod_{i=1}^mp(y_i|x_i;\theta)=log \prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2}\\=mlog\frac{1}{\sqrt{2 \pi}\sigma}-\frac{1}{\sigma ^2}*\frac12*\sum_{i=1}^m(y_i-\theta^\top x_i)^2 logL(θ)=logi=1mp(yixi;θ)=logi=1m2π σ1e21(σyiθxi)2=mlog2π σ1σ2121i=1m(yiθxi)2
目标是让似然函数(对数变换之后)越大越好:
m a x l o g L ( θ ) → m i n J ( θ ) = 1 2 ∑ i = 1 m ( y i − θ ⊤ x i ) 2 (最小二乘法) max \ log L(\theta)\\ →min \ J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2(最小二乘法) max logL(θ)min J(θ)=21i=1m(yiθxi)2(最小二乘法)
J ( θ ) = 1 2 ∑ i = 1 m ( y i − θ ⊤ x i ) 2 J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2 J(θ)=21i=1m(yiθxi)2即为最小二乘法。

​ 将目标函数写为矩阵形式:
J ( θ ) = 1 2 ∑ i = 1 m ( y i − θ ⊤ x i ) 2 = 1 2 ( X θ − y ) ⊤ ( X θ − y ) 对 θ 求偏导 : ∇ θ J ( θ ) = X ⊤ X θ − X ⊤ y 令 ∇ θ J ( θ ) = 0 得 : θ = ( X ⊤ X ) − 1 X ⊤ y J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2= \frac12(X\theta-y)^\top (X\theta-y)\\ 对\theta 求偏导:\\ \nabla_\theta J(\theta)=X^\top X\theta-X^\top y\\ 令\nabla_\theta J(\theta)=0得:\\ \theta=(X^\top X)^{-1}X^\top y J(θ)=21i=1m(yiθxi)2=21(y)(y)θ求偏导:θJ(θ)=XXyθJ(θ)=0:θ=(XX)1Xy
​ 采用微分和迹的关系 d f = t r ( ( ∂ f ∂ X ) ⊤ d X ) df= tr((\frac{\partial f}{\partial X})^\top dX) df=tr((Xf)dX)进行求导,求导过程如下:
d J ( θ ) = t r ( d J ( θ ) ) = d [ 1 2 ( X θ − y ) ⊤ ( X θ − y ) ] = t r [ d ( 1 2 ( θ ⊤ X ⊤ X θ − 2 y ⊤ X θ + y ⊤ y ) ) ] = t r [ d ( 1 2 θ ⊤ X ⊤ X θ ) ] − t r ( d ( 2 y ⊤ X θ ) ) + t r ( d ( y ⊤ y ) ) = t r ( 1 2 d θ ⊤ X ⊤ X θ ) + t r ( 1 2 θ ⊤ X ⊤ X d θ ) − t r ( 2 y ⊤ X d θ ) + 0 = t r ( 1 2 θ ⊤ X ⊤ X d θ ) + t r ( 1 2 θ ⊤ X ⊤ X d θ ) − t r ( 2 y ⊤ X d θ ) = t r ( θ ⊤ X ⊤ X d θ − 2 y ⊤ X d θ ) = t r ( ( θ ⊤ X ⊤ X − 2 y ⊤ X ) d θ ) = t r ( ( X ⊤ X θ − 2 X ⊤ y ) ⊤ d θ ) 故: ∂ J ( θ ) ∂ θ = X ⊤ X θ − 2 X ⊤ y dJ(\theta)= tr(dJ(\theta))=d[\frac12(X\theta-y)^\top (X\theta-y)]\\ =tr[d(\frac12(\theta^\top X^\top X\theta-2y^\top X\theta+y^\top y))]\\ =tr[d(\frac12\theta^\top X^\top X\theta)]-tr(d(2y^\top X\theta))+tr(d(y^\top y))\\ =tr(\frac12d\theta^\top X^\top X\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)+0\\ =tr(\frac12\theta^\top X^\top Xd\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)\\ =tr(\theta^\top X^\top Xd\theta-2y^\top Xd\theta)=tr((\theta^\top X^\top X-2y^\top X)d\theta)\\ =tr(( X^\top X\theta - 2X^\top y)^\top d\theta)\\ 故:\\ \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y\\ dJ(θ)=tr(dJ(θ))=d[21(y)(y)]=tr[d(21(θX2y+yy))]=tr[d(21θX)]tr(d(2y))+tr(d(yy))=tr(21dθX)+tr(21θXXdθ)tr(2yXdθ)+0=tr(21θXXdθ)+tr(21θXXdθ)tr(2yXdθ)=tr(θXXdθ2yXdθ)=tr((θXX2yX)dθ)=tr((X2Xy)dθ)故:θJ(θ)=X2Xy
X ⊤ X X^\top X XX为满秩矩阵或者正定矩阵时,令偏导数 ∂ J ( θ ) ∂ θ = X ⊤ X θ − 2 X ⊤ y = 0 \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y=0 θJ(θ)=X2Xy=0得到:
θ = ( X ⊤ X ) − 1 X ⊤ y \theta=(X^\top X)^{-1}X^\top y θ=(XX)1Xy

其中 ( X ⊤ X ) − 1 (X^\top X)^{-1} (XX)1是矩阵 X ⊤ X X^\top X XX的逆矩阵。但是现实任务中, X ⊤ X X^\top X XX通常不是满秩矩阵,例如在许多任务中会遇到大量的变量,其数目甚至超过样例数,导致X的列数多于行数, X ⊤ X X^\top X XX X ⊤ X X^\top X XX显然不满秩。此时可以解出多个 θ \theta θ,他们都能使均方差最小化。选择哪一个解作为输出,将由机器学习算法的归纳偏好决定,常见的做法是引入正则化项。

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

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

相关文章

LeeCode前端算法基础100题(2)- 最多水的容器

一、问题详情: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:…

案例025:基于微信小程序的移动学习平台的设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

[C++历练之路]优先级队列||反向迭代器的模拟实现

W...Y的主页 😊 代码仓库分享💕 🍔前言: 在C的宇宙中,优先队列似乎是一座巨大的宝库,藏匿着算法的珍宝。而就在这片代码的天空下,我们不仅可以探索优先队列的神奇,还能够揭开反向迭…

【【Linux系统下常用指令学习 之 二 】】

Linux系统下常用指令学习 之 二 文件查询和搜索 文件的查询和搜索也是最常用的操作,在嵌入式 Linux 开发中常常需要在 Linux 源码文件中查询某个文件是否存在,或者搜索哪些文件都调用了某个函数等等。 1、命令 find find 命令用于在目录结构中查找文件…

BUUCTF [ACTF新生赛2020]outguess 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。 密文: 下载附件,得到一堆文件。 解题思路: 1、根据题目和flag.txt文件提示,猜测为outguess隐写。 outguess下载安装 kail 终端命…

数字乡村:科技赋能农村产业升级

数字乡村:科技赋能农村产业升级 数字乡村是指通过信息技术和数字化手段,推动农业现代化、农村经济发展和农民增收的一种新模式。近年来,随着互联网技术的飞速发展,数字乡村开始在全国范围内迅速兴起,为乡村经济注入了新…

leedcode 刷题 - 除自身以外数组的乘积 - 和为 K 的子数组

I238. 除自身以外数组的乘积 - 力扣(LeetCode) 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在…

AdaBoost提升分类器性能

目录 AdaBoost算法原理 AdaBoost工作详情 初始权重分配 第一轮 第二轮 后续轮次 最终模型 AdaBoost的API解释 AdaBoost 对房价进行预测 AdaBoost 与决策树模型的比较 结论 AdaBoost算法原理 在数据挖掘中,分类算法可以说是核心算法,其中 Ada…

gitee推荐-PHP面试准备的资料

该内容为giee项目。PHP-Interview: 这个项目是自己准备PHP面试整理的资料。包括PHP、MySQL、Linux、计算机网络等资料。方便自己以后查阅,会不定期更新,欢迎提交pr,如果错误,请指出,谢谢 在线预览地址:Intr…

【LeetCode刷题笔记】DFSBFS(三)

图的基础知识 邻接矩阵是一个二维表,其中横纵坐标交叉的格子值为 1 的表示这两个顶点是连通的,否则是不连通的。

NVM得介绍和详细使用教程

NVM​​​​​​​(Node Version Manager)是一个用于管理多个Node.js版本的工具。它允许您在同一台计算机上轻松地切换和管理不同的Node.js版本。以下是NVM的介绍和详细使用教程: 安装NVM: 首先,您需要在计算机上安装N…

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

前言 我们在开发串口通信程序时,有时候会遇到比如单片机或者传感器发送的数据速度特别快,比如10ms、20ms发送一次,并且每次发送的数据量还比较大,如果按照常规的写法,我们会发现接收的数据还没处理完,新的数据又发送过来了,这就会导致处理数据滞后,软件始终处理的不是…

python树的双亲存储结构

这种存储结构是一种顺序存储结构,采用元素形如“[结点值,双亲结点索引]”的列表表示。通常每个结点有唯一的索引(或者伪地址),根结点的索引为0,它没有双亲结点,其双亲结点的索引为-1。例如,所示的树对应的双…

123. 股票买卖的最佳时机III(2次交易)

题目 题解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 状态定义 dp[i][j][k]代表在第i天,被允许完成j次交易时,持有或者不持有的最大利润。k0代表不持有,k1代表持有dp [[[0 for k in range(2)] for…

医学生秋招攻略,面试时一定要注意这些方面!

医学生别拖了,今年秋招已经过去一波热度了,赶早不赶晚!在筹备第二轮秋招以及明年的春招的医学生一定要注意以下事项。 1.清晰目标 搜集秋招讯息 一定要早点多做准备,想清楚未来的目标,是继续深造还是就业做医生或者是…

【开源】基于Vue.js的用户画像活动推荐系统

项目编号: S 061 ,文末获取源码。 \color{red}{项目编号:S061,文末获取源码。} 项目编号:S061,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活…

[Android]使用Git将项目提交到GitHub

如果你的Mac还没有安装Git,你可以通过Homebrew来安装它: brew install git 方式一:终端管理 1.创建本地Git仓库 在项目的根目录下,打开终端(Terminal)并执行以下命令来初始化一个新的Git仓库&#xff1…

vue3-组件传参及计算属性

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-组件传参及计算属性 目录 vue3中的组件传参 1、父传子 2、子传父 toRef 与 toRefs vue3中…

实例讲解:在3dMax中如何使用python脚本?

如果你是Python或Maxscript的新手,你现在可以跟着这篇文章开始做一些代码了,本文将让我们从非常基本的东西开始学习。 如何在3dmax中获取选定的节点并打印出它们的名称?所有场景对象如何?我们直接看代码: import MaxP…

Word/PPT/PDF怎么免费转为JPG图片?

1、打开金鸣表格文字识别网站。 2、点击导航条上的“软件下载” 3、安装并打开金鸣表格文字识别软件。 4、点击顶部导航栏的“文件转图片”。 5、选择需要转换成图片的文件(支持Word/PPT/PDF). 6、点“打开”程序将自动分页转换为图片。