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

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.贝叶斯回归代码手写mob6454cc6eb555的技术博客贝叶斯回归代码手写 scikit-learn机器学习五 逻辑回归 朴素贝叶斯 实战:逻辑回归与朴素贝叶斯的比较 20.8.23补充 逻辑回归的定义 逻辑回归中常用的类 损失函数 正则化 逻辑回归的其他重要参数 实战:两种正则化的区别 逻辑回归 逻辑回归中,响应变量描述了结果是正向情况的概率。如果响应变量等于或者超过了一个区分阈值,https://blog.51cto.com/u_16099258/12872530
2.机器学习&深度学习算法及代码实现机器学习代码机器学习&深度学习算法及代码实现 原文地址:https://blog.csdn.net/qq_31456593/article/details/69340697 最近在学机器学习,学习过程中收获颇多,在此留下学习记录,希望与同道中人相互学习交流 最新深度学习教程和相关资源,请关注微信公众号:DoitNLP, 后面我会在DoitNLP上,持续更新深度学习、NLP、Tensorflow的相关教程https://blog.csdn.net/qq_31456593/article/details/69340697
3.十大经典机器学习算法详解及代码实现机器学习领域有许多经典算法,对于初学者来说,全面学习可能有些挑战。以下是十大经典机器学习算法的详细介绍,包括书籍、课件和源代码,供大家参考: 决策树 决策树是一种基于概率的决策分析方法,通过构建决策树来评估项目的风险和可行性。它是一种直观的概率分析图解法。 K均值聚类算法 https://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_4130926917743983440
4.源码机器学习算法清单!附Python和R代码附Python和R代码 本文约6000字,建议阅读8分钟。通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单,学起来吧~ 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。https://cloud.tencent.com/developer/article/1101907
5.机器学习算法一览(附python和R代码)写这篇文章的目的,就是希望它可以让有志于从事数据科学和机器学习的诸位在学习算法的路上少走些路。我会在文章中举例一些机器学习的问题,你们也可以在思考解决这些问题的过程中得到启发。我也会写下对于各种机器学习算法的一些个人理解,并且提供R和Python的执行代码。读完这篇文章,读者们至少可以行动起来亲手试试写http://www.bibdr.org/nd.jsp?id=56&_ngc=-1&groupId=8
6.机器学习算法及代码实现–决策树大码王机器学习算法及代码实现–决策树 1、决策树 决策树算法的核心在于决策树的构建,每次选择让整体数据香农熵(描述数据的混乱程度)减小最多的特征,使用其特征值对数据进行划分,每次消耗一个特征,不断迭代分类,直到所有特征消耗完(选择剩下数据中出现次数最多的类别作为这堆数据的类别),或剩下的数据全为同一类别,不必继https://www.cnblogs.com/huanghanyu/p/12911803.html
7.在Python中实现决策树算法的示例代码python决策树(Decision Tree)是一种常见的机器学习算法,被广泛应用于分类和回归任务中,并且再其之上的随机森林和提升树等算法一直是表格领域的最佳模型,所以本文将介绍理解其数学概念,并在Python中动手实现,这可以作为了解这类算法的基础知识+ 目录在深入研究代码之前,我们先要了解支撑决策树的数学概念:熵和信息增益https://www.jb51.net/python/294651gm9.htm
8.2020届计算机科学方向毕业设计(论文)阶段性汇报面向机器学习算法的中间语言设计第二次阶段性汇报 介绍当前项目进展,代码功能实现以及相应的演示。 林耘丰 频域激活函数推导与设计 卷积神经网络中包含卷积,池化,激活函数等算子。其中激活函数具有增加网络非线性性,提高模型表达能力的作用。为了在频域上计算神经网络,需要使用频域上的激活函数。本研究将从推导现有激活函数https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
9.R机器学习关键代码机器学习在R语言中是一个广泛的话题,涉及多种算法和包。以下是一些在R中实现机器学习的关键代码示例,包括数据预处理、模型训练、预测和评估: 1. 载入数据和包 # 载入所需的包,如dplyr用于数据处理,ggplot2用于绘图 library(dplyr) library(ggplot2) # 载入数据集 data <- read.csv("data.csv") 2. 数据预https://zhuanlan.zhihu.com/p/693609294
10.腾讯算法岗武功秘籍(上)所以,不要存在侥幸心理,踏踏实实的刷题,复习好常规机器学习算法,尤其是算法的原理和应用场景。 ★ 项目和比赛经历非常的重要,往往面试官都是根据项目里用到的方法拓展提问,对项目的优化和改进也问的比较多。还有就是能内推的一定去找学长学姐或是其它资源去内推。 ★ 面试过程中如果实在写不出来代码的话,就给https://www.flyai.com/article/930
11.教程:AutoML训练无代码分类模型本教程介绍如何在 Azure 机器学习工作室中使用 Azure 机器学习,通过无代码自动化机器学习 (AutoML) 来训练分类模型。 此分类模型预测某个金融机构的客户是否会认购定期存款产品。 利用自动化 ML,可以自动完成耗时密集型任务。 自动机器学习会快速循环访问算法和超参数的多个组合,以帮助你根据所选的成功指标找到最佳模型https://docs.microsoft.com/zh-cn/azure/machine-learning/tutorial-first-experiment-automated-ml
12.TensorFlow机器学习常用算法解析和入门上图为基于ICA的人脸识别模型。实际上这些机器学习算法并不是全都像想象中一样复杂,有些还和高中数学紧密相关。 后面讲给大家一一详细单独讲解这些常用算法。 强化学习 13)Q-Learning算法 Q-learning要解决的是这样的问题:一个能感知环境的自治agent,怎样通过学习选择能达到其目标的最优动作。 https://www.w3cschool.cn/tensorflow/tensorflow-s8uq24ti.html
13.轻松看懂机器学习十大常用算法通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题。 每个算法都看了好几个视频,挑出讲的最清晰明了有趣的,便于科普。 以后有时间再对单个算法做深入地解析。 https://www.jianshu.com/p/55a67c12d3e9
14.《常用算法之智能计算(三)》:机器学习计算因为机器学习计算中涉及了大量的统计学理论,机器学习与统计推断的联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习计算关注可以实现的、行之有效的学习算法,很多推论问题具有无程序可循的难度,所以部分的机器学习研究是开发简单、处理容易的近似算法。http://www.kepu.cn/blog/zhangjianzhong/201903/t20190327_475625.html