最小二乘线性回归

线性回归(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.hqwc.cn/news/212410.html

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

相关文章

一、用户管理

一、后端数据库初始化 1.1 因为版本问题,始终报错,按照报错信息去查询解决方案,无法解决 灵机一动: 网址: Spring Boot 3.0 升级 实战踩坑记录 - 掘金 (juejin.cn) 1.2 个人配置【运行成功…

winlogbeat采集windows日志

下载链接 https://www.elastic.co/cn/downloads/past-releases/winlogbeat-7-16-2 配置文件 # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch:# Array of hosts to connect to.hosts: ["192.168.227.160:9200&…

HTB Napper WriteUp

Napper 2023年11月12日 14:58:35User Nmap ➜ Napper nmap -sCV -A -p- 10.10.11.240 --min-rate 10000 Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-12 13:58 CST Nmap scan report for app.napper.htb (10.10.11.240) Host is up (0.15s latency). Not shown: …

C++11『lambda表达式 ‖ 线程库 ‖ 包装器』

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 文章目录 🌇前言🏙️正文1.lambda表达式1.1.仿函数的使用1.2.lambda表达式的语法1.3.lambda表达式的使用…

java制作简单飞翔的鸟

创建三个包,存放代码。把图片放进文件中 APP包(运行) GameApp类 package APP; import mian.GameFrame;public class GameApp {public static void main(String[] args) {new GameFrame();} } mian包(主内容) Barri…

【LeetCode刷题】--67.二进制求和

67.二进制求和 方法:模拟计算 class Solution {public String addBinary(String a, String b) {StringBuilder ans new StringBuilder();int carry 0;for(int ia.length()-1,jb.length()-1;i>0||j>0;i--,j--){int sum carry;sum i >0 ? a.charAt(i) …

深度强化学习笔记与无线通信应用案例

这里写自定义目录标题 参考资料比较和分类基础知识16.3 有模型学习16.3.1 策略评估递归形式:Bellman 等式 16.3.2 策略改进16.3.3 策略迭代16.3.3 值迭代 16.4 免模型学习on-policy off-policy16.4.1 蒙特卡罗强化学习16.4.2 时序差分学习Sarsa算法:同策…

web前端之若依框架图标对照表、node获取文件夹中的文件名,并通过数组返回文件名、在html文件中引入.svg文件、require、icon

MENU 前言效果图htmlJavaScripstylenode获取文件夹中的文件名 前言 需要把若依原有的icon的svg文件拿到哦&#xff01; 注意看生成svg的路径。 效果图 html <div id"idSvg" class"svg_box"></div>JavaScrip let listSvg [404, bug, build, …

【iOS】数据持久化(一)之Plist文件、Preference(NSUserDefaults类)

目录 什么是Plist文件&#xff1f;plist可以存储哪些数据类型plist文件数据的读取与存储 Perference&#xff08;NSUserDefaults&#xff09;使用方法registerDefaults: 方法的使用 什么是Plist文件&#xff1f; Plist文件&#xff08;属性列表&#xff09;是将某些特定的类&a…

Python满屏表白代码

系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心https://wan…

浅谈安科瑞直流电表在荷兰光伏充电桩系统中的应用

摘要&#xff1a;本文介绍了安科瑞直流电表在荷兰光伏充电桩系统中的应用。主要用于充电桩的电流电压电能的计量。 Abstract: This article introduces the application of Acrel DC meters in PV charging pile system in Netherlands.The device is measuring current,volt…

Python入门指南之基本概率和语法基础

文章目录 一、基本概念二、控制流三、函数四、模块五、数据结构六、面向对象的编程七、输入输出八、异常九、Python标准库关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战…