一、常用算法
(一). k最近邻:
kNN算法是著名的模式识别统计学方法,是最好的文本分类算法之一,在机器学习分类算法中占有相当大的地位,是最简单的机器学习算法之一。
思想:官方解释为给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个"邻居"的信息来进行预测。通俗点说:就是计算一个点与样本空间所有点之间的距离,取出与该点最近的k个点,然后统计这k个点里面所属分类比例最大的(“回归”里面使用平均法),则点A属于该分类。
三个基本要素:k值的选择、距离度量、分类决策规则
算法计算步骤:
1、算距离: 给定测试对象,计算它与训练集中的每个对象的距离;
2、找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻;
3、做分类:根据这k个近邻归属的主要类别,来对测试对象分类;
距离的计算方式(相似性度量):欧式距离/曼哈顿距离
类别的判定:
投票法:少数服从多数,近邻中哪个类别的点最多就分为该类。
加权投票法:根据距离的远近,对邻近的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)。
优点:
1、简单,易于理解,易于实现,无需估计参数,无需训练;
2、适合对稀有事件进行分类;
3、特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN比SVM的表现要好。
缺点:
1、样本容量较小的类域采用这种算法比较容易产生误分。
该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。
该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。
2、该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。
3、可理解性差,无法给出像决策树那样的规则。
常见问题:
1、k值设定
k值选择过小,得到的近邻数过少,会降低分类精度,同时也会放大噪声数据的干扰;而如果k值选择过大,并且待分类样本属于训练集中包含数据数较少的类,那么在选择k个近邻的时候,实际上并不相似的数据亦被包含进来,造成噪声增加而导致分类效果的降低。如何选取恰当的K值也成为KNN的研究热点。k值通常是采用交叉检验来确定(以k=1为基准)。
经验规则:k一般低于训练样本数的平方根。
2、类别的判定方式
投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以加权投票法更恰当。
3、距离度量方式的选择
高维度对距离衡量的影响:众所周知当变量数越多,欧式距离的区分能力就越差。
变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化。
4、训练样本的参考原则
学者们对于训练样本的选择进行研究,以达到减少计算的目的,这些算法大致可分为两类。第一类,减少训练集的大小。KNN算法存储的样本数据,这些样本数据包含了大量冗余数据,这些冗余的数据增了存储的开销和计算代价。缩小训练样本的方法有:在原有的样本中删掉一部分与分类相关不大的样本样本,将剩下的样本作为新的训练样本;或在原来的训练样本集中选取一些代表样本作为新的训练样本;或通过聚类,将聚类所产生的中心点作为新的训练样本。
在训练集中,有些样本可能是更值得依赖的。可以给不同的样本施加不同的权重,加强依赖样本的权重,降低不可信赖样本的影响。
5、性能问题
kNN是一种懒惰算法,而懒惰的后果:构造模型很简单,但在对测试样本分类地的系统开销大,因为要扫描全部训练样本并计算距离。已经有一些方法提高计算的效率,例如压缩训练样本量等。
参考:
(二). 随机森林:
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。
“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想--集成思想的体现。从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。
“随机”是指bootstrap sample(随机且有放回地抽取)两个随机性。如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的,这样的话完全没有bagging的必要;如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。
随机森林的生成
1)如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;
2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
3)每棵树都尽最大程度的生长,并且没有剪枝过程。
随机森林分类效果(错误率)与两个因素有关:
森林中任意两棵树的相关性:相关性越大,错误率越大;
森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。
参考:
【机器学习】 随机森林(Random Forest)_人工智能_云峰阁-CSDN博客
(三). 支持向量机:
从某种意义上来说是逻辑回归算法的强化:通过给予逻辑回归算法更严格的优化条件,支持向量机算法可以获得比逻辑回归更好的分类界线。但是如果没有某类函数技术,则支持向量机算法最多算是一种更好的线性分类技术。
但是,通过跟高斯“核”的结合,支持向量机可以表达出非常复杂的分类界线,从而达成很好的的分类效果。“核”事实上就是一种特殊的函数,最典型的特征就是可以将低维的空间映射到高维的空间。
SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilber空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题。升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起“维数灾难”,因而人们很少问津。但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归)。一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征
空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”.这一切要归功于核函数的展开和计算理论。
选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
- 性核函数K(x,y)=x·y
- 多项式核函数K(x,y)=[(x·y)+1]d
- 向基函数K(x,y)=exp(-|x-y|^2/d^2)
- 层神经网络核函数K(x,y)=tanh(a(x·y)+b)
我们如何在二维平面划分出一个圆形的分类界线?在二维平面可能会很困难,但是通过“核”可以将二维空间映射到三维空间,然后使用一个线性平面就可以达成类似效果。也就是说,二维平面划分出的非线性分类界线可以等价于三维平面的线性分类界线。于是,我们可以通过在三维空间中进行简单的线性划分就可以达到在二维平面中的非线性划分效果。
支持向量机是一种数学成分很浓的机器学习算法(相对的,神经网络则有生物科学成分)。在算法的核心步骤中,有一步证明,即将数据从低维映射到高维不会带来最后计算复杂性的提升。于是,通过支持向量机算法,既可以保持计算效率,又可以获得非常好的分类效果。因此支持向量机在90年代后期一直占据着机器学习中最核心的地位,基本取代了神经网络算法。直到现在神经网络借着深度学习重新兴起,两者之间才又发生了微妙的平衡转变。
(四)神经网络
针对非线性分类的问题,神经网络是其中最早出现的一种。人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式。
总的来说,K近邻和决策树是天生的非线性分类器,它们会在你所给定的特征空间内进行分类。NN与SVM,虽然是线性分类器(所以感知机模型是两者的祖宗),但是它们会很聪明地自己构建新的特征空间使得数据集线性可分,最后呈现出非线性分类的效果。两者方式不同,SVM是将数据投射到高维的空间内再做超平面对数据线性分割,而NN则是利用激活函数(sigmoid,tanh,softmax等)将数据投射到类似于曲面化了的特征空间(这个空间是有隐藏层决定的)。
– SVM的理论基础比NN更坚实,更像一门严谨的“科学”(三要素:问题的表示、问题的解决、证明)
– SVM ——严格的数学推理
–ANN ——强烈依赖于工程技巧
–推广能力取决于“经验风险值”和“置信范围值”,ANN不能控制两者中的任何一个。
–ANN设计者用高超的工程技巧弥补了数学上的缺陷——设计特殊的结构,利用启发式算法,有时能得到出人意料的好结果。
正如费曼指出的那样“我们必须从一开始就澄清一个观点,就是如果某事不是科学,它并不一定不好。比如说,爱情就不是科学。因此,如果我们说某事不是科学,并不是说它有什么不对,而只是说它不是科学。”与SVM相比,ANN不像一门科学,更像一门工程技巧,但并不意味着它就一定就不好。
参考:
『MACHINE LEARNING』读书笔记|神经网络与支持向量机的联系_网络_amazingmango的博客-CSDN博客
(五)朴素贝叶斯
朴素贝叶斯分类法是一种生成学习算法。对于待分类样本,求出在该样本的各特征出现的条件下,其属于每种类别的概率(P(Yi|X)),哪种类别的概率大就将该样本判别为哪一种类别。
参考:
朴素贝叶斯分类法 Naive Bayes ---R - 钮甲跳 - 博客园
各种机器学习分类器模型分析与认识_人工智能_qq_39989653的博客-CSDN博客
二、总结
参考:
决策树、贝叶斯、人工神经网络、K-近邻、支持向量机等常用分类算法小结_网络_seu_yang的博客-CSDN博客
机器学习的分类与主要算法对比 - upstreamL - 博客园
机器学习文献综述_人工智能_a1742326479的博客-CSDN博客
分类、回归、聚类、降维的区别_人工智能_kiss__soul的博客-CSDN博客
三、基本概念辨析
人工智能:
机器学习:机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域和分支。一种经常引用的英文定义是:A computer program is said to learn from experience E withrespect to some class of tasks T and performance measure P, if its performanceat tasks in T, as measured by P, improves with experience E。
深度学习:深度学习算法是对人工神经网络的发展。
2. 根据有无人为标签分类
监督学习:监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。在监督学习的过程中会提供对错指示,通过不断地重复训练,使其找到给定的训练数据集中的某种模式或规律,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,主要应用于分类和预测。常见的监督学习算法包括回归分析和统计分类。
无监督学习:非监督学习无须对数据集进行标记,即没有输出。其需要从数据集中发现隐含的某种结构,从而获得样本数据的结构特征,判断哪些数据比较相似。因此,非监督学习目标不是告诉计算机怎么做,而是让它去学习怎样做事情。无监督学习的典型算法有自动编码器、受限玻尔兹曼机、深度置信网络等;典型应用有:聚类和异常检测等。
半监督学习:半监督学习是监督学习和非监督学习的结合,其在训练阶段使用的是未标记的数据和已标记的数据,不仅要学习属性之间的结构关系,也要输出分类模型进行预测。与使用所有标签数据的模型相比,使用训练集的训练模型在训练时可以更为准确,而且训练成本更低,在实际运用中也更为普遍。
3. 偏差与方差
偏差:描述的是算法预测的平均值和真实值的差距(算法的拟合能力),低偏差对应于模型复杂化,但模型过于复杂容易过拟合;高偏差(一般是欠拟合,注意跟上面低偏差时模型复杂化做区别)是模型在训练集和验证集上的误差都比较大。
方差:描述的是同一个算法在不同数据集上的预测值和所有数据集上的平均预测值之间的关系(算法的稳定性),低方差对应于模型简单化,但模型过于简单容易欠拟合;高方差是针对不同的训练集,其拟合得到的参数相差很大(一般是过拟合,注意跟上面低方差时模型简单化做区别)。
解决高偏差的方法:使用更多特征,增加多项式特征,减少正则化程度λ。
解决高偏差的方法:增加训练样本,减少特征数量,增加正则化程度λ。
4. 特征选择:
特征选择对机器学习至关重要,减少特征数量会防止维度灾难,减少训练时间;增强模型泛化能力,减少过拟合;增强对特征和特征值的理解。个人认为在大部分机器学习任务中特征就决定了效果的上限,模型的选择与组合只是无限逼近于这个上限。
常见的特征选择方法:①去除取值变化小的特征:如果绝大部分实例的某个特征取值一样,那这个特征起到的作用可能就比较有限,极端情况下如果所有实例的某特征取值都一样,那该特征基本就不起作用。②单变量特征选择法:能够对每一个特征进行测试,衡量该特征和响应变量之间的关系,根据得分扔掉不好的特征。常见方法包括卡法检验、互信息、皮尔森相关系数、距离相关系数、基于学习模型的特征排序(Model based ranking)等。③正则化:L1正则化、L2正则化。④随机森林特征选择:这类方法主要包括平均不纯度减少(mean decrease impurity)和平均精确率减少(Mean decrease accuracy)两种方法。⑤顶层特征选择法:这类方法主要包括稳定性选择(Stability selection)和递归特征消除(Recursive feature elimination)两种方法。
5. 损失函数
损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。
包括:0-1损失、绝对值损失、log对数损失、指数损失、Hinge损失等。
三、医学领域的应用与研究进展
参考:https://www.cnblogs.com/leezx/p/6229323.html](https://www.cnblogs.com/leezx/p/6229323.html
四、代码入门
五、特征选择
1、python:
https://blog.csdn.net/weixin_41988628/article/details/83059759
https://www.cnblogs.com/bonelee/p/8632866.html