当前位置: 首页 > 科技观察

人工智能机器学习常用算法总结及各常用算法准确率对比

时间:2023-03-13 01:21:52 科技观察

本文讲解机器学习常用算法总结及各常用分类算法准确率对比。收集了现在比较流行的TensorFlow和Sklearn,借鉴了Github和一些国内外的文章。机器学习的知识树,这张图在Github上,有兴趣的可以自己看看:地址:https://github.com/trekhleb/homemade-machine-learning简单翻译一下这棵树:如下是算法的一部分监督学习可以看作是原始的预测模型,有了基础的训练数据,然后输入需要预测的数据,得到预测结果(无论是连续的还是离散的)决策树(DecisionTree,DT)决策树是为人们提供决策依据的树状结构。决策树可用于回答是和否的问题。它通过树形结构表达各种情况的组合,每个A分支代表一个选择(选择是或否),直到所有选择都做出来,最后给出正确答案。决策树是一种树结构(它可以是二进制的或非二进制的)。在实际构建决策树时,通常会进行剪枝处理,以应对数据中噪声和异常值引起的过拟合问题。剪枝分为两种:第一种剪枝——在构建过程中,当某个节点满足剪枝条件时,直接停止该分支的构建。后剪枝——先构造一个完整的决策树,然后通过一定的条件遍历树进行剪枝。朴素贝叶斯分类器(NaiveBayesianModel,NBM)朴素贝叶斯分类器是基于贝叶斯定理及其假设(即特征相互独立,互不影响),主要用于解决分类和回归问题。具体应用包括:将电子邮件标记为垃圾邮件或非垃圾邮件;将新闻文章分类为技术、政治或体育;检查一段文本的正面或负面情绪;用于人脸识别软件。学过概率的同学一定知道贝叶斯定理,这是一种250多年前发明的算法,在信息领域有着无可比拟的地位。贝叶斯分类是一系列分类算法的总称。这些算法都是基于贝叶斯定理,所以统称为贝叶斯分类。朴素贝叶斯算法(NaiveBayesian)是应用最广泛的分类算法之一。朴素贝叶斯分类器基于一个简单的假设,即在给定目标值的情况下,属性在条件上相互独立。最小二乘法您可能听说过线性回归。最小均方用于寻找线性回归。如下图,平面上会有一系列的点,然后我们找一条线,让这条线尽可能的拟合这些点的分布,这就是线性回归。求这条直线的方法有很多,最小二乘法就是其中之一。最小二乘法的原理如下,找到一条线,使平面内所有点到这条线的欧氏距离之和最小。这条线就是我们要的。逻辑回归(LogisticRegression)逻辑回归模型是一种二元分类模型,选择不同的特征和权重对样本进行概率分类,使用对数函数计算样本属于某一类的概率。即一个样本有一定的概率属于一个类,也有一定的概率属于另一个类,概率大的类就是该样本所属的类。用于估计某事的可能性。支持向量机(SupportVectorMachine,SVM)是一种二元分类算法,它可以在N维空间中找到一个(N-1)维超平面,将这些点分为两类。也就是说,如果平面上有两类点是线性可分的,SVM可以找到一条最优的直线来分开这些点。SVM有广泛的应用。将两种类型分开,得到一个超平面,最优的超平面是达到两种类型的最大margin,margin是超平面和离它最近的点的距离,如下图,Z2>Z1,所以绿色超平面Flat更好。K近邻算法(KNN,K-NearestNeighbor)邻近算法,或称K近邻(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。KNN算法的核心思想是,如果一个样本在特征空间中的k个最近邻样本中的大部分属于某一类,则该样本也属于这一类,并具有该类样本的特征。该方法在确定分类决策时,仅根据距离最近的一个或几个样本的类别来确定待划分样本的类别。KNN方法在进行类别决策时只与极少数相邻样本相关。由于KNN方法主要依靠有限的周围样本而不是判别类域的方法来确定其所属的类别,因此KNN方法在类域交叉时对待划分的样本集比其他方法更准确或重叠更多。为了合身。主要应用领域是未知事物的识别,即判断未知事物属于哪一类。判断思路是根据欧几里得定理,判断未知事物的哪些特征与已知事物的特征最接近。如上图,绿色圆圈应该分到哪个类,是红色三角形还是蓝色方块?如果K=3,因为红色三角形的比例是2/3,绿色圆圈将被赋予红色三角形的类,如果K=5,因为蓝色方块的比例是3/5,绿色圆圈将被赋予蓝色四方形类的类。这也说明KNN算法的结果在很大程度上取决于K的选择。集成学习(EnsembleLearning)集成学习就是把很多分类器集成在一起,每个分类器有不同的权值,把这些分类器的分类结果合并在一起作为最终分类结果。最初的集成方法是贝叶斯决策。集成算法使用一些相对较弱的学习模型在相同的样本上独立训练,然后整合结果进行整体预测。集成算法的主要难点在于集成哪些独立的、较弱的学习模型,以及如何集成学习结果。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting、BootstrappedAggregation(Bagging)、AdaBoost、StackedGeneralization(Blending)、GradientBoostingMachine(GBM)、随机森林(RandomForest)。那么集成方法是如何工作的,为什么它们优于单个模型呢?它们消除了输出偏差:如果将倾向民主党的民意调查与倾向共和党的民意调查平均,你会得到一个中立的结果。它们减少了方差:一堆模型的聚合结果比单个模型的结果噪声更少。在金融领域,这被称为多元化——一种投资组合,其变动少于一只股票。这就是为什么你的模型在数据点越多而不是数据点越少的情况下会更好。它们不太可能过度拟合:如果你有一个没有过度拟合的单一模型,并且你以简单的方式(平均、加权平均、逻辑回归)组合这些预测,那么就没有过度拟合的空间。无监督学习聚类算法聚类算法是对一堆数据进行处理,并根据它们的相似性对数据进行聚类。聚类和回归一样,有时人们描述一类问题,有时又描述一类算法。聚类算法通常以中心点或分层方式合并输入数据。所有的聚类算法都试图找到数据的内部结构,以便根据最大的共性对数据进行分类。常见的聚类算法包括k-Means算法和期望最大化算法(ExpectationMaximization,EM)。聚类算法有很多种,如下:中心聚类、关联聚类、密度聚类、概率聚类、降维、神经网络/深度学习。K均值算法(K-Means)K均值算法是一种硬聚类算法,是基于原型的目标函数聚类方法的典型代表。将数据点到原型一定距离作为优化目标函数,采用函数求极值的方法得到迭代运行的调整规则。K-means算法以欧几里德距离作为相似度度量,寻找一个初始聚类中心向量V对应的最优分类,使评价指标J最小。该算法使用误差平方和准则函数作为聚类准则函数。K-means算法是典型的基于距离的聚类算法,它以距离作为相似度的评价指标,即两个对象之间的距离越近,相似度越大。该算法认为簇是由相互靠近的对象组成的,因此最终目标是获得紧凑且独立的簇。通常,人们根据样本之间的一定距离或相似性来定义聚类,即将相似(或接近)的样本归为同一类,将不相似(或遥远)的样本归为其他类。.主成分分析(PrincipalComponentAnalysis,PCA)是利用正交变换将一系列可能相关的数据转换成线性无关的数据,从而找到主成分。PCA方法最著名的应用应该是人脸识别中的特征提取和数据降维。PCA主要用于简单学习和可视化中的数据压缩和简化。但是PCA有一定的局限性,它需要你有特定领域的相关知识。它不适合嘈杂的数据。SVD矩阵分解(SingularValueDecomposition),又称奇异值分解(SingularValueDecomposition),是线性代数中一个重要的矩阵分解,是矩阵分析中正规矩阵酉对角化的扩展。它在信号处理、统计等领域有着重要的应用。SVD矩阵是复实复负矩阵。给定一个m行n列的矩阵M,则可以将M矩阵分解为M=UΣV。U和V是酉矩阵,Σ是对角矩阵。PCA实际上是SVD分解的简化版。在计算机视觉领域,最早的人脸识别算法是基于PCA和SVD,利用特征来表示人脸的特征,然后进行降维,最后进行人脸匹配。虽然现在人脸识别的方法很复杂,但基本原理都是大同小异的。独立成分分析(ICA)独立成分分析(ICA)是一种统计技术,用于发现随机变量下存在的隐藏因素。ICA为观察到的数据定义了一个生成模型。在该模型中,认为数据变量是由隐变量通过混合系统线性混合形成的,是未知的。并假设隐因子属于非高斯分布且相互独立,则称为可观测数据的独立分量。ICA与PCA相关,但它在寻找潜在因子方面效果很好。可应用于数字图像、文档数据库、经济指标、心理测量等。上图为基于ICA的人脸识别模型。事实上,这些机器学习算法并非都像想象中的那么复杂,有些还与高中数学息息相关。强化学习Q-LearningAlgorithmQ-Learning是为了解决以下问题:一个能够感知环境的自治代理,如何通过学习选择最优的动作来实现其目标。强化学习的目的是构造一个控制策略来最大化Agent行为的性能。Agent从复杂环境中感知信息并进行处理。智能体学习提高自身性能并选择行为,从而产生群体行为选择。个体行为选择和群体行为选择使主体做出选择某种行为的决定,进而影响环境。强化学习是指动物学习、随机逼近和最优控制的发展。它是一种没有导师的在线学习技术。它学习从环境状态到动作的映射,使代理根据最大奖励值采取最优策略;agent感知环境中的状态信息,搜索策略(哪种策略能产生最有效的学习)选择最优动作,从而引起状态变化并获得延迟奖励值,更新评价函数,完成一次学习后过程,进入下一轮学习训练,反复循环迭代,直到满足整个学习的条件,结束学习。Q-Learning是一种无模型的强化学习技术。具体来说,Q学习可用于为任何给定的(有限的)马尔可夫决策过程(MDP)寻找最佳动作选择策略。它学习一个动作价值函数,最终给出在给定状态下采取给定动作的预期效用,然后遵循最优策略。策略是代理在选择操作后遵循的规则。当学习到这样的动作价值函数时,可以通过简单地选择每个状态中具有最高价值的动作来构建最优策略。Q-learning的优势之一是能够在不需要环境模型的情况下比较可用操作的预期效用。此外,Q-learning可以在没有任何适应的情况下处理随机转换和奖励的问题。已经表明,对于任何有限的MDP,Q-learning最终会在从总体奖励的预期值返回到当前状态的所有后续步骤的最大可实现意义上找到最优策略。机器学习常用Python包sklearn开源机器学习模块,包括分类、回归、聚类系列算法,主要算法有SVM、逻辑回归、朴素贝叶斯、Kmeans、DBSCAN等;还提供了一些语料库。学习地址:https://scikit-learn.org/stable/modules/classes.htmlnumpyPython的语言扩展定义了数的数组和矩阵。提供存储单一数据类型的多维数组(ndarray)和矩阵(matrix)。学习地址:http://www.numpy.org/scipy在numpy的基础上增加了很多数学、科学和工程计算中常用的模块,如线性代数、常微分方程数值解、信号处理、图像处理等,稀疏矩阵等学习地址:https://www.scipy.org/pandas是直接处理和操作数据的主要包,提供dataframes等数据结构,方便处理表格数据学习地址:http:///pandas.pydata.org/statsmodelsstatisticsand计量经济学包包含用于参数评估和统计测试的实用工具。学习地址:https://pypi.org/project/statsmodels/matplotlib,pyplot,用于生成统计图的pylab。pyplot和pylab属于matplotlib的子模块,所以只要安装matplotlib,就会有pyplot和pylab。学习地址:https://matplotlib.org/jieba中文分词工具。学习地址:https://github.com/fxsjy/jiebaPattern这个库更像是一个“全套”库,因为它不仅提供了一些机器学习算法,还提供了工具来帮助你收集和分析数据。数据挖掘部分可帮助您从Google、Twitter和Wikipedia等Web服务收集数据。它还具有网络爬虫和HTMLDOM解析器。“引入这些工具的优势在于,在同一个程序中收集和训练数据变得更加容易。学习地址:https://github.com/clips/pattern各算法准确率对比本次计算准确率对比一共有21282个语料样本,911个分类标签。语料库为企业语料库,不对外开放。准确率的计算方法是将整体样本按照8:2的比例分成80%的训练集和20%的测试集。每篇文章都详细描述了实验过程。21282以下的数据量是抽取总样本数据的一部分做的实验。效果统计如下:支持向量机(SupportVectorMachine)升级版sklearnLiblinearsklearn随机森林(RandomForest)朴素贝叶斯模型)K近邻(K-NearestNeighbor)逻辑回归(LogisticRegression)决策树(DecisionTree)