机器学习笔记
Posted Lyndon_zheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习笔记相关的知识,希望对你有一定的参考价值。
1、机器学习的主要任务是通过样本的特征进行分类,一般有两套独立的样本集:训练数据和测试数据。其中特征和属性通常是训练集样本的列,是独立测得结果,而测试数据集在测试阶段只输入特征,通过分类器来进行类别的标记,并与真值比较,得到分类器的精度。
2、机器学习跟模式识别、统计学习、数据挖掘、计算机视觉、语音识别和自然语言处理等领域有深刻的联系。从研究内容来说,机器学习与模式识别、统计学习、数据挖掘有很大的类似点,同时,机器学习与其他领域的处理技术结合,形成了计算机视觉、语音识别、自然语言处理等交叉学科。3、机器学习、数据挖掘经典算法归类: (1)、分类算法 分类算法是机器学习的主要内容,即通过对已知类别的样本进行学习,得到一种分类器,然后对未知类别的测试数据进行分类处理。 #1. C4.5算法 是机器学习中的一种分类决策树算法,是基于ID3算法进行改进后的一种重要算法。改进之处主要有:
- 用信息增益率来选择属性。ID3使用的是熵的变化值,而C4.5运用的是信息增益率;
- 在决策树构造过程中进行剪枝,避免某些具有很少元素的结点使构造出的决策树Overfitting;
- 对非离散数据也能处理;
- 能够对不完整数据进行处理。
#2. CART(Classification and Regression Tree)算法 分类与回归树(CART)也是典型的非参数分类和回归方法,与ID3算法和C4.5算法类似,与他们的不同之处在于:
- CART分类最后形成的树是一个二叉树,每个节点会分为左孩子和右孩子两个节点,所以CART算法在所选定的属性中又要划分出最佳的属性划分值,即在选定了的划分属性中确定按照拿个值作为二元划分;
- CART算法对于属性的值采用的是基于Gini系数值的方式做比较;
- CART算法在把数据进行分类后,为防止模型的过拟合,会对树进行一个剪枝,即除去不必要的多余分枝
#3. KNN(K-Nearest Neighbor algorithm)算法 K近邻算法与K-means聚类算法在思想上比较类似。 目前理解来看,K近邻训练的是带标记的样本,也就是监督学习,而K-means聚类算法则是对无标记物体进行聚类,也就是无监督学习。简单来都是物以类聚人以群分,即找最相似特征的样本入伙。主要思路为:如果一个样本与特征空间中的K个训练样本最相似,而这K个样本中的大多数属于某个类别,则该测试样本也属于该类别。下面用维基百科上的一幅图来简单说明问题:
在上图中,蓝色正方体和红色三角形是两类训练样本,绿色圆圈则是待分类的数据。现在的问题就是绿色圆圈究竟属于哪一类。
- 如果K=3,我们可以看到,3个物体中,两个红色三角>一个蓝色正方体,则该测试样本属于红色三角类。
- 如果K=5,情况则不一样了,5个类物体中,有三个蓝色正方形,则该测试样本属于蓝色正方体。
#4. Naive Bayes算法 朴素贝叶斯算法(NBC)是以概率论模型为理论依据的分类算法,有充分的理论依据和坚实的数学基础,在机器视觉中有着广泛的应用。贝叶斯理论的核心思想就是通过选取测试数据的最高概率来决定测试数据的类别。 贝叶斯模型的最终目的是求条件概率P(c|w),即测试数据具有w特征,属于某个类别c的概率是多少,其中,概率最高的就是该数据所属的类别。这涉及到条件概率以及诸多解释,将在后续每个算法的研究中进行解释。
#5. SVM(Support vector machines)算法 支持向量机(SVM)是一种监督式的二分类学习算法,广泛应用于统计分类以及回归分析中。支持向量机在解决小样本、非线性的高维模式识别中有许多优势。下面用一个简单的动态图来进行说明:
由上图我们可以看出,最初的两个训练样本在二维平面是线性不可分的,通过将其映射到三维空间,我们可以看到数据是可以通过分割平面进行分类的。同理,对于N-1维数据,如果在该维度是线性不可分的,我们可以通过核函数将其映射到更高的维度进行分类。
#6. EM算法 最大期望(EM, Expectation-Maximization)算法是一种概率模型算法,EM算法是寻找最大似然估计的算法,模型主要是通过观测值来确定模型的参数。
(2)、关联规则 关联规则简单来说就是从大量数据中挖掘出有价值的数据项之间的相关关系,例如:在商场购物中,如果消费者购买了产品A,那他还有多大的几率购买产品B?这就可以通过分析大多数的购买情况来进行推测,并合理的将相关产品放在相同的位置。 #7. Apriori算法 Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。通过上述的商品购买问题,我们来看看Apriori算法的具体步骤:
通过上述分析我们可以看出Apriori算法简单、易理解、数据要求低。但是每次循环产生的组合过多,没排除不该参与组合的元素,导致每次遍历时需要大量的计算,对于大型数据的开销太大。
#8. FP树算法 针对上述Apriori算法的性能瓶颈问题(大量候选集和重复扫描数据库),提出了基于FP树生成频繁项集的FP-growth算法。该算法只进行2次数据库扫描且它不使用候选集,直接压缩数据库成一个频繁模式树,最后通过树生成关联规则。
(3)连接分析 连接分析简单来说就是通过数据之间的相互联系来对数据进行排名。主要是应用在网页搜索、论文检索和社交网络方面。 #9. PageRank算法 谷歌专有算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度,实现了将连接价值概念作为排名的因素。PageRank关注的是链接的入度和出度,即本网页与其他网页的关系,计算出一个PR值,由此来判断网页的重要程度,并以此对网页进行排序。
#10. HITS算法 PageRank算法考虑的是网页的一维重要信息,即值计算网页的关注度。HITS算法则考虑了网页的二维重要信息:
- 权威页:某些网页提供某个主题的信息,而且具有非常重要的信息,这些网页被称为权威页;
- 导航页:某些网页不提供主题信息,但可以找到有关该主题的网页信息,这样的网页称为导航页。
如上图所示,该网页是斯坦福大学计算语言学研究组维护的页面,这个网页搜集了与统计自然处理相关的高质量资源,包括一些著名的开源软件包和语料库等,并通过连接的方式指向这些资源页面。这个页面就是一个导航页(Hub页面),而它指向的资源页面,大部分是高质量的权威页(Authority页面)。
(4)聚类算法
聚类算法是典型的无监督学习算法,聚类的训练数据都是不带标签的,算法的目的就是通过训练数据的特征将相似样本进行归类,并推测这些样本的标签。 #11. K-Means算法 K-Means聚类算法是很容易理解的基础聚类方法。其核心思想是初始随机给的K个簇中心,按照最近邻原则把待分类的样本点分类到各个簇。下面以K=2聚类算法为简例进行说明:
- 未聚类的初始样本点;
- 随机选取的两个点作为聚类中心;
- 计算每个点到聚类中心的距离,并将每个点聚类到离该点最近的类中;
- 重新计算每个聚类中所有点的平均值,并将该值定义为聚类的新中心;
- 重复计算每个点到新的聚类中心的距离,根据距离进行新的聚类,并再次计算聚类的新的中心,直到中心不在改变,聚类结束。
通过上述计算流程,我们可以看出K-means聚类算法的一些缺点:
- 最终簇的类别数目K不一定事先已知,如上图最佳K值是2,但人为定义可能是3,这就导致分类出现较大偏差,所以如何选一个合适的K值是一个问题;
- 最开始的种子点的选择会影响到聚类的效果;
- 对噪声和离群点敏感。
#12. BIRCH算法 利用层次方法的平衡迭代约减和聚类(BIRCH,Balanced Iterative Reducing and Hierarchis)是采用B-树实现的聚类算法。该算法的优点有:
- 只需要一次访问数据库,速度快;
- 相似数据在很大程度上得到压缩,节省了存储空间;
- 不需要大量递归运算。
(5)集成学习 所谓集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升分类方法效果。严格来说,集成学习并不算一种分类器,而是一种分类器结合的方法。 #13. Adaboost算法 Adaboost是一种迭代算法,源起于PAC模型,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把弱分类器集合起来,构造一个更强的强分类器。
- 弱学习算法:识别错误率小于1/2,即准确率仅比随机猜测略高的学习算法;
- 强学习算法:识别准确率很高并能够在多项式时间内完成的算法。
- 最左侧为待分类数据,“+”和“-”分别表示不同的类别;
- 先给所有样本相同的权重1/10(10个样本),并找到最佳的单层决策树,我们可以看到第一次分类后错误率为0.3(0.1+0.1+0.1),然后增加错误分类样本的权重,并降低正确分类的权重;
- 迭代上述操作,指导总的错误率满足要求。
(6)、序列模式分析 序列模式挖掘是指挖掘相对时间或其他模式出现频率高的模式,简单来说就是找出所有的频繁子序列。个人感觉与关联规则有一定的相似之处。 #14. GSP算法 GSP(Generalized Sequential patterns)算法类似前文提到的Apriori算法,大体可以分为候选集产生、候选集计数以及扩展分类三个阶段。
#15. PrefixSpan算法 与GSP算法相比,不产生任何候选集,但也可以挖掘出满足阈值的所有序列模式。
(7)整合挖掘 #16. CBA算法 CBA(Classification Based on Association)关联分类算法是将分类规则和关联规则整合后的算法。
(8)粗糙集约减算法 #17. finding reduct算法
(9)图挖掘 这里所说的图即图论,是通过事物之间的联系建立的图模型。基于图挖掘的算法可以进行社区网络分析、图分类、图聚类等。 #18. gSpan算法
算法来源: http://www.cs.uvm.edu/ ~icdm/algorithms/CandidateList.shtml。最后几种算法还没看过,本方向也较少涉及,就没再研究了。
以上是关于机器学习笔记的主要内容,如果未能解决你的问题,请参考以下文章