【林轩田】机器学习基石(九)——线性回归

2024-01-05 06:08

本文主要是介绍【林轩田】机器学习基石(九)——线性回归,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ppt
video

Lecture 9: Linear Regression 线性回归

9.1 Linear Regression Problem 线性回归问题

考虑一个问题,银行按照每个顾客的个人情况,赋予不同的信用额度。我们可不可以通过机器学习,学到一个赋予信用额度的比较好的方式呢?
信用额度是一个实数,所以输出 y ∈ R y \in R yR,属于回归问题。
这里介绍最简单的一种,即线性回归:
901

x x x的每一个维度特征 x i x_i xi赋予一个权重 w i w_i wi表示重要程度,再求和,得到 y y y,这是线性回归的基本思想。

得到的 h ( x ) h(x) h(x)类似于我们之前学到的感知器算法,但是没有添加符号 s i g n sign sign这个步骤。

902

线性回归的几何表示如上图,寻找最优的 h ( x ) h(x) h(x)实际上是寻找最优的线或者超平面。

903

线性回归算法中,我们普遍使用“squared error”的错误度量方式。

9.2 Linear Regression Algorithm 线性回归算法

上面一小节,关于线性回归的演算法公式,我们已经介绍清楚了。
接下来,我们需要考虑的问题是,如何计算 E i n E_{in} Ein的最小值。
在推导之前,我们先来复习一下向量和矩阵的一些相关运算。

向量、矩阵运算

向量的内积
  • a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ⋅ ∣ b ⃗ ∣ ⋅ c o s ( a ⃗ , b ⃗ ) \vec{a} \cdot \vec{b} = |\vec{a}| \cdot |\vec{b}| \cdot cos(\vec{a},\vec{b}) a b =a b cos(a ,b )
  • b ⃗ ⋅ a ⃗ = ∣ b ⃗ ∣ ⋅ ∣ a ⃗ ∣ ⋅ c o s ( b ⃗ , a ⃗ ) \vec{b} \cdot \vec{a} = |\vec{b}| \cdot |\vec{a}| \cdot cos(\vec{b},\vec{a}) b a =b a cos(b ,a )
  • 所以, a ⃗ ⋅ b ⃗ = b ⃗ ⋅ a ⃗ \vec{a} \cdot \vec{b} = \vec{b} \cdot \vec{a} a b =b a ,向量的内积符合交换律。
矩阵的行列式计算
  • 只有方针才有行列式值。

  • 二阶行列式计算如下:
    ∣ D ∣ = d e t ( A ) = d e t ( ∣ a 11 a 12 a 21 a 22 ∣ ) = a 11 a 22 − a 21 a 12 |D| = det(A) = det(\begin{vmatrix} a_{11}&a_{12}\\ a_{21}&a_{22} \end{vmatrix}) = a_{11}a_{22} - a_{21}a_{12} D=det(A)=det(a11a21a12a22)=a11a22a21a12

  • 奇排列:逆序数为奇数的排列

  • 偶排列:逆序数为偶数的排列

  • 例如: 123 123 123共有 3 ∗ 2 ∗ 1 = 6 3*2*1=6 321=6种排列方式,其中 132 132 132逆序数为1,为奇排列; 231 231 231逆序数为2,为偶排列。

  • 三阶行列式计算如下:
    ∣ D ∣ = d e t ( A ) = d e t ( ∣ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ∣ ) = a 11 a 22 a 33 + a 12 a 23 a 31 + a 13 a 21 a 12 − a 11 a 23 a 31 − a 13 a 22 a 31 − a 12 a 21 a 33 |D| = det(A) = det(\begin{vmatrix} a_{11}&a_{12}&a_{13}\\ a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33} \end{vmatrix}) \\ = a_{11}a_{22}a_{33}+a_{12}a_{23}a_{31}+a_{13}a_{21}a_{12} - a_{11}a_{23}a_{31} - a_{13}a_{22}a_{31} - a_{12}a_{21}a_{33} D=det(A)=det(a11a21a31a12a22a32a13a23a33)=a11a22a33+a12a23a31+a13a21a12a11a23a31a13a22a31a12a21a33
    可以看出偶排列前面符号为正号,奇排列前面符号为负号。

  • 所以,三阶行列式可写成
    ∣ D ∣ = ∑ p 1 p 2 p 3 ( − 1 ) τ ( p 1 p 2 p 3 ) a 1 p 1 a 2 p 2 a 3 p 3 |D| = \sum_{p_{1}p_{2}p_{3}} {(-1)^{\tau(p1p2p3)}a_{1p1}a_{2p2}a_{3p3}} D=p1p2p3(1)τ(p1p2p3)a1p1a2p2a3p3
    其中, τ ( p 1 p 2 p 3 ) \tau(p1p2p3) τ(p1p2p3)代表排列的逆序数, p 1 p 2 p 3 p1p2p3 p1p2p3代表所有排列。

  • 扩展到 n n n阶行列式,
    ∣ D ∣ = ∑ p 1 p 2 . . . p n ( − 1 ) τ ( p 1 p 2... p n ) a 1 p 1 a 2 p 2 . . . a n p n |D| = \sum_{p_{1}p_{2}...p_{n}} {(-1)^{\tau(p1p2...pn)}a_{1p1}a_{2p2}...a_{npn}} D=p1p2...pn(1)τ(p1p2...pn)a1p1a2p2...anpn
    一共有 n ! n! n!

  • 计算是这样计算的,但是行列式的本质是什么呢?可以看知乎这篇回答:
    https://www.zhihu.com/question/36966326
    我看了之后也不太懂,但有个结论说:行列式是线性变换的伸缩因子.。

  • d e t ( A ) > 1 det(A) > 1 det(A)>1,这个矩阵在线性变换中有放大作用

  • d e t ( A ) = 1 det(A)=1 det(A)=1,面积不变

  • 0 &lt; d e t ( A ) &lt; 1 0&lt;det(A)&lt;1 0<det(A)<1,面积减小

  • d e t ( A ) = 0 det(A) = 0 det(A)=0,图形降维,矩阵不可逆

  • d e t ( A ) &lt; 0 det(A)&lt;0 det(A)<0,转…无法理解暂时,待填坑。

希望之后能理解吧,现在是真的理解不了。

矩阵的转置
  • 将原矩阵的行与列交换后得到的矩阵叫做转置矩阵。
  • 直观地看,它是将矩阵 A A A的所有元素绕着一条从第1行第1列元素出发的右下方45度射线做镜面翻转,即得到 A A A的转置。
  • 相关性质: ( A ± B ) T = A T ± B T (A \pm B)^{T} = A^{T} \pm B^{T} (A±B)T=AT±BT
  • ( A ∗ B ) T = B T ∗ A T (A * B)^{T} = B^{T} * A^{T} (AB)T=BTAT
  • ( A T ) T = A (A^T)^T = A (AT)T=A
  • ( K A ) T = K ∗ A T (KA)^T = K*A^T (KA)T=KAT
矩阵的奇异性

奇异矩阵的英文叫做singular matrix,意思为异常的矩阵。
实际上他就是非可逆矩阵,不满秩矩阵,行列式为0的矩阵。

减小 E i n E_{in} Ein

第一步是将 E i n ( w ) E_{in}(w) Ein(w)改造成矩阵形式。
904

  • w T x n = x n T w w^Tx_n = x_n^Tw wTxn=xnTw 成立的原因:
    • 首先 A T B A^TB ATB一般情况下式不等于 B T A B^TA BTA的,推导如下:
      由矩阵转置定理 ( A B ) T = B T A T (AB)^T = B^TA^T (AB)T=BTAT,得
      ( A T B ) T = B T ( A T ) T = B T A (A^TB)^T = B^T(A^T)^T = B^TA (ATB)T=BT(AT)T=BTA
      ( A T B ) T = B T A (A^TB)^T = B^TA (ATB)T=BTA
      如果此时增加条件 A T B = B T A A^TB = B^TA ATB=BTA,即 ( A T B ) T = A T B (A^TB)^T = A^TB (ATB)T=ATB
      就是说 A T B A^TB ATB是以左上-右下45度对角线镜面对称的方阵。
      即只有矩阵 M M M是45度镜面对称时,其转置等于它本身。

    • 假设输入 x x x d d d维特征, w = ∣ w 0 w 1 w 2 . . . w d ∣ w = \begin{vmatrix} w_{0}\\ w_{1}\\w_2\\...\\w_d \end{vmatrix} w=w0w1w2...wd是列向量,一个 ( d + 1 ) ∗ 1 (d+1)*1 (d+1)1的矩阵, x n = ∣ x n 0 x n 1 . . . x n d ∣ x_n = \begin{vmatrix} x_{n0}\\x_{n1}\\...\\x_{nd}\end{vmatrix} xn=xn0xn1...xnd是列向量,也是一个 ( d + 1 ) ∗ 1 (d+1)*1 (d+1)1的矩阵。 w T x n w^Tx_n wTxn就是 [ 1 ∗ ( d + 1 ) ] ∗ [ 1 ∗ ( d + 1 ) ] [1*(d+1)]* [1*(d+1)] [1(d+1)][1(d+1)]也就是维度为 1 ∗ 1 1*1 11的矩阵,即一个实数,它必然是镜面对称的。所以 w T x n = x n T w w^Tx_n = x_n^Tw wTxn=xnTw成立。

  • 将平方求和改造成向量模的平方:
    • 假设我们有个向量 v ⃗ = { v 1 , v 2 , v 3 } \vec{v} = \{v_1,v_2,v_3\} v ={v1,v2,v3} ∣ v ⃗ ∣ 2 = v 1 2 + v 2 2 + v 3 2 |\vec{v}|^2 = {v_1}^2 + {v_2}^2+{v_3}^2 v 2=v12+v22+v32
    • 同理 ∑ n = 1 N ( x n T w − y n ) 2 = ∣ x 1 T w − y 1 x 2 T w − y 2 . . . x N T w − y N ∣ 2 \sum_{n=1}^N(x_n^Tw-y_n)^2 = \begin{vmatrix} x_1^Tw-y_1\\ x_2^Tw-y_2\\...\\x_N^Tw-y_N\end{vmatrix}^2 n=1N(xnTwyn)2=x1Twy1x2Twy2...xNTwyN2
  • 矩阵的线性变换
    • 根据矩阵的加减法,加减的线性变换是显而易见的。即令 Y = ∣ y 1 y 2 . . . y N ∣ Y = \begin{vmatrix} y_1\\y_2\\...\\y_N\end{vmatrix} Y=y1y2...yN
    • 根据矩阵的乘法,将 x n T w x_n^Tw xnTw w w w项拆出来,即新的 X = ∣ x 1 T x 2 T . . . x N T ∣ X = \begin{vmatrix} x_1^T\\x_2^T\\...\\x_N^T\end{vmatrix} X=x1Tx2T...xNT,行列数为 [ N ∗ ( d + 1 ) ] [N*(d+1)] [N(d+1)]

最终, E i n ( w ) E_{in}(w) Ein(w)的矩阵形式为
E i n ( w ) = 1 N ∣ ∣ X w − Y ∣ ∣ 2 E_{in}(w) = \frac{1}{N}||Xw-Y||^2 Ein(w)=N1XwY2

第二步,探索 E i n ( w ) E_{in}(w) Ein(w)的图像走势,寻找使其最小的 w w w
905

我们把这个 E i n ( w ) E_{in}(w) Ein(w)看成以 w w w为自变量的二次函数, 这个函数是连续的,可微分的,凸函数。这样的函数肯定存在极值点,这个极值点的的梯度为0。
林教授解释梯度很形象,他说当一个球到达凸函数的谷底,它往哪个方向都滚不动,梯度定义如上图,对函数的每个方向(变量)作偏微分。哪里都滚不动,我们就说各个方向的偏微分即梯度为0。

所以我们的任务是找到使得函数梯度为0的 w w w向量

906

拆平方,扩写 E i n ( w ) E_{in}(w) Ein(w)
E i n ( w ) = 1 N ∣ ∣ X w − Y ∣ ∣ 2 = 1 N ∣ ∣ ( X w − Y ) T ( X w − Y ) ∣ ∣ E_{in}(w) = \frac{1}{N}||Xw-Y||^2 = \frac{1}{N} ||(Xw-Y)^T(Xw-Y)|| Ein(w)=N1XwY2=N1(XwY)T(XwY)
注意到这里使用了矩阵乘法的一些技巧, E i n E_{in} Ein肯定是个值,但是 X w − Y Xw-Y XwY是个 ( d + 1 ) ∗ 1 (d+1)*1 (d+1)1的矩阵,所以求标量平方值需要使用转置。

( X w − Y ) T ( X w − Y ) = ( ( X w ) T − Y T ) ( X w − Y ) = ( w T X T − Y T ) ( X w − Y ) = w T X T X w − w T X T Y − Y T X w + Y Y T (Xw-Y)^T(Xw-Y) = ((Xw)^T-Y^T)(Xw-Y)\\ = (w^TX^T-Y^T)(Xw-Y)\\ =w^TX^TXw - w^TX^TY - Y^TXw+YY^T (XwY)T(XwY)=((Xw)TYT)(XwY)=(wTXTYT)(XwY)=wTXTXwwTXTYYTXw+YYT

之前再证明 w T x n = x n T w w^Tx_n = x_n^Tw wTxn=xnTw 成立时,提到,当矩阵 M M M是45度镜面对称时,其转置等于它本身。这里 Y T ( X w ) Y^T(Xw) YT(Xw)结果是 1 ∗ 1 1*1 11的矩阵,镜面对称,所以,
( Y T ( X w ) ) T = ( X w ) T ( Y T ) T = w T X T Y (Y^T(Xw))^T = (Xw)^T(Y^T)^T = w^TX^TY (YT(Xw))T=(Xw)T(YT)T=wTXTY
这样,上面的因式分解式的中间两项可写成
w T X T X w − 2 w T X T Y + Y Y T w^TX^TXw - 2 w^TX^TY +YY^T wTXTXw2wTXTY+YYT
保留自变量 w w w,令因变量
A = X T X , b = X T Y , c = Y Y T A = X^TX,\ b=X^TY,\ c=YY^T A=XTX, b=XTY, c=YYT
E i n ( w ) E_{in}(w) Ein(w)可写为:
E i n ( w ) = 1 N ( w T A w − 2 w T b + c ) E_{in}(w) = \frac{1}{N}(w^TAw-2w^Tb+c) Ein(w)=N1(wTAw2wTb+c)

看上图,当 w w w只有一维时, E i n ( w ) E_{in}(w) Ein(w)简化成简单的二次式。
类推,当 w w w有多维时,
▽ E i n ( w ) = 1 N ( 2 A w − 2 b ) \triangledown E_{in}(w) = \frac{1}{N}(2Aw-2b) Ein(w)=N1(2Aw2b)

我们需要要求梯度为0时的 w w w就非常简单了:

A w − b = 0 = &gt; A w = b = &gt; ( A ) − 1 A w = A − 1 b Aw-b=0 =&gt; Aw = b =&gt;(A)^{-1}Aw = A^{-1}b Awb=0=>Aw=b=>(A)1Aw=A1b
即,当 A A A可逆时
w = A − 1 b = X T X X T Y w = A^{-1}b\\ =X^TXX^TY w=A1b=XTXXTY
我们把 X X X T X^XX^T XXXT叫做 X X X的伪逆矩阵, X ∔ X^\dotplus X

907

虽然由于 N ⋙ g N \ggg g Ng X T X X^TX XTX在大多数情况都是可逆的;但也不排除存在奇异矩阵 X T X X^TX XTX,这样的话就会有很多组解,但是其中一组解仍是 X ∔ Y X^\dotplus Y XY,这里 X ∔ X^\dotplus X可能会有很多种定义方式。

我们在实践中,只需要调用软件程序中已经定义好的 ∔ \dotplus 即可。

908

Fun Time说当我们已经得到了 w L I N w_{LIN} wLIN,可以做预测了,我们预测的 y ^ \hat y y^会长什么样呢?
答案是:只需要将算好的 w w w代入即可。

这篇关于【林轩田】机器学习基石(九)——线性回归的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/571894

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件