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

2023-05-16

1、假设函数矩阵表示

定义样本(m个样本,每个样本有n个特征)
X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T . . . ( x ( m ) ) T ] , 其 中 x ( m ) = [ 1 x m 1 x m 2 . . . x m n ] 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))Tx(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 θ = [ 1 x i 1 . . . x i n ] [ θ 0 θ 1 . . . θ n ] = θ 0 + θ 1 x i 1 + . . . + θ n x i n \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 ( θ ) = 1 2 ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] 2 = 1 2 ( 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=1m[hθ(x(i))y(i)]2=21(XθY)T(XθY)

3、LMS的闭式解

通过矩阵微分计算LMS梯度
▽ θ J ( θ ) = ▽ θ 1 2 ( X θ − Y ) T ( X θ − Y ) = 1 2 ▽ θ ( θ T X T X θ − θ T X T Y − Y T X θ + Y T Y ) = 1 2 ▽ θ ( θ T X T X θ − θ T X T Y − Y T X θ ) ∂ ∂ Y T Y = 0 = 1 2 ▽ θ t r ( θ T X T X θ − θ T X T Y − Y T X θ ) 这 里 是 一 个 具 体 的 数 , t r a = a . a ∈ R = 1 2 ▽ θ [ t r ( θ T X T X θ ) − 2 t r ( Y T X θ ) ] t r ( A ) = t r ( A T ) , 则 t r ( θ T X T Y ) = t r ( Y T X θ ) = 1 2 t r [ ▽ θ ( θ T X T ) ⋅ X θ + θ T X T ⋅ ▽ θ ( X T θ ) ] − ▽ θ t r ( Y T X θ ) = 1 2 t r ( X T X θ + θ T X T X ) − X T Y ∂ ( θ T X ) ∂ θ = ∂ ( X T θ ) ∂ θ = X , ∂ t r ( A B ) ∂ A = ∂ t r ( B A ) ∂ A = B T = 1 2 t r ( X T X θ ) + 1 2 t r ( θ T X T X ) − X T Y = t r ( X T X θ ) − X T Y = X T X θ − X T Y \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θθTXTYYTXθ+YTY)=21θ(θTXTXθθTXTYYTXθ)YTY=0=21θtr(θTXTXθθTXTYYTXθ)tra=a.aR=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θ)=XAtr(AB)=Atr(BA)=BT=21tr(XTXθ)+21tr(θTXTX)XTY=tr(XTXθ)XTY=XTXθXTY
通过使梯度等于零获得闭式解
θ ∗ = ( X T X ) − 1 X T Y P S : ( X T X ) − 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)

最后的拟合结果
在这里插入图片描述
(自己学习机器学习的笔记,如有错误望提醒修正)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Uni-app 小程序 App 的广告变现之路:激励视频广告

    Intro 激励视频广告 xff0c 是cpm收益最高的广告形式 手机用户观看几十秒视频广告 xff0c 在广告播放完毕后可获得应用开发商提供的奖励 xff0c 而应用开发商则可以从广告平台获取不菲的广告收入 与开屏 信息流等广告变现方式不
  • 数据库查询50道题

    创建四张表 student sc course teacher CREATE DATABASE db 2 CHARSET 61 39 utf8 39 USE db 2 Student Sid Sname Sage Ssex 学生表 DROP
  • 如何使用Python实现图像文字识别OCR

    要使用Python实现图像文字识别OCR xff0c 可以使用以下步骤 xff1a 安装Tesseract OCR引擎 Tesseract是一种开源OCR引擎 xff0c 可以处理多种语言和字体 要使用Python进行OCR xff0c 需
  • C#获取指定日期所在周、月、年的第一天和最后一天

    需求 xff1a 给定一个日期 xff0c 获取日期所在周的周一 周日 xff0c 获取日期所在月的第一天和最后一天 xff0c 获取所在年份的第一天和最后一天 代码如下所示 span class token comment lt summ
  • STM32+W5500网络通信

    目录 一 W5500介绍二 资源分享三 例子程序四 实现应用层modbus httpd协议编程 xff08 一 xff09 modbus xff08 二 xff09 HTTPS 五 总结六 参考链接七 modbus和HTTPS源码 一 W5
  • 服务器部署code-server

    部署code service 思路 1 租用服务器 2 部署code service 3 映射端口 xff0c 修改配置文件 4 让服务一直挂在后台 5 配置C C 43 43 环境 购买服务器 xff0c 部署宝塔面板 这里采用腾讯的云服
  • Arch 中 fcitx5 提示拼音不可用的解决过程

    Arch 中 fcitx5 提示拼音不可用的解决过程 问题描述 xff1a 按照 Fcitx5 ArchWiKi 安装 fcitx5 后不能输入中文 xff0c 提示拼音不可用 查找解决办法 首先查看环境变量设置是否正确 xff1a etc
  • Vue3 setup函数的使用

    全新的 setup 函数 在开始编写 Vue 组件之前 xff0c 需要了解两个全新的前置知识点 xff1a 全新的 setup 函数 xff0c 关系到组件的生命周期和渲染等问题 写 TypeScript 组件离不开的 defineCom
  • Stm32的按键控制流水灯

    对于stm32的设置首先是对时钟进行启动 要求 xff1a key0控制LED0和LED1的亮 key1控制LED0和LED1的亮 kw up控制闪灯 led c span class token macro property span c
  • 头文件之间存在依赖关系该如何包含?

    本文旨在探讨头文件之间存在依赖关系时 xff0c 包含顺序的影响 分两种情况讨论 xff1a 头文件A单方面依赖头文件B xff1a struct h xff1a struct abc int num char ptr def h xff1
  • 单片机入门(利用中断控制流水灯的走向)--适合初学者

    电路图 点击下载 xff08 下载时可能会提醒不安全 xff0c 其实没事 xff0c 本博主是放在自己服务器上面 xff09 代码 span class token macro property span class token dire
  • python实现微信公众号定时消息提醒-手把手教你将代码部署到云端

    这两天微信公众号消息提醒蛮火的 xff0c 我也来蹭一下热度 xff0c 我们的主题是考研倒计时 xff0c 顺便也发一发天气预报 思路 xff1a 获取我们需要的数据 xff0c 比如天气信息 然后去微信公众平台注册一个测试号 xff0c
  • 【章节自测】第三章——顺序程序设计

    第三章 顺序程序设计 学校的老师在上程序设计这门课时 xff0c 给我们每一章指定了一些学习目标 xff0c 用于课前的预习和课后的具体检测复盘 xff0c 因为每一个目标都是具体可测的 xff0c 而只要所有的目标你都能达成 xff0c
  • C语言-进程——信号量

    system V的信号量其实是一个信号量数据 xff0c 一个sysyem V代表的是一个或多个信号量元素 信号量本质上是一个数字 xff0c 用来表征一种资源数量 xff0c 当多个进程或线程争夺这些稀缺资源的时候 xff0c 信号量用来
  • python将包(第三方库)安装到指定目录

    一 在指定目录安装python第三方库 target 61 D software anaconda envs PyTorch Lib 这里的target后面跟的是你python安装环境的lib目录 二 用指定源安装python库 这里用到了
  • Dockerfile详解

    Dockerfile 文章目录 基本结构指令详解FROMRUNLABEL MAINTAINERCOPYADDCMDENTRYPOINTENVARGVOLUMEEXPOSEWORKDIRUSERHEALTHCHECKONBUILD 创建镜像上
  • c++调用yolov4模型进行目标检测-使用opencv4.4.0

    前言 最近刚出的opencv4 4 0也支持了yolov4 xff0c 便尝试用opencv调用yolov4进行检测 xff0c 做个记录 当然 xff0c yolov3 yolov4 tiny等也能调用 xff0c 只需修改加载的cfg和
  • c++调用yolov4模型进行目标检测-使用yolov4官方接口

    前言 yolo系列用c写的 xff0c 在工程中的部署特别方便 4月份yolov4横空出世 xff0c 之前试了试效果 xff0c 精度确实有了很大的提升 xff0c AB大神nb 最近需要在C 43 43 项目中使用yolov4 xff0
  • Ubuntu 20.04安装Anaconda3及简单使用

    1 Anaconda安装包下载 xff08 1 xff09 官网下载 xff0c 下载速度较慢 xff08 2 xff09 清华大学开源软件镜像站 2 安装Anaconda xff08 1 xff09 进入文件下载目录 span class
  • 线性回归推导(二)--求闭式解法及纯python实现

    1 假设函数矩阵表示 定义样本 xff08 m个样本 xff0c 每个样本有n个特征 xff09 X 61