带你走近被IEEE国际数据挖掘大会承认的最有影响力的算法!
有一天,当作者浏览https://paperswelove.org/时,发现了一篇有趣的文章,它被称为数据挖掘中的十大算法。它试图解释研究领域中最有影响力的数据挖掘算法的重要性。
为了找出在数据挖掘领域被广泛使用的最有影响力的算法,IEEE国际数据挖掘会议(ICDM,http://www.cs.uvm.edu/~icdm/)确定了数据挖掘中的十大算法。本文将列出前5个算法。
什么是算法?
算法是用有限的步骤解决数学问题(如求最大公约数)的程序,经常涉及到重复运算,通常是用计算机来解决问题或完成某一目的的一种步骤。
一个算法应该有三个重要的特征被认为是有效的:
1.精确度 - 步骤是精确规定的(定义)
2.唯一性 - 每个步骤的结果都独立依赖输入和前面步骤的结果
3.有限性 - 在有限数量的指令执行后,算法停止
4.输入 - 算法接收输入
5.输出 - 算法产生输出
6.一般性 - 该算法适用于一组输入
现在,让我们回到"数据挖掘中的前5个算法是什么"的问题。在这里本文列出了排名前5的算法,排列没有特定的顺序。
1. C4.5及以上
构造分类器的系统是数据挖掘中常用的工具之一。这种系统将一组案件作为输入,每个案例都属于少数几类中的一类,通过它的值来描述一组固定的属性,并输出一个能够准确预测新案例所属类别的分类器。
C4.5是由ROSS QuinlanC4.5开发的用于生成决策树的算法,C4.5是Quinlan早期ID3算法的扩展。由C4.5生成的决策树可以用于分类,因此C4.5通常被称为统计分类器。 Weka机器学习软件的作者将C4.5算法描述为"一种具有里程碑意义的决策树程序,它可能是目前在实践中应用最广泛的机器学习工具"。
给定一组情况,C4.5首先使用分而治之算法生成一棵初始树。 然后修剪初始树以避免过度拟合。
2. k-means算法
k-means算法是一种简单的迭代方法,可将给定数据集划分为用户指定数量的簇。 k-means是解决众所周知的聚类问题的最简单的无监督学习算法之一。
该过程遵循一种简单易行的方法,通过一定数量的聚类(假设k个聚类)对给定的数据集进行预先分类。主要思想是定义k个中心,每个聚类一个。这些中心应该以巧妙的方式放置,因为不同的位置会导致不同的结果。所以,更好的选择是尽可能放置的让它们远离彼此。下一步是获取属于给定数据集的每个点并将其与最近的中心相关联。此时,我们需要重新计算k个新质心作为上一步产生的聚类的重心。在我们有这k个新的质心后,必须在相同的数据集点和最近的新中心之间进行新的绑定。一个循环已经生成。由于这个循环,我们可能会注意到k个中心正在逐步改变它们的位置,直到不再做出任何改变或者换句话说,中心不再移动。最后,该算法旨在最小化平方误差函数的目标函数:
'|| xi - vj ||'是xi和vj之间的欧几里得距离。
'ci'是第i个集群中的数据点数。
'c'是聚类中心的数量。
3.支持矢量机
在当今的机器学习应用中,支持矢量机SVM被认为是必须尝试的——它提供了所有众所周知的算法中最稳健和最准确的方法之一。它具有良好的理论基础,仅需要十几个训练例子,且不受维度的数量的影响。此外,训练支持矢量机的有效方法也正在快速发展中。
在一个两类学习任务中,支持矢量机的目的是找到最佳分类函数来区分训练数据中两个类的成员。"最佳"分类函数概念的度量可以通过几何来实现。对于可线性分离的数据集,线性分类函数对应于通过两个类中间的分离超平面f(x),将两个类分开。一旦确定了这个函数,就可以通过简单地测试函数f(xn)的符号来分类新的数据实例xn;如果f(xn)> 0,则xn属于正类。
4. Apriori算法
最流行的数据挖掘方法之一是从事务数据集中查找频繁的项目集并导出关联规则。查找频繁的项目集(频率大于或等于用户指定的最小支持度的项目集)并非易事。一旦获得频繁的项目集,就可以直接生成关联规则,并且其置信度大于或等于用户指定的最小置信度。
Apriori是使用候选生成来找到频繁项目集的一个重要算法。它的特点是使用项目集的反单调性的水平完整搜索算法,"如果项目集不频繁,它的任何超集都不会频繁"。按照惯例,Apriori会假设事务或项目集中的项目按字典顺序排序。
在数据挖掘中可以用来查找算法的模式有许多,如决策树、分类规则和数据挖掘中经常使用的聚类技术都是在机器学习研究团体中发展起来的。频繁的模式和关联规则挖掘是这个传统的少数例外之一。这项技术的引入推动了数据挖掘研究,其影响是巨大的。该算法非常简单,易于实现。
5. 朴素贝叶斯
给定一组对象,每一对象属于一个已知的类,并且每一个对象都有一个已知的变量向量,我们的目标是构造一个规则,它允许我们只用给出向量描述未来对象的变量就可将未来的对象分配给一个类。
这种被称为监督分类的问题是普遍存在的,并且已经开发了许多构建这种规则的方法。一个非常重要的问题是朴素贝叶斯方法——也称为愚蠢者的贝叶斯、简单贝叶斯和独立贝叶斯。这种方法很重要,原因有几个:它非常容易构造,不需要任何复杂的迭代参数估计方案。这意味着它可能很容易应用于庞大的数据集。这很容易解释,因此对分类器技术不熟练的用户可以理解为什么要进行分类。最后,它通常做得非常好,它可能不是在任何特定应用程序中最好的分类器,但它是可靠的并且可以做得相当好。
最后,作者想补充一点,这个清单应该被视为一个观点,而不是一个全面的清单。本文列出了前5个算法,清单中的其他算法有PageRank、AdaBoost、kNN、CART和EM算法。