常见的机器学习算法
诞生于1956年的人工智能,由于受到智能算法、计算速度、存储水平等因素的影响,在六十多年的发展过程中经历了多次高潮和低谷。最近几年,得益于数据量的上涨、运算力的提升,特别是机器学习新算法的出现,人工智能迎来了大爆发的时代。
提到机器学习这个词时,有些人首先想到的可能是科幻电影里的机器人。事实上,机器学习是一门多领域交叉学科,涉及概率论、统计学、算法复杂度理论等多门学科。专门研究计算机如何模拟或实现人类的学习行为,利用数据或以往的经验,以此优化计算机程序的性能标准。
根据学习任务的不同,我们可以将机器学习分为监督学习、非监督学习、强化学习三种类型,而每种类型又对应着一些算法。
各种算法以及对应的任务类型
接下来就简单介绍几种常用的机器学习算法及其应用场景,通过本篇文章大家可以对机器学习的常用算法有个常识性的认识。
一、监督学习
(1)支持向量机(Support Vector Machine,SVM):是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。例如,在纸上有两类线性可分的点,支持向量机会寻找一条直线将这两类点区分开来,并且与这些点的距离都尽可能远。
优点:泛化错误率低,结果易解释。
缺点:对大规模训练样本难以实施,解决多分类问题存在困难,对参数调节和核函数的选择敏感。
应用场景:文本分类、人像识别、医学诊断等。
(2)决策树(Decision Tree):是一个预测模型,代表的是对象属性与对象值之间的一种映射关系。下图是如何在决策树中建模的简单示例:
优点:易于理解和解释,可以可视化分析,容易提取出规则;能够处理不相关的特征。
缺点:对缺失数据处理比较困难。
应用场景:在决策过程应用较多。
(3)朴素贝叶斯分类(Naive Bayesian classification):对于给出的待分类项,求解此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类属于哪个类别。贝叶斯公式为:p(A|B)= p(B|A)*p(A/p(B),其中P(A|B)表示后验概率,P(B|A)是似然值,P(A)是类别的先验概率,P(B)代表预测器的先验概率。
优点:在数据较少的情况下仍然有效,可以处理多类别问题。
缺点:对输入数据的准备方式较为敏感。
应用场景:文本分类、人脸识别、欺诈检测。
(4)k-近邻算法(K-Nearest Neighbor,KNN):是一种基于实例的学习,采用测量不同特征值之间的距离方法进行分类。其基本思路是:给定一个训练样本集,然后输入没有标签的新数据,将新数据的每个特征与样本集中数据对应的特征进行比较,找到最邻近的k个(通常是不大于20的整数)实例,这k个实例的多数属于某个类,就把该输入实例分类到这个类中。
优点:简单、易于理解、易于实现,无需估计参数。此外,与朴素贝叶斯之类的算法比,无数据输入假定、准确度高、对异常数据值不敏感。
缺点:对于训练数据依赖程度比较大,并且缺少训练阶段,无法应对多样本。
应用场景:字符识别、文本分类、图像识别等领域。
二、非监督学习
(1)主成分分析(Principal Component Analysis,PCA):是一种统计方法。其主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。
优点:降低数据的复杂性,识别最重要的多个特征。
缺点:主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强;有可能损失有用的信息。
应用场景:语音、图像、通信的分析处理。
(2)奇异值分解(Singular Value Decomposition,SVD):可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。
优点:简化数据,去除噪声点,提高算法的结果。
缺点:数据的转换可能难以理解。
应用场景:推荐系统、图片压缩等。
(3)K-均值聚类(K-Means):是一种迭代求解的聚类分析算法,采用距离作为相似性指标。其工作流程是随机确定K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。
优点:算法简单容易实现。
缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢。
应用场景:图像处理、数据分析以及市场研究等。
三、强化学习
Q-learning:是一个基于值的强化学习算法,它根据动作值函数评估应该选择哪个动作,这个函数决定了处于某一个特定状态以及在该状态下采取特定动作的奖励期望值。
优点:可以接收更广的数据范围。
缺点:缺乏通用性。
应用场景:游戏开发。
以上就是文章的全部内容,相信大家对常用的机器学习算法应该有了大致的了解。
现如今,我们越来越多地看到机器学习算法为人类带来的实际价值,如它们提供了关键的洞察力和信息来报告战略决策。可以肯定的是,随着机器学习越来越流行,未来还将出现越来越多能很好地处理任务的算法。