机器学习常用算法总结
1,关于决策树的初步认识
决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。详情参加下面两篇博文:
http://kb.cnblogs.com/page/76196/(作者: EricZhang(T2噬菌体) )
http://www.cnblogs.com/bourneli/archive/2013/03/15/2961568.html(作者:
bourneli(李伯韬)的技术博客)
构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,是将给定的类标记的训练集合的数据划分D“最好”地分成个体类的启发式方法,它决定了拓扑结构及分裂点split_point的选择。
属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略。这里介绍ID3和C4.5两种常用算法。
ID3算法:核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。
设D为用类别对训练元组进行的划分,则D的熵(entropy)表示为:
其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计。熵的实际意义表示是D中元组的类标号所需要的平均信息量。
现在我们假设将训练元组D按属性A进行划分,则A对D划分的期望信息为:
而信息增益即为两者的差值:
ID3算法就是在每次需要分裂时,计算每个属性的增益率,然后选择增益率最大的属性进行分裂。
C4.5:ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。
C4.5算法首先定义了“分裂信息”,其定义可以表示成:
其中各符号意义与ID3算法相同,然后,增益率被定义为:
C4.5选择具有最大增益率的属性作为分裂属性,其具体应用与ID3类似,不再赘述。
CART分类回归树算法:CART算法的全称是分类回归树算法,他是一个二元分类,采用的是类似于熵的基尼指数作为分类决策,形成决策树后之后还要进行剪枝。与ID3,C4.5的主要区别,他的分类标准所采用的算法不同:
http://blog.csdn.net/androidlushangderen/article/details/42558235
2,KNN(K最近邻)算法。给定一些已经训练好的数据,输入一个新的测试数据点,计算包含于此测试数据点的最近的点的分类情况,哪个分类的类型占多数,则此测试点的分类与此相同,所以在这里,有的时候可以赋予不同的分类点不同的权重。近的点的权重大点,远的点自然就小点。
http://blog.csdn.net/androidlushangderen/article/details/42613011
3,贝叶斯分类:是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。
Naive Bayes(朴素贝叶斯)算法。朴素贝叶斯算法是贝叶斯算法里面一种比较简单的分类算法,用到了一个比较重要的贝叶斯定理,用一句简单的话概括就是条件概率的相互转换推导。思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
详细介绍链接:http://kb.cnblogs.com/page/76194/
贝叶斯网络(Bayesian networks):http://kb.cnblogs.com/page/76195/
4,SVM(支持向量机)算法。支持向量机算法是一种对线性和非线性数据进行分类的方法,非线性数据进行分类的时候可以通过核函数转为线性的情况再处理。其中的一个关键的步骤是搜索最大边缘超平面。
详细介绍链接:http://blog.csdn.net/androidlushangderen/article/details/42780439
5,K-Means(K均值)算法。K-Means算法是聚类算法(无监督学习),k在在这里指的是分类的类型数,所以在开始设定的时候非常关键,算法的原理是首先假定k个分类点,然后根据欧式距离计算分类,然后去同分类的均值作为新的聚簇中心,循环操作直到收敛。
参考:http://kb.cnblogs.com/page/76197/
6,逻辑回归(Logistic Regression)和线性回归的区别和联系:Logistic Regression 就是一个被logistic方程归一化后的线性回归,仅此而已。http://blog.sina.com.cn/s/blog_537ed51201019gu1.html
7,随机森林:,随机森林由许多的决策树组成,因为这些决策树的形成采用了随机的方法,因此也叫做随机决策树。随机森林中的树之间是没有关联的。当测试数据进入随机森林时,其实就是让每一颗决策树进行分类,最后取所有决策树中分类结果最多的那类为最终的结果。因此随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定
http://blog.csdn.net/songzitea/article/details/10035757
8,分类问题和回归问题:回归分析常用于分析两个变量X和Y 之间的关系。 比如 X=房子大小 和 Y=房价 之间的关系, X=(公园人流量,公园门票票价) 与 Y=(公园收入) 之间的关系等等。
但是分类问题的y值常常是一些离散的数字,(比如, 富帅为1, 吊丝为0), 所以我们已经不能用一个简单的线性函数来拟合这些数据了。我们需要一个更逼真的模型。
http://blog.csdn.net/ppn029012/article/details/8775597
9,SVM:
http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html
10,hadoop面试题:
http://www.36dsj.com/archives/17345
11,Apriori算法: Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。
挖掘步骤:
1.依据支持度找出所有频繁项集(频度)
2.依据置信度产生关联规则(强度)
①支持度:P(A ∩ B),既有A又有B的概率
②置信度:P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)
首先,找出频繁“1项集”的集合,该集合记作L1。L1用于找频繁“2项集”的集合L2,而L2用于找L3。如此下去,直到不能找到“K项集”。
详情请见连接:http://blog.csdn.net/lizhengnanhua/article/details/9061755
12,初试hadoop:Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。
MapReduce:两个过程Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。
参考链接:http://blog.sina.com.cn/s/blog_4d1865f001013xuf.html
浙公网安备 33010602011771号