在这个万物皆可“Machine Learning”的时代,各个研究领域都想和“ML”沾点边,好像论文里有了“…with machine learning”、“learning based…”便能立即高大上起来。不过确实很多传统领域的问题都被大佬们解决的差不多了,为了毕业,我也不能免俗,也想在研究中结合一点机器学习的东西。

机器学习只是一个宏观的概念,下面还包含很多种不同的方法需要根据各自的研究情况具体确定。我这里用到的是一个相对小众的算法,相比于神经网络、KNN、朴素贝叶斯、SVM等都不那么出名,不过它的能力却是非常巨大的。它就是高斯过程(Gaussian processes)。有感于介绍高斯过程回归的文章写得不够明晰,看完还是一头雾水,亦或是没有结合代码,算法理解始终流于纸面。因此接下来我会用最通俗易懂的方式讲解并配以详细的代码解释,同时知道想学习高斯过程的小伙伴光看我这一篇文章是不够的,因此文中送出多重“福(链)利(接)”,都是我在学习过程中觉得相当不错的文章。

图片转载自https://yugeten.github.io/posts/2019/09/GP/

一、深入高斯过程回归之前你需要了解的一些名词

1.什么叫“回归”(regression)

首先我们从命名开始认识一个事物。我们先来说回归,学过一点机器学习的都知道有监督学习的两大任务就是分类(classification)和回归(regression)。用一句话来简单概括回归就是:回归就是找到一个函数来尽可能表示一组数据输入与输出之间的关系。对于线性模型,常用 Y = X T w Y=X^Tw Y=XTw来描述其输入输出关系。回归就是通过这一等式把输出 Y Y Y与实际观测值进行比较,并用其结果不断地更新权重矩阵 w w w以求输出最大限度的接近实际值。

2.什么叫“高斯过程”(Gaussian Process)

A Gaussian process is a probability distribution over possible functions that fit a set of points.

如果有人突然问你什么叫高斯过程,回他这句话就好了。详细一点的说明便是对于一组给定的数据点,或许存在无限多个函数可以用来拟合,高斯过程就是给每个函数(权重)分配一个概率值,这个概率分布的均值便代表了这个数据最有可能的表征,同时它通过置信区间将不确定性也表示出来。

通过图能看得更清晰一点。红色的点是给定的,但连接他们的线(函数)并不只有这一根,其中深蓝色的代表可能性最高的一条,淡蓝色的部分代表在这一区域内有无数条线段的组成可能,并且所有这些线(函数)的分布服从高斯分布。

有人或许会问,为什么不放书本里的定义?好,我把原文中的定义放在下面。

A Gaussian process is a collection of random variables, any finite number of which have a joint Gaussian distribution.

你品,你细品,对于初识高斯过程的人这句话读完可能是一脸懵逼,脑海中什么都没留下,完全不如“一群函数的概率分布服从高斯分布”来的简洁明了。但是定义毕竟是定义,这么写自然有他的道理,我们接下来就详细解释为什么高斯过程这么定义。

OK, 到目前为止我们弄清楚了“高斯过程”+“回归”。而高斯过程回归便是GP(高斯过程缩写GP,下同)在回归问题上的应用,当然也可以用于分类问题,不过这就不在本文讨论的范畴了,有兴趣的同学建议阅读"Gaussian Processes for Machine Learning"。

二、一切的一切还得从贝叶斯推论讲起

1. 贝叶斯线性回归

相信学习机器学习的小伙伴一定会有感而发,这个贝叶斯就是概率论和统计学的祖宗,到哪都离不开它。的确,今天的故事也因他而起。

首先我们回到前面讲的输入输出模型,我们将其表示为 Y = X T w Y=X^Tw Y=XTw。一般来说,估计值总是会与实际值有一定的差别,我们将这个差别表示成 ε \varepsilon ε,于是系统模型就变为 Y = X T w + ε Y=X^Tw+\varepsilon Y=XTw+ε。这是一个可加性的噪声(additive noise),同时我们假设其服从正态分布(至于为什么能这么假设,只能说大自然就是这么神奇,很多东西都服从正态分布):
ε ∼ N ( 0 , σ n 2 ) \varepsilon \sim N(0, \sigma_n^2) ε∼N(0,σn2​) 知道了噪声的概率分布,又有这个系统模型,于是我们就得到了“似然”(likelihood)。似然就是在给定参数的条件下的观察值所服从的概率分布或满足的概率密度函数,记为 P ( y ∣ X , w ) P(y|X,w) P(y∣X,w),由于这些数据集都是独立的,因此 P ( y ∣ X , w ) = ∏ i = 1 n P ( y i ∣ x i , w ) = ∏ i = 1 n 1 2 π σ n e x p ( − ( y i − x i T w ) 2 2 σ n 2 ) P(y|X,w)=\prod_{i=1}^n P(y_i|x_i,w)=\prod_{i=1}^n \frac{1}{\sqrt{2\pi}\sigma_n}exp(-\frac{(y_i-x_i^Tw)^2}{2 \sigma_n^2}) P(y∣X,w)=i=1∏n​P(yi​∣xi​,w)=i=1∏n​2π ​σn​1​exp(−2σn2​(yi​−xiT​w)2​)
和正态分布的形式一对照便知, P ( y ∣ X , w ) P(y|X,w) P(y∣X,w)也服从正态分布。其实这很好理解,相当于一个常数 X T w X^Tw XTw加上了一个服从均值为0,方差为 σ n 2 \sigma_n^2 σn2​的高斯分布的随机变量,结果显然还是高斯分布: y ∣ X , w ∼ N ( X T w , σ n 2 I ) y|X,w \sim N(X^Tw, \sigma_n^2I) y∣X,w∼N(XTw,σn2​I)

到这里都还没和贝叶斯推论产生关系,别急,接下来就是重头戏。贝叶斯推论就是后验正比于似然乘先验,既然似然我们已经求得,接下来就是先验了。于是我们再次假设权重w的概率分布也服从高斯分布: w ∼ N ( 0 , Σ p ) w \sim N(0, \Sigma_p) w∼N(0,Σp​)
根据贝叶斯公式: p ( w ∣ y , X ) = p ( y ∣ X , w ) p ( w ) p ( y ∣ X ) p(w|y,X)=\frac{p(y|X,w)p(w)}{p(y|X)} p(w∣y,X)=p(

学习笔记之高斯过程回归(含代码):连续无限空间上建模的超级武器相关推荐

  1. 狂神说Mysql课堂学习笔记,jdbc(含代码,下载链接)

    连接数据库 命令行连接! mysql -uroot -p123456 命令行连接 mysql -uroot -p123456 --连接数据库show databases; -- 查看所有的数据库mys ...

  2. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  3. Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据

    #2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...

  4. OpenCV与图像处理学习十一——分水岭算法(含代码)

    OpenCV与图像处理学习十一--分水岭算法(含代码) 一.分水岭算法概要 二.分水岭算法步骤 三.代码应用 一.分水岭算法概要 任意的灰度图像可以被看做是地质学表面,高亮度的地方是山峰,低亮度的地方 ...

  5. OpenCV与图像处理学习十——区域生长算法(含代码)

    OpenCV与图像处理学习十--区域生长算法(含代码) 一.区域生长算法概要 二.区域生长算法原理 三.代码应用 一.区域生长算法概要 区域生长是一种串行区域分割的图像分割方法.区域生长是指从某个像素 ...

  6. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  7. 【李宏毅深度强化学习笔记】5、Q-learning用于连续动作 (NAF算法)

    [李宏毅深度强化学习笔记]1.策略梯度方法(Policy Gradient) [李宏毅深度强化学习笔记]2.Proximal Policy Optimization (PPO) 算法 [李宏毅深度强化 ...

  8. 数据结构与算法学习笔记之 提高读取性能的链表(上)

    数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...

  9. RK3399学习笔记 1.0.3---python环境 Firefly Core-3399pro-jd4 Win10上RKNN工具安装

    RK3399学习笔记 1.0.3---python环境 Firefly Core-3399pro-jd4 Win10上RKNN工具安装 读取模型各层 1,最好在Conda下新建一个虚拟环境进行安装. ...

最新文章

  1. SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)
  2. JavaEE程序员必读图书大推荐 .
  3. 【CV】YOLO算法最全综述:从YOLOv1到YOLOv5
  4. 确实会玩!教你用Python玩转数据~
  5. 淘宝商品数据库设计的一些经验
  6. 什么是5G,我们能从中得到什么?
  7. 火狐浏览器手机版_火狐浏览器第三方编译版:tete009 Firefox
  8. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·001【数据库基本概念、MySQL安装与介绍】
  9. js获取元素,窗口的宽度、高度
  10. Spring boot 2.x 错误处理机制 与 定制错误页面
  11. Python >>> 基于UDP 协议的实时网络视频传输
  12. 一个OpenMP的学习程序
  13. 2022年5月17日 点扩展函数的matlab仿真学习
  14. Hi3516A开发--板卡烧写
  15. 淘宝商品详情,1688商品详情滑块的解决方法和接口
  16. R语言read.csv()读入行不规则数据
  17. Python print 输出时刷新当前行内容而不输出新行
  18. PHP简洁小猫咪图床源码 带12个图床接口
  19. html 选项按照abcd,怎么把Word里的多个题目的ABCD 选项快速排列整齐
  20. 初步了解指针------指针的基本概念

热门文章

  1. 摹客融合项目:一场工作模式的变革
  2. VMware虚拟机安装DOS6.22
  3. deny of sb sth_句式分析(deny, be denied us)
  4. 二叉树在计算机应用,2007计算机应用基础A卷-刘谦
  5. HTML期末大作业 : 一个简单的音乐网站设计与实现(HTML+CSS)
  6. 使用监控宝监控网站和服务器的经验总结
  7. 2016年全网营销中太原网络营销师讲【新媒体】思路
  8. 服务器上打开pdb文件,VS“没法查找或打开PDB文件”是怎么回事?如何解决
  9. Docker: Create Image from Container
  10. 牌上的花色-MUD中的玩家