过拟合

决策树(中)-集成学习、RF、AdaBoost、Boost Tree、GBDT

我是研究僧i 提交于 2021-02-18 08:24:26
参考资料(要是对于本文的理解不够透彻,必须将以下博客认知阅读): 1. https://zhuanlan.zhihu.com/p/86263786 2. https://blog.csdn.net/liuy9803/article/details/80598652 3. https://blog.csdn.net/perfect1t/article/details/83684995 4. GBDT算法原理以及实例理解 (!!) 5. Adaboost算法原理分析和实例+代码(简明易懂) (!!) 6. 集成学习之Adaboost算法原理小结 (!!刘建平,大牛博客) 7. gbdt、xgb、lgb、cat面经整理——from牛客 (必须掌握) 目录 1.集成学习概念 2.Bagging 3.Random Forest(RF) 4.Boosting 5.Adaboost 6.Boosting tree(提升树) 7.GBDT 8.从偏差和方差的角度理解集成学习 一、集成学习相关知识(Ensemble learning) 1. 集成学习(Ensemble learning)是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合,从而获得比单个学习器显著优越的泛化性能。它不是一种单独的机器学习算法,而更像是一种优化策略,其目的在于使得集成模型达到 减小方差(bagging) 、

从零开始学keras(八)

自闭症网瘾萝莉.ら 提交于 2021-02-18 01:52:38
点击上方“ 计算机视觉cv ”即可“进入公众号” 重磅干货第一时间送达 预训练网络   想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好。如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征的空间层次结构可以有效地作为视觉世界的通用模型,因此这些特征可用于各种不同的计算机视觉问题,即使这些新问题涉及的类别和原始任务完全不同。举个例子,你在 ImageNet 上训练了一个网络(其类别主要是动物和日常用品),然后将这个训练好的网络应用于某个不相干的任务,比如在图像中识别家具。这种学到的特征在不同问题之间的可移植性,是深度学习与许多早期浅层学习方法相比的重要优势,它使得深度学习对小数据问题非常有效。   本例中,假设有一个在 ImageNet 数据集(140 万张标记图像,1000 个不同的类别)上训练好的大型卷积神经网络。ImageNet 中包含许多动物类别,其中包括不同种类的猫和狗,因此可以认为它在猫狗分类问题上也能有良好的表现。   我们将使用 VGG16 架构,它由 Karen Simonyan 和 Andrew Zisserman 在 2014 年开发。对于ImageNet,它是一种简单而又广泛使用的卷积神经网络架构

从零开始学Keras(一)

烂漫一生 提交于 2021-02-18 01:52:19
点击上方“ 计算机视觉cv ”即可“进入公众号” 重磅干货第一时间送达 计算机视觉cv 【 导读 】Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。本系列将教你如何从零开始学Keras,从搭建神经网络到项目实战,手把手教你精通Keras。相关内容参考《Python深度学习》这本书。 初识神经网络   我们先来看一个具体的神经网络示例,使用 Python 的 Keras 库来学习手写数字分类。如果你没用过 Keras或类似的库,可能无法立刻搞懂这个例子中的全部内容。甚至你可能还没有安装 Keras。没关系,可以看个例子先感受下。   我们这里要解决的问题是,将手写数字的灰度图像(28 像素×28 像素)划分到 10 个类别 中(0~9)。我们将使用 MNIST 数据集,它是机器学习领域的一个经典数据集,其历史几乎和这 个领域一样长,而且已被人们深入研究。这个数据集包含 60 000 张训练图像和 10 000 张测试图 像,由美国国家标准与技术研究院(National Institute of Standards and Technology,即 MNIST 中 的 NIST)在 20 世纪 80 年代收集得到。你可以将“解决”MNIST 问题看作深度学习的

决策树

痞子三分冷 提交于 2021-02-17 15:50:02
[TOC] 参考资料 台湾大学《机器学习技法》视频 周志华《机器学习》 李航《统计学习方法》 决策树算法原理(上) 决策树算法原理(下) 深入浅出ML之Tree-Based家族 决策树--信息增益,信息增益比,Geni指数的理解 决策树—剪枝 决策树 决策树是一种运用概率与图论中的树对决策中的不同方案进行比较,从而获得最优方案的风险型决策方法。 决策树学习三步骤: 特征选择 决策树的生成 决策树的剪枝 常用的决策树算法有ID3,C4.5和CART。 用信息论中的熵来度量决策树的决策选择过程 ,这几个算法选择属性划分的方法各不相同。 决策树算法 划分选择 连续值处理 缺失值处理 剪枝 ID3 信息增益 不支持 不支持 不支持 C4.5 信息增益率/增益比 支持 支持 支持 CART-分类 基尼值 支持 支持 支持 CART-回归 最小二乘 支持 支持 支持 划分选择 在了解划分选择前,需要先了解一个概念,信息熵。 信息熵 设$X$是一个取有限个值的离散随机变量,其概率分布为: $$ P(X=x_i)=p(x_i)\i=1,2,...n $$ 信息熵是在结果出来之前对可能产生的信息量的期望: $$ Ent(D)=H(X)=-\sum_{i=1}^{n} p(x_i)log_2(p(x_i))\以2为底,是因为信息熵的单位为比特bit $$ 熵越大,说明系统越混乱

如何入门机器学习

試著忘記壹切 提交于 2021-02-17 08:16:14
本篇文章,我将从过来的人角度介绍下机器学习如何从入门到精通,这里我们谈经验,谈工具,更谈方法论。 1.入门 作为初入机器学习的小白,你可能除了一颗好奇的心和一番热血外什么都不没有,当然最好还是希望你能有线性代数、微积分和概率论的基础。你可能会心存顾虑:学过但忘了。不用担心,这种东西不用就会忘,但只要用到,学一学便会;或者说你可能真的没学过,这个也不用担心,只要你真的想学现在也来得及。 好了废话不多说,我们进入入门阶段的正题。入门阶段主要有三个任务: 快速看完周志华的《西瓜书》 ; 看吴恩达 Coursera 上的《机器学习》 ; 调包跑算法 。 看完这个后可能大家会有很多不解或者很多疑惑。不着急,我们一个一个解答。 1.1 快速看完《西瓜书》 问题一:为什么要选《机器学习》? 因为这本书真的很不错,作为入门书籍非常合适。同样有名的《统计学习方法》虽然也很不错,但是其对小白来说相对较难。虽然《西瓜书》上面也有公式,但我们在初学的时候太复杂的完全可以先跳过去,并且书中还配有西瓜的例子,可以很好的帮助同学们理解算法的工作过程。 问题二:为什么要快速看完? 我这里强调快速,是因为快速真的很重要。因为如果战线拉得太长,如果一开始看的太细又读哪儿哪不懂,人是很容易有排斥心理的。最简单的一个例子,你想想你背英语单词的时候,多少次是从“abandon”开始背起的。每次快要期末考试了,或者四六级

sklearn中的SVM

这一生的挚爱 提交于 2021-02-17 07:26:10
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>          scikit-learn中SVM的算法库分为两类,一类是分类的算法库,包括SVC, NuSVC,和LinearSVC 3个类。另一类是回归算法库,包括SVR, NuSVR,和LinearSVR 3个类。相关的类都包裹在sklearn.svm模块之中。        对于SVC, NuSVC,和LinearSVC 3个分类的类,SVC和 NuSVC差不多,区别仅仅在于对损失的度量方式不同,而LinearSVC从名字就可以看出,他是线性分类,也就是不支持各种低维到高维的核函数,仅仅支持线性核函数,对线性不可分的数据不能使用。   同样的,对于SVR, NuSVR,和LinearSVR 3个回归的类, SVR和NuSVR差不多,区别也仅仅在于对损失的度量方式不同。LinearSVR是线性回归,只能使用线性核函数。   我们使用这些类的时候,如果有经验知道数据是线性可以拟合的,那么使用LinearSVC去分类 或者LinearSVR去回归,它们不需要我们去慢慢的调参去选择各种核函数以及对应参数, 速度也快。如果我们对数据分布没有什么经验

不均衡样本集问题

时光怂恿深爱的人放手 提交于 2021-02-16 17:53:39
2019-08-27 11:01:52 问题描述: 对于二分类问题,如果在训练的时候正负样本集合非常的不均衡,比如出现了1 :1000甚至更大的比例悬殊,那么如何处理数据以更好的训练模型。 问题求解: 为什么很多的分类模型在训练数据的时候会出现数据不均衡的问题呢?本质原因是模型在训练时优化的目标函数和人们在测试的时候的评价标准不一致。这种不对齐可能是由于训练数据的样本分布与测试时的样本分布一致,比如在训练的时候正负样本严重不均衡,但是在测试的时候,正负的比例几乎是1 :1。也可能是由于训练阶段不同类别的权重与测试的时候不一致,例如在训练的时候认为所有样本的贡献是一致的,但是在测试的时候某些样本的正确率要求要高很多。 根据上述的问题,一般可以从两个角度来处理样本不均衡的问题。 基于数据的方法 基于数据的方法核心就是将原本不均衡的训练集合通过采样的方式使之变的均衡。具体来说有两种方案,一是过采样,二是欠采样。 过采样 :过采样本质就是扩充少样本,使之数量变多。过采样的算法可以理解为是启发式的,也就是说言之有理即可,没有一条绝对正确的算法能够保证过采样算法的效果。 1)最简单的方案就是直接从少样本的训练集中有放回的选取样本,本质是对少样本数据集进行了复制。缺点是没有增加训练数据集的信息量,容易过拟合。 2)SMOTE算法,对少数类样本集中每个样本x

机器学习之样本不均衡

余生长醉 提交于 2021-02-16 17:46:28
以下内容是个人通过查阅网上相关资料总结出的内容 具体说明数据不均衡会带来的问题: 1) 在一个二分类问题中,训练集中 class 1的样本数比class 2的样本数是60:1。使用逻辑回归进行分类, 最后训练出的模型可能会忽略了 class 2,即模型可能会将所有的训练样本都分类为class 1。 2)在分类任务的数据集中,有三个类别,分别为A,B,C。在训练集中,A类的样本占70%,B类的样本占25%,C类的样本占5%。最后我的 分类器对类 A的样本过拟合了,而对其它两个类别的样本欠拟合。 那么该如何解决这种样本不均衡问题? 1) 过抽样 抽样是处理不平衡数据的最常用方法, 基本思想就是通过改变训练数据的分布来消除或减小数据的不平衡。 过抽样方法通过增加少数类样本来提高少数类的分类性能 , 最简单的办法是简单复制少数类样本,缺点是可能导致过拟合,没有给少数类增加任何新的信息。 改进的过抽样方法通过在少数类中加入随机高斯噪声或 产生新的合成样本 等方法。 如何解决过采样中只是简单的复制少数类样本所带来的过拟合缺点? 采用过采样的典型算法 SMOTE(它是通过对训练集里的小样本类别进行插值来产生额外的小样本类别数据) 2) 欠抽样 欠抽样方法通过减少多数类样本来提高少数类的分类性能,最 简单的方法是通过随机地去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类的一些重要信息

AdaBoost

会有一股神秘感。 提交于 2021-02-15 01:39:39
AdaBoost 是英文"Adaptive Boosting"(自适应增强)的缩写,其自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。是一种集成学习方法。 算法 设训练数据集$T={(x_1,y_1), (x_2,y_2)...(x_N,y_N)}$. 初始化训练数据的权值分布(均匀分布) $$D_1=(w_{11},w_{12}\dots w_{1i}\dots w_{1N}), w_{1i}={1 \over N}, i=1,2,\dots,N$$ 权值仅用于计算分类误差,并不改变数据的真实分布.并在训练时选择误差最小的分类点得到当前的最优分类器. 使用具有权值分布Dm的训练数据集学习,得到基本分类器(二分类) $$G_m(x):\chi\longrightarrow {-1,+1}$$ 计算Gm(x)在训练数据集上的分类误差率 $$e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^N w_{mi}I(G_M(x_i)\neq y_i)$$ 分类误差率是被错分的样本的权值之和. 计算Gm(x)的系数 $$\alpha_m={1 \over 2}log{1-e_m \over e_m}$$ 可见,分类器的系数与误差率呈负相关,目的是减小最终误差 更新训练数据集的权值分布(对分类误差率较大的数据集加大权重,提高后续的分类器对这部分数据的分类准确率)

模型训练过程中的训练集、训练开发集、开发集和测试集总结

China☆狼群 提交于 2021-02-14 07:39:59
36.什么时候你应该在不同分布上做训练和测试 当你的猫app已经上传10000张图,你已经人工标记它们有没有猫,同时你有200000张互联网上下载的图,这时你要怎么划分训练开发测试集呢? 当你训练深度学习模型时,可能必须用到那200000张图,那么训练和测试集的分布就不同,这会怎样影响你的工作呢? 当然将210000张图片随机分裂到训练开发测试集是一种方法,但我(吴恩达)不推荐这种方法,记住选择开发测试集的推荐方法是:选择你未来预期会得到的数据来作为开发测试集。 大多数学术文章假设训练开发测试集的分布相同,在机器学习的早期,数据稀缺,常常仅有一个服从同一分布的数据集,所以这一假设能够满足。 但在大数据时代,从不同分布所收集来的数据,我们也希望能利用上,因为它能提供大量信息。 对于猫检测这个问题,我们会将猫app上传的5000张图放入开发测试集,训练集大小为205000。 第二个场景,假设你在做一个语音识别系统为一个导航app来转录得地址,你有20000个用户说的街道地址,500000个语音片段用户说其他的内容,这时你可能用10000个地址样本作为开发测试集,其他用作训练集。 我们继续假设你的开发测试集具有相同分布,但是必须明白,训练和开发/测试集分布不同,会带来一些特殊的挑战。 Ps:有些学术研究是训练测试分布不同,但理论和实践中有很大的不同,如果你的训练测试不同分布