线性回归推导(二)--求闭式解法及纯python实现
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)=⎣⎢⎢⎢⎢⎡1xm1xm2...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+θ1xi1+...+θnxin
故假设函数可表示为
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(θ)=21i=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θ)=21tr[▽θ(θTXT)⋅Xθ+θTXT⋅▽θ(XTθ)]−▽θtr(YTXθ)=21tr(XTXθ+θTXTX)−XTY∂θ∂(θTX)=∂θ∂(XTθ)=X,∂A∂tr(AB)=∂A∂tr(BA)=BT=21tr(XTXθ)+21tr(θ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实现相关推荐
- 【MATLAB】机器学习: 线性回归实验(梯度下降+闭式解)
实验内容 1.根据梯度下降法完成一元线性回归实验. 2.根据闭式解完成一元线性回归实验. 3.比较两种解下的实验结果. 实验代码 clear;clc; %% 数据导入:划分训练集和测试集 % 数据导入 ...
- python实现最小二乘法的线性回归_Python中的线性回归与闭式普通最小二乘法
我正在尝试使用python对一个包含大约50个特性的9个样本的数据集应用线性回归方法.我尝试过不同的线性回归方法,即闭式OLS(普通最小二乘法).LR(线性回归).HR(Huber回归).NNLS(非 ...
- matlab闭式网络潮流计算,闭式网络潮流计算.ppt
1.复习:简述开式网络潮流计算的特点和步骤引入:开式网络是电力系统中最简单的形式,为了提高供电可靠性,系统中大多数的电源与负荷通过线路连成环状,或经多个电源向负荷供电-- ; 一.什么是闭式网络:凡是 ...
- 闭式系统蒸汽管径推荐速度_闭式蒸汽供热系统
LOGO 供热工程 GONG RE GONG CHENG 集中供热系统 目录 1 课题1 集中供热系统方案的确定 课题2 热水供热系统 课题3 蒸汽供热系统 2 3 课题1 集中供热系统方案的.... ...
- 【机器学习】用QR分解求最小二乘法的最优闭式解
[机器学习]用QR分解求最小二乘法的最优闭式解 写在前面 QR分解 定义 QR的求解 线性回归模型 用QR分解求解最优闭式解 矩阵的条件数 实验 运行结果 写在前面 今天刷知乎,看到张皓在面试官如何判 ...
- 训练线性回归模型 --- “闭式”解方法、梯度下降(GD)
目录 1.训练前你需要了解 简单说,线性模型就是对输入特征加权求和,再加上一个我们称为偏置项(也称为截距项)的常数 向量化的形式: 训练模型就是设置模型参数直到模型最拟合训练集的过程. 常见的性能指标 ...
- 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)
假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...
- 机器学习——最小二乘法,闭式解矩阵推导
Step1:最小二乘法的初始形式 Step2:目标--最小化欧几里德空间的2-范数的平方 Step3:将式子用矩阵展开 Step4:矩阵的各种形式求导(下一步使用) 第一种: 第二种: , 如 ...
- 多项式拟合之闭式解推导
多项式拟合之闭式解推导 以下是本人PPT中的一些内容(图片插过来的): Take the derivative of formula (2) Then we get Right: Additional ...
最新文章
- 三、【线性表】线性表概述
- QT的QSqlField类的使用
- Condition源码分析
- python笔记之序列(tuple的基本使用和常用操作)
- 关于Arduino 步进电机Stepper库的一些想法
- oracle awr报告生成_oracle11g awr报告分析—WORKLOAD REPOSITORY report
- fpga从入门到放弃(一)基于vivado2018环境开发板Artix 7系列BASYS3(更新中)
- 13.Linux/Unix 系统编程手册(上) -- 文件IO缓冲
- Java太阳系行星运动模型
- win7计算机个性化设置,Win7系统如何进行个性化设置 Win7系统个性化设置方法【详解】...
- lucene-使用htmlparser解析未设定编码页面
- 江苏高考时间2021成绩查询,小高考时间2021具体时间江苏-江苏小高考成绩查询公布时间及网站...
- 下班后两小时,决定你将会成为怎样的人
- 手把手教你用 Homer 处理 fNIRS 数据
- 高达1000美元,扫地机器人Roomba如何成为疫情期间的赢家?
- 如何使用kodi Mac安装中文插件
- 处理器后面的字母含义_电脑CPU型号末端的字母是什么意思?让小编来告诉你吧...
- 微信小程序 - 一键复制功能
- 解决找不到roslyn\csc.exe文件问题
- 搭建linux服务器网络代理
热门文章
- Nacos作为服务注册中心及负载均衡、服务流量权重设置
- 人人必背申论范文:致敬冬奥健儿
- English Learning - L2 第 14 次小组纠音 复习元音 [ɔɪ ] [aʊ] [əʊ] [ɪə] 弱读 2023.4.12 周三
- 同义词搜索是如何做到的?
- MATLAB生成单位矩阵、三角矩阵、零矩阵、1矩阵
- 写博客的这几个月,获益良多 1
- zblog模板怎么安装?zblog主题安装教程
- vue 项目 husky pre-commit 勾子不触发
- 服装ERP系统下的成本计算如何及时有效
- BlockChain:区块链技术周边概念(Relevant Concepts of BlockChain)简介、入门、使用之详细攻略