普通最小二乘法_普通最小二乘法的基本原理

普通最小二乘法_普通最小二乘法的基本原理简单介绍sklearn中的LinearRegression类拟合了一个带有系数w=(w1,w2,…,wp)w=(w1,w2,…,wp)w=(w_1,w_2,…,w_p)的线形模型,使得数据集实际观测数据和预测数据之间的残差平方和最小:minw||Xw−y||22minw||Xw−y||22min_w||Xw-y||^2_2其中向量w=(w1,w2,…,wp)w=(w1,…

大家好,又见面了,我是你们的朋友全栈君。

什么是普通最小二乘法

普通最小二乘法(Ordinary Least Squares,OLS),是一种线性最小二乘法,用于估计线性回归模型中的未知参数。

通俗解释:

最小,即最小化;

二乘,即真实的观测的因变量的值与预测的因变量的值的差的平方和,
∑ ( 真 实 因 变 量 − 预 测 因 变 量 ) 2 \sum (真实因变量-预测因变量)^2 ∑(真实因变量−预测因变量)2

直观上来看,就是要使得 「集合中每个数据点和回归曲面上对应预测的点的距离的平方的和」 达到最小,这样模型对数据才拟合得最好。

如下图所示,其中 A , B , C , D , E , F {A,B,C,D,E,F} A,B,C,D,E,F 为数据点,要最小化的就是 「红色线段的长度的平方的和」
OLS

如何推导OLS

一般标记:

  • m m m 代表训练集中实例的数量
  • x x x 代表特征/输入变量
  • y y y 代表目标变量/输出变量
  • ( x , y ) (x,y) (x,y) 代表训练集中的实例
  • ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)) 代表第i 个观察实例

线性回归的一般形式:     
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+…+{\theta_{n}}{x_{n}} hθ​(x)=θ0​+θ1​x1​+θ2​x2​+...+θn​xn​

令 θ = [ θ 0 , θ 1 ] \theta=[\theta_0,\theta_1] θ=[θ0​,θ1​], h θ ( x ) = θ T X h_{\theta} \left( x \right)={\theta^{T}}X hθ​(x)=θTX,需要极小化的代价函数是:
J ( θ 0 , θ 1 . . . θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) J\left( {\theta_{0}},{\theta_{1}}…{\theta_{n}} \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{
{
{\left( h_{\theta} \left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}\\ = \frac{1}{2}({X\theta} -{y})^T({X\theta} – {y})
J(θ0​,θ1​...θn​)=2m1​i=1∑m​(hθ​(x(i))−y(i))2=21​(Xθ−y)T(Xθ−y)

损失函数、代价函数和目标函数的区别

正规方程

θ = ( X T X ) − 1 X T Y {\theta} = ({X^{T}X})^{-1}{X^{T}Y} θ=(XTX)−1XTY

推导过程:

J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{
{
{\left( {h_{\theta}}\left( {x^{(i)}} \right)-{y^{(i)}} \right)}^{2}}}
J(θ)=2m1​i=1∑m​(hθ​(x(i))−y(i))2

其中: h θ ( x ) = θ T X = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n {h_{\theta}}\left( x \right)={\theta^{T}}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+…+{\theta_{n}}{x_{n}} hθ​(x)=θTX=θ0​x0​+θ1​x1​+θ2​x2​+...+θn​xn​

将向量表达形式转为矩阵表达形式,则有 J ( θ ) = 1 2 ( X θ − y ) 2 J(\theta )=\frac{1}{2}{
{\left( X\theta -y\right)}^{2}}
J(θ)=21​(Xθ−y)2
,

其中 X X X为 m m m行 n n n列的矩阵( m m m为样本个数, n n n为特征个数), θ \theta θ为 n n n行1列的矩阵, y y y为 m m m行1列的矩阵,对 J ( θ ) J(\theta ) J(θ)进行如下变换

J ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) J(\theta )=\frac{1}{2}{
{\left( X\theta -y\right)}^{T}}\left( X\theta -y \right)
J(θ)=21​(Xθ−y)T(Xθ−y)

​ = 1 2 ( θ T X T − y T ) ( X θ − y ) =\frac{1}{2}\left( {
{\theta }^{T}}{
{X}^{T}}-{
{y}^{T}} \right)\left(X\theta -y \right)
=21​(θTXT−yT)(Xθ−y)

​ = 1 2 ( θ T X T X θ − θ T X T y − y T X θ − y T y ) =\frac{1}{2}\left( {
{\theta }^{T}}{
{X}^{T}}X\theta -{
{\theta}^{T}}{
{X}^{T}}y-{
{y}^{T}}X\theta -{
{y}^{T}}y \right)
=21​(θTXTXθ−θTXTy−yTXθ−yTy)

接下来对 J ( θ ) J(\theta ) J(θ)偏导,需要用到以下几个矩阵的求导法则:

d A B d B = A T \frac{dAB}{dB}={
{A}^{T}}
dBdAB​=AT

d X T A X d X = 2 A X \frac{d{
{X}^{T}}AX}{dX}=2AX
dXdXTAX​=2AX

所以有:

∂ J ( θ ) ∂ θ = 1 2 ( 2 X T X θ − X T y − ( y T X ) T − 0 ) \frac{\partial J\left( \theta \right)}{\partial \theta }=\frac{1}{2}\left(2{
{X}^{T}}X\theta -{
{X}^{T}}y -{}({
{y}^{T}}X )^{T}-0 \right)
∂θ∂J(θ)​=21​(2XTXθ−XTy−(yTX)T−0)

= 1 2 ( 2 X T X θ − X T y − X T y − 0 ) =\frac{1}{2}\left(2{
{X}^{T}}X\theta -{
{X}^{T}}y -{
{X}^{T}}y -0 \right)
=21​(2XTXθ−XTy−XTy−0)

​ = X T X θ − X T y ={
{X}^{T}}X\theta -{
{X}^{T}}y
=XTXθ−XTy

令 ∂ J ( θ ) ∂ θ = 0 \frac{\partial J\left( \theta \right)}{\partial \theta }=0 ∂θ∂J(θ)​=0,

则有 θ = ( X T X ) − 1 X T y \theta ={
{\left( {X^{T}}X \right)}^{-1}}{X^{T}}y
θ=(XTX)−1XTy

梯度下降法

梯度下降法的具体知识点请看这里

1、 批量梯度下降

一般形式:

θ j = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 , . . . , θ m ) = θ j − α ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( X ( i ) ) − y ( i ) ) 2 = θ j − α 1 m ∑ i = 1 m ( ( h θ ( X ( i ) ) − y ( i ) ) ⋅ X j ( i ) ) \theta_j\\=\theta_j-\alpha\frac \partial {\partial \theta_j}J(\theta_0,\theta_1,…,\theta_m)\\ =\theta_j-\alpha\frac \partial {\partial\theta_j}\frac 1 {2m} \sum_{i=1}^m(h_{\theta}(X^{(i)})-y^{(i)})^2 \\ =\theta_j-\alpha\frac 1 m \sum_{i=1}^m((h_{\theta}(X^{(i)})-y^{(i)})·X_j^{(i)}) θj​=θj​−α∂θj​∂​J(θ0​,θ1​,...,θm​)=θj​−α∂θj​∂​2m1​∑i=1m​(hθ​(X(i))−y(i))2=θj​−αm1​∑i=1m​((hθ​(X(i))−y(i))⋅Xj(i)​)

当n>=1时,
θ 0 : = θ 0 − a 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) {
{\theta }_{0}}:={
{\theta }_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({
{h}_{\theta }}({
{x}^{(i)}})-{
{y}^{(i)}})}x_{0}^{(i)}
θ0​:=θ0​−am1​i=1∑m​(hθ​(x(i))−y(i))x0(i)​

θ 1 : = θ 1 − a 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 1 ( i ) {
{\theta }_{1}}:={
{\theta }_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({
{h}_{\theta }}({
{x}^{(i)}})-{
{y}^{(i)}})}x_{1}^{(i)}
θ1​:=θ1​−am1​i=1∑m​(hθ​(x(i))−y(i))x1(i)​

θ 2 : = θ 2 − a 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 2 ( i ) {
{\theta }_{2}}:={
{\theta }_{2}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({
{h}_{\theta }}({
{x}^{(i)}})-{
{y}^{(i)}})}x_{2}^{(i)}
θ2​:=θ2​−am1​i=1∑m​(hθ​(x(i))−y(i))x2(i)​

矩阵形式:
θ = θ − 1 m α X T ( X θ − Y ) \theta= \theta -\frac 1 m \alpha{X}^T({X\theta} -{Y}) θ=θ−m1​αXT(Xθ−Y)其中 α \alpha α为步长。

2、随机梯度下降
θ = θ − α X i T ( X i θ − Y i ) \theta=\theta- \alpha X_i^T(X_i\theta-Y_i) θ=θ−αXiT​(Xi​θ−Yi​)

3、 小批量梯度下降

θ = θ − 1 M α X M T ( X M θ − Y M ) \theta=\theta-\frac 1 M \alpha X_M^T(X_M\theta-Y_M) θ=θ−M1​αXMT​(XM​θ−YM​)

其中 M M M为batch_size, X M X_M XM​表示 M M M条数据, Y M Y_M YM​为 X M X_M XM​对应的 y y y的值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125200.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看linux执行的命令记录_tail命令查看最后100行日志

    查看linux执行的命令记录_tail命令查看最后100行日志前言我们每次敲打linux命令的时候,有时候想用之前用过的命令,一般情况下,我们都会按↑↓箭头来寻找历史的命令记录,那如果我想用1天前执行的某条命令,难道还要按↑100次?显示这样是不现实的,我们可

    2022年7月28日
  • window修改host文件权限_win10hosts文件在哪

    window修改host文件权限_win10hosts文件在哪文章目录第一步进入host目录下第二步编辑hosts文件中users用户的属性第三步授权users用户完全控制权限第四步编辑hosts文件第一步进入host目录下第二步编辑hosts文件中users用户的属性第三步授权users用户完全控制权限第四步编辑hosts文件格式IP地址(空格)网址202.108.22.5www.baidu.com…

    2022年10月10日
  • LAN、WAN、WLAN、WiFi之间的区别

    LAN、WAN、WLAN、WiFi之间的区别感觉这几个概念让人傻傻分不清,下面以最常见的路由器来解释这几个概念。LAN1LAN,全称LocalAreaNetwork,中文名叫做局域网。顾名思义,LAN是指在某一区域内由多台计算机互联

    2022年7月4日
  • Python中两种UnboundLocalError: local variable ‘xxx’ referenced before assignment情况的解决方法

    Python中两种UnboundLocalError: local variable ‘xxx’ referenced before assignment情况的解决方法  1)在子程序中对全局变量的操作,比如val=9deftest(flag):   ifflag:     val=1   else:     print’Error’   returnval test(0)错误提示:UnboundLocalError:localvariable’val’referencedbefo…

    2022年6月17日
  • webpack基础打包命令_webpack打包命令

    webpack基础打包命令_webpack打包命令没有配置文件的打包如果我们没有使用配置文件webpack.config.js,那么我们就需要通过命令来打包案例我们首先创建一个webpackTest文件夹,然后在文件夹中再创建2个子文件夹dis

    2022年7月30日
  • PostMan的安装和使用教程[通俗易懂]

    PostMan的安装和使用教程[通俗易懂]postman的下载官网:https://www.getpostman.com/downloads/创建账号或者用谷歌浏览器账号登录一个demo了解一下我做的是一个app,后台使用java做的,app通过ajax来请求后台,但是我不知道后台有没有请求成功!因此需要一个测试接口的东西测试我做的接口有没有问题我的app里面的ajax是这样写的api.aja…

    2022年9月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号