1、假设函数矩阵表示

定义样本(m个样本,每个样本有n个特征)
X=[(x(1))T(x(2))T...(x(m))T],其中x(m)=[1xm1xm2...xmn]X=\left[ \begin{array}{c} (x^{(1)})^{T}\\ (x^{(2)})^{T}\\ ...\\ (x^{(m)})^{T}\\ \end{array} \right],其中x^{(m)}= \left[ \begin{array}{c} 1\\ x_{m1}\\ x_{m2}\\ ...\\ x_{mn}\\ \end{array} \right] X=⎣⎢⎢⎡​(x(1))T(x(2))T...(x(m))T​⎦⎥⎥⎤​,其中x(m)=⎣⎢⎢⎢⎢⎡​1xm1​xm2​...xmn​​⎦⎥⎥⎥⎥⎤​
定义
Y=[y(1)y(2)...y(m)],θ=[θ0θ1...θm]Y=\left[ \begin{array}{c} y^{(1)}\\ y^{(2)}\\ ...\\ y^{(m)} \end{array} \right],\quad\theta=\left[ \begin{array}{c} \theta_{0}\\ \theta_{1}\\ ...\\ \theta_{m} \end{array} \right] Y=⎣⎢⎢⎡​y(1)y(2)...y(m)​⎦⎥⎥⎤​,θ=⎣⎢⎢⎡​θ0​θ1​...θm​​⎦⎥⎥⎤​
则有
hθ(x(i))=(x(i))Tθ=[1xi1...xin][θ0θ1...θn]=θ0+θ1xi1+...+θnxin\begin{aligned} h_{\theta}(x^{(i)})=(x^{(i)})^{T}\theta=[1\quad x_{i1}\quad...\quad x_{in}] \left[ \begin{array}{c} \theta_{0}\\ \theta_{1}\\ ...\\ \theta_{n} \end{array} \right]=\theta_{0}+\theta_{1}x_{i1}+...+\theta_{n}x_{in} \end{aligned} hθ​(x(i))=(x(i))Tθ=[1xi1​...xin​]⎣⎢⎢⎡​θ0​θ1​...θn​​⎦⎥⎥⎤​=θ0​+θ1​xi1​+...+θn​xin​​
故假设函数可表示为
hθ(X)=Xθ=[(x(1))Tθ(x(2))Tθ...(x(m))Tθ]=[hθ(x(1))hθ(x(2))...hθ(x(m))]h_{\theta}(X)=X\theta=\left[ \begin{array}{c} (x^{(1)})^{T}\theta\\ (x^{(2)})^{T}\theta\\ ...\\ (x^{(m)})^{T}\theta\\ \end{array} \right]=\left[ \begin{array}{c} h_{\theta}(x^{(1)})\\ h_{\theta}(x^{(2)})\\ ...\\ h_{\theta}(x^{(m)})\\ \end{array} \right] hθ​(X)=Xθ=⎣⎢⎢⎡​(x(1))Tθ(x(2))Tθ...(x(m))Tθ​⎦⎥⎥⎤​=⎣⎢⎢⎡​hθ​(x(1))hθ​(x(2))...hθ​(x(m))​⎦⎥⎥⎤​

2、代价函数矩阵表示

最小均方差(LMS)代价函数为
J(θ)=12∑i=1m[hθ(x(i))−y(i)]2=12(Xθ−Y)T(Xθ−Y)J(\theta)=\frac{1}{2}\sum_{i=1}^{m}[h_{\theta}(x^{(i)})-y^{(i)}]^{2}=\frac{1}{2}(X\theta-Y)^{T}(X\theta-Y) J(θ)=21​i=1∑m​[hθ​(x(i))−y(i)]2=21​(Xθ−Y)T(Xθ−Y)

3、LMS的闭式解

通过矩阵微分计算LMS梯度
▽θJ(θ)=▽θ12(Xθ−Y)T(Xθ−Y)=12▽θ(θTXTXθ−θTXTY−YTXθ+YTY)=12▽θ(θTXTXθ−θTXTY−YTXθ)∂∂YTY=0=12▽θtr(θTXTXθ−θTXTY−YTXθ)这里是一个具体的数,tra=a.a∈R=12▽θ[tr(θTXTXθ)−2tr(YTXθ)]tr(A)=tr(AT),则tr(θTXTY)=tr(YTXθ)=12tr[▽θ(θTXT)⋅Xθ+θTXT⋅▽θ(XTθ)]−▽θtr(YTXθ)=12tr(XTXθ+θTXTX)−XTY∂(θTX)∂θ=∂(XTθ)∂θ=X,∂tr(AB)∂A=∂tr(BA)∂A=BT=12tr(XTXθ)+12tr(θTXTX)−XTY=tr(XTXθ)−XTY=XTXθ−XTY\begin{aligned} \bigtriangledown_{\theta}J(\theta)&=\bigtriangledown_{\theta}\frac{1}{2}(X\theta-Y)^{T}(X\theta-Y)\\ &=\frac{1}{2}\bigtriangledown_{\theta}(\theta^{T}X^{T}X\theta-\theta^{T}X^{T}Y-Y^{T}X\theta+Y^{T}Y)\\ &=\frac{1}{2}\bigtriangledown_{\theta}(\theta^{T}X^{T}X\theta-\theta^{T}X^{T}Y-Y^{T}X\theta) \quad \quad \quad {\color{red}\frac{\partial}{\partial}Y^{T}Y=0}\\ &=\frac{1}{2}\bigtriangledown_{\theta}tr(\theta^{T}X^{T}X\theta-\theta^{T}X^{T}Y-Y^{T}X\theta) \quad \quad \quad {\color{red}这里是一个具体的数,tra=a. \quad a\in R}\\ &=\frac{1}{2}\bigtriangledown_{\theta}[tr(\theta^{T}X^{T}X\theta)-2tr(Y^{T}X\theta)] \quad \quad \quad {\color{red}tr(A)=tr(A^{T}),则tr(\theta^{T}X^{T}Y)=tr(Y^{T}X\theta)}\\ &=\frac{1}{2}tr[\bigtriangledown_{\theta}(\theta^{T}X^{T}) \cdot X\theta + \theta^{T}X^{T} \cdot \bigtriangledown_{\theta}(X^{T}\theta)]-\bigtriangledown_{\theta}tr(Y^{T}X\theta)\\ &=\frac{1}{2}tr(X^{T}X\theta+\theta^{T}X^{T}X)-X^{T}Y \quad {\color{red}\frac{\partial(\theta^{T}X)}{\partial\theta}=\frac{\partial(X^{T}\theta)}{\partial\theta}=X,\frac{\partial tr(AB)}{\partial A}=\frac{\partial tr(BA)}{\partial A}=B^{T}}\\ &=\frac{1}{2}tr(X^{T}X\theta)+\frac{1}{2}tr(\theta^{T}X^{T}X)-X^{T}Y\\ &=tr(X^{T}X\theta)-X^{T}Y\\ &=X^{T}X\theta-X^{T}Y \end{aligned} ▽θ​J(θ)​=▽θ​21​(Xθ−Y)T(Xθ−Y)=21​▽θ​(θTXTXθ−θTXTY−YTXθ+YTY)=21​▽θ​(θTXTXθ−θTXTY−YTXθ)∂∂​YTY=0=21​▽θ​tr(θTXTXθ−θTXTY−YTXθ)这里是一个具体的数,tra=a.a∈R=21​▽θ​[tr(θTXTXθ)−2tr(YTXθ)]tr(A)=tr(AT),则tr(θTXTY)=tr(YTXθ)=21​tr[▽θ​(θTXT)⋅Xθ+θTXT⋅▽θ​(XTθ)]−▽θ​tr(YTXθ)=21​tr(XTXθ+θTXTX)−XTY∂θ∂(θTX)​=∂θ∂(XTθ)​=X,∂A∂tr(AB)​=∂A∂tr(BA)​=BT=21​tr(XTXθ)+21​tr(θTXTX)−XTY=tr(XTXθ)−XTY=XTXθ−XTY​
通过使梯度等于零获得闭式解
θ∗=(XTX)−1XTYPS:(XTX)−1有时很难求出\theta^{\ast}=(X^{T}X)^{-1}X^{T}Y \quad \quad \quad {\color{red}PS:(X^{T}X)^{-1}有时很难求出} θ∗=(XTX)−1XTYPS:(XTX)−1有时很难求出

4、纯python实现

代码如下

import numpy as np
import matplotlib.pyplot as plt
import time# 加载数据
def load_data():X = [2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013]X_p = np.array(X)Y = [2.000, 2.500, 2.900, 3.147, 4.515, 4.903, 5.365, 5.704, 6.853, 7.971, 8.561, 10.000, 11.280, 12.900]Y_p = np.array(Y)return X_p, Y_p# 求闭式解
def close_form(X, Y):X = np.array([X])one = np.ones((1, 14))vx = np.concatenate([one, X])theta = np.dot(np.dot(np.linalg.pinv(np.dot(vx, vx.T)), vx), Y.T)print(theta)theta0 = theta[0]theta1 = theta[1]y = X[0] * theta1 + theta0# 画图plt.title('Close Form')plt.xlabel('years')plt.ylabel('prices')plt.scatter(X[0], Y, c='#FF0000')plt.plot(X[0], y)plt.show()# 预测2014年print("the housing price in 2014 is %f"%(2014 * theta1 + theta0))if __name__ == "__main__":X, Y = load_data()print("-----------------close form-------------------")close_form(X, Y)

最后的拟合结果

(自己学习机器学习的笔记,如有错误望提醒修正)

线性回归推导(二)--求闭式解法及纯python实现相关推荐

  1. 【MATLAB】机器学习: 线性回归实验(梯度下降+闭式解)

    实验内容 1.根据梯度下降法完成一元线性回归实验. 2.根据闭式解完成一元线性回归实验. 3.比较两种解下的实验结果. 实验代码 clear;clc; %% 数据导入:划分训练集和测试集 % 数据导入 ...

  2. python实现最小二乘法的线性回归_Python中的线性回归与闭式普通最小二乘法

    我正在尝试使用python对一个包含大约50个特性的9个样本的数据集应用线性回归方法.我尝试过不同的线性回归方法,即闭式OLS(普通最小二乘法).LR(线性回归).HR(Huber回归).NNLS(非 ...

  3. matlab闭式网络潮流计算,闭式网络潮流计算.ppt

    1.复习:简述开式网络潮流计算的特点和步骤引入:开式网络是电力系统中最简单的形式,为了提高供电可靠性,系统中大多数的电源与负荷通过线路连成环状,或经多个电源向负荷供电-- ; 一.什么是闭式网络:凡是 ...

  4. 闭式系统蒸汽管径推荐速度_闭式蒸汽供热系统

    LOGO 供热工程 GONG RE GONG CHENG 集中供热系统 目录 1 课题1 集中供热系统方案的确定 课题2 热水供热系统 课题3 蒸汽供热系统 2 3 课题1 集中供热系统方案的.... ...

  5. 【机器学习】用QR分解求最小二乘法的最优闭式解

    [机器学习]用QR分解求最小二乘法的最优闭式解 写在前面 QR分解 定义 QR的求解 线性回归模型 用QR分解求解最优闭式解 矩阵的条件数 实验 运行结果 写在前面 今天刷知乎,看到张皓在面试官如何判 ...

  6. 训练线性回归模型 --- “闭式”解方法、梯度下降(GD)

    目录 1.训练前你需要了解 简单说,线性模型就是对输入特征加权求和,再加上一个我们称为偏置项(也称为截距项)的常数 向量化的形式: 训练模型就是设置模型参数直到模型最拟合训练集的过程. 常见的性能指标 ...

  7. 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)

    假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...

  8. 机器学习——最小二乘法,闭式解矩阵推导

    Step1:最小二乘法的初始形式 Step2:目标--最小化欧几里德空间的2-范数的平方 Step3:将式子用矩阵展开 Step4:矩阵的各种形式求导(下一步使用) 第一种:  第二种:   ,  如 ...

  9. 多项式拟合之闭式解推导

    多项式拟合之闭式解推导 以下是本人PPT中的一些内容(图片插过来的): Take the derivative of formula (2) Then we get Right: Additional ...

最新文章

  1. 三、【线性表】线性表概述
  2. QT的QSqlField类的使用
  3. Condition源码分析
  4. python笔记之序列(tuple的基本使用和常用操作)
  5. 关于Arduino 步进电机Stepper库的一些想法
  6. oracle awr报告生成_oracle11g awr报告分析—WORKLOAD REPOSITORY report
  7. fpga从入门到放弃(一)基于vivado2018环境开发板Artix 7系列BASYS3(更新中)
  8. 13.Linux/Unix 系统编程手册(上) -- 文件IO缓冲
  9. Java太阳系行星运动模型
  10. win7计算机个性化设置,Win7系统如何进行个性化设置 Win7系统个性化设置方法【详解】...
  11. lucene-使用htmlparser解析未设定编码页面
  12. 江苏高考时间2021成绩查询,小高考时间2021具体时间江苏-江苏小高考成绩查询公布时间及网站...
  13. 下班后两小时,决定你将会成为怎样的人
  14. 手把手教你用 Homer 处理 fNIRS 数据
  15. 高达1000美元,扫地机器人Roomba如何成为疫情期间的赢家?
  16. 如何使用kodi Mac安装中文插件
  17. 处理器后面的字母含义_电脑CPU型号末端的字母是什么意思?让小编来告诉你吧...
  18. 微信小程序 - 一键复制功能
  19. 解决找不到roslyn\csc.exe文件问题
  20. 搭建linux服务器网络代理

热门文章

  1. Nacos作为服务注册中心及负载均衡、服务流量权重设置
  2. 人人必背申论范文:致敬冬奥健儿
  3. English Learning - L2 第 14 次小组纠音 复习元音 [ɔɪ ] [aʊ] [əʊ] [ɪə] 弱读 2023.4.12 周三
  4. 同义词搜索是如何做到的?
  5. MATLAB生成单位矩阵、三角矩阵、零矩阵、1矩阵
  6. 写博客的这几个月,获益良多 1
  7. zblog模板怎么安装?zblog主题安装教程
  8. vue 项目 husky pre-commit 勾子不触发
  9. 服装ERP系统下的成本计算如何及时有效
  10. BlockChain:区块链技术周边概念(Relevant Concepts of BlockChain)简介、入门、使用之详细攻略