随机森林

随机森林

落爺英雄遲暮 提交于 2020-04-06 09:37:51
0. 前言 sklearn提供了sklearn.ensemble库,其中包括随机森林模型(分类)。但之前使用这个模型的时候,要么使用默认参数,要么将调参的工作丢给调参算法(grid search等)。今天想来深究一下到底是如何选择参数,如何进行调参。 学会调参是进行集成学习工作的前提。参数可分为两种,一种是影响模型在训练集上的准确度或影响防止过拟合能力的参数;另一种不影响这两者的其他参数。模型的准确度由其在训练集上的准确度及其防止过拟合的能力所共同决定,所以在调参时,我们主要对第一种参数进行调整,最终达到的效果是:模型在训练集上的准确度和防止过拟合能力的平衡。 1. 集成学习是什么 集成学习通过构建并结合多个学习器来完成学习任务。 集成学习的一般结构:先产生一组“个体学习器”(individual learner),然后再用某种策略将它们结合起来。个体学习器通常有一个现有的学习算法从训练数据产生,此时集成中只包含同种类型的个体学习器,比如“决策树集成”,此时的集合里全部都是决策树。同质集成中的个体学习器称为 “基学习器” (base learner),相应的学习算法成为“基学习算法”(base learning algorithm)。 因为集成学习通过对多个“弱学习器”进行结合,可以获得比单一学习器更加显著的泛化性能,所以集成学习的很多理论研究是针对弱学习器的。因此“基学习器

随机森林学习笔记

蓝咒 提交于 2020-04-02 15:03:21
1.分类回归树CART 随机森林是由多颗CART树组成的 1、下面简单叙述下CART树及生成树的原理。 CART(Classification and regression tree)是决策树的一种,主要由特征选择,树的生成和剪枝三部分组成。它主要用来处理分类和回归问题。 (1)、回归树:使用平方误差最小准则 训练集为:D={(x1,y1), (x2,y2), …, (xn,yn)}。 输出Y为连续变量,将输入划分为M个区域,分别为R 1 ,R 2 ,…,R M ,每个区域的输出值分别为:c1,c2,…,c m 则回归树模型可表示为: 则平方误差为: 假如使用特征j的取值s来将输入空间划分为两个区域,分别为: 我们需要最小化损失函数,即:   其中c1,c2分别为R1,R2区间内的输出平均值。(此处与统计学习课本上的公式有所不同,在课本中里面的c1,c2都需要取最小值,但是,在确定的区间中,当c1,c2取区间输出值的平均值时其平方会达到最小,为简单起见,故而在此直接使用区间的输出均值。)   为了使平方误差最小,我们需要依次对每个特征的每个取值进行遍历,计算出当前每一个可能的切分点的误差,最后选择切分误差最小的点将输入空间切分为两个部分,然后递归上述步骤,直到切分结束。此方法切分的树称为最小二乘回归树。 最小二乘回归树生成过程: 1)依次遍历每个特征j,以及该特征的每个取值s

13集成算法与随机森林

这一生的挚爱 提交于 2020-03-10 05:18:57
唐宇迪《python数据分析与机器学习实战》学习笔记 13集成算法与随机森林 竞赛题使用较多中准确率较高,三种集成算法 1.Bagging模型 (并形算法) 并行训练多棵树,结果累加取平均。随机森林构造了N棵树,最终结果把树进行分类取众数。 二重随机性:数据采样随机性(例如100个有放回选60-80个),特征随机性(寻则部分特征) feature比较原理,举例:比如ABCD四个特征,B为年龄(36、27、65…),用着四个特征建模错误率为err1;后面对B特征进行破坏加上噪音,替换为垃圾值(0.1、68…),然后继续用这四个特征建模,错误率为err2; 如果err1=err2,则B特征没啥用。如果err2>>err1,则B重要。最后特征的重要性排序如上图右下角。 其他算法的Bagging模型,例如KNN模型缺点比较明显。公认的集成算法还是是上面的树模型。 树模型的树数量对效果的影响,数量增加效果浮动。(虽然理论上数量越多泛化能力越强) 2. Boosting模型 (串形算法) 从弱学习器开始,例如实际1000,第一棵A树预测950,差异50,让这个50值越小越好;第二棵B树,为了弥补50误差,就预测残差50,可能预测为30;第三棵C树,1000-950-30=20,就预测残差20,可能预测为18.最终预测值为998,实际为1000. 典型代表:AdaBoost,Xgboost

机器学习160道面试题

爷,独闯天下 提交于 2020-03-06 10:19:46
数据科学职位的典型面试过程会有很多轮,其中通常会涉及理论概念,目的是确定应聘者是否了解机器学习的基础知识。 在这篇文章中,我想总结一下我所有的面试经历(面试or被面试)并提出了160多个数据科学理论问题的清单。 其中包括以下主题: 线性回归 模型验证 分类和逻辑回归 正则化 决策树 随机森林 GBDT 神经网络 文本分类 聚类 排序:搜索和推荐 时间序列 这篇文章中的问题数量似乎远远不够,请记住,面试流程是根据公司的需求和你的工作经历而定的。因此,如果你的工作中没有用过时间序列模型或计算机视觉模型,就不会收到类似的问题。提示:如果不知道某些面试问题的答案,不要灰心。为了简化起见,我根据难度将问题分为三类: 👶容易 ⭐️中号 🚀专家 开始吧! 有监督的机器学习 什么是有监督学习?👶 线性回归 什么是回归?哪些模型可用于解决回归问题?👶 什么是线性回归?什么时候使用它?👶 什么是正态分布?为什么要重视它?👶 如何检查变量是否遵循正态分布?‍⭐️ 如何建立价格预测模型?价格是否正态分布?需要对价格进行预处理吗?‍⭐️ 解决线性回归的模型有哪些?‍⭐️ 什么是梯度下降?它是如何工作的?‍⭐️ 什么是正规方程?‍⭐️ 什么是SGD-随机梯度下降?与通常的梯度下降有何不同?‍⭐️ 有哪些评估回归模型的指标?👶 什么是MSE和RMSE?👶 验证方式 什么是过拟合?👶 如何验证模型?👶

160个机器学习面试题

半城伤御伤魂 提交于 2020-03-06 09:30:23
原文: https://hackernoon.com/160-data-science-interview-questions-415s3y2a Alexey Grigorev(Lead Data Scientist at OLX Group) 数据科学职位的典型面试过程会有很多轮,其中通常会涉及理论概念,目的是确定应聘者是否了解机器学习的基础知识。 在这篇文章中,我想总结一下我所有的面试经历(面试or被面试)并提出了160多个数据科学理论问题的清单。 其中包括以下主题: 线性回归 模型验证 分类和逻辑回归 正则化 决策树 随机森林 GBDT 神经网络 文本分类 聚类 排序:搜索和推荐 时间序列 这篇文章中的问题数量似乎远远不够,请记住,面试流程是根据公司的需求和你的工作经历而定的。因此,如果你的工作中没有用过时间序列模型或计算机视觉模型,就不会收到类似的问题。 提示:如果不知道某些面试问题的答案,不要灰心。为了简化起见,我根据难度将问题分为三类: 👶容易 ⭐️中号 🚀专家 开始吧! 有监督的机器学习 什么是有监督学习?👶 线性回归 什么是回归?哪些模型可用于解决回归问题?👶 什么是线性回归?什么时候使用它?👶 什么是正态分布?为什么要重视它?👶 如何检查变量是否遵循正态分布?‍⭐️ 如何建立价格预测模型?价格是否正态分布?需要对价格进行预处理吗?‍⭐️ 解决线性回归的模型有哪些?

【代码模版】随机森林调参思路及代码模版

荒凉一梦 提交于 2020-03-03 16:46:56
随机森林调参的基本思路 首先确定各个参数大概的选择范围,形成参数字典 使用sklearn的RandomizedSearchCV(类似于寻找犯罪嫌疑人)(随机在于节省时间,不用地毯式遍历)利用参数字典中的参数对模型进行训练 得到随机参数下最佳参数组 以最佳参数组为标准上下取值,形成新的参数选择范围和对应的参数字典 使用sklearn的GridSearchCV(类似于在犯罪嫌疑人中找到真正的罪犯)(在初步确定大概参数范围后再使用地毯式遍历有利于提高效率)利用新的参数字典中的参数对模型进行训练 得到最终的最佳参数 下面给出随机森林调参的代码模版 1.随机生成最佳参数 from sklearn . model_selection import RandomizedSearchCV import numpy as np # 首先指定参数范围 # 指定随机森林树的个数范围 n_estimators = [ int ( x ) for x in np . linspace ( start = 200 , stop = 500 , num = 10 ) ] # 从200开始,到500结束,步长为10,可按照需要修改数值 # 最大特征的选择方式 max_features = [ 'auto' ] # 通常只指定auto即可 # 树的最大深度范围 max_depth = [ int ( x ) for

随机森林

北城余情 提交于 2020-02-27 02:27:00
1.什么是随机森林 1.1 Bagging思想 Bagging是bootstrap aggregating。思想就是从总体样本当中随机取一部分样本进行训练,通过多次这样的结果,进行投票获取平均值作为结果输出,这就极大可能的避免了不好的样本数据,从而提高准确度。因为有些是不好的样本,相当于噪声,模型学入噪声后会使准确度不高。 举个例子 : 假设有1000个样本,如果按照以前的思维,是直接把这1000个样本拿来训练,但现在不一样,先抽取800个样本来进行训练,假如噪声点是这800个样本以外的样本点,就很有效的避开了。重复以上操作,提高模型输出的平均值。 1.2 随机森林 Random Forest(随机森林)是一种基于树模型的Bagging的优化版本,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的特点。(可以理解成三个臭皮匠顶过诸葛亮) 而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果

随机森林的训练过程

这一生的挚爱 提交于 2020-02-23 23:03:43
随机森林 顾名思义,是用随机的方式建立一个森林,森林里面有很多的 决策树 组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。 在建立每一棵决策树的过程中,有两点需要注意: ①采样;②完全分裂 。 首先 :是两个随机采样的过程,random forest对输入的数据要进行 行、列的采样 。对于行采样,采用 有放回 的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M 个feature中,选择m个(m << M)。 推荐m的值为M的平方根 。 之后 :对采样之后的数据使用 的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤 - 剪枝 ,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。 随机森林的核心: 是随机选取样本特征和随机选取样本,每次在选取的训练集上训练决策树。 随机深林的优点:

机器学习-随机森林(Random Forest)

人盡茶涼 提交于 2020-02-21 01:17:44
Section I: Brief Introduction on Random Forest Random forests have gained huge popularity om applications of machine learning during the last decade due to their good classification performance,scalability, and ease of use . Intuitively, a random forest can be considered as an ensemble of decoson trees. The idea behind a random forest is to average multiple trees that individually suffer from high variance, to build a more robust model that has a better generalization performance and is less susceptible to overfitting. The major steps are summarized here: Step 1: Draw a random boostrap sample

机器学习-随机森林(Random Forest)

我是研究僧i 提交于 2020-02-20 22:24:13
Section I: Brief Introduction on Random Forest Random forests have gained huge popularity om applications of machine learning during the last decade due to their good classification performance,scalability, and ease of use . Intuitively, a random forest can be considered as an ensemble of decoson trees. The idea behind a random forest is to average multiple trees that individually suffer from high variance, to build a more robust model that has a better generalization performance and is less susceptible to overfitting. The major steps are summarized here: Step 1: Draw a random boostrap sample