机器学习 从矩阵和概率的角度解释最小均方误差函数

2023-12-05 12:08

本文主要是介绍机器学习 从矩阵和概率的角度解释最小均方误差函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最小均方误差函数

之前的讲义里, 我们提到了最小均方误差函数,给出一组有 m 个样本的训练集,我们希望找到合适的参数 θ, 使得预测值 hθ(x) 与目标值尽可能接近。为了估计参数 θ , 我们定义如下的 cost function:

J(θ)=12i=1m(hθ(xi)yi)2

这个 cost function 就是最小均方误差函数,第一讲里面,我们用梯度下降算法估计参数 θ , 而第二讲里面我们提到了矩阵的基本运算及矩阵的求导,现在就从矩阵的角度求参数 θ 的解析解。

矩阵的解析解

给定一组训练样本, D={(xi,yi)|xiRn,yiR}mi=1 , xi 是维数为 n 的输入特征(默认为列向量),yi 是连续的实数值, m 表示样本数,则输入特征可以用矩阵表示为:

X=[x1,x2,,xm]T

输出变量可以用一个向量表示为:

y=[y1,y2,,ym]T

而我们从第一讲已经知道, hθ(xi)=xTiθ , 则我们可以得到如下的表达式:
Xθy=xT1θxTmθy1ym=hθ(x1)y1hθ(xm)ym

则最小均方误差函数可以表示为:
J(θ)=12i=1m(hθ(xi)yi)2=12(Xθy)T(Xθy)

利用第二讲的矩阵基本运算将上式展开,可以得到:
J(θ)=12θTXTXθθTXTyyTXθ+yTy

利用第二讲的矩阵求导,可以得到 J(θ) θ 的偏导数为:
J(θ)θ=12(XTXθ+XTXθ2XTy)=XTXθXTy

令该偏导数为0,则可以得到:
XTXθ=XTy

最终可以得到参数 θ 的解析解为:
θ=(XTX)1XTy

如果矩阵 (XTX)1 可逆,则该解就是全局最优解,有的时候,该矩阵不一定可逆,就是我们常常遇到的样本数远远大于参数的个数即 mn ,那么参数 θ 就只能得到近似解。

从最大似然估计到最小均方误差

有的时候我们会考虑,在做回归问题的时候,为什么用最小均方误差函数作为 \textbf{cost function}, 为什么不用其它的函数。接下来,我们从概率分布的角度去考虑这个问题,随后我们会发现,最小均方误差函数从某种意义上来说,
是从最大似然估计中演化出来的。
我们先假设目标值与输入变量之间存在以下关系:

yi=θTxi+ϵi

其中, ϵi 是一个误差项,表示由于一些我们没有考虑到的因素导致估计值域目标值之间出现得偏差,我们进一步假设这些误差项是
独立同分布的(independently and identically distributed), 并且是均值为0,方差为 σ2 的高斯分布(这是自然界非常常见的一种分布)。我们可以表示为
ϵiN(0,σ2) , 其概率密度函数为:
p(ϵi)=12πσexp(ϵ2i2σ2)

将式代入,可以得到:
p(yi|xi;θ)=12πσexp((yiθTxi)22σ2)

这里需要注意, p(yi|xi;θ) 表示的是 yi xi 的条件概率, θ 是参数, xi 是随机变量,两者之间用 ";" 隔开,不能用
"," 隔开。当我们考虑所有的样本时,则所有的输出变量的分布表示为: p(y|X;θ) , 我们可以建立一个关于参数 θ 的似然函数:
L(θ)=L(θ;X,y)=p(y|X;θ)

因为 ϵi 是独立同分布的,我们可以得到:
L(θ)=i=1mp(yi|xi;θ)=i=1m12πσexp((yiθTxi)22σ2)

最大似然估计原则告诉我们,要选择参数 θ 使得概率要尽可能地高。所以我们可以建立如下的优化函数:
maxθ[i=1m12πσexp((yiθTxi)22σ2)]

上式是一个单调函数,根据单调函数的传递性原则,我们可以对上式取对数,则可以得到:
l(θ)=log(L(θ))=logi=1m12πσexp((yiθTxi)22σ2)=i=1mlog12πσexp((yiθTxi)22σ2)=mlog12πσ1σ212i=1m(yiθTxi)2

因此,要使上式最大化,则只要使其中的二次项最小化,即
minθ12i=1m(hθ(xi)yi)2

我们可以看到,从概率出发,最小均方误差是最大似然估计非常自然的一种延伸,两者最后可以完美的统一起来。

参考文献

Andrew Ng, “Machine Learning”, Stanford University.

这篇关于机器学习 从矩阵和概率的角度解释最小均方误差函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和