决策树

算法岗面试题:模型的bias和variance是什么?用随机森林举例

大兔子大兔子 提交于 2020-08-12 00:18:24
校招在即,准备准备一些面试可能会用到的东西吧。希望这次面试不会被挂。 基本概念 说到机器学习模型的误差,主要就是bias和variance。 Bias:如果一个模型的训练错误大,然后验证错误和训练错误都很大,那么这个模型就是高bias。可能是因为欠拟合,也可能是因为模型是弱分类器。 Variance:模型的训练错误小,但是验证错误远大于训练错误,那么这个模型就是高Variance,或者说它是过拟合。 这个图中,左上角是低偏差低方差的,可以看到所有的预测值,都会落在靶心,完美模型; 右上角是高偏差,可以看到,虽然整体数据预测的好像都在中心,但是波动很大。 【高偏差vs高方差】 在机器学习中,因为偏差和方差不能兼顾,所以我们一般会选择高偏差、低方差的左下角的模型。稳定性是最重要的,宁可所有的样本都80%正确率,也不要部分样本100%、部分50%的正确率。个人感觉,稳定性是学习到东西的体现,高方差模型与随机蒙的有什么区别? 随机森林为例 上面的可能有些抽象,这里用RandomForest(RF)来作为例子: 随机森林是bagging的集成模型,这里: \(RF(x)=\frac{1}{B}\sum^B_{i=1}{T_{i,z_i}(x)}\) RF(x)表示随机森林对样本x的预测值; B表示总共有B棵树; \(z_i\) 表示第i棵树所使用的训练集,是使用bagging的方法

【Azure】混合环境下的身份验证

不问归期 提交于 2020-08-11 12:24:04
随着微软Office365服务(未来将升级为Microsoft 365)在中国的深入推广,越来越多的企业开始采用本地应用和云应用的混合服务模式。其中Azure AD作为O365产品的重要组成部分,在云上服务中的地位与On-Premise的AD域相当。 在企业本地和云的混合环境中,特别是Exchange混合部署环境,了解这类环境下账户在多种混合身份验证方式下的身份验证过程,以及如何根据企业需求选择合适的混合验证方式,对理解混合环境下应用和Azure AD运作方式有一定的促进作用。 混合身份验证的方法 在企业应用混合部署环境中,身份验证是云访问的基础。选择正确的身份验证方法是设置 Azure AD 混合验证解决方案至关重要的第一个决定。Azure AD 支持以下适用于混合验证解决方案的身份验证方法: 1. 云身份验证 选择此身份验证方法时,Azure AD 会处理用户的登录过程。 结合使用无缝单一登录 (SSO),用户可以登录到云应用,无需重新输入其凭据。 如果使用的是云身份验证,可以从以下两个选项中选择: Azure AD 密码哈希同步 这是在 Azure AD 中为本地目录对象启用身份验证的最简单方法。 用户可以使用其在本地使用的同一用户名和密码,不必部署任何其他基础架构服务器。 且在要使用Azure AD 的某些高级功能时(例如 Identity Protection

机器学习入门:极度舒适的GBDT原理拆解

亡梦爱人 提交于 2020-08-11 11:05:40
机器学习入门:极度舒适的GBDT拆解 本文旨用小例子+可视化的方式拆解GBDT原理中的每个步骤,使大家可以彻底理解GBDT Boosting → Gradient Boosting Boosting是集成学习的一种基分类器(弱分类器)生成方式,核心思想是通过迭代生成了一系列的学习器,给误差率低的学习器高权重,给误差率高的学习器低权重,结合弱学习器和对应的权重,生成强学习器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$β_m$就是弱学习在强分类器中所占比重,P是所有$α_m$和$β_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ Gradient Boosting = Gradient Descent + Boosting Boosting 算法(以AdaBoost为代表)用错分数据点来识别问题,通过调整错分数据点的权重来改进模型

机器学习入门:极度舒适的GBDT原理拆解

北城以北 提交于 2020-08-11 06:32:46
机器学习入门:极度舒适的GBDT拆解 本文旨用小例子+可视化的方式拆解GBDT原理中的每个步骤,使大家可以彻底理解GBDT Boosting → Gradient Boosting Boosting是集成学习的一种基分类器(弱分类器)生成方式,核心思想是通过迭代生成了一系列的学习器,给误差率低的学习器高权重,给误差率高的学习器低权重,结合弱学习器和对应的权重,生成强学习器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$β_m$就是弱学习在强分类器中所占比重,P是所有$α_m$和$β_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ Gradient Boosting = Gradient Descent + Boosting Boosting 算法(以AdaBoost为代表)用错分数据点来识别问题,通过调整错分数据点的权重来改进模型

七月算法机器学习 11 决策树、随机森林、 adaboost

≯℡__Kan透↙ 提交于 2020-08-11 05:15:32
目录 主要内容 决策树 信息增益 三种决策树学习算法 决策树的例子 决策树的过拟合 Bootstraping Bagging的策略 随机森林 提升的概念 Adaboost 举例 主要内容 决策树  决策树学习采用的是自顶向下的递归方法,  其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,  此时每个叶节点中的实例都属于同一类。  有监督学习  建立决策树的关键,即在当前状态下选择哪个属性作为分类依据。根据不同的目标函数,建立决策树主要有一下三种算法。  ID3  C4.5  CART 信息增益 三种决策树学习算法 决策树的例子 决策树的过拟合  决策树对训练属于有很好的分类能力,但对未知的测试数据未必有好的分类能力,泛化能力弱,即可能发生过拟合现象。  剪枝  随机森林 Bootstraping  Bootstraping的名称来自成语“pull up by yourown bootstraps”,意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法。  注: Bootstrap本义是指高靴子口后面的悬挂物、小环、带子,是穿靴子时用手向上拉的工具。“pullup by your own bootstraps”即“通过拉靴子让自己上升”,意思是“不可能发生的事情”。后来意思发生了转变,隐喻“不需要外界帮助,仅依靠自身力

初始决策树及sklearn实现

孤街浪徒 提交于 2020-08-10 13:27:14
1、决策树简介 决策树多被使用处理分类问题,也是最经常使用的数据挖掘算法。决策树的主要任务是发掘数据中所蕴含的知识信息,并从中给出一系列的分类规则对数据进行分类,其预测结果往往可以匹敌具有几十年专家经验所得出的预测规则。比较常用的决策树有ID3,C4.5和CART(Classification And Regression Tree),CART的分类效果一般优于其他决策树,所以,scikit-learn使用的为CART算法的优化版本。下面简单介绍下决策树的优缺点和使用技巧。 优点:计算复杂度低,从而计算速度较快;不需要领域知识和参数假设;输出结果易于理解,分类规则准确性较高 缺点:容易产生过拟合;忽略各属性之间的相关性 使用技巧:适用的数据类型有数值型和标称型;可以采用剪枝来避免过拟合问题;需要考虑对输入数据进行预处理(比如降维等) 2、决策树实例 (1)数据来源:Iris数据集,具体介绍参见 https:// zhuanlan.zhihu.com/p/14 5542994 中的数据来源部分。sklearn包中自带了Iri数据集和数据处理方法,可以直接将第五列类别信息转换为数字。 from sklearn.datasets import load_iris #数据集 from sklearn.tree import DecisionTreeClassifier #训练器 from

一线算法工程师经典面试题

半世苍凉 提交于 2020-08-10 09:39:52
一、 机器学习基础题 1、LSTM的公式 2、RNN为什么出现梯度消失及BPTT的推导 3、DQN的基本原理么 4、GBDT和随机森林有什么区别 5、GBDT的原理,如何做分类和回归 6、随机森林的随机体现在哪方面 7、Wide &Deep的原理 8、GBDT+LR是怎么做的? 9、DQN模型为什么要做经验回放 10、数据之间如果不是独立同分布的会怎样 11、AUC的原理介绍一下 12、XGBOOst和GBDT的区别。 13、强化学习和监督学习的区别 14、神经网络里面的损失函数有哪些 15、机器学习中常见的激活函数有哪些?为什么通常需要零均值? 16、DeepFM介绍 17、FM推导 18、boosting和bagging的区别? 19、bagging为什么能减小方差? 20、交叉熵损失函数,0-1分类的交叉熵损失函数的形式。什么是凸函数?0-1分类如果用平方损失为什么用交叉熵而不是平方损失? 21、L1和L2有什么区别,从数学角度解释L2为什么能提升模型的泛化能力。 22、深度学习中,L2和dropout有哪些区别? 23、L1正则化有哪些好处 24、如果有一万个地理坐标,转换成1-10000的数,可以用决策树么? 25、CART分类树和ID3以及C4.5有什么区别? 26、树集成模型有哪几种实现方式:Bagging和Boosting,回答过程中又问到了很多细节

CODING DevOps 系列第六课:IT 运维之智能化告警实践

与世无争的帅哥 提交于 2020-08-10 01:46:09
IT 运维告警现状 目前 IT 运维领域保证服务运行正常的主要方法是对相关运维指标进行实时监控,并根据经验设定一些规则,通过将实时监控的数据与规则进行对比,当某个指标监控值不符合设定的规则时,则判定为异常的状况,这样的话就会发送对应的告警到告警平台。告警平台收到通知后,会分配给对应的运维人员进行处理,运维人员去根据告警信息来排查,最终定位故障的根本原因,并对故障进行修复。从这个流程可以看出,整个过程是以告警为中心,所以告警的质量是至关重要的。 但在实际运维过程中,我们可以发现这个过程中其实存在很多问题。首先,监控系统的规则难以设定。因为规则是基于专家经验设定的,随着系统规模变大,复杂度提高,监控覆盖的完善,监控指标数量指数性增加,指标形态千变万化,基于专家经验的规则设定力不从心,误报率、漏报率居高不下。运维人员可能会遭遇告警风暴,每天被数千个告警轰炸,难以应付。故障发生后,对若干个告警逐一排查找故障根因,效率极低,大大增加故障的恢复时间。故障有可能无法预知,有些本来可以避免的故障还是发生了。 智能化告警的理念和相关技术 为了解决上述问题,在智能运维领域,智能化告警的概念出现了。智能化告警主要解决 4 个问题:一、精准告警,拒绝告警风暴;二、快速故障定位;三、进行故障预测,避免故障发生;四、规则设置自动化,不再通过人工经验来设置规则。 智能异常检测的核心理念是利用机器学习算法

在对数据进行预处理时,应该怎样处理类别型特征?

两盒软妹~` 提交于 2020-08-10 00:46:03
02 类别型特征 场景描述 类别型特征(Categorical Feature)主要是指性别(男、女)、血型(A、B、AB、O)等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。 知识点 序号编码(Ordinal Encoding)、独热编码(One-hot Encoding)、二进制编码(Binary Encoding) 问题 在对数据进行预处理时,应该怎样处理类别型特征? 分析与解答 ■ 序号编码 序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为低、中、高三档,并且存在“高>中>低”的排序关系。序号编码会按照大小关系对类别型特征赋予一个数值ID,例如高表示为3、中表示为2、低表示为1,转换后依然保留了大小关系。 ■ 独热编码 独热编码通常用于处理类别间不具有大小关系的特征。例如血型,一共有4个取值(A型血、B型血、AB型血、O型血),独热编码会把血型变成一个4维稀疏向量,A型血表示为(1, 0, 0, 0),B型血表示为(0, 1, 0, 0),AB型表示为(0, 0,1, 0),O型血表示为(0, 0, 0, 1)。对于类别取值较多的情况下使用独热编码需要注意以下问题。 (1)使用稀疏向量来节省空间。在独热编码下

特征选择-Filter过滤法(方差)

老子叫甜甜 提交于 2020-08-09 23:58:41
3.1 Filter过滤法 过滤方法通常用作预处理步骤,特征选择完全独立于任何机器学习算法。它是根据各种统计检验中的分数以及相关 性的各项指标来选择特征。 3.1.1 方差过滤 3.1.1.1 VarianceThreshold 这是通过特征本身的方差来筛选特征的类。比如一个特征本身的方差很小,就表示样本在这个特征上基本没有差 异,可能特征中的大多数值都一样,甚至整个特征的取值都相同,那这个特征对于样本区分没有什么作用 。所以无 论接下来的特征工程要做什么,都要优先消除方差为0的特征 。VarianceThreshold有重要参数threshold,表示方 差的阈值,表示舍弃所有方差小于threshold的特征,不填默认为0,即删除所有的记录都相同的特征。 import pandas as pd data = pd.read_csv("digit recognizor.csv") X = data.iloc[:,1:] y = data.iloc[:,0] from sklearn.feature_selection import VarianceThreshold selector = VarianceThreshold() #实例化,不填参数默认方差为0 X_var0 = selector.fit_transform(X) #获取删除不合格特征之后的新特征矩阵 #也可以直接写成