目录

引子

几何意义

如何最小化Ein

Ein的矩阵表示

Ein梯度的表示与W的计算

Ein的另一种表现形式

H矩阵的意义

Ein的noise表现形式

学习曲线


引子

在一个二元分类的问题中我们通常得到的结果是1/0,而在分类的过程中我们会先计算一个得分函数然后在减去一个门槛值后判断它的正负若为正则结果为1若为负结果为0。

事实上从某种角度来看线性回归只是二元分类步骤中的一个截取它没有后面取正负号的操作,它的输出结果为一个实数而非0/1。我们称这样的数学模型为线性回归。

在传统上统计学家给出的结果是如下:

它的物理意义就是要提取多笔资料的特征用一个线性的函数所表示,我们要做的就是让我们资料的表现与我们函数之间的差距之和越小越好。进一步来说我们就是要找一个h(x)通过调整它的权重W来达到上述目的。(当然此时的W的维度包括常数在内)

几何意义

图中的点代表我们资料的表现,而那条蓝色的线就是我们的h(x),每个点到线(或者超平面)的距离就是资料与我们线性模型的误差。我们的目的就是使得所有点到线的距离之和最小。

传统上我们的线性回归的误差计算为平方误差表现为下图:

进一步来说我们模型所犯的错误如下图所示:

左图中是模型h(x)在样本上犯的错误,右边是模型h(x)在总体数据上犯的错误,我们相信在VC维度的保障下我们可以从大量的数据中学到东西。也就是我们在大量数据下学习使得我们的模型的Ein很小就是我们下一步要完成的目标。

如何最小化Ein

Ein的矩阵表示

由于一个h(x)对应的一个W向量而其他的x与y都为已知量所以我们对h(x)的优化也就是我们对W的优化所以下面的推到中只有W为变量:

经过一系列的推导我们将Ein写成了更为直观的矩阵的形式,我们要求的就是Ein最小时W的值是多少。经过一些数学上的推导我们发现Ein对应的函数是一个凸函数(大陆好像一般都是凹函数)如下图所示:

根据凸函数的性质我们可以知道在函数的梯度为0的时候我们可以得到函数的最小值,也就是我们要求的W正是Ein的梯度为0的时候所对应的W。

Ein梯度的表示与W的计算

上图从一维的w(单一变数)推广到了多维的W(向量)最后得到了最终的梯度表达式如上图下方所示。

令梯度为0我们可以得到W:

在上图的上方我们得到了最优的W的表达式,在大多数的情况下X的转置与X的乘积是有反矩阵的此时的W可以一步计算出来(它只有一个解)如上图左方所示,在不是反矩阵的情况下我们也会求出一个假的反矩阵来这个假的反矩阵与反矩阵有类似的性质(这种情况下会有多组解我们会选择其中的一组解)如上图右方所示。在实务上很多的软件都写好了求(假的)反矩阵的包我们可以直接调用。

这样我们就求出了最优的W,同时也求出了最优的h(x)。

线性回归的算法看起来像是一步登天没有经过看起来一步一步的学习,但是在整个过程中在最后Eout≈0我们说这个算法确实发生了学习只是学习的步骤隐藏起来了(如果我们编写一个程序就有直观的感受我们会有一次一次的迭代)。

Ein的另一种表现形式

H矩阵的意义

这一部分可以先参考这篇文章​​​​​​​方便理解。

如上图所示Ein可以用一个含有杂讯的式子来表示,在上图的式子中我们将y矩阵与他的线性变换分离开来我们得到了H矩阵。现在已知Hy = y hat(y上面加^),从线性代数的基础知识中我们知道H是一个y的线性变换如下图所示:

在图中粉红色部分为X矩阵展开的线性空间而y hat = XWlin所以y hat也在X矩阵所展开的线性空间上,而已知y在X的线性空间外则y - y hat 的向量的大小就是y与X空间上最近的距离(因为我们的y hat是一个最优解)。又知道y与y在X空间投影的距离最小,那么我们就知道y hat就是y在X空间上的投影。也就是我们的H矩阵是y到X空间的投影动作。同时也知道了(I - H)是y在X空间上取余数的动作(由y得到y-yhat的线性变换)。

如果我们用力计算的话我们会得到trace(I - H) = N - (d + 1),其中trace是矩阵对角线之和。它的物理意义是什么N个自由度的向量(x向量的个数与y向量维度都是N)投影到一个d+1维的空间里(x向量的维度)再经过取余数之后会得到余数的自由度为

N-(d+1),也就是y - y hat的维度。

Ein的noise表现形式

在上图上线性代数告诉我们我们的目标函数也在X空间中,而我们的标签y正是f(x)+noise的结果,而在加上我们讨论过的线性变换我们就会得出y - y hat = (I - H) * noise,加上我们的trace(I - H) = N - (d + 1),在加上我们对noise做平均得到noise level,最后将这些结论带入以前的Ein表达式得到一个全新的Ein表达式如上图下方所示。与此同时Eout也可以采用类似的算法来计算只是相对困难如上图下方所示。

学习曲线

在经过上述的推导之后我们得到了如下曲线:

他描述了我们的资料量与我们平均可以的得到平均的Ein与Eout的关系,我们可以看出随着资料量的增大Ein的平均与Eout的平均越来越接近,而且如果在杂讯很小的情况下我们就能办到Eout≈0,此时我们学到了东西。

机器学习之线性回归(机器学习基石)相关推荐

  1. matlab 多元多项式回归_Python机器学习之?线性回归入门(二)

    线性回归原理介绍 文章目录 机器学习分类 线性回归原理 线性回归定义 线性回归背后矩阵运算 机器学习分类 机器学习的主要任务便是聚焦于两个问题:分类和回归 分类相信大家都不会陌生,生活中会见到很多的应 ...

  2. python计算均方根误差_如何在Python中创建线性回归机器学习模型?「入门篇」

    线性回归和逻辑回归是当今很受欢迎的两种机器学习模型. 本文将教你如何使用 scikit-learn 库在Python中创建.训练和测试你的第一个线性.逻辑回归机器学习模型,本文适合大部分的新人小白. ...

  3. ML之回归预测:利用十类机器学习算法(线性回归、kNN、SVM、决策树、随机森林、极端随机树、SGD、提升树、LightGBM、XGBoost)对波士顿数据集回归预测(模型评估、推理并导到csv)

    ML之回归预测:利用十类机器学习算法(线性回归.kNN.SVM.决策树.随机森林.极端随机树.SGD.提升树.LightGBM.XGBoost)对波士顿数据集[13+1,506]回归预测(模型评估.推 ...

  4. TF之LiR:基于tensorflow实现机器学习之线性回归算法

    TF之LiR:基于tensorflow实现机器学习之线性回归算法 目录 输出结果 代码设计 输出结果 代码设计 # -*- coding: utf-8 -*-#TF之LiR:基于tensorflow实 ...

  5. python 预测算法_通过机器学习的线性回归算法预测股票走势(用Python实现)

    本文转自博客园,作者为hsm_computer 原文链接:https://www.cnblogs.com/JavaArchitect/p/11717998.html在笔者的新书里,将通过股票案例讲述P ...

  6. Scikit-Learn 机器学习笔记 -- 线性回归、逻辑回归、softmax回归

    Scikit-Learn 机器学习笔记 – 线性回归.逻辑回归.softmax回归 参考文档: handson-ml import numpy as np from matplotlib import ...

  7. l2正则化python_机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化...

    本文主要向大家介绍了机器学习入门之机器学习之路: python线性回归 过拟合 L1与L2正则化,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 正则化:    提高模型在未知数据上的 ...

  8. 机器学习多元线性回归_过度简化的机器学习(1):多元回归

    机器学习多元线性回归 The term machine learning may sound provocative. Machines do not learn like humans do. Ho ...

  9. opencv机器学习线性回归_Python机器学习之?线性回归入门(二)

    线性回归原理介绍 文章目录 机器学习分类 线性回归原理 线性回归定义 线性回归背后矩阵运算 机器学习分类 机器学习的主要任务便是聚焦于两个问题:分类和回归 分类相信大家都不会陌生,生活中会见到很多的应 ...

  10. 机器学习之线性回归_通过线性回归开始机器学习之旅

    机器学习之线性回归 线性回归 (Linear Regression) Linear regression is a part of Statistics that defines the relati ...

最新文章

  1. C++静态库与动态库(简介)
  2. 【 c#】实现form窗口中,通过按钮实现tabPage的切换
  3. 国内常用的学习flutter地址
  4. onvif 客户端 linux,Linux下onvif客户端关于ipc摄像头的搜索
  5. c++内存,堆和栈的区别
  6. 《现代前端技术解析》读后鬼扯
  7. E:Modular Stability(组合数)
  8. 数据产品-规则型和挖掘型标签构建案例
  9. 庆祝西安.NET俱乐部成立,请申请加入的朋友在这里报到
  10. java实现创建窗口
  11. linux内核源码多大,Linux内核源代码
  12. pytorch: torch.nn.functional.affine_grid(theta,size)
  13. UIButton设置圆角和边框
  14. c++ Primer plus 之c++学习
  15. 多个相机间的对齐之为什么需要对齐,对齐有什么好处?
  16. Windows毫秒精度定时器SetTimer
  17. ADS1115使用之电路与程序
  18. AopAutoConfiguration matched的异常
  19. 韩泰机器人_韩泰轮胎怎么样?进击的韩泰,拥有着对未来无限的可能!
  20. 自动登录yahoo邮箱

热门文章

  1. WinForm BackgroundWorker笔记
  2. Minidump文件分析
  3. CMS系列远程代码执行—Discuz
  4. 台式电脑桌面没有计算机图标,电脑桌面图标全部消失怎么恢复 电脑桌面图标设置随意放置的方法...
  5. 【EXCEL批量查询手机号归属地小技巧】很多网友想看excel怎么批量查询手机号归属地,今天它来了
  6. Redhat注册下载Redhat Enterprise Linux Download
  7. 网易2017笔试 编程题目
  8. Typora的最后一个免费版本MD编辑器
  9. 地址后面的sessionid怎么消除_富贵包的消除和改善头前倾,通过运动和减肥可以吗?...
  10. C# 实现二维码的生成、解析及保存