过拟合

机器学习算法 --- Pruning (decision trees) & Random Forest Algorithm

限于喜欢 提交于 2020-04-28 09:08:05
一、Table for Content   在之前的文章中我们介绍了Decision Trees Agorithms,然而这个学习算法有一个很大的弊端,就是很容易出现 Overfitting ,为了解决此问题人们找到了一种方法,就是对Decision Trees 进行 Pruning(剪枝)操作。   为了提高Decision Tree Agorithm的正确率和避免overfitting,人们又尝试了对它进行集成,即使用多棵树决策,然后对于分类问题投票得出最终结果,而对于回归问题则计算平均结果。下面是几条是本篇要讲的主要内容。 Pruning (decision trees) What is Random forest algorithm? Why Random Forest algorithm? How Random Forest algorithm works? Advantages of Random Forest algorithm. Random Forest algorithm real life example.  本文主要参考一下几篇文章,有能力的读者可自行前往阅读原文:   1. Wikipedia上的 Pruning (decision trees) 和 Random Froest algorithm 。   2. Dataaspirant上的《 HOW

[一起面试AI]NO.10 什么是数据不平衡问题,应该如何解决

早过忘川 提交于 2020-04-28 08:33:05
数据不平衡又称样本比例失衡,比如二分类问题,如果标签为1的样本占总数的99%,标签为0的样本占比1%则会导致判断 「 失误严重 」 ,准确率虚高。 常见的解决不平衡问题的方法如下。 「 数据采样 」 数据采样分为上采样和下采样,上采样是将少量的数据通过重复复制使得各类别比例均衡,不过很容易导致过拟合问题,所以需要在新生成的数据中加入随机扰动。 下采样则相反,下采样是从多数类别中筛选出一部分从而使得各类别数据比例维持在正常水平,但容易丢失比较重要的信息,所以应该多次随机下采样。 「 数据合成 」 是利用已有样本的特征相似性生成更多的样本。 「 加权 」 是通过不同类别的错误施加不同的权重惩罚,使得ML时更侧重样本较少并容易出错的样本。 「 一分类 」 当正负样本比例失衡时候,可以利用One-class SVM,该算法利用 「 高斯核函数 」 将样本空间映射到 「 核空间 」 ,在核空间找到一个包含 「 所有数据 」 的高维球体。如果测试数据位于这个高维球体之 「 中 」 ,则归为多数类,否则为少数类。 ❝ 微信搜索:我们都是码农,点个关注不迷路啦! ❞ 来源: oschina 链接: https://my.oschina.net/u/4342388/blog/4255749

[一起面试AI]NO.10 什么是数据不平衡问题,应该如何解决

♀尐吖头ヾ 提交于 2020-04-28 07:56:50
数据不平衡又称样本比例失衡,比如二分类问题,如果标签为1的样本占总数的99%,标签为0的样本占比1%则会导致判断 「 失误严重 」 ,准确率虚高。 常见的解决不平衡问题的方法如下。 「 数据采样 」 数据采样分为上采样和下采样,上采样是将少量的数据通过重复复制使得各类别比例均衡,不过很容易导致过拟合问题,所以需要在新生成的数据中加入随机扰动。 下采样则相反,下采样是从多数类别中筛选出一部分从而使得各类别数据比例维持在正常水平,但容易丢失比较重要的信息,所以应该多次随机下采样。 「 数据合成 」 是利用已有样本的特征相似性生成更多的样本。 「 加权 」 是通过不同类别的错误施加不同的权重惩罚,使得ML时更侧重样本较少并容易出错的样本。 「 一分类 」 当正负样本比例失衡时候,可以利用One-class SVM,该算法利用 「 高斯核函数 」 将样本空间映射到 「 核空间 」 ,在核空间找到一个包含 「 所有数据 」 的高维球体。如果测试数据位于这个高维球体之 「 中 」 ,则归为多数类,否则为少数类。 ❝ 微信搜索:我们都是码农,点个关注不迷路啦! ❞ 来源: oschina 链接: https://my.oschina.net/u/4295775/blog/4255736

机器学习算法中GBDT和XGBOOST的区别有哪些?

谁都会走 提交于 2020-04-28 02:56:37
转自: https://www.zhihu.com/question/41354392 作者:wepon 链接:https://www.zhihu.com/question/41354392/answer/98658997 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 最近赞忽然多了起来,我猜是校招季来了吧。但如果面试官问你这个问题,我建议不要按我的回答来,背答案不如自己理解透了,况且我这是十分得五分的答案。最初的GBDT发展到现在的XGBoost,改进是一点一滴来的,是一篇篇论文的积累,很多方法并非XGBoost第一次提出,当然也不是说XGBoost没改进,可以说XGBoost把算法和系统实现都做得淋漓尽致。所以如果不是为了速成,不是为了校招,建议把经典的论文拿出来读一读,相信对算法的理解能更进一层。 最近实习刚好在组内分享了GBDT,所以有了这番感悟,看了更多资料,发现自己理解还是有偏差,附上我做的ppt,若再有偏差,欢迎跟我邮件交流: http:// wepon.me/files/gbdt.pdf 以下原答案: ----------------------------------- xgboost相比传统gbdt有何不同?xgboost为什么快?xgboost如何支持并行? 看了陈天奇大神的文章和slides,略抒己见,没有面面俱到

树模型常见面试题(以XGBoost为主)

强颜欢笑 提交于 2020-04-28 02:05:34
参考资料: 珍藏版 | 20道XGBoost面试题 推荐系统面试题之机器学习(一) -----树模型 1. 简单介绍一下XGBoost 2. XGBoost与GBDT有什么不同 3. XGBoost为什么使用泰勒二阶展开 4. XGBoost为什么可以并行训练 5. XGBoost为什么快 6. XGBoost防止过拟合的方法 7. XGBoost如何处理缺失值 8. XGBoost中叶子结点的权重如何计算出来 9. XGBoost中的一棵树的停止生长条件 10. RF和GBDT的区别 11. XGBoost如何处理不平衡数据 12. 比较LR和GBDT,说说什么情景下GBDT不如LR 13. XGBoost中如何对树进行剪枝 14. XGBoost如何选择最佳分裂点? 15. XGBoost的Scalable性如何体现 16. XGBoost如何评价特征的重要性 17. XGBooost参数调优的一般步骤 18. XGBoost模型如果过拟合了怎么解决 19.为什么XGBoost相比某些模型对缺失值不敏感 20. XGBoost和LightGBM的区别 来源: oschina 链接: https://my.oschina.net/u/4255576/blog/3342480

逻辑回归实践

梦想的初衷 提交于 2020-04-28 01:55:24
逻辑回归是怎么防止过拟合的?为什么正则化可以防止过拟合? 逻辑回归是通过正规化防止过拟合的。 在训练数据不够多时,常常会导致过拟合。L2正则化就是在代价函数后面再加上一个正则化项: C0代表原始的代价函数,后面那一项就是L2正则化项, 过拟合的时候,拟合函数的系数往往非常大。所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。所以正规化通过约束参数的范数使其不要太大,所以在一定程度内可以减少过拟合。 用logiftic回归来进行实践操作,数据不限。 import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report # 数据读取与预处理 data = pd.read_csv('201706120017赖志豪.csv') x = data.iloc[:,1:] y = data.iloc[:,0] x_train,x_test,y_train,y

OSLNet: Deep Small-Sample Classification with an Orthogonal Softmax Layer

牧云@^-^@ 提交于 2020-04-27 16:34:19
本文用正交softmax层来减轻少样本分类利用NN做易过拟合的问题。思路是:对于分类器的分类权重层,令其正交化。就是分类器的权重向量两两正交化。原理比较清晰易懂,实现时将权重向量的部分链接进行移除(dropout),但是这个移除在训练和测试是固定的,不是学习的,没有在优化过程中进行限制。本文的方法叫做OSL(orthogonal softmax layer),下图是不同数据上分类器权重之间的角度,角度越大,泛化能力越好,精度越高。 前面提到少样本(小数据集)分类的重要性在于避免过拟合,相关方法:数据增强、域适应、学习判别特征、ensemble方法、正则化(L2、Dropout)。为了保证分类器权重有大角度,OSL的方法是对权重进行去相关处理,就是分别将每个权重部分置零。 上式就是mask矩阵M与权重W的内积然后乘以输入v后进行softmax。M的格式就是: 其中M的对角线上的元素都是列向量,元素都为1,非对角线上的元素也都是列向量,元素都为0。通过与W相乘,就得到了不相关的权重矩阵。试想 此时的权重矩阵极端情况下就变成了单位阵 !所以是非相关。这就是该方案的思想,当然一个缺点就是特征维度得大于类数目,不然就是非满秩的,没法达到两两线性无关。 下图是dropout和osl的示意图: 在小数据集上的表现也还行: 在网络变深的时候均会下滑(变深的时候就没那么抗打过拟合了):

4. 集成学习(Ensemble Learning)Adaboost

百般思念 提交于 2020-04-27 05:37:25
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random Forest) 4. 集成学习(Ensemble Learning)Adaboost 5. 集成学习(Ensemble Learning)GBDT 6. 集成学习(Ensemble Learning)算法比较 7. 集成学习(Ensemble Learning)Stacking 1. 前言 前面我们已经详细的介绍了什么是集成学习,集成学习的种类有哪些,并且也介绍了集成学习里面相对比较简单的Bagging。今天我们开始涉及到集成学习里面比较难理解的Boosting中的Adaboost。 2. Boosting原理 Boosting算法的工作机制: 首先从训练集用初始权重训练出一个弱学习器1. 根据学习器1的学习误差率来更新训练样本的权重,使得之前弱学习器1学习 误差率高的训练样本点的权重变高 ,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。 然后基于调整权重后的训练集来训练弱学习器2。 如此重复进行,直到弱学习器数达到事先指定的数目$T$。 最终将这$T$个弱学习器通过集合策略进行整合,得到最终的强学习器。 这里有几个相关概念: 学习误差率$e$ 学习器权重$\alpha$

随机森林RF、XGBoost、GBDT和LightGBM的原理和区别

╄→尐↘猪︶ㄣ 提交于 2020-04-27 04:28:43
[TOC] 1、基本知识点介绍 RandomForest、XGBoost、GBDT和LightGBM都属于集成学习。 集成学习通过构建并结合多个分类器来完成学习任务,也称为多分类系统,集成学习的目的是通过结合多个机器学习分类器的预测结果来改善基本学习器的泛化能力和鲁棒性。 集成学习方法大致分为两类: 基本学习器之间存在强依赖关系、必须串行生成的序列化方法,即Boosting提升方法。 基本学习器之间不存在强依赖关系、可同时生成的并行化方法,即Bagging方法。 2、各个算法原理 2.1 随机森林 -- RandomForest RF原理 :RF是Bagging的扩展变体,它在以决策树为基础学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,其流程大概分为四个步骤: 随机选择样本(放回抽样)。 随机选择特征属性。 构建决策树。 随机森林投票(平均)。 因此防止过拟合能力更强,降低方差。 Bagging,即套袋法,算法过程如下: 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本,共进行k轮抽取,得到k个训练集。 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(模型可以根据具体问题具体选取,如决策树,SVM,感知机。) 对于分类问题:将上面得到的k个模型采用投票的方式得到分类结果; 对于回归问题

xgboost与gdbt的不同和优化

浪尽此生 提交于 2020-04-27 04:04:09
XGBoost 是GBDT算法的一种变种,是一种常用的有监督集成学习算法;是一种 伸缩性强、便捷的可并行构建模型的Gradient Boosting算法 Xgboost和GBDT不同之处 xgboost在目标函数中显示的加上了正则化项,基学习器为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。 上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关 上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关 支持并行化,这是XGBoost的闪光点,虽然树与树之间是串行关系,但是同层级节点可并行。具体的对于某个节点,节点内选择最佳分裂点,候选分裂点计算增益用多线程并行。训练速度快。 xgboost算法的步骤和GBDT基本相同,都是首先初始化为一个常数,GBDT是根据一阶导数gi,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。 XGBoost的其它特性 列采样(column subsampling):借鉴随机森林的做法,支持列抽样,不仅可以降低过 拟合,还可以减少计算量; 支持对缺失值的自动处理。对于特征的值有缺失的样本,XGBoost可以自动学习分裂方 向;