上岸某中流985,下面是我总结的机器学习重要的以及比较难的知识点,以理解性(背诵)的题目为主,有错误的话感谢提出来哟:
表示偏难的知识点,可以结合机器学习课本周志华的理解一下
n维欧式空间中的n-1维线性子空间
ROC真正率和假正率
PR精准率与召回率
如果一个学习器的PR曲线包住了另一个,则
可以认为A的性能优于C
!、
正例 | 反例 | |
---|---|---|
正例 | TP(真正例) | FN(假负例) |
反例 | FP(假正例) | TN(真负例) |
精确率:P = TP/(TP+FP)表示预测成正例的样本有多少猜对了。
召回率:R =TP/(TP+FN)表示正例样本有多少被找回
举个例子解释:商家生产了一批货物出现问题,已经投入市场,可以根据一些特征判断是否出现问题,出现则找回
精确率:找回的样本中实际出问题的样本
召回率:找回出问题的样本占总出问题样本多少
真正利率 = 召回率
假正利率:FP/(FP+TN)
F1数是衡量模型性能的一个指标。它是模型精准率和召回率的加权平均,1表示最好,0表示最差。在分类问题中有时精准率和召回率不会同时都高,那么我们可以使用F1数。
F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} F1=P+R2×P×R= 样例总数 +TP−TN2×TP
傅立叶变换指:一个满足某些条件的函数可以表示成三角函数或他们的积分形式的线性组合。
机器学习:使用算法去解析数据,从中学习数据内部分布规律或者数据与数据、数据与标签之间的联系与差异,对新数据进行决定与预测。
深度学习:机器学习的一个子领域,它关心的是参照神经学科的理论构建神经网络,使用反向传播对大量未标注或半结构化的数据进行建模。
生成模型会学习数据的分布;判别模型学习的是不同类型数据之间的区别,不学习数据内部特点。在分类问题上,判别模型会优于生成模型。
判别模型求解的思路是:条件分布------>模型参数后验概率最大------->(似然函数\cdot 参数先验)最大------->最大似然
生成模型的求解思路是:联合分布------->求解类别先验概率和类别条件概率
常见的生成方法有混合高斯模型、朴素贝叶斯法和隐形马尔科夫模型等,常见的判别方法有SVM、LR等
与标准的k-folds 交叉检验不同,数据不是随机分布的,而是具有时序性的。如果模式出现在后期,模型仍然需要选择先前时间的数据,尽管前期对模式无影响。我们可以如下这么做:
fold1:training[1], test[2];
fold2:training[1 2], test[3];
fold3:training[1 2 3], test[4];
fold4:training[1 2 3 4], test[5];
fold5:training[1 2 3 4 5], test[6];
过拟合:具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
过拟合的原因:
训练数据中噪音干扰过大,使得学习器认为部分噪音是特征从而扰乱学习规则。
建模样本选取有误,例如训练数据太少,抽样方法错误,样本label错误等,导致样本不能代表整体。
模型不合理,或假设成立的条件与实际不符。
特征维度/参数太多,导致模型复杂度太高。
过拟合解决办法:
增加数据,降低模型复杂度,数据降维,dropout层,early stopping ,加正则化项
欠拟合:是指对训练样本的一般性质尚未学好。在训练集及测试集上的表现都不好。
欠拟合的原因
模型复杂度过低,特征量过少
解决办法:
增加特征数,增加模型复杂度,减少正则化系数
① 收集更多的数据较少的数据
② 随机过采样:少的一类复制多份
③ 随机欠采样:多的一类只抽取其中的一部分
④ 基于聚类的过采样:将某一类样本聚成几类
举个例子,说明使用集成学习会很有用。
① 模型尽可能的简单
② 采用正则化技术
③ 采用交叉验证的手段
① 数据集分割的有效性,如何分训练集与测试集
② 性能指标
https://blog.csdn.net/hellocsz/article/details/91904967
核函数:由于数据在低维空间线性不可分,映射到高维空间可以区分,核函数就是为了解决映射到高维空间计算量过大的问题,同时可以减轻噪音数据的干扰。
实质:特征向量内积的平方
常见的核函数:线性核、高斯核、拉普拉斯核
核技巧核心思想是:首先,通过某种非线性映射将原始数据嵌入到合适的高维特征空间;然后,利用通用的线性学习器在这个新的空间中分析和处理模式。
增强学习就是强化学习:外部环境对输出只给出评价信息而非正确信息。
现在大多数机器学习任务都是单任务学习。对于复杂的问题,也可以分解为简单且相互独立的子问题来单独解决,然后再合并结果,得到最初复杂问题的结果。但因为现实世界中很多问题不能分解为一个一个独立的子问题,各个子问题之间也是相互关联的,多任务学习就是为了解决这个问题而诞生的。把多个相关(related)的任务(task)放在一起学习。多个任务之间共享一些因素,它们可以在学习过程中,共享它们所学到的信息,相关联的多任务学习比单任务学习能去的更好的泛化(generalization)效果。
https://zhuanlan.zhihu.com/p/348873723
集成学习通过将多个弱分类器集成在一起,使它们共同完成学习任务,构建一个强分类器
理解举例:
https://blog.csdn.net/blank_tj/article/details/82229322?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.essearch_pc_relevant
(1) 防止梯度消失 ( sigmoid的导数只有在0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0)
(2) ReLU的输出具有稀疏性;
(3) ReLU函数简单计算速度快
深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标是从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。目前在神经机器翻译(Neural Machine Translation)、图像理解(Image caption)等场景都有广泛应用。
交叉熵在一般情况下更容易收敛到一个更好的解。
非线性,几乎处处可到,单调
减小图像尺寸即数据降维,缓解过拟合,保持一定程度的旋转和平移不变性。
防止过拟合。每次训练,都对每个神经网络单元,按一定概率临时丢弃。
扩张卷积,在保持参数个数不变的情况下增大了卷积核的感受野,同时它可以保证输出的特征映射(feature map)的大小保持不变。一个扩张率为2的3×3卷积核,感受野与5×5的卷积核相同,但参数数量仅为9个。
通道降维或者升维,保证卷积神经网络可以接受任何尺寸的输入数据
保留了图片的原有平面结构,调控depth,从而完成升维或降维的功能。
如果使用1x1的卷积核,这个操作实现的就是多个feature map的线性组合,可以实现feature map在通道个数上的变化。从而增加非线性
用多个小卷积核串联可以有大卷积核同样的能力,而且参数更少,另外有更多次的激活函数作用,增强非线性。
反卷积即转置卷积,正向传播时乘以卷积核的转置矩阵,反向传播时乘以卷积核矩阵
由卷积输出结果近似重构输入数据,上采样
反卷积也称为转置卷积,如果用矩阵乘法实现卷积操作,将卷积核平铺为矩阵,则**转置卷积在正向计算时左乘这个矩阵的转置 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cbgcsQiT-1643367003784)(https://www.zhihu.com/equation?tex=W%5E%7BT%7D)] ,在反向传播时左乘W,与卷积操作刚好相反,**需要注意的是,反卷积不是卷积的逆运算。
反卷积有哪些用途?
实现上采样;近似重构输入图像,卷积层可视化
批量梯度下降:
θ j ′ = θ j + 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x j i \theta_{j}^{\prime}=\theta_{j}+\frac{1}{m} \sum_{i=1}^{m}\left(y^{i}-h_{\theta}\left(x^{i}\right)\right) x_{j}^{i} θj′=θj+m1i=1∑m(yi−hθ(xi))xji
它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,随机梯度下降:
Randomly shuffle dataset;
repeat{
for i=1, … , 99{
θ j ′ = θ j + ( y i − h θ ( x i ) ) x j i \theta_{j}^{\prime}=\theta_{j}+\left(y^{i}-h_{\theta}\left(x^{i}\right)\right) x_{j}^{i} θj′=θj+(yi−hθ(xi))xji
}
}
小批量随机:
θ j : = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_{j}:=\theta_{j}-\alpha \frac{1}{10} \sum_{k=i}^{i+9}\left(h_{\theta}\left(x^{(k)}\right)-y^{(k)}\right) x_{j}^{(k)} θj:=θj−α101k=i∑i+9(hθ(x(k))−y(k))xj(k)
优点:训练速度快;
缺点:准确度下降,并不是全局最优;不易于并行实现。
很有可能是梯度消失了,它表示神经网络迭代更新时,有些权值不更新的现象。
改变激活函数,改变权值的初始化等。
针对梯度爆炸问题,解决方案是引入Gradient Clipping(梯度裁剪)。通过Gradient Clipping,将梯度约束在一个范围内,这样不会使得梯度过大。
梯度裁剪的办法:给定选定的向量范数( vector norm)来重新缩放梯度;以及裁剪超出预设范围的梯度值。
集成思想:每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。
贝叶斯定理会根据一件事发生的先验知识告诉你它后验概率。
它的基础思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。之所以加上朴素两个字的原因是:这种分类算法是基于贝叶斯概率的思想,假设属性之间相互独立,例如A和B,A和B之间是相互独立,发生与否互不影响。这种假设考虑的比较简单,所以称之为朴素的。https://blog.csdn.net/u013206066/article/details/54381182
朴素贝叶斯分类器
特征选择完成后,可能由于特征矩阵过大,导致计算量大、训练时间长,因此降低特征矩阵维度也是必不可少的。
思想:
PCA: 将原始特征空间映射到彼此正交的特征向量空间,使用SVD分解来构建特征向量。
LDA:寻找一个投影方向,类内方差最小,类间方差最大
具体来说:同类之间的协方差尽可能的小、的类中心之间的距离尽可能的大。
(1)计算类内散度矩阵 S b S_{b} Sb
(2)计算类间散度矩阵 S w S_{w} Sw
(3)计算矩阵 S w − 1 S b S_{w}^{-1} S_{b} Sw−1Sb
(4)对矩阵 S w − 1 S b S_{w}^{-1} S_{b} Sw−1Sb 进行特征分解, 计算最大的 d d d 个最大的特征值对应的特征向量组成 W W W 。
(5)计算投影后的数据点 Y = W T X Y=W^{T} X Y=WTX
https://zhuanlan.zhihu.com/p/51769969
多分类问题,此时类间散度矩阵为:
S b = ∑ j = 1 k N j ( u j − u ) ( u j − u ) T S_{b}=\sum_{j=1}^{k} N_{j}\left(u_{j}-u\right)\left(u_{j}-u\right)^{T} Sb=j=1∑kNj(uj−u)(uj−u)T
其中u为所有数据点求平均值所得。
类内散度矩阵为:
S W = ∑ j = 1 k ∑ x ∈ X j ( x − u j ) ( x − u j ) T S_{W}=\sum_{j=1}^{k} \sum_{x \in X_{j}}\left(x-u_{j}\right)\left(x-u_{j}\right)^{T} SW=j=1∑kx∈Xj∑(x−uj)(x−uj)T
散布矩阵又称散度矩阵,将协方差矩阵乘以系数(n-1)就得到了散布矩阵,所有散布矩阵与协方差矩阵矩阵的作用是一样的,理解了协方差矩阵也就理解了散布矩阵,它们只有一个系数只差而已
相同点:
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布【正态分布】。
不同点:
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了可以用于降维,还可以用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。
维度灾难用来描述当(数学)空间维度增加时,分析和组织高维空间(通常有成百上千维),因体积指数增加而遇到各种问题场景。这样的难题在低维空间中不会遇到,如物理空间通常只用三维来建模。
欧氏距离的计算在高维空间里失效
k-Nearest Neighbors 是一种监督学习算法,而k-means 是非监督的。
1)选择彼此距离尽可能远的K个点
2)先对数据用层次聚类算法,得到K个簇之后,从每个类簇中选择一个点,该点可以是该类簇的中心点,或者是距离类簇中心点最近的那个点。
curse of dimensionality
轮廓系数法
轮廓系数是一种非常常用的聚类效果评价指标。该指标结合了内聚度和分离度两个因素。其具体计算过程如下:
假设已经通过聚类算法将待分类的数据进行了聚类,并最终得到了个簇。对于每个簇中的每个样本点,分别计算其轮廓系数。具体地,需要对每个样本点计算以下两个指标:
需要对每个样本点计算以下两个指标:
a ( i ) : 样本点 i 到与其属于同一个簇的其他样本点的距离的平均值。 a ( i ) 越小,说明该样本 i 属于该类的可能性越大。 b ( i ) : 样 本 点 i 到 其 他 簇 C j 中 的 所 有 样 本 的 平 均 距 离 的 平 均 值 b i j , b ( i ) = m i n ( b i 1 , b i 2 , ⋯ , b i k ) \text { } a(i) \text { : 样本点 } i \text { 到与其属于同一个簇的其他样本点的距离的平均值。 } a(i) \text { 越小,说明该样本 } i \text { 属于该类的可能性越大。 }\\ b(i):样本点i到其他簇C_{j}中的所有样本的平均距离的平均值b_{ij} ,b(i)=min(b_{i1},b_{i2},\cdots ,b_{ik}) a(i) : 样本点 i 到与其属于同一个簇的其他样本点的距离的平均值。 a(i) 越小,说明该样本 i 属于该类的可能性越大。 b(i):样本点i到其他簇Cj中的所有样本的平均距离的平均值bij,b(i)=min(bi1,bi2,⋯,bik)
则样本点的轮廓系数为:
s ( i ) = b ( i ) − a ( i ) max ( a ( i ) , b ( i ) ) s(i)=\frac{b(i)-a(i)}{\max (a(i), b(i))} s(i)=max(a(i),b(i))b(i)−a(i)
优点:算法简单、操作容易,调参少
缺点:K 的选取、受初始值的影响较大、对噪音敏感
算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。
层次聚类:最初,每个对象作为一个簇,根据簇间距离最短的数据点确定相似度,根据相似度来确定。两个簇之间的距离超过用户给定的阈值则就会终止。反复进行知道所有的簇满足上述条件。
密度聚类:
**例题:**初始值:①邻域参数 ε ② 最少点个数 MinPts
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TVKJdFez-1643367003787)(mindmaster_image/20210210023731.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSqBiWVm-1643367003787)(mindmaster_image/20210210024227.png)]
谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法,将带权无向图划 分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远 ,以达到常见的聚类的目的。
可以选择:ID3信息增益、,
C4.5增益率(解决了信息增益对有较多属性的有所偏好的问题)
CART基尼指数( Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vT1P8cD-1643367003789)(mindmaster_image/1217155-20200204153304802-1069293659.png)]
剪枝,预剪枝、后剪枝
线性回归 + sigmoid 函数(对数几率函数)
损失函数是: 交叉损失熵
LR的基本思想是最大似然思想。因此,可以较为容易的顺着这条路推导。
SVM思想:最大化的是离超平面最近的点到超平面的距离
硬间隔、软间隔
SVM 是二分类算法,可以将多分类任务转换成二分类任务,具体的有一对多,一对一算法:
假如我有四类要划分(也就是4个Label),他们是A、B、C、D。于是我在抽取训练集的时候,分别抽取
(1)A所对应的向量作为正集,B,C,D所对应的向量作为负集;
(2)B所对应的向量作为正集,A,C,D所对应的向量作为负集;
(3)C所对应的向量作为正集,A,B,D所对应的向量作为负集;
(4)D所对应的向量作为正集,A,B,C所对应的向量作为负集;
一对一法:
排列组合,统计结果输出最多的一类
隐马尔可夫模型(Hidden Markov model, HMM)是一种结构最简单的动态贝叶斯网的生成模型,它也是一种著名的有向图模型。它是典型的自然语言中处理标注问题的统计机器学模型,本文将重点介绍这种经典的机器学习模型。
隐马尔可夫模型不直接探讨状态序列,是通过观测状态来确定状态序列
https://blog.csdn.net/lrs1353281004/article/details/79417225
隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。
隐马尔可夫模型由π、A、B决定。π和A决定状态序列,B决定观测序列。
隐马尔可夫模型λ=( A, B,π),A,B,π称为隐马尔科夫模型的三要素**。**
两大假设:
① t时刻的状态只是依赖于前一时刻的状态
② 任意时刻的观测只依赖于该时刻的状态
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iKJdBb94-1643367003790)(mindmaster_image/image-20210827155516631.png)]
三个基本问题:
可去搜索一下
概率计算问题:
给定模型 λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π) 和观测序列 O = ( o 1 , o 2 , … , o T ) \mathrm{O}=\left(o_{1}, o_{2}, \ldots, o_{T}\right) O=(o1,o2,…,oT) 。计算在模型 λ \lambda λ 下观测序列O出现的概率 P ( O ∣ λ ) \mathrm{P}(\mathrm{O} \mid \lambda) P(O∣λ) 。
解决此问题的方法为前向、后向算法。
学习问题(模型训练):
已知观测序列 O = ( O 1 , o 2 , … , o T ) \mathrm{O}=\left(\mathrm{O}_{1}, \mathrm{o}_{2}, \ldots, \mathrm{o}_{T}\right) O=(O1,o2,…,oT), 估计模型 Λ = ( A , B , π ) \mathrm{\Lambda}=(\mathrm{A}, \mathrm{B}, \pi) Λ=(A,B,π) 参数,使得在该模型下观测序列概
率P ( O ∣ λ ) (\mathrm{O} \mid \lambda) (O∣λ) 最大。
当同时给定观测序列和对应状态序列时,使用极大似然估计方法估计参数。
当只给定观测序列,没有对应状态序列时,基于EM算法进行参数估计。 (Baum-Welch算法)
对数似然函数极大化,构造Q函数并极大化Q函数(利用拉格朗日算法)
预测问题(序列生成):
也称为解码问题。已知模型 λ = ( A , B , π ) \lambda=(\mathrm{A}, \mathrm{B}, \pi) λ=(A,B,π) 和观测序列 O = ( o 1 , o 2 , … , o T ) \mathrm{O}=\left(o_{1}, \mathrm{o}_{2}, \ldots, \mathrm{o}_{T}\right) O=(o1,o2,…,oT)
求对给定观测序列条件概率P(I|O) 最大的状态序列 。即给定观测序列 O = ( o 1 , o 2 , … , o T ) O=\left(o_{1}, o_{2}, \ldots, o_{T}\right) O=(o1,o2,…,oT) 求最有可能的对应状态序列 I = ( i 1 , i 2 , … , i T ) \mathrm{I}=\left(i_{1}, i_{2}, \ldots, i_{T}\right) I=(i1,i2,…,iT)
解决此问题的方法为维特比算法。
也是学过的