一、机器学习算法分类
(1)、监督学习:之所以被称为监督学习,是因为这类算法必须知道预测什么,即目标变量的分类信息。输入数据是由输入特征值和目标值所组成。函数的输出可以是一个连续的值称为回归,输出是有限个离散值称为分类
(2)、无监督学习:与监督学习相对应的是无监督学习,此时数据没有类别信息,也不会给目标值。输入数据没有被标记,也没有确定的结果。样本数据类别未知;需要根据样本间的相似性对样本集进行类别划分。在无监督学习中,将数据集合分成类似的对象组成的多个类的过程成为聚类,将寻找描述数据统计值的过程称之为密度估计
有监督和无监督算法对比:

(3)半监督学习:训练集同时包含有标记样本数据和未标记样本数据。

(4)、强化学习:实质是“Make decisions”问题,即自动进行决策,并且可以做连续决策。

二、如何选择合适的算法
机器学习的算法中选用实际可用的算法,必须考虑下面两个问题:
(1)、使用机器学习算法的目的,想要算法完成何种任务;
(2)、需要分析或收集的数据是什么。
2.1 朴素贝叶斯:
朴素贝叶斯属于生成式模型(关于生成模型和判别式模型,主要还是在于是否需要求联合分布),比较简单,你只需做一堆计数即可。如果注有条件独立性假设(一个比较严格的条件),朴素贝叶斯分类器的收敛速度将快于判别模型,比如逻辑回归,所以你只需要较少的训练数据即可。即使NB条件独立假设不成立,NB分类器在实践中仍然表现的很出色。它的主要缺点是它不能学习特征间的相互作用,用mRMR中R来讲,就是特征冗余。引用一个比较经典的例子,比如,虽然你喜欢Brad Pitt和Tom Cruise的电影,但是它不能学习出你不喜欢他们在一起演的电影。
优点:
(1)朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
(2)对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已;
(3)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练(即可以实时的对新增的样本进行训练);
(4)对缺失数据不太敏感,算法也比较简单,常用于文本分类;
(5)朴素贝叶斯对结果解释容易理解;
缺点:
(1)需要计算先验概率;
(2)分类决策存在错误率;
(3)对输入数据的表达形式很敏感;
(4)由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好;

朴素贝叶斯应用领域:
(1)欺诈检测中使用较多;
(2)一封电子邮件是否是垃圾邮件;
(3)一篇文章应该分到科技、政治,还是体育类;
(4)一段文字表达的是积极的情绪还是消极的情绪?
(5)人脸识别。
2.2 Logistic Regression(逻辑回归):
逻辑回归属于判别式模型,同时伴有很多模型正则化的方法(L0, L1,L2,etc),而且你不必像在用朴素贝叶斯那样担心你的特征是否相关。与决策树、SVM相比,你还会得到一个不错的概率解释,你甚至可以轻松地利用新数据来更新模型(使用在线梯度下降算法-online gradient descent)。如果你需要一个概率架构(比如,简单地调节分类阈值,指明不确定性,或者是要获得置信区间),或者你希望以后将更多的训练数据快速整合到模型中去,那么使用它吧。

Sigmoid函数:表达式如下:

优点:
(1)实现简单,广泛的应用于工业问题上;
(2)分类时计算量非常小,速度很快,存储资源低;
(3)便利的观测样本概率分数;
(4)对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题;
(5)计算代价不高,易于理解和实现。
缺点:
(1)当特征空间很大时,逻辑回归的性能不是很好;
(2)容易欠拟合,一般准确度不太高
(3)不能很好地处理大量多类特征或变量;
(4)只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;
(5)对于非线性特征,需要进行转换。
logistic回归应用领域:
(1)用于二分类领域,可以得出概率值,适用于根据分类概率排名的领域,如搜索排名等;
(2)Logistic回归的扩展softmax可以应用于多分类领域,如手写字识别等;
(3)信用评估;
(4)测量市场营销的成功度;
(5)预测某个产品的收益;
(6)特定的某天是否会发生地震。
2.3 线性回归:
线性回归是用于回归的,它不像Logistic回归那样用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为::

而在LWLR(局部加权线性回归)中,参数的计算表达式为:

由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。

优点: 实现简单,计算简单;

缺点: 不能拟合非线性数据。

2.4 最近邻算法——KNN
KNN即最近邻算法,其主要过程为:
(1)计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);
(2)对上面所有的距离值进行排序(升序);
(3) 选前k个最小距离的样本;
(4)根据这k个样本的标签进行投票,得到最后的分类类别;
如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响,但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。近邻算法具有较强的一致性结果,随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。
优点:
(1)理论成熟,思想简单,既可以用来做分类也可以用来做回归;
(2)可用于非线性分类;
(3)训练时间复杂度为O(n);
(4)对数据没有假设,准确度高,对outlier不敏感;
(5)KNN是一种在线技术,新数据可以直接加入数据集而不必进行重新训练;
(6)KNN理论简单,容易实现.
缺点:
(1)样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少)效果差;
(2)需要大量内存;
(3)对于样本容量大的数据集计算量比较大(体现在距离计算上);
(4)样本不平衡时,预测偏差比较大。如:某一类的样本比较少,而其它类样本比较多;
(5)KNN每一次分类都会重新进行一次全局运算;
(6)k值大小的选择没有理论选择最优,往往是结合K-折交叉验证得到最优k值选择。
KNN算法应用领域:
文本分类、模式识别、聚类分析,多分类领域。
2.5 决策树:
决策树的一大优势就是易于解释。它可以毫无压力地处理特征间的交互关系并且是非参数化的,因此你不必担心异常值或者数据是否线性可分(举个例子,决策树能轻松处理好类别A在某个特征维度x的末端,类别B在中间,然后类别A又出现在特征维度x前端的情况)。它的缺点之一就是不支持在线学习,于是在新样本到来后,决策树需要全部重建。另一个缺点就是容易出现过拟合,但这也就是诸如随机森林RF(或提升树boosted tree)之类的集成方法的切入点。另外,随机森林经常是很多分类问题的赢家(通常比支持向量机好上那么一丁点),它训练快速并且可调,同时你无须担心要像支持向量机那样调一大堆参数,所以在以前都一直很受欢迎。
决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。
信息熵的计算公式如下:

决策树自身的优点:
(1)决策树易于理解和解释,可以可视化分析,容易提取出规则;
(2)可以同时处理标称型和数值型数据;
(3)比较适合处理有缺失属性的样本;
(4)能够处理不相关的特征;
(5)测试数据集时,运行速度比较快;
(6)在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
缺点:
(1)容易发生过拟合(随机森林可以很大程度上减少过拟合);
(2)容易忽略数据集中属性的相互关联;
(3)对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
(4)ID3算法计算信息增益时结果偏向数值比较多的特征。
改进措施:
对决策树进行剪枝。可以采用交叉验证法和加入正则化的方法。
使用基于决策树的combination算法,如bagging算法,randomforest算法,可以解决过拟合的问题;
应用领域:
企业管理实践,企业投资决策,由于决策树很好的分析能力,在决策过程应用较多。

2.5.1 ID3、C4.5算法:
ID3算法是以信息论为基础,以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类。ID3算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定的测试属性。
C4.5算法核心思想是ID3算法,是ID3算法的改进,改进方面有: 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;在树构造过程中进行剪枝;能处理非离散的数据;能处理不完整的数据。
优点:
产生的分类规则易于理解,准确率较高。
缺点:
(1)在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效;
(2)C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。
2.5.2 CART分类与回归树:
是一种决策树分类方法,采用基于最小距离的基尼指数估计函数,用来决定由该子数据集生成的决策树的拓展形。如果目标变量是标称的,称为分类树;如果目标变量是连续的,称为回归树。分类树是使用树结构算法将数据分成离散类的方法。
优点:
(1)非常灵活,可以允许有部分错分成本,还可指定先验概率分布,可使用自动的成本复杂性剪枝来得到归纳性更强的树。
(2)在面对诸如存在缺失值、变量数多等问题时CART 显得非常稳健。
2.6 Adaboosting
Adaboost是一种加和模型,每个模型都是基于上一次模型的错误率来建立的,过分关注分错的样本,而对正确分类的样本减少关注度,逐次迭代之后,可以得到一个相对较好的模型。该算法是一种典型的boosting算法,其加和理论的优势可以使用Hoeffding不等式得以解释。有兴趣的同学可以阅读下自己之前写的这篇文章AdaBoost算法详述.下面总结下它的优缺点。
优点:
(1)Adaboost是一种有很高精度的分类器;
(2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架;
(3)当使用简单分类器时,计算出的结果是可以理解的,并且弱分类器的构造极其简单;
(4)简单,不用做特征筛选;
(5)不易发生overfitting。
缺点:
对outlier比较敏感。
2.7 SVM支持向量机:
支持向量机,一个经久不衰的算法,高准确率,为避免过拟合提供了很好的理论保证,而且就算数据在原特征空间线性不可分,只要给个合适的核函数,它就能运行得很好。在动辄超高维的文本分类问题中特别受欢迎。可惜内存消耗大,难以解释,运行和调参也有些烦人,而随机森林却刚好避开了这些缺点,比较实用。
优点:
(1)可以解决高维问题,即大型特征空间;
(2)解决小样本下机器学习问题;
(3)能够处理非线性特征的相互作用;
(4)无局部极小值问题;(相对于神经网络等算法)
(5)无需依赖整个数据;
(6)泛化能力比较强;
缺点:
(1)当观测样本很多时,效率并不是很高;
(2)对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;
(3)对于核函数的高维映射解释力不强,尤其是径向基函数;
(4)常规SVM只支持二分类;
(5)对缺失数据敏感;
(6)对于核的选择也是有技巧的(libsvm中自带了四种核函数:线性核、多项式核、RBF以及sigmoid核):
第一,如果样本数量小于特征数,那么就没必要选择非线性核,简单的使用线性核就可以了;
第二,如果样本数量大于特征数目,这时可以使用非线性核,将样本映射到更高维度,一般可以得到更好的结果;
第三,如果样本数目和特征数目相等,该情况可以使用非线性核,原理和第二种一样。
对于第一种情况,也可以先对数据进行降维,然后使用非线性核,这也是一种方法。
SVM应用领域:
文本分类、图像识别(主要二分类领域,毕竟常规SVM只能解决二分类问题)
2.8 人工神经网络的优缺点:
人工神经网络的优点:
(1)分类的准确度高;
(2)并行分布处理能力强,分布存储及学习能力强;
(3)对噪声神经有较强的鲁棒性和容错能力;
(4)具备联想记忆的功能,能充分逼近复杂的非线性关系。
人工神经网络的缺点:
(1)神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;
(2)黑盒过程,不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;
(3)学习时间过长,有可能陷入局部极小值,甚至可能达不到学习的目的。
人工神经网络应用领域::
目前深度神经网络已经应用与计算机视觉,自然语言处理,语音识别等领域并取得很好的效果。
2.9 K-Means聚类:
是一个简单的聚类算法,把n的对象根据他们的属性分为k个分割,k< n。 算法的核心就是要优化失真函数J,使其收敛到局部最小值但不是全局最小值。
关于K-Means聚类的文章,参见机器学习算法-K-means聚类。关于K-Means的推导,里面可是有大学问的,蕴含着强大的EM思想。
优点:
(1)算法简单,容易实现 ;
(2)算法速度很快;
(3)对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。
(4)算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。
缺点:
(1)对数据类型要求较高,适合数值型数据;
(2)可能收敛到局部最小值,在大规模数据上收敛较慢
(3)分组的数目k是一个输入参数,不合适的k可能返回较差的结果。
(4)对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果;
(5)不适合于发现非凸面形状的簇,或者大小差别很大的簇。
(6)对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。
2.10 EM最大期望算法:
EM算法是基于模型的聚类方法,是在概率模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量。E步估计隐含变量,M步估计其他参数,交替将极值推向最大。

EM算法比K-means算法计算复杂,收敛也较慢,不适于大规模数据集和高维数据,但比K-means算法计算结果稳定、准确。EM经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。

2.11 集成算法(AdaBoost算法):
AdaBoost算法优点:
很好的利用了弱分类器进行级联;
可以将不同的分类算法作为弱分类器;
AdaBoost具有很高的精度;
相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。
Adaboost算法缺点:
AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定;
数据不平衡导致分类精度下降;
训练比较耗时,每次重新选择当前分类器最好切分点;
AdaBoost应用领域:
模式识别、计算机视觉领域,用于二分类和多分类场景。
2.12 排序算法(PageRank):
PageRank是google的页面排序算法,是基于从许多优质的网页链接过来的网页,必定还是优质网页的回归关系,来判定所有网页的重要性。(也就是说,一个人有着越多牛X朋友的人,他是牛X的概率就越大。)
PageRank优点:
完全独立于查询,只依赖于网页链接结构,可以离线计算。
PageRank缺点:
(1)PageRank算法忽略了网页搜索的时效性;
(2)旧网页排序很高,存在时间长,积累了大量的in-links,拥有最新资讯的新网页排名却很低,因为它们几乎没有in-links。
2.13 关联规则算法(Apriori算法):
Apriori算法是一种挖掘关联规则的算法,用于挖掘其内含的、未知的却又实际存在的数据关系,其核心是基于两阶段频集思想的递推算法 。
Apriori算法分为两个阶段:
寻找频繁项集
由频繁项集找关联规则
算法缺点:
在每一步产生侯选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;
每次计算项集的支持度时,都对数据库中 的全部记录进行了一遍扫描比较,需要很大的I/O负载。
三、算法选择参考:
首当其冲应该选择的就是逻辑回归,如果它的效果不怎么样,那么可以将它的结果作为基准来参考,在基础上与其他算法进行比较;
然后试试决策树(随机森林)看看是否可以大幅度提升你的模型性能。即便最后你并没有把它当做为最终模型,你也可以使用随机森林来移除噪声变量,做特征选择;
如果特征的数量和观测样本特别多,那么当资源和时间充足时(这个前提很重要),使用SVM不失为一种选择。
通常情况下:【GBDT>=SVM>=RF>=Adaboost>=Other…】,现在深度学习很热门,很多领域都用到,它是以神经网络为基础的。
算法固然重要,但好的数据却要优于好的算法,设计优良特征是大有裨益的。假如你有一个超大数据集,那么无论你使用哪种算法可能对分类性能都没太大影响(此时就可以根据速度和易用性来进行抉择)。

机器学习的算法分类、优劣比较和选择相关推荐

  1. 14种机器学习常见算法分类汇总

    14种机器学习常见算法分类汇总 2015-09-25 待字闺中 待字闺中 待字闺中 微信号 daiziguizhongren 功能介绍 深度分析大数据.深度学习.人工智能等技术,切中实际应用场景,为大 ...

  2. 机器学习常用算法归详细纳整理

    作者:进击的西西弗斯 本文链接:https://blog.csdn.net/qq_42216093/article/details/116434557 版权声明:本文为作者原创文章,未经作者同意禁止转 ...

  3. 数据挖掘与机器学习基本算法总结

    第一次写学习总结,主要是现在自己所学的东西,知识更新速度之快,自己的遗忘速度也是非常之恐怖.遂决定,压着自己的头皮,写一写总结,也算是给自己这么多年的学习有个交代和梳理. 数据挖掘与数据分析好书推荐: ...

  4. 机器学习中的模型评价、模型选择及算法选择

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 正确使用模型评估.模型选择和算法选择技术无论是对机器学习学术研究还是工业场景应用都至关重要.本文将对这三个任务的相关技术 ...

  5. 炼数成金数据分析课程---16、机器学习中的分类算法(交叉内容,后面要重点看)...

    炼数成金数据分析课程---16.机器学习中的分类算法(交叉内容,后面要重点看) 一.总结 一句话总结: 大纲+实例快速学习法 主要讲解常用分类算法(如Knn.决策树.贝叶斯分类器等)的原理及pytho ...

  6. 【Python成长之路】机器学习:10+分类算法汇总学习

    一直都说python是人工智能.机器学习等算法的良配,很多python大神除了常规的大数据爬虫.网站开发等代码能力外,人工智能/机器学习也都是手到擒来.因此我也"跳坑"来看看 . ...

  7. 机器学习Top10算法,教你选择最合适的那一个!

    本文经AI新媒体量子位(公众号ID:qbitai )授权转载,转载请联系出处 本文共3800字,建议阅读6分钟. 选什么算法?本文为你梳理TOP10机器学习算法特点. 在机器学习领域里,不存在一种万能 ...

  8. 【机器学习】机器学习Top10算法,教你选择最合适的那一个!一文读懂ML中的解析解与数值解...

    在机器学习领域里,不存在一种万能的算法可以完美解决所有问题,尤其是像预测建模的监督学习里. 比方说,神经网络不见得比决策树好,同样反过来也不成立. 最后的结果是有很多因素在起作用的,比方说数据集的大小 ...

  9. 收藏!机器学习算法分类图谱及其优缺点综合分析

    来源:必达智库 近日,Coggle对各类机器学习算法进行了归纳整理,形成了一个较为完整的机器学习算法分类图谱,并对每一类算法的优缺点进行了分析.具体分类如下: 正则化算法(Regularization ...

最新文章

  1. linux c warning 'XXX' declared 'static' but never defined解决方法
  2. NYOJ 518 取球游戏
  3. Android 数据加密算法 Des,Base64详解
  4. spark在服务器运行示例_创建示例HTTPS服务器以获取乐趣和收益
  5. duilib消息事件产生和分发解释
  6. 面码份量Java_JAVA语言(28道练习题)
  7. Errors reported here must be corrected before the service can be started.
  8. 线性插值改变图像尺寸_图像分割--gt;上采样的那些事
  9. lesson 6 threads synchronization
  10. Windows下使用TeamViewer连接远程服务器,以及解决“远程桌面关闭后TeamViewer不能连接”的问题
  11. 如何确定变量是“未定义”还是“空”?
  12. W10注册表及其打开方法
  13. Less入门以及一些前端面试题
  14. Is necessary to close fille in python?
  15. Kafka性能压测完整版
  16. 数据分析之excel和finebi报表可视化对比
  17. 抛砖引玉,扒扒伪基站那些事(转)
  18. webpack搭建服务器
  19. Java操作Excel之Excel文件的下载
  20. 计算机工程师对社会报答什么,报答

热门文章

  1. 世界生产力科学院院士(中国籍)名单
  2. ICPC 2017 Daejeon-Slot Machines
  3. 【项目】出库流程记录
  4. CT图像重构方法详解——傅里叶逆变换法、直接反投影法、滤波反投影法
  5. Qt动态图表更新实现
  6. 360手机刷机:360N7pro刷机
  7. mysql数据备份与导入(二)
  8. C语言如何定义p1口,求助C51里如何实现P1口输入?置1了还没行哦。
  9. macbook开机密码输入正确,却提示“密码错误”无法登陆解决办法
  10. 语音识别提取视频文案