几种机器学习算法的优缺点

1决策树(Decision Trees)的优缺点

决策树的优点:

一、           决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义。

二、           对于决策树,数据的准备往往是简单或者是不必要的.不需要预处理数据。

三、           决策树是一个白盒模型。如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。

四、          在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

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

六、           决策树可很好地扩展到大型数据库中,同时它的大小独立于数据库的大小。

 

决策树的缺点:

一、           对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征。

二、           决策树处理缺失数据时的困难。

三、           过度拟合问题的出现。

四、           忽略数据集中属性之间的相关性。

 

 

2 人工神经网络的优缺点

人工神经网络的优点:分类的准确度高,并行分布处理能力强,分布存储及学习能力强,对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。

人工神经网络的缺点:神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;学习时间过长,甚至可能达不到学习的目的。

 

 

3 遗传算法的优缺点

遗传算法的优点:

一、           与问题领域无关切快速随机的搜索能力。

二、           搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,鲁棒性好。

三、           搜索使用评价函数启发,过程简单。

四、           使用概率机制进行迭代,具有随机性。

五、           具有可扩展性,容易与其他算法结合。

 

遗传算法的缺点:

一、           遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,

二、           另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间。

三、           算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。

 

 

4 KNN算法(K-Nearest Neighbour) 的优缺点

KNN算法的优点:

一、          简单、有效。

二、          重新训练的代价较低。

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

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

 

KNN算法缺点:

一、           KNN算法是懒散学习方法(lazy learning,基本上不学习),一些积极学习的算法要快很多。

二、           类别评分不是规格化的(不像概率评分)。

三、           输出的可解释性不强。

四、           该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用加权值的方法来改进。

五、           计算量较大。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。

六、   k值的确定。

 

 

5 支持向量机(SVM)的优缺点

SVM的优点:

一、           可以解决小样本情况下的机器学习问题。

二、           可以提高泛化性能。

三、           可以解决高维问题。

四、           可以解决非线性问题。

五、           可以避免神经网络结构选择和局部极小点问题。

 

SVM的缺点:

一、           对缺失数据敏感。

二、           对非线性问题没有通用解决方案,必须谨慎选择Kernel  function来处理。

 

 

6 朴素贝叶斯的优缺点

优点:

一、           朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。

二、           NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。

 

缺点:

一、           理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的(可以考虑用聚类算法先将相关性较大的属性聚类),这给NBC模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。

二、           需要知道先验概率。

三、           分类决策存在错误率。

 

 

 

7 Adaboosting方法的优点

一、           adaboost是一种有很高精度的分类器。

二、           可以使用各种方法构建子分类器,Adaboost算法提供的是框架。

三、           当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。

四、           简单,不用做特征筛选。

五、           不用担心overfitting。

 

 

准确率和召回率的使用条件和计算方式,即什么情况下正确率指标不适用?

准确率(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN)
精确率(precision) = TP/(TP+FP)
召回率(recall) = TP/(TP+FN)

在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。

比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义。

 

转自:http://www.cnblogs.com/ljy2013/p/4268158.html

转载于:https://www.cnblogs.com/Allen-rg/p/7301698.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【贪心】买卖股票的最佳时机含手续费

/** 贪心:每次选取更低的价格买入,遇到高于买入的价格就出售(此时不一定是最大收益)。* 使用buy表示买入股票的价格和手续费的和。遍历数组,如果后面的股票价格加上手续费* 小于buy,说明有更低的买入价格更新buy。如…

本科毕设论文——基于Kinect的拖拉机防撞系统

基于Kinect的拖拉机防撞系统电子信息科学与技术专业学生 sukeysun 摘要:随着智能车辆技术的发展,智能导航定位和实时车载监控等技术被更多的应用到日常生活照。在农业领域上,车辆自主感知道路环境并制定实时避障策略还存在不足,特…

排序算法Java代码实现(二)—— 冒泡排序

本篇内容: 冒泡排序冒泡排序 算法思想: 冒泡排序的原理是:从左到右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。 代码实现: /*** */ packag…

创意产品 分析_使用联合分析来发展创意

创意产品 分析Advertising finds itself in a tenacious spot these days serving two masters: creativity and data.如今,广告业处于一个顽强的位置,服务于两个大师:创造力和数据。 On the one hand, it values creativity; and it’s not…

leetcode 剑指 Offer 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s “We are happy.” 输出:“We%20are%20happy.” 解题思路 一次遍历,检查空格,然后替换 代码 class Solution {publ…

两个富翁打赌_打赌您无法解决这个Google面试问题。

两个富翁打赌by Kevin Ghadyani通过凯文加迪亚尼(Kevin Ghadyani) 打赌您无法解决这个Google面试问题。 (Bet you can’t solve this Google interview question.) 将棘手的问题分解为小块。 (Breaking tough problems into small pieces.) I wanted to see someone else’s t…

vue.js 安装

写 一个小小的安装步骤 踩坑过来的 点击.然后安装cnpm.再接着使用文章说明继续安装 # 全局安装 vue-cli $ cnpm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project这时候一路空格 选项.当遇到第一个让你敲 Y/N 的时候 选择Y …

Swift 的函数和闭包

函数的关键字是 func ,函数定义的格式是: func funcName(para:paraType) -> returnType{// code } 复制代码函数的参数标签 其中参数的那部分的详细结构是用小括号括起来,参数名,冒号,参数类型: (number…

pandas之表格样式

在juoyter notebook中直接通过df输出DataFrame时&#xff0c;显示的样式为表格样式&#xff0c;通过sytle可对表格的样式做一些定制&#xff0c;类似excel的条件格式。 df pd.DataFrame(np.random.rand(5,4),columns[A,B,C,D]) s df.style print(s,type(s)) #<pandas.io.f…

多层感知机 深度神经网络_使用深度神经网络和合同感知损失的能源产量预测...

多层感知机 深度神经网络in collaboration with Hsu Chung Chuan, Lin Min Htoo, and Quah Jia Yong.与许忠传&#xff0c;林敏涛和华佳勇合作。 1. Introduction1.简介 Since the early 1990s, several countries, mostly in the European Union and North America, had sta…

ajax跨域

//远程的地址1.通过header头实现ajax跨域PHP文件的代码$origin isset($_SERVER[HTTP_ORIGIN])? $_SERVER[HTTP_ORIGIN] : ; $allow_origin array(http://www.example.com, http://www.example2.com);if(in_array($origin, $allow_origin)){ header(Access-Control-Allow-Ori…

java线程并发库之--线程同步工具CountDownLatch用法

CountDownLatch&#xff0c;一个同步辅助类&#xff0c;在完成一组正在其他线程中执行的操作之前&#xff0c;它允许一个或多个线程一直等待。 主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 构造方法…

leetcode 766. 托普利茨矩阵

给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果矩阵上每一条由左上到右下的对角线上的元素都相同&#xff0c;那么这个矩阵是 托普利茨矩阵 。 输入&#xff1a;matrix [[1,2,3,4],[5,1,…

蓝牙调试工具如何使用_使用此有价值的工具改进您的蓝牙项目:第2部分!

蓝牙调试工具如何使用This post is originally from www.jaredwolff.com. 这篇文章最初来自www.jaredwolff.com。 This is Part 2 of configuring your own Bluetooth Low Energy Service using a Nordic NRF52 series processor. If you haven’t seen Part 1 go back and ch…

gRPC快速入门记录

为什么使用grpc 1.protocl buffer一种高效的序列化结构。 2.支持http 2.0标准化协议。 http/2 1.http/2对每个源只需创建一个持久连接&#xff0c;在这一个连接内&#xff0c;可以并行的处理多个请求和响应&#xff0c;而且做到不相互影响。 2.允许客户端和服务端实现自己的数据…

微服务、分布式、云架构构建电子商务平台

大型企业分布式微服务云架构服务组件 实现模块化、微服务化、原子化、灰度发布、持续集成 分布式、微服务、云架构构建电子商务平台 commonservice eureka Netflix事件、消息总线&#xff0c;用于在集群&#xff08;例如&#xff0c;配置变化事件&#xff09;中传播状态变化&am…

使用Matplotlib Numpy Pandas构想泰坦尼克号高潮

Did you know, a novel predicted the Titanic sinking 14 years previously to the actual disaster???您知道吗&#xff0c;一本小说预言泰坦尼克号在14年前沉没到了真正的灾难中&#xff1f;&#xff1f;&#xff1f; In 1898 (14 years before the Titanic sank), Amer…

spark 架构_深入研究Spark内部和架构

spark 架构by Jayvardhan Reddy通过杰伊瓦尔丹雷迪(Jayvardhan Reddy) 深入研究Spark内部和架构 (Deep-dive into Spark internals and architecture) Apache Spark is an open-source distributed general-purpose cluster-computing framework. A spark application is a JV…

使用faker生成测试数据

需要先安装faker模块&#xff0c;pip install faker 导入模块中的Faker类&#xff1a;from faker import Faker 实例化faker Faker() print(姓名相关) print(姓名:,faker.name()) print(名:,faker.first_name()) print(姓:,faker.last_name()) print(男姓名:,faker.name_male(…

JavaScript中的数组创建

JavaScript中的数组创建 本文转载自&#xff1a;众成翻译 译者&#xff1a;loveky 链接&#xff1a;http://www.zcfy.cc/article/713 原文&#xff1a;http://rainsoft.io/power-up-the-array-creation-in-javascript/ 数组是一个包含了对象或原始类型的有序集合。很难想象一个…