| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 常用机器学习算法优缺点分析 -> 正文阅读 |
|
[人工智能]常用机器学习算法优缺点分析 |
作者介绍 @飞狐冲冲 在国内知名央企负责AI算法建模类工作; 曾经在京东、美团等大型互联网公司担任算法工程师的岗位; 具有丰富的算法开发经验; “数据人创作者联盟”成员。 机器学习无疑是当前数据分析领域的一个热点内容,其理论和方法已经广泛应用于解决工程应用的复杂问题,很多人在平时的工作中都或多或少会用到机器学习的算法。 在机器学习领域,没有算法能完美地解决所有问题。比如说,神经网络并不是在任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。其结果是,在用给定的测试集来评估性能并挑选算法时,你应当根据具体的问题来采用不同的算法。例如,如果模型要求可解释性较强,首先想到的就是逻辑(线性)回归,如果模型要求准确度较高且速度较快,首先想到的是Xgboost,如果数据量巨大且很稀疏,首先想到怎么用神经网络解决此问题。 因此,如何选择机器学习算法、选择哪一个算法以及算法建模时该注意哪些问题成了工程师的一个难题,本文的目的总结了常用机器学习算法优缺点,供大家在工作、学习甚至面试中参考。机器学习主要分为有监督学习和无监督学习,本文从这两方面进行了梳理。 1?有监督算法 有监督学习是指模型学习时有特定目标,即目标是人工标注的,主要用做分类或者回归。常用的有监督学习主要有knn、逻辑(线性)回归、决策树、随机森林、adaboost、GBDT、xgboost、svm、朴素贝叶斯、人工神经网络等算法。 01?最近邻算法——KNN KNN可以说是最简单的分类算法,和另一种机器学习算法K均值算法有点像,但有着本质区别(K均值算法是无监督算法)。KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。 KNN算法的优点:
KNN算法的缺点:
02?逻辑(线性)回归 ? 逻辑回归是分类模型,线性回归是回归模型,逻辑回归和线性回归原理相似,逻辑回归其实仅为在线性回归的基础上,套用了一个逻辑函数。 线性回归的损失函数为均方误差类损失,逻辑回归的损失函数为交叉熵损失。逻辑回归的损失函数为什么选择交叉熵损失而不选择均方误差是面试中经常问道的问题,这里简单说一下:使用MSE作为损失函数的话,它的梯度是和sigmod函数的导数有关的,如果当前模型的输出接近0或者1时,就会非常小,接近0,使得求得的梯度很小,损失函数收敛的很慢。但是我们使用交叉熵的话就不会出现这样的情况,它的导数就是一个差值,误差大的话更新的就快,误差小的话就更新的慢点,这正是我们想要的。 逻辑(线性)回归的优点:
逻辑(线性)回归的缺点: 它最大的缺点就是对特征工程要求较高,主要体现在以下方面:
当然除了以上缺点,还有它的容易欠拟合,准确度并不是很高(个人认为强于决策树,弱于SVM、GBDT等强分类器)。 03?决策树 决策树的生成算法有ID3, C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。 决策树的优点:
决策树的缺点:
04?随机森林 是以决策树为基学习器的集成学习算法,如果分类模型,多个决策树进行投票处理,如果为回归模型,多个决策树结果平均值处理。 随机森林的优点:
随机森林的缺点:
05?GBDT GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法,它是决策树的boosting算法,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一。 GBDT的优点:
GBDT的缺点:
06?Xgboost XGBoost的全称是eXtreme Gradient Boosting,它是经过优化的分布式梯度提升库,旨在高效、灵活且可移植。XGBoost是大规模并行boosting tree的工具,它是目前最快最好的开源 boosting tree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量的Kaggle选手选用XGBoost进行数据挖掘比赛,是各大数据科学比赛的必杀武器;在工业界大规模数据方面,XGBoost的分布式版本有广泛的可移植性,支持在Kubernetes、Hadoop、SGE、MPI、 Dask等各个分布式环境上运行,使得它可以很好地解决工业界大规模数据的问题。它是GBDT的进阶,也就是Xgboost有着GBDT所有的优点。 此外与GBDT相比,xgBoosting有以下进步:
Xgboost缺点:
07?SVM ??????? SVM即支持向量机,它是将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。 ??????? SVM的优点:
SVM的缺点:
08?朴素贝叶斯算法 朴素贝叶斯算法是基于贝叶斯定理和特征条件独立假设的分类方法,属于生成式模型。 朴素贝叶斯的优点:
09?人工神经网络 ????????以上都是传统有监督机器学习算法,但传统的机器学习算法在数据量面前,会触及一个天花板,一旦到达极限,传统机器学习算法将无法跟上数据增长的步伐,性能则停滞不前。而数据越多,神经网络越浪!随着现在数据量越来越多,人工神经网络运用越来越广泛。 ????????人工神经网络的优点:
人工神经网络的缺点:
2?无监督算法 无监督学习输入数据没有被标记,也没有确定的结果,样本数据类别未知,需要根据样本间的相似性对样本集进行分类。常用的无监督模型主要指各种聚类,主要有K均值聚类、层次聚类、密度聚类等。 01?K均值聚类 K-Means的主要优点:
K-Means的主要缺点:
02?密度聚类 密度聚类优点:
密度聚类缺点:
03?层次聚类 层次聚类优点:
层次聚类的缺点:
总述 总之,选择哪一个算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。但很多情况下好的数据却要优于好的算法,设计优良特征和做特征工程更有意义,但只有了解每个机器算法的原理及优缺点,才能根据不同的机器学习算法做相应的特征工程。(对特征工程感兴趣的同学可以参考我在公众号一个数据人的自留地写的另一篇文章:机器学习中的特征工程。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 8:24:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |