机器学习
若只如初見~~
迷途中的小书童
展开
-
集成学习之随机森林调参
一、scikit-learn随机森林类库概述 在scikit-learn中,RF的分类类是RandomForestClassifier,回归类是RandomForestRegressor。当然RF的变种Extra Trees也有, 分类类ExtraTreesClassifier,回归类ExtraTreesRegressor。由于RF和Extra Trees的区别较小,调参方法基本相同,本文只关注于RF的调参。 与GBDT的调参类似,RF需要调参的参数也包括两部分,第一部分是Bagging框架原创 2020-05-21 11:14:28 · 580 阅读 · 0 评论 -
集成学习之Bagging与随机森林算法原理小结
在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。本文就对集成学习中Bagging与随机森林算法做一个总结。 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练。一、bagging原理 在集成学习原理小结中,Bagging的原理图如下 从上图可以看出,Bagging的弱学习器之间的确没有原创 2020-05-20 21:19:24 · 355 阅读 · 0 评论 -
Xgboost的参数及调参
一、Xgboost参数解释 XGBoost的参数一共分为三类:通用参数:宏观函数控制。Booster参数:控制每一步的booster(tree/regression)。booster参数一般可以调控模型的效果和计算代价。我们所说的调参,很这是大程度上都是在调整booster参数。学习目标参数:控制训练目标的表现。我们对于问题的划分主要体现在学习目标参数上。比如我们要做分类还是回归,做二分类还是多分类,这都是目标参数所提供的。 我下面介绍的参数都是我觉得比较重要的。1.1、通用参数原创 2020-05-20 16:56:13 · 5588 阅读 · 0 评论 -
集成学习之XGBoost算法推导总结
一、从GBDT到XGBoost 作为GBDT的高效实现,XGBoost是一个上限特别高的算法,因此在算法竞赛中比较受欢迎。简单来说,对比原算法GBDT,XGBoost主要从下面三个方面做了优化: 一是算法本身的优化:在算法的弱学习器模型选择上,对比GBDT只支持决策树,还可以直接很多其他的弱学习器。在算法的损失函数上,除了本身的损失,还加上了正则化部分。在算法的优化方式上,GBDT的损失函数只对误差部分做负梯度(一阶泰勒)展开,而XGBoost损失函数对误差部分做二阶泰勒展开,更加准确。算法原创 2020-05-19 18:26:56 · 300 阅读 · 0 评论 -
GDBT(提升树)调参
一、GBDT类库概述 在sacikit-learn中,GradientBoostingClassifier为GBDT的分类类, 而GradientBoostingRegressor为GBDT的回归类。两者的参数类型完全相同,当然有些参数比如损失函数loss的可选择项并不相同。这些参数中,类似于Adaboost,我们把重要参数分为两类,第一类是Boosting框架的重要参数,第二类是弱学习器即CART回归树的重要参数。二、GBDT类库boosting框架参数 首先,我们来看boosting框原创 2020-05-17 17:09:23 · 699 阅读 · 0 评论 -
集成学习之梯度提升树(GBDT)原理总结
一、GBDT概述 GBDT也是集成学习Boosting中的一种算法,但是却和传统的Adaboost有很大的不同。Adaboost 是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,但GBDT每一次的计算是都为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新的模型,其弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。 1.1、下面看个年龄预测的例子。 简单起见,假定训练集只有4个人:A,B,C,D原创 2020-05-16 21:48:33 · 450 阅读 · 0 评论 -
scikit-learn Adaboost类库使用总结
一、Adaboost类库概述 scikit-learn中Adaboost类库可分为AdaBoostClassifier和AdaBoostRegressor两个,从名字就可以看出AdaBoostClassifier用于分类,AdaBoostRegressor用于回归。 AdaBoostClassifier使用了两种Adaboost分类算法的实现,SAMME和SAMME.R。而AdaBoostRegressor则使用Adaboost回归算法的实现,即Adaboost.R2。 当我们对Ad原创 2020-05-15 16:07:36 · 798 阅读 · 0 评论 -
机器学习算法随机数生成
在学习机器学习算法的过程中,我们经常需要数据来验证算法,调试参数。但是找到一组十分合适某种特定算法类型的数据样本却不那么容易。还好numpy, scikit-learn都提供了随机数据生成的功能,我们可以自己生成适合某一种模型的数据,用随机数据来做清洗,归一化,转换,然后选择模型与算法做拟合和预测。下面对scikit-learn和numpy生成数据样本的方法做一个总结。一、 numpy随机数据生成API numpy比较适合用来生产一些简单的抽样数据。API都在random类中,常见的API转载 2020-05-14 10:26:11 · 671 阅读 · 0 评论 -
集成学习之Adaboost算法推导
1. 回顾boosting算法的基本原理 在集成学习原理小结中,我们已经讲到了boosting算法系列的基本思想,如下图: 从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集原创 2020-05-13 22:07:10 · 313 阅读 · 0 评论 -
集成学习简单小结
一、集成学习之 Boosting Boosting 是一族可将弱学习器提升为强学习器的算法。 Boosting的算法原理我们可以用一张图做一个概括如下: 从上图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,让之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。 然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数原创 2020-05-09 13:37:59 · 228 阅读 · 0 评论 -
集成学习简单介绍
一、集成学习概念 集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统、基于委员会的学习等。二、集成学习的组成2.1、集成学习的一般结构 1. 先产生一组 “个体学习器” 2. 再用某种策略将它们结合起来 个体学习器通常由一个现有的学习算法从训练数据产生,例如 C4.5决策树算法、BP 神经网络算法等,此时集成中只包含同种类型的个体学习器...原创 2020-05-07 22:35:28 · 611 阅读 · 0 评论 -
决策树三种算法比较(ID3、C4.5、CART)
一、ID3算法 D3算法核心是根据 “最大信息熵增益” 原则选择划分当前数据集的最好特征。“信息熵” 在上一篇博客中写过,它是一种信息度量方式,其不确定度越大或者说越混乱,熵就越大。Ent(D)=−∑k=1∣Y∣pklog2pk &n...原创 2020-05-07 17:29:12 · 15009 阅读 · 1 评论 -
决策树基础概念总结
一、决策树介绍1、基本实现 决策树(descision tree) 是一种常见的机器学习算法。以二分类任务为例,我们希望从给定训练数据集学得一个模型用以对新事例进行分类,这个过程可以看作是一种“决策”或“判定”,决策树就是基于树结构来进行决策的。在决策的过程中通常会进行一系列的判断或“子决策”。2、基本组成 一棵决策树只有一个根节点、若干个内部节点和若干个叶结点;叶结点对应于决...原创 2020-04-30 22:57:44 · 500 阅读 · 0 评论 -
机器学习分类和回归任务中的模型评估
一、性能度量概念 对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评估标准,这就是性能度量。 在预测任务中,给定样例集D={(x1,y1),(x2,y2),…,(xm,ym)}D={\lbrace(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\rbrace}D={(x1,y1),(x2,y2),…,(xm,ym)},...原创 2020-04-28 16:23:19 · 713 阅读 · 0 评论 -
数据集划分方法(留出法、交叉验证)
一、留出法 留出法(hold_out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S⋃T,S⋂T=∅D=S\bigcup T,S\bigcap T=\emptysetD=S⋃T,S⋂T=∅,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。举例:from sklearn.datasets import load_breast_c...原创 2020-04-25 23:03:30 · 9672 阅读 · 1 评论 -
sklearn 中 predict 方法和 predict_proba 方法的区别和使用
一、predict 和 predict_proba的概念和区别 1、predict和predict_proba都是用于模型的预测。 2、predict返回的是一个预测的值,predict_proba返回的是对于预测为各个类别的概率。 3、predict_proba返回的是一个 n 行 k 列的数组,n 表示测试集中样本的个数, 第 i 行 j列的数值是模型预测 第 i 个预...原创 2020-04-24 22:02:05 · 10197 阅读 · 0 评论 -
Pandas之 get_dummies 进行 one-hot 编码(虚拟变量或哑变量)
一、虚拟变量概念 虚拟变量 ( Dummy Variables) 又称虚设变量、名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到两个方程的作用,而且接近现实。二、为什么使用虚拟变量 在回归分析中,自变量X既可以是定量数据也可以定类数据。回归分析计算时是将所有自变量X视为数...原创 2020-04-22 19:32:55 · 1096 阅读 · 0 评论 -
神经网络反向传播算法(BP算法)
一、反向传播算法原理反向传播算法概念:最初,所有的边权重(edge weight)都是随机分配的。对于所有训练数据集中的输入,人工神经网络都被激活,并且观察其输出。这些输出会和我们已知的、期望的输出进行比较,误差会「传播」回上一层。该误差会被标注,权重也会被相应的「调整」。该流程重复,直到输出误差低于制定的标准。传播原理:反向传播主要依赖于链式法则复合函数求导 如下图, y是复合函...原创 2020-04-17 11:50:54 · 3327 阅读 · 0 评论 -
神经网络算法计算过程推导
一、单个神经元 神经网络算法,是使用计算机模拟生物神经系统,来模拟人类思维方式的算法。它的基本单位就是人工神经元,通过相互连接形成一张神经网络。 下面三张图都展示了单神经元的结构: 图一中x1、x2、…、xnx_1、x_2、… 、x_nx1、x2、…、xn表示输入, w1、w2、…、wn~w_1、w_2、…、w_n w1、w2、…、wn表示权...原创 2020-04-13 23:26:01 · 3352 阅读 · 0 评论 -
神经网络算法中的三种函数
神经网络——三种函数1、激活函数 进行非线性变换,假如我们构建了一个多层的神经网络,那它每一层做的其实都是一个线性加权求和的运算,因此这个神经网络就只能做线性分类。当我们对每层网络中的各个节点都做非线性变换(使用激活函数)时,那么这个神经网络就可以做非线性分类任务了。下面我列举了的三种常用的激活函数:Sigmoid激活函数:tanh激活函数:ReLu激活函数:2、损失函数...原创 2020-04-13 19:30:59 · 4487 阅读 · 0 评论 -
神经网络算法基础概念总结
人工神经网络 人工神经网络是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激的响应机制后,以网络拓扑知识为理论基础模拟人脑的神经系统,对复杂信息的处理机制的一种数学模型。 神经网络模拟人脑的工作原理,在输入和输出之间增加了许多结点,每一个节点对前一个结点传来的数据,按照自己拥有的权重系数进行加工。 神经网络是一种运算模型,它是由大量节点之间相互连接构成,每个...原创 2020-04-13 11:02:02 · 1760 阅读 · 0 评论 -
正则化惩罚解决过拟合问题
正则化惩罚思想: 当假设函数 hθ(x) ~h_\theta(x)~ hθ(x) 的阶数较高时,生成的模型会想方设法的拟合训练集,造成过拟合问题。我们可以对函数的参数 (θ0、θ1、…、θn) ~(\theta_0、\theta_1、…、\theta_n)~ (θ0、θ1、…、θn) 进行正则化,减小其...原创 2020-04-11 14:04:02 · 485 阅读 · 0 评论 -
回归分析中产生过拟合的原因
例如以住房面积为自变量的函数来预测房价1、如图: 使用一次函数 θ0+θ1x ~\theta_0+\theta_1x~ θ0+θ1x 来预测时,从图中可以看出这不是一个很好的模型,没有很好的拟合训练集,导致出现"欠拟合"问题。2、如图: 使用二次函数 θ0+θ1x+θ2x2 ~\theta_0+\theta...原创 2020-04-10 23:26:28 · 2328 阅读 · 0 评论 -
多分类问题的逻辑回归解决
多元分类 在我们生活中有很多多分类事件,如邮件分类、给文件加上标签、垃圾分类等,下面举一个例子来说明如何使用逻辑回归来解决多分类问题。 上图中有三类数据,即三角形、正方形和叉,由于逻辑回归是用来处理二分类问题,于是我们可以将这个三种类别的训练集转换为三个独立的二元分类问题。1、先从三角形开始 创建一个伪训练集,将三角形设定为正类,正方形和叉设定为负类,接着拟合一个分类...原创 2020-04-10 22:37:32 · 1433 阅读 · 0 评论 -
决策界限的产生
逻辑回归中假设函数 hθ(x) ~h_\theta(x)~ hθ(x) 输出的是给定 x ~x~ x 和参数 θ\thetaθ时, y=1 ~y=1~ y=1 的估计概率,即: &n...原创 2020-04-10 21:44:36 · 133 阅读 · 0 评论 -
梯度和梯度下降详解
梯度 假设对于函数F(x),在其图象中有一点a,在a点的梯度是F(x)增长最快的方向,梯度本身是一种上升的趋势。梯度下降概念:对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向, 梯度下降算法是一种求局部最优解的方法。原理:将函数比作一个山谷,如下图,我们站在山坡上的某处,往四周看,找出一个方向,使得沿着这个方向向下走一小步,能够下降的最快;...原创 2020-04-09 23:54:39 · 956 阅读 · 0 评论 -
损失函数和成本函数详解
损失函数(误差函数)概念:损失函数是再单个训练样本中定义的,该样本中可以有多个特征参数。作用:可以用来衡量算法的运行情况,通过定义损失函数L来衡量预测值的输出 y^ ~\hat{y}~ y^ 和真实值 y ~y~ y 之间的接近程度,其值越小越好。线性回归损失函数L(θ)=m⋅log⋅12πσ −...原创 2020-04-09 21:20:13 · 3450 阅读 · 0 评论 -
线性回归和逻辑回归原理和推导
啊原创 2020-03-31 12:40:50 · 429 阅读 · 0 评论