赞
踩
优点:
缺点:
K-Medians是K-Means的一种变体,是用数据集的中位数而不是均值来计算数据的中心点。
K-Medians的优势是使用中位数来计算中心点不受异常值的影响
计算中位数时需要对数据集中的数据进行排序,速度相对于K-Means较慢。
均值漂移聚类是基于滑动窗口的算法,来找到数据点的密集区域。这是一个基于质心的算法,通过将中心点的候选点更新为滑动窗口内点的均值来完成,来定位每个组/类的中心点。然后对这些候选窗口进行相似窗口进行去除,最终形成中心点集及相应的分组。
优点:
缺点:
与均值漂移聚类类似,DBSCAN也是基于密度的聚类算法。
优点:
缺点:
假设数据集是按照一定统计过程产生的,那么聚类的过程就是通过样本学习相应统计分布模型的参数
混合模型将数据看作是从不同的概率分布得到的概率的观测值的集合。通常采用高斯分布,称之为高斯混合模型。
一个数据的产生可以分成两个过程:
选择分模型k, 概率为归一化后的$ \alpha _ k $(分模型的个数就是簇的个数)
由分模型根据概率分布
ϕ
(
y
∣
θ
k
)
\phi(y| \theta _k)
ϕ(y∣θk)生成数据。
故最终一个数据产生的概率为
这是一个含有隐变量$ \alpha _ k $的概率模型,故需要采用 EM算法学习模型参数。
K-Means,EM,AP等都属于平面聚类(Flat Clustering),因为这些算法的输出都是返回一个平面的无结构的聚类集合,所以叫做Flat clustering;平面聚类有一个缺陷就是要选择聚类的数目以及初始点,这对于没有经验的人员来说是一件很棘手的工作,因为聚类结果的好坏完全依赖于这一参数的选择,所以很多时候可以考虑下层次聚类算法,避免了聚类数量和初始点的选择。层次聚类算法有多种形式,本篇介绍的这个叫做层次凝聚聚类算法(Hierarchical Agglomerative Clustering),简称HAC,其主要思想就是,先把每一个样本点当做一个聚类,然后不断重复的将其中最近的两个聚类合并(就是凝聚的含义),直到满足迭代终止条件。
层次聚类算法将相似的对象分组到称为聚类的组中。层次聚类算法有两种:
1)将训练样本集中的每个数据点都当做一个聚类;
2)计算每两个聚类之间的距离,将距离最近的或最相似的两个聚类进行合并;
3)重复上述步骤,直到得到的当前聚类数是合并前聚类数的10%,即90%的聚类都被合并了;当然还可以设置其他终止条件,这样设置是为了防止过度合并。
优点
缺点
主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。PCA降维的目的,就是为了在尽量保证“信息量不丢失”的情况下,对原始特征进行降维,也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到这些维度上,使降维后信息量损失最小。
优点:
缺点:
线性判别分析(Linear Discriminant Analysis, LDA)是一种经典的线性学习方法,思路是将两种数据投影到一条直线上,使这两种数据之间尽可能远离,且同类数据尽可能聚集在一起。
给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点中心尽可能远离。更简单的概括为一句话,就是“投影后类内方差最小,类间方差最大
优点:
缺点:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wPjPPwSF-1607418964518)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20201205094754322.png)]
优点:
缺点:
希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近。Laplacian Eigenmaps可以反映出数据内在的流形结构。
步骤1:构建图
使用某一种方法来将所有的点构建成一个图,例如使用KNN算法,将每个点最近的K个点连上边。K是一个预先设定的值。
步骤2:确定权重
步骤3:特征映射
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。
bagging的算法过程如下:
boosting的算法过程如下:
下面是将决策树与这些算法框架进行结合所得到的新的算法:
1)Bagging + 决策树 = 随机森林
2)AdaBoost + 决策树 = 提升树
3)Gradient Boosting + 决策树 = GBDT
其实算法的原理就是在一颗决策树的基础上不断地加树,比如在n-1颗树地基础上加一棵树变成n颗树的同时算法的精确率不断提高、效果提升。
GBDT是一种基于集成思想下的Boosting学习器,并采用梯度提升的方法进行每一轮的迭代最终组建出强学习器,这样的话算法的运行往往要生成一定数量的树才能达到令我们满意的准确率。当数据集大且较为复杂时,运行一次极有可能需要几千次的迭代运算,这将对我们使用算法造成巨大的计算瓶颈。
虽然GBDT无论在理论推导还是在应用场景实践都是相当完美的,但有一个问题:第n颗树训练时,需要用到第n-1颗树的(近似)残差。从这个角度来看,GBDT比较难以实现分布式,XGBoost正是解决了这个难题。XGBoost是GBDT的高效实现,XGBoost中的基学习器除了可以是CART(GBTree)也可以是线性分类器(GBLinear)。
XGBoost最大的特点在于它能够自动利用CPU的多线程进行并行计算,同时在算法上加以改进提高了精度。
在监督学习中,我们通常会构造一个目标函数和一个预测函数,使用训练样本对目标函数最小化学习到相关的参数,然后用预测函数和训练样本得到的参数来对未知的样本进行分类的标注或者数值的预测。在XGBoost中,目标函数的形式为:
:损失函数,常用损失函数有:
:正则化项,之所以要引入它是因为我们的目标是希望生成的模型能准确的预测新的样本(即应用于测试数据集),而不是简单的拟合训练集的结果(这样会导致过拟合)。所以需要在保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能。而正则项就是用于惩罚复杂模型,避免预测模型过分拟合训练数据,常用的正则有
上图所展示的就是损失函数与正则化项在模型中的应用。观察发现,如果目标函数中的损失函数权重过高,那么模型的预测精度则不尽人意,反之如果正则项的权重过高,所生成的模型则会出现过拟合情况,难以对新的数据集做出有效预测。只有平衡好两者之间的关系,控制好模型复杂度,并在此基础上对参数进行求解,生成的模型才会“简单有效”(这也是机器学习中的偏差方差均衡)。
半监督学习(Semi-supervised learning)发挥作用的场合是:你的数据有一些有label,一些没有。而且一般是绝大部分都没有,只有少许几个有label。半监督学习算法会充分的利用unlabeled数据来捕捉我们整个数据的潜在分布。它基于三大假设:
1)Smoothness平滑假设:相似的数据具有相同的label。
2)Cluster聚类假设:处于同一个聚类下的数据具有相同label。
3)Manifold流形假设:处于同一流形结构下的数据具有相同label。
标签传播算法(label propagation)的核心思想非常简单:相似的数据应该具有相同的label。LP算法包括两大步骤:1)构造相似矩阵;2)勇敢的传播吧。
1、相似矩阵构建
LP算法是基于Graph的,因此我们需要先构建一个图。我们为所有的数据构建一个图,图的节点就是一个数据点,包含labeled和unlabeled的数据。节点i和节点j的边表示他们的相似度。这个图的构建方法有很多,这里我们假设这个图是全连接的,节点i和节点j的边权重为:
这里,α是超参。
还有个非常常用的图构建方法是knn图,也就是只保留每个节点的k近邻权重,其他的为0,也就是不存在边,因此是稀疏的相似矩阵。
2、LP算法
标签传播算法非常简单:通过节点之间的边传播label。边的权重越大,表示两个节点越相似,那么label越容易传播过去。我们定义一个NxN的概率转移矩阵P:
Pij表示从节点i转移到节点j的概率。假设有C个类和L个labeled样本,我们定义一个LxC的label矩阵YL,第i行表示第i个样本的标签指示向量,即如果第i个样本的类别是j,那么该行的第j个元素为1,其他为0。同样,我们也给U个unlabeled样本一个UxC的label矩阵YU。把他们合并,我们得到一个NxC的soft label矩阵F=[YL;YU]。soft label的意思是,我们保留样本i属于每个类别的概率,而不是互斥性的,这个样本以概率1只属于一个类。当然了,最后确定这个样本i的类别的时候,是取max也就是概率最大的那个类作为它的类别的。那F里面有个YU,它一开始是不知道的,那最开始的值是多少?无所谓,随便设置一个值就可以了。
千呼万唤始出来,简单的LP算法如下:
1)执行传播:F=PF
2)重置F中labeled样本的标签:FL=YL
3)重复步骤1)和2)直到F收敛。
步骤1)就是将矩阵P和矩阵F相乘,这一步,每个节点都将自己的label以P确定的概率传播给其他节点。如果两个节点越相似(在欧式空间中距离越近),那么对方的label就越容易被自己的label赋予,就是更容易拉帮结派。步骤2)非常关键,因为labeled数据的label是事先确定的,它不能被带跑,所以每次传播完,它都得回归它本来的label。随着labeled数据不断的将自己的label传播出去,最后的类边界会穿越高密度区域,而停留在低密度的间隔中。相当于每个不同类别的labeled样本划分了势力范围。
3、变身的LP算法
我们知道,我们每次迭代都是计算一个soft label矩阵F=[YL;YU],但是YL是已知的,计算它没有什么用,在步骤2)的时候,还得把它弄回来。我们关心的只是YU,那我们能不能只计算YU呢?Yes。我们将矩阵P做以下划分:
这时候,我们的算法就一个运算:
迭代上面这个步骤直到收敛就ok了,是不是很cool。可以看到FU不但取决于labeled数据的标签及其转移概率,还取决了unlabeled数据的当前label和转移概率。因此LP算法能额外运用unlabeled数据的分布特点。
这个算法的收敛性也非常容易证明,具体见参考文献[1]。实际上,它是可以收敛到一个凸解的:
所以我们也可以直接这样求解,以获得最终的YU。但是在实际的应用过程中,由于矩阵求逆需要O(n3)的复杂度,所以如果unlabeled数据非常多,那么I – PUU矩阵的求逆将会非常耗时,因此这时候一般选择迭代算法来实现。
t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可视化。该算法可以将对于较大相似度的点,t分布在低维空间中的距离需要稍小一点;而对于低相似度的点,t分布在低维空间中的距离需要更远。
SNE是通过仿射(affinitie)变换将数据点映射到概率分布上,主要包括两个步骤:
SNE构建一个高维对象之间的概率分布,使得相似的对象有更高的概率被选择,而不相似的对象有较低的概率被选择。
SNE在低维空间里在构建这些点的概率分布,使得这两个概率分布之间尽可能的相似。
我们看到t-SNE模型是非监督的降维,他跟kmeans等不同,他不能通过训练得到一些东西之后再用于其它数据(比如kmeans可以通过训练得到k个点,再用于其它数据集,而t-SNE只能单独的对数据做操作,也就是说他只有fit_transform,而没有fit操作)
优点:
缺点:
回归是在建模过程中用于分析变量之间的关系、以及变量是如何影响结果的一种技术。线性回归是指全部由线性变量组成的回归模型。例如,最简单的单变量线性回归(Single Variable Linear Regression)是用来描述单个变量和对应输出结果的关系,可以简单的表示成下面的式子:
因为在实际的建模过程中遇到的问题往往更加复杂,用单个变量不能满足描述输出便变量的关系,所以需要用到更多的变量来表示与输出之间的关系,也就是多变量线性回归(Multi Variable Linear Regression)。多变量线性回归模型如下:
其中a为系数,x是变量,b为偏置。因为这个函数只有线性关系,所以只适用于建模线性可分数据。我们只是使用系数权重来加权每个特征变量的重要性。我们使用随机梯度下降(SGD)来确定这些权重a和偏置b,过程如图所示:
线性回归的几个特点:
线性回归适合于线性可分的数据,当我们处理非线性可分的数据时可以使用多项式回归。在这种回归中,我们是要找到一条曲线来拟合数据点,可以表示成下面的式子:
选择每个变量的确切的质数需要当前数据集合与最终输出的一些先验知识。下面两个图描述了线性回归与多项式回归的比较:
多项式回归的特点:
分析岭回归之前首先要说的一个共线性(collinearity)的概念,共线性是自变量之间存在近似线性的关系,这种情况下就会对回归分析带来很大的影响。因为回归分析需要我们了解每个变量与输出之间的关系,高共线性就是说自变量间存在某种函数关系,如果两个自变量(X1和X2)之间存在函数关系,那么当X1改变一个单位时,X2也会相应的改变,这样就没办法固定其他条件来对单个变量对输出的影响进行分析了,因为所分析的X1总是混杂了X2的作用,这样就造成了分析误差,所以回归分析时需要排除高共线性的影响。
高共线性的存在可以通过以下几个方式来确定:
标准线性回归的优化函数如下:
其中X表示特征变量,w表示权重,y表示真实情况。岭回归是针对模型中存在的共线性关系的为变量增加一个小的平方偏差因子(也就是正则项),可以表示成下面的式子:
这样的平方偏差因子向模型中引入了少量偏差,但大大减少了方差。
领回归的特点:
Lesso与岭回归非常相似,都是在回归优化函数中增加了一个偏置项以减少共线性的影响,从而减少模型方程。不同的是Lasso回归中使用了绝对值偏差作为正则化项,Lasso回归可以表示成下面的式子:
岭回归和Lasso回归之间的差异可以归结为L1正则和L2正则之间的差异:
内置的特征选择(Built-in feature selection):这是L1范数很有用的一个属性,二L2范数不具有这种特性。因为L1范数倾向于产生系数系数。例如,模型中有100个系数,但其中只有10个系数是非零系数,也就是说只有这10个变量是有用的,其他90个都是没有用的。而L2范数产生非稀疏系数,所以没有这种属性。因此可以说Lasso回归做了一种参数选择形式,未被选中的特征变量对整体的权重为0。
稀疏性:指矩阵或向量中只有极少个非零系数。L1范数具有产生具有零值或具有很少大系数的非常小值的许多系数的属性。
计算效率:L1范数没有解析解,但L2范数有。这使得L2范数的解可以通过计算得到。L1范数的解具有稀疏性,这使得它可以与稀疏算法一起使用,这使得在计算上更有效率。
弹性回归网络是Lesso回归和岭回归技术的混合体。它使用了L1和L2正则化,也达到了两种技术共有的效果,弹性回归网络的表达式如下:
在Lasso和岭回归之间进行权衡的一个实际是运行弹性网络在循环的情况下继承岭回归的一些稳定性。
弹性回归网络的优点:
CCA使用的方法是将多维的X和Y都用线性变换为1维的X’和Y’,然后再使用相关系数来看X’和Y’的相关性。**将数据从多维变到1位,也可以理解为CCA是在进行降维,将高维数据降到1维,然后再用相关系数进行相关性的分析。
CCA算法广泛的应用于数据相关度的分析,同时还是偏最小二乘法的基础。但是由于它依赖于数据的线性表示,当我们的数据无法线性表示时,CCA就无法使用,此时我们可以利用核函数的思想,将数据映射到高维后,再利用CCA的思想降维到1维,求对应的相关系数和线性关系,这个算法一般称为KCCA。此外,在算法里只找了相关度最大的奇异值或者特征值,作为数据的相关系数,实际上我们也可以像PCA一样找出第二大奇异值,第三大奇异值,… 得到第二相关系数和第三相关系数。然后对数据做进一步的相关性分析。但是一般的应用来说,找出第一相关系数就可以了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。