机器学习常用的十大算法人工智能

2.适用于需要得到有分类概率额场景;

3.对小数据噪声的鲁棒性好,不会收轻微的多重共线性的影响

缺点:

1.容易欠拟合,分类精度可能不高;

2.数据有缺失和特征很大的时候表现不好。

2.支持向量机

对于两类线性可分学习任务,SVM找到一个间隔最大的超平面将两类样本分开,最大间隔能够保证该超平面具有最好的泛化能力。

1.可以解决小样本情况下的ML问题;

2.可以提高泛化性能

3.可以解决高维问题,避免维数灾难

4.可以解决非线性问题

参数C和g的选择对分类性能的影响:

C是惩罚系数,C越大,交叉validation高,容易过学习;

g是核函数的到达0的速率,g越小,函数下降快,交叉validation高,也容易造成过学习。

1.对缺失数据敏感;

1)解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。

2)仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。

3)有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。

4)样本量不是海量数据的时候,分类准确率高,泛化能力强。

SVM算法的主要缺点有:

1)如果特征维度远远大于样本数,则SVM表现一般。

2)SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。(不适用于大数据集)

3)非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。

4)SVM对缺失数据敏感。

2)在特征数非常多的情况下,或者样本数远小于特征数的时候,使用线性核,效果已经很好,并且只需要选择惩罚系数C即可。

3)在选择核函数时,如果线性拟合不好,一般推荐使用默认的高斯核'rbf'。这时我们主要需要对惩罚系数C和核函数参数γ进行艰苦的调参,通过多轮的交叉验证选择合适的惩罚系数C和核函数参数γ。

3.决策树

1.计算复杂度不高,易于理解和解释,可以理解决策树所表达的意义;

2.数据预处理阶段比较简单,且可以处理缺失数据;

3.能够同时处理数据型和分类型属性,且可对有许多属性的数据集构造决策树;

4.是一个白盒模型,给定一个观察模型,则根据所产生的决策树很容易推断出相应的逻辑表达式

6.可以对有许多属性的数据集构造决策树。

1.对于那些各类别样本数目不一致的数据,信息增益的结果偏向于那些具有更多数值的属性;

2.对噪声数据较为敏感;

3.容易出现过拟合问题;

5.处理缺失数据时的困难

决策树优点:

1)简单直观,生成的决策树很直观。

2)基本不需要预处理,不需要提前归一化,处理缺失值。

3)使用决策树预测的代价是O(log_2m)。m为样本数。

4)既可以处理离散值也可以处理连续值。很多算法只是专注于离散值或者连续值。

5)可以处理多维度输出的分类问题。

6)相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的解释

7)可以交叉验证的剪枝来选择模型,从而提高泛化能力。

8)对于异常点的容错能力好,健壮性高。

决策树算法的缺点:

1)决策树算法非常容易过拟合,导致泛化能力不强。可以通过设置节点最少样本数量和限制决策树深度来改进。

2)决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变。这个可以通过集成学习之类的方法解决。

3)寻找最优的决策树是一个NP难的问题,我们一般是通过启发式方法,容易陷入局部最优。可以通过集成学习之类的方法来改善。

4)有些比较复杂的关系,决策树很难学习,比如异或。这个就没有办法了,一般这种关系可以换神经网络分类方法来解决。

5)如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善。

4.KNN算法

一种惰性分类方法,从训练集中找出k个最接近测试对象的训练对象,再从这k个训练对象中找出居于主导的类别,将其赋给测试对象。

1.简单有效,容易理解和实现;

2.重新训练的代价较低(类别体系的变化和训练集的变化);

4.错误率渐进收敛于贝叶斯错误率,可作为贝叶斯的近似;

5.适合处理多模分类和多标签分类问题;

6.对于类域的交叉或重叠较多的待分类样本集较为适合;

1.是懒散学习方法,比一些积极学习的算法要慢;

2.计算量比较大,需对样本点进行剪辑;

3.对于样本不平衡的数据集效果不佳,可采用加权投票法改进;

4.k值的选择对分类效果有很大影响,较小的话对噪声敏感,需估计最佳k值。

5.可解释性不强,计算量大。

KNN的主要优点有:

1)理论成熟,思想简单,既可以用来做分类也可以用来做回归

2)可用于非线性分类

4)和朴素贝叶斯之类的算法比,对数据没有假设,准确度高,对异常点不敏感

5)由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合

6)该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分

KNN的主要缺点有:

1)计算量大,尤其是特征数非常多的时候

2)样本不平衡的时候,对稀有类别的预测准确率低

3)KD树,球树之类的模型建立需要大量的内存

4)使用懒散学习方法,基本上不学习,导致预测时速度比起逻辑回归之类的算法慢

5)相比决策树模型,KNN模型可解释性不强

5.朴素贝叶斯算法

贝叶斯分类器的分类原理是利用各个类别的先验概率,再利用贝叶斯公式及独立性假设计算出属性的类别概率以及对象的后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类别。

1.数学基础坚实,分类效率稳定,容易解释;

2.所需估计的参数很少,对缺失数据不太敏感;

3.无需复杂的迭代求解框架,适用于规模巨大的数据集。

2.需要知道先验概率,分类决策存在错误率。

朴素贝叶斯的主要优点有:

1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。

2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。

3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

朴素贝叶斯的主要缺点有:

2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

4)对输入数据的表达形式很敏感。

6.随机森林算法

1)训练可以高度并行化,对于大数据时代的大样本训练速度有优势。最主要的优点。

2)由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。

3)在训练后,可以给出各个特征对于输出的重要性

4)由于采用了随机采样,训练出的模型的方差小,泛化能力强。

6)对部分特征缺失不敏感。

RF的主要缺点有:

1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。

2)取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

7.AdaBoost算法

提升方法是从弱学习算法出发,反复学习,得到一系列的弱分类器(即基本分类器),然后组合这些弱分类器,构成一个强分类器,大多数的提升方法都是改变训练数据集的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列的弱分类器。

1.分类精度高;

2.可以使用各种方法构建子分类器,Adaboost算法提供的是框架;

3.简单,且不用做特征筛选;

4.不会造成overfitting。

1.对分类错误的样本多次被分错而多次加权后,导致权重过大,影响分类器的选择,造成退化问题;(需改进权值更新方式)

2.数据不平衡问题导致分类精度的急剧下降;

3.算法训练耗时,拓展困难;

4.存在过拟合,鲁棒性不强等问题。

Adaboost的主要优点有:

1)Adaboost作为分类器时,分类精度很高

2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。

3)作为简单的二元分类器时,构造简单,结果可理解。

4)不容易发生过拟合

Adaboost的主要缺点有:

1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

8.GBDT

GBDT主要的优点有:

1)可以灵活处理各种类型的数据,包括连续值和离散值。

3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如Huber损失函数和Quantile损失函数。

GBDT的主要缺点有:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。

9XGBoost算法

1.XGBoost与GBDT相比,其优势:

将树模型的复杂度加入到正则项中,来避免过拟合,因此泛化性能会优于GBDT。

损失函数用泰勒展开式展开,同时用到了一阶和二阶导数,可以加快优化速度。

GBDT只支持CART作为基学习器,XGBoost还支持线性分类器作为基学习器。

引进了特征子采样,像随机森林那样,既能避免过拟合,又能减少计算。

在寻找最优分割点时,考虑到传统的贪心算法效率较低,实现了一种近似贪心算法,用来加速和减少内存小号,除此之外,还考虑了稀疏数据集合缺失值的处理。

XGBoost支持并行处理。XGBoost的并行不是模型生成的并行,而是在特征上的并行,将特征排序后以block的形式存储在内存中,在后面迭代重复使用这个结构。这个block也使得并行化成为了可能,其次在节点分裂时,计算每个特征的增益,最终选择增益最大的那个特征去做分割,那么各个特征的增益计算就可以开多线程进行。

2.与lightGBM相比的不足点:

XGBoosting采用level-wise生成决策树,同时分裂同一层的叶子,从而进行多线程优化,不容易过拟合,但很多叶子节点的分裂增益较低,没必要进行跟进一步的分裂,这就带来了不必要的开销;LightGBM采用深度优化,leaf-wise生长策略,每次从当前叶子中选择增益最大的结点进行分裂,循环迭代,但会生长出更深的决策树,产生过拟合,因此引入了一个阈值进行限制,防止过拟合。

10.人工神经网络

1.分类的准确度高,并行分布处理能力强,分布存储及学习能力强;

2.对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。

2.不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;

THE END
1.有哪些学习算法的网站推荐?算法编程题库 1. leetcode http://leetcode.com/ 2. careerup http://www.c RivenL阅读 743评论 0赞 2 ACM 国内外几个网站 & 题目分类 国外 西班牙Valladolid大学 Uva:https://uva.onlinejudge.org俄罗斯Ural 百炼阅读 4,623评论 0赞 18 ACM算法分类、推荐学习资料和配套习题 相信每一位玩ACM程https://www.jianshu.com/p/06ff13b234e3
2.几个常用的算法学习网站腾讯云开发者社区几个常用的算法学习网站 万丈高楼平地起,要想厚积薄发平时就必须努力!少说多做,能动手的决不动口。这几个网站收藏了,抽时间练习上面的算法!加油!Just fighting! http://www.lintcode.com https://www.topcoder.com http://train.usaco.org https://leetcode.comhttps://cloud.tencent.com/developer/article/1374687
3.推荐几个算法可视化网站,从此轻松学算法!大家好,我是大彬~ 很多初学者在学习数据结构与算法的时候,都会觉得很难,很大一部分是因为数据结构与算法本身比较抽象,不好理解。对于这一点,可以通过一些可视化动画来帮助理解。 下面大彬推荐几个学习数据结构和算法的可视化工具。 Data Structure Visualizations 这是https://m.nowcoder.com/feed/main/detail/6ecdab56f00b44bfacf3cb854929059e
4.6个超酷的练习算法,学习编程的网站如果您已经编程了一段时间,想学习一种新的语言,学习一种新的思维方式,那就去运动吧! 总结 在本文中,我分享了6个超酷的网站来练习算法和学习编程! 我个人认为您不需要学习太多,如果想在面试之前进行练习,请访问Skilled / Hackerrank / Leetcode。 或者,如果您需要学习新的语言,请选择运动。https://news.51cto.com/art/202006/618315.htm
5.吴师兄学算法五分钟学算法吴师兄学算法(www.cxyxiaowu.com)提供许多数据结构与算法学习的基础知识, 涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。https://www.cxyxiaowu.com/
6.学习编程算法网站火山引擎是字节跳动旗下的云服务平台,将字节跳动快速发展过程中积累的增长方法、技术能力和应用工具开放给外部企业,提供云基础、视频与内容分发、数智平台VeDI、人工智能、开发与运维等服务,帮助企业在数字化升级中实现持续增长。本页核心内容:学习编程算法网站_凡科建https://www.volcengine.com/theme/1174833-X-7-1
7.通过动画可视化数据结构和算法VisuAlgo 于2011年由Steven Halim博士构想出来,作为一个工具,帮助他的学生更好地理解数据结构和算法,让他们能够自学基础知识并按照自己的节奏进行。他与新加坡国立大学的学生一起开发并整合了一系列的可视化,从简单的排序算法到复杂的图形数据结构。虽然这些设计主要是http://visualgo.net/zh
8.ITPCB–又一个WordPress站点Category 0 Admin Enroll Now OUR TOP post 世界,您好! 欢迎使用WordPr… All Posts 世界,您好! passiontim_itpcb 2024年 7月 9日 1 min read 欢迎使用WordPress。这是您的第一篇文章。. Read Morehttp://www.itpcb.com/
9.全网最全程序员学习网站汇总,还不赶快收藏简介:经典的刷题网站,主要是算法题。 推荐指数:? 2、LintCode 地址: LintCode 简介:和LeetCode相似 推荐指数: 3、牛客网 地址: 牛客网 简介:一个联网求职学习交流社区。 推荐指数: 最后 我目前从事Java开发,给各位Java程序员推荐一下干货知识点和聚集地。在学https://www.songma.com/news/txtlist_i66992v.html
10.五分钟学算法链接直达手机查看 GitHub 42000 Star,全球排名 79 。小吴讲算法,图解面试算法,来和程序员小吴一起学算法吧,学习如何刷力扣(LeetCode),掌握如何学习数据结构。五分钟学算法官网,一个算法学习的网站,图解力扣算法,看动画,刷力扣,备面试,跳槽涨薪美滋滋。https://www.toolmao.com/sites/1338.html
11.全面人工智能技术栈与学习路线:机器学习深度学习视觉NLP机器学习:这门课程中学习:线性回归 与 决策树与支持向量机Adaboost以及Bagging算法。 深度学习:这门课程:人工神经网络 单层/多层感知机 BP神经网络 Hopfield网络 卷积神经网络 LeNet5 这本书:《人工智能原理及其应用》特别全面,还有很多知识上述没列出来,下面将详细介绍。 https://download.csdn.net/blog/column/9877528/108107911
12.台风科学研究为防灾减灾强支撑台风尺度估算研究采用了静止气象卫星红外观测数据、中国气象局和联合台风警报中心(JTWC)的最佳路径资料,以及少量的台风中心和外围飞机观测报数据;选用多层感知器(MLP)、广义回归神经网络(GRNN)等5种典型的机器学习算法,建立卫星观测及台风本体物理属性信息与台风特征大风半径之间的非线性关系。 https://www.cma.gov.cn/2011xwzx/2011xqxxw/2011xqxyw/202305/t20230531_5541701.html
13.Python机器学习10大经典算法的讲解和示例python为了展示10个经典的机器学习算法的最简例子,我将为每个算法编写一个小的示例代码。这些算法将包括线性回归、逻辑回归、K-最近邻(KNN)、支持向量机(SVM)、决策树、随机森林、朴素贝叶斯、K-均值聚类、主成分分析(PCA)、和梯度提升(Gradient Boosting)。我将使用常见的机器学习库,如 scikit-learn,numpy 和 pandas 来https://www.jb51.net/python/322045198.htm
14.力扣(LeetCode)全球极客挚爱的技术成长平台海量技术面试题库,拥有算法、数据结构、系统设计等 1000+题目,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode-cn.com/
15.支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习《代码随想录》LeetCode 刷题攻略:200道经典题目刷题顺序,共60w字的详细图解,视频难点剖析,50余张思维导图,支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习不再迷茫! 来看看,你会发现相见恨晚!https://portrait.gitee.com/programmercarl/leetcode-master
16.融合用户属性信息的冷启动推荐算法AET2.2 使用神经网络学习用户属性到兴趣空间的变换关系 部分有历史评分记录的用户和商品,也有非评分数据存在,例如用户的年龄、性别、职业、居住地等。当使用矩阵分解技术,建立了用户、商品的语义索引以后,可以使用机器学习算法,训练从非评分数据到隐语义空间的映射。 http://www.chinaaet.com/article/3000073409
17.代码随想录(豆瓣)《代码随想录——跟着Carl学算法》采用了力扣(LeetCode)的原题,方便读者在学习算法的同时,及时练习相关代码,加深对相关概念的理解。 《代码随想录——跟着Carl学算法》适合所有程序员阅读,特别是正在准备面试的程序员。希望本书可以帮助读者循序渐进地学习算法,并搭建起知识框架,提升算法功力。 https://book.douban.com/subject/35680544/