当前位置: 首页 > news >正文

最小二乘法MSE

最小二乘法MSE

x1x2x3x4x5x6x7x8x0y
014805-29-31339
-41064-14-2-1481-114
-1-65-123-32-2130
5-23105114-81126
-15-15-8-157-4-1221-395
11-10-243-9-671-87
-1404-35101371422
-3-7-2-80-6-5-91-309

1前景知识: 矩阵相关公式

在这里插入图片描述

y=(339−11430126−395−87422−309)y=\begin{pmatrix} 339&\\ -114&\\ 30&\\ 126&\\ -395&\\ -87&\\ 422&\\ -309 \\\end{pmatrix}y=3391143012639587422309

X=X=X=(014805−29−31−41064−14−2−1481−1−65−123−32−215−23105114−81−15−15−8−157−4−122111−10−243−9−671−1404−35101371−3−7−2−80−6−5−91)\begin{pmatrix} 0& 14& 8& 0& 5& -2& 9& -3&1 \\ -4& 10& 6& 4& -14& -2& -14& 8&1\\-1& -6& 5& -12& 3& -3& 2& -2&1\\5& -2& 3& 10& 5& 11& 4& -8&1\\-15& -15& -8& -15& 7& -4& -12& 2&1\\11& -10& -2& 4& 3& -9& -6& 7&1\\-14& 0& 4& -3& 5& 10& 13& 7&1\\-3& -7& -2& -8& 0& -6& -5& -9&1\end{pmatrix}0415151114314106215100786538242041210154385143573502231149106914241261353828277911111111

W=(w1w2w3w4w5w6w7w8w0)W=\begin{pmatrix} w_1&\\ w_2&\\ w_3&\\ w_4&\\ w_5&\\ w_6&\\ w_7&\\ w_8&\\w_0\end{pmatrix}W=w1w2w3w4w5w6w7w8w0

2最小二乘法

h(x)=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6+w7x7+w8x8+w0x0h(x)=w_1x_1+w_2x_2+w_3x_3+w_4x_4+w_5x_5+w_6x_6+w_7x_7+w_8x_8+w_0x_0h(x)=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6+w7x7+w8x8+w0x0

loss=[(h1(x)−y1)2+(h2(x)−y2)2+...(hn(x)−yn)2]/n=1n∑i=1n(h(xi)−yi)2=1n∣∣(XW−y)∣∣2=12∣∣(XW−y)∣∣2这就是传说中的最小二乘法公式∣∣A∣∣2是欧几里得范数的平方 也就是每个元素的平方相加loss=[(h_1(x)-y_1)^2+(h_2(x)-y_2)^2+...(h_n(x)-y_n)^2]/n\\=\frac{1}{n} \textstyle\sum_{i=1}^{n}(h(x_{i})-y_{i})^{2}\\=\frac{1}{n}||(XW-y)||^2\\=\frac{1}{2}||(XW-y)||^2 这就是传说中的最小二乘法公式 \\ ||A||^2 是欧几里得范数的平方\,也就是每个元素的平方相加loss=[(h1(x)y1)2+(h2(x)y2)2+...(hn(x)yn)2]/n=n1i=1n(h(xi)yi)2=n1(XWy)2=21(XWy)2A2

虽然这个案例中n=8,但是常常令n=2,因为是一个常数 求最小值时n随便取哪个正数都不会影响W结果,但是求导过程可以约掉前面的系数,会加速后面的计算

h(x1)表示y1,=X第1行分别和W相乘h(x_1)表示y^,_1= X第1行分别和W相乘h(x1)y1,=X1W

h(x2)表示y2,=X第2行分别和W相乘h(x_2)表示y^,_2= X第2行分别和W相乘h(x2)y2,=X2W

高斯把公式给了,但是何时loss最小呢?

1.二次方程导数为0时最小

loss=12∣∣(XW−y)∣∣2求导:loss=\frac{1}{2}||(XW-y)||^2 求导:loss=21(XWy)2:

2.先展开矩阵乘法

loss=12(XW−y)T(XW−y)loss=\frac{1}{2}(XW-y)^T(XW-y)loss=21(XWy)T(XWy)

loss=12(WTXT−yT)(XW−y)loss=\frac{1}{2}(W^TX^T-y^T)(XW-y)loss=21(WTXTyT)(XWy)

loss=12(WTXTXW−WTXTy−yTXW+yTy)loss=\frac{1}{2}(W^TX^TXW-W^TX^Ty-y^TXW+y^Ty)loss=21(WTXTXWWTXTyyTXW+yTy)

3.进行求导(注意X,y都是已知的,W是未知的)

loss′=12(WTXTXW−WTXTy−yTXW+yTy)′loss'=\frac{1}{2}(W^TX^TXW-W^TX^Ty-y^TXW+y^Ty)'loss=21(WTXTXWWTXTyyTXW+yTy)

loss′=12(XTXW+(WTXTX)T−XTy−(yTX)T)loss'=\frac{1}{2}(X^TXW+(W^TX^TX)^T-X^Ty-(y^TX)^T)loss=21(XTXW+(WTXTX)TXTy(yTX)T)

loss′=12(XTXW+XTXW−XTy−XTy)loss'=\frac{1}{2}(X^TXW+X^TXW-X^Ty-X^Ty)loss=21(XTXW+XTXWXTyXTy)

loss′=12(2XTXW−2XTy)loss'=\frac{1}{2}(2X^TXW-2X^Ty)loss=21(2XTXW2XTy)

loss′=XTXW−XTyloss'=X^TXW-X^Tyloss=XTXWXTy

4.令导数loss′=0loss'=0loss=0

0=XTXW−XTy0=X^TXW-X^Ty0=XTXWXTy

XTXW=XTyX^TXW=X^TyXTXW=XTy

5.矩阵没有除法,使用逆矩阵转化

(XTX)−1(XTX)W=(XTX)−1XTy(X^TX)^{-1}(X^TX)W=(X^TX)^{-1}X^Ty(XTX)1(XTX)W=(XTX)1XTy

W=(XTX)−1XTyW=(X^TX)^{-1}X^TyW=(XTX)1XTy

在这里插入图片描述

有了W,回到最初的问题:

求如果karen的各项指标是:

被爱:11 学习指数:14 抗压指数:8 运动指数:10 饮食水平:5 金钱:10 权利:8 压力:1

那么karen的健康程度是多少?

分别用W各项乘以新的X 就可以得到y健康程度

3 API

sklearn.linear_model.LinearRegression()
功能: 普通最小二乘法线性回归, 权重和偏置是直接算出来的,对于数量大的不适用,因为计算量太大,计算量太大的适合使用递度下降法参数:
fit_intercept	bool, default=True是否计算此模型的截距(偏置)。如果设置为False,则在计算中将不使用截距(即,数据应中心化)。
属性:	 
coef_ 回归后的权重系数
intercept_ 偏置print("权重系数为:\n", estimator.coef_)  #权重系数与特征数一定是同样的个数。
print("偏置为:\n", estimator.intercept_)

4 示例代码

from sklearn.linear_model import LinearRegression
import numpy as np
data=np.array([[0,14,8,0,5,-2,9,-3,399],[-4,10,6,4,-14,-2,-14,8,-144],[-1,-6,5,-12,3,-3,2,-2,30],[5,-2,3,10,5,11,4,-8,126],[-15,-15,-8,-15,7,-4,-12,2,-395],[11,-10,-2,4,3,-9,-6,7,-87],[-14,0,4,-3,5,10,13,7,422],[-3,-7,-2,-8,0,-6,-5,-9,-309]])
x=data[:,0:8]
y=data[:,8:]
estimator=LinearRegression(fit_intercept=False)
estimator.fit(x,y)
print("权重系数为:\n", estimator.coef_)  #权重系数与特征数一定是同样的个数。
print("偏置为:\n", estimator.intercept_)
x_new=[[11,14,8,10,5,10,8,1]]
y_predict=estimator.predict(x)
print("预测结果:\n",y_predict)
print(-3*0.4243965-7*7.32281732-2*15.05217218-8*3.5996297+0*12.05805264-6*1.76972959-5*17.0276393-9*11.31212591)
权重系数为:[[ 0.4243965   7.32281732 15.05217218  3.5996297  12.05805264  1.7697295917.0276393  11.31212591]]
偏置为:0.0
预测结果:[[ 399.][-144.][  30.][ 126.][-395.][ -87.][ 422.][-309.]]
-308.99999993
http://www.lryc.cn/news/609920.html

相关文章:

  • 嵌入式开发学习———Linux环境下IO进程线程学习(三)
  • AtCoder Beginner Contest 416 C 题
  • 同质无向加权图:理论基础、算法演进与应用前沿
  • 张宇高数基础30讲与1000题学习笔记(第4-6章)
  • Node.js高并发接口下的事件循环卡顿问题与异步解耦优化方案
  • Lego-Loam TransformToStartIMU TransformToStart TransformToEnd的区别
  • 时序数据库如何高效处理海量数据
  • Node.js(四)之数据库与身份认证
  • Python 数据科学与可视化工具箱 - 数组形状操作:reshape(), flatten()
  • SpringBoot3.0+Vue3.0开源版考试系统
  • 高防服务器租用的作用都有哪些?
  • 【慕伏白】Android Studio 配置国内镜像源
  • 机器学习——基本算法
  • 理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
  • 北斗变形监测技术在基础设施安全中的应用
  • Android JUnit 测试框架详解:从基础到高级实践
  • 2.1 DICOM标准结构与组成
  • Swin-Transformer从浅入深详解
  • 【0基础PS】PS工具详解--钢笔工具
  • 【高等数学】第八章 向量代数与空间解析几何——第一节 向量及其线性运算
  • 三轴云台之增稳技术篇
  • VGMP(VRRP Group Management Protocol)VRRP组管理协议
  • 权限管理命令
  • 【Unity3D】Ctrl+Shift+P暂停快捷键(Unity键盘快捷键)用不了问题快捷键无法使用问题
  • 大型软件系统的主要指标是什么?
  • 抛出自定义异常
  • Linux 进程基础(三):进程是什么、进程的创建与查看
  • 文本转语音(TTS)脚本
  • 基于TurboID的邻近标记质谱(PL-MS)实验指南:从质粒构建到质谱鉴定
  • 【嵌入式电机控制#24】BLDC:霍尔测速(高难度,重理解)