-1、写在最前
本人在本科期间接触了机器学习的实践,当时搞了个手势识别,后面弄完就忘了,也没有深入去学。
直到毕业设计接触到深度学习,才重新捡了一些机器学习基础知识,当然,没有怎么深入学习,因为全程敲代码去了。
硕士研究生期间,主要在做医学图像检测分割分类相关的深度学习项目,(之后我也会更新一些项目的经验。
深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)的一种。那么我们肯定从ML开始接触,最后进入DL的领域,那么ML的知识体系就很重要的了。
现在先按照机器学习的路线进行学习,也算是走一个路线了吧。本文会整理好这条路线上他人写好的文章,减少查找知识的时间。
0、知识体系
从csdn上看到了一张图,我觉得很适合做知识体系的图。本文着重介绍理论部分,关于右侧的实操部分另起文章讲述。
原文链接: 成为一名机器学习算法工程师,你需要这些必备技能
那么话不多说,我们直接按照这个流程走下去。
1、基础理论
1.1 Bias-Variance Tradeoff(偏差与方差的权衡)
结论就是:
-
对于干净且足够大的数据集:
- 模型复杂度越大,估计误差越小,近似越好。
- 模型复杂度越大,偏差(Bias)越小
- 模型复杂度越大,方差(Variance)越小
-
对于嘈杂的数据集:
- 更高的模型复杂度并不意味着更低的估计误差
- 模型复杂度越大,偏差(Bias)越小
- 模型复杂度越大,方差(Variance)越大
由于现实世界中的数据集几乎总是含有噪声且有限的,因此我们需要找到机器学习模型的最佳复杂度,使我们在数据集上的误差最小。更高的复杂性并不能保证模型是最适合的。
1.2 VC Dimension(Vapnik-Chervonenkis Dimension)
原文链接: VC维(VC Dimension)
用来衡量一个模型的复杂度
总结:
- 对于线性函数作为判别函数,k 维度 需要 k+1 VC维
- 对于正弦函数作为判别函数,仅在一维空间中,总可以调节相位和周期来分开两类。VC维有∞
- 对于最近邻模型,无论在任何空间中,我们总可以将判断一批距离为0 的为正类,其他都为父类。VC维就是∞
- 注意,最近邻模型变为k近邻模型后,VC维就下降了,这是因为VC维要求分类外还要求分得正确,那么分不正确的概率就上升了,VC维自然就下降了。
推论:
- VC维越大,分类器越灵活(鲁棒)
- VC维是一个理论上的概念,实际上它很难被准确得算出
- 从量化上考量,如果我们认为分类器很灵活(鲁棒),它的VC维就很可能很高。
1.3 信息论
原文链接: 信息论与机器学习
如何用最少的编码表示所要传递的信息就是我们要研究的目标
注意:交叉熵和KL散度在机器学习中的应用
信息论中有很多理论可以应用在机器学习中,其中交叉熵和KL散度在各类模型中出现的频率非常高。
我们常将交叉熵作为损失函数使预测的分布和真实的分布尽量接近。
1.4 正则化
原文链接: 机器学习必知必会:正则化
机器学习中经常会在损失函数中加入正则项,称之为正则化(Regularize)
目的:防止模型过拟合
原理:在损失函数上加上某些规则(限制),缩小解空间,从而减少求出过拟合解的可能性
在数学上我们可以证明岭估计的参数模要严格小于最小二乘估计的参数模,换句话说,我们可以认为加入L2正则项后,估计参数长度变短了,这在数学上被称为特征缩减(shrinkage)。
总结
正则化有多种方式,包括L0(向量中非零元素个数),L1(向量中元素绝对值之和),L2(向量的模)。但是L0范数的求解是个NP完全问题
,而L1也能实现稀疏并且比L0有更好的优化求解特性而被广泛应用。L2范数指各元素平方和后开根的值,可令 每个元素接近于0,虽然不如L1更彻底地降低模型复杂度,但是由于处处可微降低了计算难度
附
NP(Nondeterminism Polynomial,非确定性多项式)问题与NP完全问题的定义:对于一个问题,如果可以在多项式时间内验证一个解的可行性,那么这个问题就属于NP问题。 而NP完全问题则是指满足两个条件:首先,问题本身是一个NP问题;其次,该问题能够通过多项式时间的约化转化为其他NP问题
1.5 最优化理论
原文链接: 机器学习数学基础——最优化理论
最优化理论是数学的一个分支,它主要研究的是在满足某些条件限制下,如何达到最优目标的一系列方法。
它有三种类型:
- unconstrained optimization problem 无约束优化问题
- equality constraint optimization problem 等式约束优化问题
- inequality constraint optimization problem 不等式约束优化问题
提到了两种优化理论:拉格朗日乘子法和KKT(广义的拉格朗日乘子法)
- 线性规划
当目标函数和约束条件都为线性函数的时候,我们称之为线性规划。这是相对容易求解的优化问题 - 二次规划
如果目标函数是二次函数,而约束条件为线性函数,那么这种最优化问题通常被称为二次规划 - 非线性规划
如果目标函数和约束条件都是非线性函数,那么这类最优化问题就被称为非线性规划问题
KKT即Karush-Kuhn-Tucker,可以用在不等式约束优化问题中,换句话说,当不存在不等式约束条件时,那么它和拉格朗日乘子法就是等价的。
2、概率和统计基础
2.1 大数定律和中心极限定理
大数定律(Central Limit Theorem)
原文链接: 山顶洞人学机器学习之——伯努利大数定律(详细版)
原文链接: 大数定理的通俗理解(辛钦、伯努利、切比雪夫大数定理)
大数定律可以分为: 伯努利大数定律、辛钦大数定律、柯尔莫哥洛夫强大数定律和重对数定律四种
定义: 指得是某个随机事件在单次试验中可能发生也可能不发生,但在大量重复实验中往往呈现出明显的规律性,即该随机事件发生的频率会向某个常数值收敛,该常数值即为该事件发生的概率。
为什么叫大数定律:概率论主要的目标是研究不确定性。正如我们抛掷一枚硬币,我们在进行实验之前根本不知道究竟是正面朝上还是反面朝上,它是不确定性事件,但是我们可以估计出正面朝上还是反面朝上的概率值,估计概率值的方法就是用大数定律,即在大量重复实验的过程中,用事件发生的频率去近似估计它的概率。所以称为大数定律。
-
伯努利大数定律:
- 是指在N重伯努利实验中,在实验次数足够大的条件下,其中某一事件发生的频率n/N可无限接近其发生的概率,因此可用频率近似估计来代替概率。在这个定义中必须注意伯努利实验蕴含着只有两个相互独立的事件发生,并且发生的概率是不变的。现实生活中的抛硬币是典型的伯努利实验。
- 伯努利大数定律是指在进行多次重复的实验中,某一个事件发生的频率可以近似估计为它的概率,既可以用频率来估计概率。
-
辛钦大数定理:
- 揭示了算术平均值和数学期望的关系||伯努利大数定律是辛钦伯努利大数定律的一个特例。
-
切比雪夫大数定律:
- 揭示了样本均值和真实期望的关系
- 相较于辛钦大数定律,切比雪夫大数定理并未要求同分布,更具一般性。
总结: 大数定理将属于数理统计的平均值和属于概率论的期望联系在了一起。
中心极限定理(Central Limit Theorem)
定义:
中心极限定理是指,给定足够大的样本量,无论变量在总体中的分布如何,变量均值的抽样分布都将近似于正态分布。详细来讲,给定一个任意分布的总体,从这个总体中抽取n个样本,总共随机抽取m次,计算这m次的样本的平均值,则这些平均值的分布是正态分布,并且这些平均值的均值近似等于总体均值,平均值的方差为总体方差除以n。
在这里,要把握以下关键点:
- 总体的分布是任意的,可以是卡方分布,可以是指数分布,可以是均匀分布,可以是…….
- 从总体中要抽n个样本,总共要抽m次,这里的m和n都要求越大越好”。
- 这m次样本的平均值的分布是正态分布,这种分布叫做抽样分布。
- 这些样本平均值的均值是近似为总体均值,也就是说,求了两次均值,第一次把这个m个样本群对应位值的样本间做一个平均,做完后得到一个抽样分布,再做一次平均,得到近似总体平均。
总结:
中心极限定理描述的是:当样本量和抽样次数很大
的时候,纵使总体分布如何,样本的抽样分布趋近于正态分布
,且样本平均值的均值近似于总体均值
。利用这个定理,可以利用样本来推断整体。但是尤其要注意
的是,样本量要求要大
,不然,样本平均值不类似于总体均值;抽样次数也要大
,不然分布达不到正态分布
。
2.2 常用概率分布
原文链接: 常用的几种概率分布
4种离散概率分布,伯努利分布、二项分布、几何分布和泊松分布。
2种连续概率分布,正态分布、幂律分布,常被用来表示两种商业模式
2.3 假设检验理论
原文链接: 推论统计之——假设检验
看到一个很有意思的说法:假设检验,其实就是不确定环境下的反证法。
关键词: 假设检验,第一类错误,第二类错误,区间检验,p值
前置知识: 分布函数,概率分布
2.4 最大似然理论
最大似然估计(Maximum Likelihood Estimation,MLE)是统计学中一种常用的参数估计方法。它基于观测数据,通过寻找最大化参数的似然函数来估计参数的值。
最大似然估计中采样需满足一个很重要的假设,就是所有的采样都是独立同分布的。
2.5 最大后验理论
原文链接: 最大后验估计(MAP)
最大后验估计(maximum a posteriori probability estimate, 简称MAP)
与最大似然估计类似,但是,在似然函数后面多乘了一项,即“待估计参数的先验分布”。故最大后验估计可以看作规则化的最大似然估计。
- 在MAP中我们应注意的是:
MAP与MLE最大区别是MAP中加入了模型参数本身的概率分布,或者说。MLE中认为模型参数本身的概率的是均匀的,即该概率为一个固定值。
2.6 EM算法
原文链接: EM算法详解
-
EM(Expectation-Maximum)算法也称期望最大化算法
-
EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以算法被称为EM算法(Expectation-Maximization Algorithm)。
-
基本思想:首先根据
己经给出的观测数据
,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。 -
基础知识:极大似然估计和Jensen不等式
- Jensen不等式
-
EM算法详解:
-
算法的简单步骤:
- 先初始化一个参数Aj;
- 然后先进行E步的联合分布的条件概率期望计算
- 再进行M步的极大化似然,得到新的参数Aj+1;
- 如果Aj+1已经收敛,就结束算法,否则就继续进行E步和M步的迭代
思考:
- 传统EM算法对初始值敏感,聚类结果随不同的初始值而波动较大。总的来说,EM算法收敛的优劣很大程度上取决于其初始参数。针对传统EM算法对初始值敏感的问题,有很多人提出了新的改进。
- EM算法是否一定收敛? 结论:EM算法可以保证收敛到一个稳定点,即EM算法是一定收敛的。
- 如果EM算法收敛,能否保证收敛到全局最大值? 结论:EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法。如果目标是凸的,那可以收敛到全局最大值
总结:
EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
举例:
一个最直观了解EM算法思路的是K-Means算法。在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。当然,K-Means算法是比较简单的,高斯混合模型(GMM)也是EM算法的一个应用。
2.7 贝叶斯理论
-
定义: 是统计决策模型的组成部分。 就是在不完全情报下,对部分未知的状态用主观概率估计,然后用贝叶斯公式对发生概率进行修正,最后再利用期望值和修正概率做出最优决策。过程就是先验-后验-分类(决策)
-
区分:
- 贝叶斯定理: 也称贝叶斯推理,是由A概率和条件概率P(B|A)计算后验概率P(A|B)的理论,贝叶斯定理包含贝叶斯公式。
- 贝叶斯统计: 基于叶斯理论的系统的统计推断方法,贝叶斯学派的产出。
- 贝叶斯估计: 利用贝叶斯定理结合新的证据和以往的经验,形成一种计算假设概率的方法,基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身。
-
算法流程:
- 先验概率P(θ)选择: 在使用贝叶斯理论进行推断之前,我们需要选择适当的先验概率P(θ)。P(θ)表示我们对事件发生概率的主观或经验上的估计。
- 似然函数P(D|θ)建模: 似然函数P(D|θ)描述了在给定一些参数的情况下观测数据出现的可能性。它是贝叶斯推断的核心部分,用于计算给定数据下参数的后验概率P(θ|D)。
- 贝叶斯公式计算: 贝叶斯公式是贝叶斯推断的基本公式,用于计算后验概率。贝叶斯公式的数学表达式为:
后验概率P(θ|D) = 先验概率P(θ) × 似然函数P(D|θ) / 数据P(D)
。 - 后验概率更新: 在得到后验概率后,我们可以将其作为下一轮推断的先验概率。通过持续观测和更新,每次都使用新的证据更新先验概率,从而不断改进对事件发生概率的估计。
2.8 贝叶斯分类错误率
这部分没看到有好的讲解,因此自己搜了一下网络的知识。
定义: 贝叶斯分类错误率是指在贝叶斯分类器中,将样本分到错误的类别的比例。
原理: 贝叶斯分类器的基本原理是基于贝叶斯定理,根据样本的特征和类别的先验概率,计算后验概率,并将样本分到具有最高后验概率的类别。
例子: 如果我们考虑二元分类问题,假设有两个类别A和B,贝叶斯分类器根据观测到的特征对样本进行分类。如果贝叶斯分类器将一个属于类别A的样本错误地分类为类别B,则产生了一个分类错误。同样地,如果一个属于类别B的样本被错误地分类为类别A,也会产生一个分类错误。
公式: 贝叶斯分类错误率是错误分类的样本数除以总样本数得到的比例。它可以表示为:
分类错误率 = (分类错误的样本数) / (总样本数)
3 基础数据结构与算法
- 数据结构分为逻辑结构和物理结构。
- 从逻辑结构上,数据结构分为:
- 集合结构(数据元素之间没有关系)
- 线性结构(数据元素之间存在一对一的关系)
- 和图形结构(数据元素之间存在多对多的关系)
- 从物理结构上,数据结构分为:
- 顺序结构(把数据元素放到地址连续的存储单元里面)
- 链式结构(把数据元素存放在任意的存储单元里面,这组存储单元可以是连续的也可以是不连续的)
3.1 树与相关算法
- 树的概念:
原文链接: 算法:什么是树以及树相关概念
- 树的相关算法:
原文链接: 数据结构—树(彻底理解递归算法)
3.2 图与相关算法
- 图的概念与相关算法:
原文链接: 数据结构—图
3.3 哈希表与相关算法
哈希表,其实是两种数据结构的统称,它包括有:
- 哈希集合:是集合数据结构的一种实现方式,存储了在哈希函数计算下不相同的值或对象
- 哈希映射:是键值对映射表的一种实现方式,存储了 key-value 键值对
不管是哪一种,它们都依赖于哈希函数,哈希函数又称散列函数
原文链接: 哈希表数据结构与相关算法题
3.4 矩阵与相关算法
矩阵这个概念就不说了
下面是相关算法
原文链接: 矩阵相关算法
监督学习
4 有监督学习算法
监督学习是机器学习中的一种训练方式,是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习,是从标记的训练数据来推断一个功能的机器学习任务。
4.1 KNN
放个参考连接给各位:: Python—KNN分类算法(详解)
注意它与K-means的区分。这两个看起来有点像,但是本质上有区别 -> K-means是无监督算法。
KNN(K最近邻,K Nearest Neighbors),从字面意义上理解,就是距离为K以内的都是我的同类。所以这个参数K就显得非常重要了。
它是非参的、惰性的算法模型。
- 非参的意思并不是说这个算法不需要参数,而是意味着这个模型不会对数据做出任何的假设,与之相对的是线性回归(我们总会假设线性回归是一条直线)
- 惰性又是什么意思呢?想想看,同样是分类算法,逻辑回归需要先对数据进行大量训练(tranning),最后才会得到一个算法模型。而 KNN 算法却不需要,它没有明确的训练数据的过程,或者说这个过程很快。
4.2 朴素贝叶斯(Naive Bayes)
原理和推导:: [机器学习] 分类 — Naive Bayes(朴素贝叶斯)
前提:
朴素贝叶斯算法假设所有特征的出现相互独立互不影响,每一特征同等重要,又因为其简单,而且具有很好的可解释性一般。相对于其他精心设计的更复杂的分类算法,朴素贝叶斯分类算法是学习效率和分类效果较好的分类器之一。朴素贝叶斯算法一般应用在文本分类,垃圾邮件的分类,信用评估,钓鱼网站检测等。
过程:
4.3 逻辑回归(Logical Regression,LR)
一句话概括逻辑回归:逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
4.4 决策树
从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。
- 优点:
- 简单的理解和解释,树木可以可视化;
- 需要很少的数据准备,其他技术通常需要归一化。
- 缺点:
- 决策树学习者可以创建不能很好的推广数据的过于复杂的数,因为会产生过拟合。
- 改进:
- 随机森林
随机森林是多棵决策树的集成
4.5 Boosting&GBDT&Bagging
关系:
Boosting是一种著名的监督学习算法框架,核心思想为迭代地使用一系列弱学习器(准确率仅比随机猜测略高)来获得较高的精度
而GBDT是基于Boosting的一种算法。
Bagging (Bootstrap aggregating)
通常情况下,单学习器容易出现两种缺点:
- 弱学习器:参数少、拟合能力差、偏差大;
- 强学习器:参数多、拟合能力强、方差大(容易过拟合、对噪声敏感);
几种集成学习的策略:
- Bagging:并行独立训练多个强学习器。平均结果,降低方差
- Boosting:串行训练多个弱学习器,每个学习器的训练需要基于上一步的结果。汇总结果(例如加权平均/求和),降低偏差(也会降低方差)
- Stacking:将弱学习器的输出作为输入,训练一个模型,用得到的参数将它们组合起来
将决策树与这些算法框架进行结合所得到的新的算法:
- Bagging + 决策树 = 随机森林
- AdaBoost + 决策树 = 提升树
- Gradient Boosting + 决策树 = GBDT
4.6 神经网络
4.7 FM(Factorization Machine)
原理和代码:FM算法原理及python实现
因子分解机(Factor Machine,MF)是一种机器学习预测模型,在模型原理方面主要有以下三个优点:
可以解决高维稀疏矩阵问题
具有线性复杂度
相比于其他矩阵分解类的模型,FM允许更丰富的输入维度
4.8 支持向量机(Support Vector Machine, SVM)
简单理解:机器学习(四):通俗理解支持向量机SVM及代码实践
详细推导:机器学习:支持向量机(SVM)
5 无监督学习算法
5.1 K-means
简单理解:【机器学习】K-means(非常详细)
5.2 层次聚类
5.3 DBSCAN
Density-Based Spatial Clustering of Applications with Noise,意即:一种基于密度,对噪声鲁棒的空间聚类算法
简单理解:20分钟学会DBSCAN
5.4 混合高斯模型
也叫高斯混合模型(Gaussian Mixture Model),应用了EM算法
简单理解:高斯混合模型(GMM)
5.5 LSI&pLSA&LDA
5.6 PCA
简单了解:【机器学习】降维——PCA(非常详细)
5.7 SVD&NMF
SVD(奇异值分解,Singular Value Decomposition)
NMF(非负矩阵分解,Non-negative Matrix Factorization)
简单了解:SVD-矩阵奇异值分解 —— 原理与几何意义
简单了解:无监督学习——非负矩阵分解(NMF)
5.8 word2vec
简单了解:深入浅出Word2Vec原理解析
6 架构设计
6.1 数据仓库&数据流架构
原文链接: 数据仓库架构及数据模型介绍
数据仓库(Data Warehouse) 是一个用于存储、管理和分析大量结构化和非结构化数据的集中式存储系统。它的设计目标是支持企业决策和业务智能。数据仓库将来自各种不同数据源的数据进行整合,清洗和转换,以便用户可以方便地进行数据分析和洞察。数据仓库通常按照主题进行组织,具有高度集成性和一致的数据模型。注意和数据库的概念进行对比
数据流架构(Data Flow Architecture) 是一种架构模式,用于描述数据在系统中以流的方式进行处理和传递的方式。数据流架构强调数据的连续流动和转换,使数据在不同的处理单元之间流动,从而实现数据的实时处理和分发。数据流架构通常基于事件驱动的原则,并使用消息队列、流处理引擎和相关工具来管理和处理数据流。其实就是数据的格式和不同单元的适配
关键词: 数据库与数据仓库、OLTP(在线事务处理,On-Line Transaction Processing)与OLAP(在线分析处理,On-Line AnalyTIcal Processing)
6.2 机器学习相关服务架构
在机器学习领域,有几种常见的服务架构模式可以用于构建和部署机器学习相关的服务。下面是其中几种常见的架构模式:
- 单体应用架构(Monolithic Architecture): 单体应用架构是最简单的架构模式之一,其中所有的机器学习相关组件都打包在一个单一的应用中。这种架构模式适用于规模较小的应用,不涉及太复杂的业务逻辑和数据处理需求。
- 客户端-服务器架构(Client-Server Architecture): 客户端-服务器架构将机器学习服务拆分为前端客户端和后端服务器两部分。客户端负责用户界面和用户交互,而服务器端负责数据处理、模型训练和推理。这种架构模式可以实现分布式处理和集中化管理。
- 微服务架构(Microservices Architecture): 微服务架构将机器学习相关的组件划分为一系列独立的微服务,每个微服务负责一个特定的功能。这种架构模式使得团队可以独立开发、测试和部署每个微服务,并且可以在需要时进行扩展和升级。
- 事件驱动架构(Event-Driven Architecture): 事件驱动架构基于事件的消息传递方式,将机器学习服务作为事件的生产者或消费者。这种架构模式允许实时地处理数据并响应事件,适用于需要实时决策和洞察的应用场景。
- 无服务架构(Serverless Architecture): 无服务架构将机器学习服务部署在无服务器计算平台上,如AWS Lambda或Azure Functions。这种架构模式可以自动扩展,根据需求动态分配资源,仅在请求到达时才触发函数运行。
以上架构模式可根据具体应用场景和需求进行选择和组合。值得注意的是,每种架构模式都有其优缺点,应根据应用的规模、性能要求、团队能力等方面进行权衡和选择。
7 总结
理论部分已经结束了,下一章是偏向实践部分的。