机器学习笔记(一):机器的学习定义、导数和最小二乘 | 凌云时刻
凌云时刻 · 技术
导读:从大型主机到PC,再到无人驾驶,到机器人,我们正处在技术急速发展的裂变拐点。如何获得数据,如何让数据产生价值,进而影响决策?曾经需要花费数天才能完成的数据处理,现在只要几分钟,这全归功于机器学习算法。从今天起,我们将开始连载机器学习的算法笔记系列,本篇为该系列的第一篇。
作者 | 计缘
来源 | 凌云时刻(微信号:linuxpk)
机器学习的定义
非正式定义:在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域。
正式定义:对于一个计算机程序来讲,给他一个任务T和一个性能测量方法P,如果在经验E的影响下P对T的测量结果得到了改进,那么就说该程序从E中得到了学习。
举个机器下棋的例子,经验E对应着程序不断和自己下棋的经历,任务T是下棋,性能测量方法P可以是它在和人类棋手对弈的胜率。如果说机器与人类棋手对应的胜率不断提高,那说明机器从自己和自己下棋的过程中得到了学习。
机器学习四大内容简述
监督学习(Supervised Learning)
学习理论(Learning Theory)
无监督学习(Unsupervised Learning)
强化学习(Reinforcement Learning)
监督学习(Supervised Learning)
如上图所示,描述了假定城市区域的房屋面积与售价的关系。横坐标是房屋面积,纵坐标是售价。如果我想在横轴随意取一个面积,就希望知道它的售价,那么就需要一个方法通过面积确定售价。图中的方法是通过一条标准线来找到对应的售价。那么这条线要如何得来呢?
在这个示例中,我们已经给出了若干房屋面积和售价的数据集,即已经告知了机器若干问题和答案。机器通过这些数据集中面积和售价的关系,自我学习从而得出这条线,这种学习类型就属于监督学习类型。
因为这种场景中的数据集取值都是连续的,所以这类问题都可以归为线性回归的问题。
如上图所示,描述了肿瘤大小与恶性良性的关系。横坐标是肿瘤的大小,纵坐标表示恶性或良性,与连续的房屋售价不同的是,这里的纵坐标只有两个值0或1。
这个示例中,我们同样给出了一组肿瘤大小与恶性良性的数据集,我们希望机器通过这组答案数据集自我学习然后有能力通过肿瘤大小判断出恶性或良性。当然这里只是示例,实际中会有很多其他的横轴指标值用于判断学习。
该示例中这种离散的数值问题可以归为分类的问题。
学习理论(Learning Theory)
任何具体的方式方法背后都有一个或多个理论进行支撑,机器学习也不例外。
这一大块的内容贯穿整个机器学习,包括人工智能和机器学习正式诞生之前的定理证明,理解为什么学习型算法是有效的。每种学习型算法需要多少训练数据,比如上面的房屋售价示例到底需要多少房屋的样本。以及机器学习渗透在我们生活中的真实应用场景等等。
无监督学习(Unsupervised Learning)
如果我现在有一组不知道任何信息的数据集,然后需要机器进行分析然后给出这组数据集中的几种共性或者相似的结构,将其聚类,这个方式就称之为无监督学习。即我们不会提供机器问题和答案,只提供数据,需要机器自我学习和分析找出共性进行聚类。
无监督学习的应用场景很多,当下流行的各种P图软件都或多或少的用到了这类算法,比如图的修复功能,抠图功能,像素化等一些滤镜都是对像素的聚类。还有声音驳杂功能,从嘈杂的声音中提取出有用的声音等。
强化学习(Reinforcement Learning)
强化学习是机器学习的精髓,更贴近机器的自我学习,用在不能通过一次决策下定论的情形中,比如分析病人肿瘤病情的例子,通过监督学习,我们给定了确切的答案,不是良性就是恶性,即我们做的决策要么对,要么错。但在强化学习中,在一段时间内会机器做出一系列决策。比如我们编写一个程序让一架无人机做出一系列特技表演动作,这种场景就不是一次决策能实现的了的。
那么强化学习究竟是什么?在它背后有一个称为回报函数的概念。比如我们训练宠物狗坐下、握手等行为,每当小狗做出的正确的行为,我们都会给小狗奖励,比如摸摸头进行鼓励或者给一块小骨头。渐渐的小狗就知道做出怎样的行为有奖励,怎样的行为没有奖励,即学会了坐下和握手的行为。这就很类似强化学习的理论,我们需要找到一种方式,来定义我们想要什么,如何定义一个好的行为和一个坏的行为,然后就需要一个合适的学习型算法来获得更多的回报和更少的惩罚。
监督学习
线性回归
线性回归是监督学习中相对简单也但很实用的一个数学方法,它是用于确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。我们先从一元线性回归看起。
一元线性回归顾名思义只包括一个自变量和一个因变量,且二者的关系可用一条直线来近似表示,比如上文中的卖房示例,假设我们的分析数据如下表所示:
这组数据是链家网站望京二手房的数据,如果把这些数据画在二维坐标内,就可以得到一个散点图,就像上文图一所示,如果我们想得知房屋面积和售价的关系,就可以利用一元线性回归来画出一条拟合直线。
如何画出拟合直线
首先我们知道一元线性函数的表达式为 ,该函数可以在二维坐标系内画出一条直线,并且 的值随x的值变化而变化,既 是自变量, 是因变量。假设上面给出的数据房屋面积为 ,售价为 ,那么每一个实际的x值都会有一个实际的y值。那么对于我们要画出的拟合直线来讲,每一个实际的x值都会有一个通过拟合直线预测而来的y值,我们期望的结果是每个 的实际值与预测值的差的平方和最小,也就是预测出的值和真实的值差距越小,那么认为我们画出的这条拟合直线称为回归线。用公式表达为:
实际预测实际预测实际预测
因为y的预测值可以由函数 求得,所以代入上面的公式可得:
所以监督学习中的线性回归方法就是通过大量的数据样本由机器求得 和 的值,使得函数 的值最小,那么回归线也就求出来了,既称为算法收敛。
如何求函数的最小值
说到函数的最小值,那就要引入导数这个数学工具了,下面我从几何角度来解释什么是导数,它和函数的最小值有什么关系。
导数与斜率
如上图所示,在图中的二维坐标系中,有一条曲线,一条直线,该直线为曲线的切线,相交于点 ,该点的 轴坐标值为 。
如上图所示,我们再画一条直线 ,使其经过曲线上的点 和点 ,直线 称为曲线的割线。当点 逐渐接近点 时,直线 就会逐渐接近直线 ,所以说切线其实是割线的极值。
如上图所示, 表示 的变化量,并且我们假设直线 的函数为 ,那么 表示函数 的变化量。在几何学中,一条直线关于横坐标轴倾斜程度的量,称为斜率,并且定义对于两个已知点 和 ,如果 不等于 ,则经过这两点直线的斜率为 。
所以直线 的斜率为 。因为点 和 的坐标分别为 和 ,所以我们代入可得:
上文中说到切线其实是割线的极值,那么切线 的斜率就是当 趋向于0时的值:
接下来我们再来看导数,导数是微积分中重要的基础概念,它描述了一个函数在某一点附近的变化率,如果函数的自变量和因变量都是实数的话,那么函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率:
极值
在数学中,极大值与极小值是指在一个域上函数取得最大值或最小值的点的函数值。这个域可以是整个函数域,也可以是整个函数域中的局部域。所以一个函数有局部极大极小值,也有全局极大极小值。
说到极值,又不得不说到微积分中的另外一个概念,驻点。
如上图所示,在二维坐标中展示了一个一元函数的曲线,点 、、、、 都是该曲线上的局部极大值或局部极小值,这些点就称为驻点。在每个驻点,函数在该域的输出值停止增加或减少,即变化率为零。每个驻点其实就是局部域曲线的切点。结合上文中提到的导数是描述函数在某一点附近的变化率,所以可得一元函数的局部极值点的导数为零。
假设有一个一元函数 ,该函数的导数通过上面的导数公式可得 ,并且该函数代表的曲线为下凹曲线,所以该函数的最小值为 ,即当 等于 时 的值最小。
f′(x
二元函数的最小值
上文中 是一个二元函数,实质上道理一样,我们可以把二元函数图像设想成一个像碗一样的曲面,那么最小值就是碗底,即曲面的最凹陷部,那么从360度任意方向上看,偏导数都是0。
偏导数
在数学中,一个多元函数的偏导数是它关于其中一个变量的导数,而保持其他变量恒定。全导数自然就是所有变量的导数。函数 关于变量 的偏导数写为 或 偏导数符号 是全导数符号 的变体。
因为曲面上的每一个点都有无穷多条切线,所以描述这种函数的导数非常困难,所以通常选择其中一条切线,并求出它的斜率,将其他变量视为常量,这就是偏导数。
所以 的最小值就是分别求 和 的偏导数,然后可以得到一个关于 和 的二元方程组,就可以求出 和 了,这个方法被称为最小二乘法。
F(a,b)的最小值
首先我们把 F(a,b) 展开:
然后利用平均数,把上面式子中每个括号里的内容进一步简化,比如:
则:
所以 可以继续简化为:
然后我们分别对aa和bb求偏导数,并且令偏导等于0:
消掉
最后得到关于 a, 的二元方程组为:
最后得出 和 的求解公式:
将上文中的那组数据带入后可算的 和 的值:
从带入结果来看,这条回归线的函数为 ,现在我们就可以通过回归线来做一些预测,比如上图中计算了面积为35.5平方米和55.26平方米房子的售价,分别为169.29万和464.4万。
评价回归线的拟合程度
因为我们画出的拟合直线只是一个近似值,所以需要有一个标准来评判回归线拟合程度的好坏,即算法收敛情况。我们来看几个概念:
总偏差平方和
总偏差平方和又称总平方和(SST,Sum of Squares for Total),是每个因变量的实际值与因变量的平均值的差的平方和,即反映了因变量取值的总体波动情况:
回归平方和
回归平方和(SSR,Sum of Squares for Regression)是因变量的回归值(回归线上的 值)与其平均值的差的平方和。它是由于自变量 的变化引起的 的变化,反映了 的总偏差中由于 与 之间的线性关系引起的 的变化部分:
误差平方和
误差平方和(SSE,Sum of Squares for Error)是因变量的各实际值与回归值的差的平方和,反映了除xx对yy的线性影响之外的其他因素对yy变化的作用:
因为总偏差是包含了所有可能对
y值有影响的因素,比如房子的售价不可能只有面积来决定,还包括地域、户型、楼层、楼龄等等因素。回归平方和只包含xx对yy变化的影响,即只是面积对售价的影响。
所以拟合优度 R2=SSR/SST或者
R2=1−SSE/SST, R2的取值范围在0到1之间,越接近1说明拟合程度越好,说明x对y值的影响权重越大。
比如如果所有的点都在回归线上,那说明 等于0,则说明 的变化100%由 的变化引起,没有其他因素会影响 ,则回归线能够完全解释 的变化,如果 R2的值很低,则说明 和 之间可能根本就不存在线性关系。R2=1
将数据带入计算得出最拟合优度为0.92,拟合程度还不错,说明在特定的望京区域内房屋面积是主要影响价格的因素。
总结
我认为从线性回归开始学习机器学习是最好的切入点,而且线性回归也是监督学习最根本的支撑,比如梯度下降等算法都需要基于线性回归的知识来理解。另外在我看来人工智能(AI)并不是要造一个机器人脑,这是伪科学。人工智能只是利用机器强大的计算能力,用数学工具,通过对大量数据的统计分析从而得出近似最优答案。所以说,人类和AlphaGO下棋,不是输在智力,而是输在身体机能。
END
往期精彩文章回顾
Kafka从上手到实践 - 实践真知:搭建Kafka相关的UI工具
Kafka从上手到实践 - Kafka集群:启动Kafka集群
Kafka从上手到实践 - Kafka集群:Kafka Listeners
Kafka从上手到实践 - Kafka集群:配置Broker
Kafka从上手到实践:搭建Zookeeper集群
Kafka从上手到实践-Zookeeper CLI:CRUD zNode
Kafka从上手到实践 - 初步认知:Zookeeper
Kafka从上手到实践:Kafka Java Consumer
Kafka从上手到实践:Kafka Java Producer
Kafka CLI:Reseting Offset & Config CLI
长按扫描二维码关注凌云时刻
每日收获前沿技术与科技洞见
机器学习笔记(一):机器的学习定义、导数和最小二乘 | 凌云时刻相关推荐
- 机器学习笔记——神经网络与深度学习
机器学习笔记--神经网络与深度学习 一.神经网络引言 二.神经元模型与激活函数 2.1 神经元模型 2.2 激活函数 2.2.1 sigmoid & tanh 2.2.2 ReLU激活函数 2 ...
- 神经网络与机器学习 笔记—小规模和大规模学习问题
监督学习的可行性依赖于下面的关键问题: 由N个独立同分布的样本(X1,D1),(X2,D2),-,(Xn,Dn) 组成的训练样本是否包含了构造具有良好泛化性能的机器学习的足够信息? 计算考虑: 神经网 ...
- 机器学习笔记(十六)强化学习
16.强化学习 16.1任务与奖赏 强化学习(reinforcementlearning)的过程就是机器通过一系列的动作和环境交互,从而得到最佳的动作序列.图示: 强化学习任务用马尔可夫决策(Mark ...
- 【Datawhale可解释性机器学习笔记】预备知识学习
人工智能黑箱子灵魂之问 AI的脑回路是怎样的? AI如何做出决策? 是否符合人类的直觉和常识 如何衡量不同特征对AI预测结果的不同贡献? AI什么时候work?AI什么时候不work? AI有没有过拟 ...
- 机器学习笔记 - 基于传统方法/深度学习的图像配准
一.图像配准 图像配准是将 一个场景的不同图像变换到同一坐标系的过程.这些图像可以在不同的时间(多时间配准).由不同的传感器(多模态配准)和/或从不同的视点拍摄.这些图像之间的空间关系可以是 刚性的 ...
- 机器学习笔记 - 什么是元学习?
一.什么是元学习? 学习模型的性能取决于其训练数据集.算法和算法的参数.需要许多实验来找到性能最佳的算法和算法的参数.元学习方法有助于找到这些并优化实验数量.这样可以在更短的时间内做出更好的预测. 元 ...
- 机器学习笔记一:导论
机器学习笔记一:导论 1.定义 2.课程主要内容 监督学习(supervised learning) 例子:<房价预测>给定一组已知房价数据,使用算法预测待定房子的价格. 例子:<乳 ...
- 李弘毅机器学习笔记:第二章
李弘毅机器学习笔记:第二章 回归定义和应用例子 回归定义 应用举例 模型步骤 Step 1:模型假设 - 线性模型 一元线性模型(单个特征) 多元线性模型(多个特征) Step 2:模型评估 - 损失 ...
- 机器学习基石笔记5——为什么机器可以学习(1)
转载请注明出处:http://www.cnblogs.com/ymingjingr/p/4271742.html 目录 机器学习基石笔记1--在何时可以使用机器学习(1) 机器学习基石笔记2--在何时 ...
- Python机器学习笔记:sklearn库的学习
自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...
最新文章
- ssh框架点击按钮就404_设置404错误页面的5大关键因素
- mapgis明码文件转为点线面文件_干货|MAPGIS的二十一个实用方法及技巧
- 你好,C++(34)有一只叫做多利的羊 6.2.4 拷贝构造函数
- c语言陷阱试题,超级经典计算机二级C语言陷阱考试题.doc
- [实战] 用数人云,部署弹性 ELK 集群就五步 1
- 代码评审-如何保证缓存与数据库的读写一致性?
- kinect获取实时深度数据
- 牛客网Java笔试题目
- 面经 | 靠一份PPT做自我介绍,成功拿下了互联网名企offer
- 为什么有时候字母'f'不能从pdf文件中拷贝出来
- 台式计算机开机风扇不转,台式机开机风扇转一下停一下
- 数据库中违反外键约束的情况
- 录播服务器系统调试内容,高清录播服务器系统选择注意事项
- java ts流封装工具_从 Java 到 TS,阿里妈妈的接口管理一把梭
- 《OD学Oozie》20160807Oozie
- 22. 将文件映射到内存
- git clone 时出现fatal:unable to access 如下情况报错及解决办法
- linux跳过文件系统检查,CentOS – 跳过“检查根文件系统”
- C/C++代码实现各种控制台游戏,大神请收下我的膝盖!
- EDA开源仿真工具verilator入门5:调试