数据挖掘领域的十大经典算法原理及应用国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。
1.C4.5C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法.C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:1)用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;2) 在树构造过程中进行剪枝;3) 能够完成对连续属性的离散化处理;4) 能够对不完整数据进行处理。
C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。
其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
2. The k-means algorithm即K-Means算法k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。
它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。
它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。
3. Support vector machines支持向量机,英文为Support Vector Machine,简称SV 机(论文中一般简称SVM)。
它是一种監督式學習的方法,它广泛的应用于统计分类以及回归分析中。
支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。
在分开数据的超平面的两边建有两个互相平行的超平面。
分隔超平面使两个平行超平面的距离最大化。
假定平行超平面间的距离或差距越大,分类器的总误差越小。
一个极好的指南是C.J.C Burges的《模式识别支持向量机指南》。
van der Walt 和Barnard 将支持向量机和其他分类器进行了比较。
4. The Apriori algorithmApriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。
其核心是基于两阶段频集思想的递推算法。
该关联规则在分类上属于单维、单层、布尔关联规则。
在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
5. 最大期望(EM)算法在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variabl)。
最大期望经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。
6. PageRankPageRank是Google算法的重要内容。
2001年9月被授予美国专利,专利人是Google创始人之一拉里·佩奇(Larry Page)。
因此,PageRank里的page不是指网页,而是指佩奇,即这个等级方法是以佩奇来命名的。
PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。
PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。
这个就是所谓的“链接流行度”——衡量多少人愿意将他们的网站和你的网站挂钩。
PageRank这个概念引自学术中一篇论文的被引述的频度——即被别人引述的次数越多,一般判断这篇论文的权威性就越高。
7. AdaBoostAdaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。
将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。
8. kNN: k-nearest neighbor classificationK最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
9. Naive Bayes在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBC)。
朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
同时,NBC 模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。
理论上,NBC模型与其他分类方法相比具有最小的误差率。
但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。
在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。
而在属性相关性较小时,NBC模型的性能最为良好。
10. CART: 分类与回归树CART, Classification and Regression Trees。
在分类树下面有两个关键的思想。
第一个是关于递归地划分自变量空间的想法;第二个想法是用验证数据进行剪枝。
找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。
纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有相关职位,另外一些国内的中小型企业和外企也会招一小部分。
当然了,其中大部分还是百度北京要人最多,上百人。
阿里的算法岗位很大一部分也是搞机器学习相关的。
另外本人有幸签约了网易杭州研究院的深度学习算法岗位,打算从事机器学习领域至少5年。
非常感谢小易收留了我!下面是本人在找机器学习岗位工作时,总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想,希望对大家找机器学习岗位时有点帮助。
实际上在面试过程中,懂这些算法的基本思想和大概流程是远远不够的,那些面试官往往问的都是一些公司内部业务中的课题,往往要求你不仅要懂得这些算法的理论过程,而且要非常熟悉怎样使用它,什么场合用它,算法的优缺点,以及调参经验等等。
说白了,就是既要会点理论,也要会点应用,既要有点深度,也要有点广度,否则运气不好的话很容易就被刷掉,因为每个面试官爱好不同。
朴素贝叶斯:有以下几个地方需要注意:1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。
2. 计算公式如下:其中一项条件概率可以通过朴素贝叶斯条件独立展开。
要注意一点就是的计算方法,而由朴素贝叶斯的前提假设可知,=,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。
3. 如果中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。
朴素贝叶斯的优点:对小规模的数据表现很好,适合多分类任务,适合增量式训练。
缺点:对输入数据的表达形式很敏感。
决策树:决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。
信息熵的计算公式如下:其中的n代表有n个分类类别(比如假设是2类问题,那么n=2)。
分别计算这2类样本在总样本中出现的概率p1和p2,这样就可以计算出未选中属性分枝前的信息熵。
现在选中一个属性xi用来进行分枝,此时分枝规则是:如果xi=vx的话,将样本分到树的一个分支;如果不相等则进入另一个分支。
很显然,分支中的样本很有可能包括2个类别,分别计算这2个分支的熵H1和H2,计算出分枝后的总信息熵H’=p1*H1+p2*H2.,则此时的信息增益ΔH=H-H’。
以信息增益为原则,把所有的属性都测试一边,选择一个使增益最大的属性作为本次分枝属性。
决策树的优点:计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;缺点:容易过拟合(后续出现了随机森林,减小了过拟合现象);Logistic回归:Logistic是用来分类的,是一种线性分类器,需要注意的地方有:1. logistic函数表达式为:其导数形式为:2. logsitc回归方法主要是用最大似然估计来学习的,所以单个样本的后验概率为:到整个样本的后验概率:其中:通过对数进一步化简为:3. 其实它的loss function为-l(θ),因此我们需使loss function最小,可采用梯度下降法得到。
梯度下降法公式为:Logistic回归优点:1、实现简单;2、分类时计算量非常小,速度很快,存储资源低;缺点:1、容易欠拟合,一般准确度不太高2、只能处理两分类问题(在此基础上衍生出来的softmax 可以用于多分类),且必须线性可分;线性回归:线性回归才是真正用于回归的,而不像logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为:而在LWLR(局部加权线性回归)中,参数的计算表达式为:因为此时优化的是:由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。
线性回归优点:实现简单,计算简单;缺点:不能拟合非线性数据;KNN算法:KNN即最近邻算法,其主要过程为:1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);2. 对上面所有的距离值进行排序;3. 选前k个最小距离的样本;4. 根据这k个样本的标签进行投票,得到最后的分类类别;如何选择一个最佳的K值,这取决于数据。