随机森林算法

机器学习算法

谁说我不能喝 提交于 2020-03-28 07:40:58
转载自: http://www.cnblogs.com/tornadomeet   朴素贝叶斯:   有以下几个地方需要注意:   1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。   2. 计算公式如下:      其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。   3. 如果 中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。    朴素贝叶斯的优点:   对小规模的数据表现很好,适合多分类任务,适合增量式训练。    缺点 :   对输入数据的表达形式很敏感。   决策树:   决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它

机器学习——随机森林算法

穿精又带淫゛_ 提交于 2020-02-28 22:14:56
机器学习——随机森林算法 1、随机森林引入 在之前的文章 机器学习——AdaBoost算法 中,我们引入了集成学习的概念,我们再来回忆一下集成学习的基本框架: 上述的每一个学习器称为弱学习器,通过多个弱学习器,最终构建出集成学习器系统,集成学习系统主要可以分成两个类别,第一个是各个弱学习器之间是有关的,第二种是各个学习器之间是无关的,对于第一种,我们已经讲述了AdaBoost算法,我们接下来是讲述关于第二个分类的代表算法——随机森林。 对于随机森林而言,其也是由多个弱学习器所构建的,每一个若学习器都是一个决策树,关于决策树的相关知识,可以参考我之前的文章 机器学习算法—决策树(ID3)算法 。在这里就不具体描述了。 2、随机森林具体描述 2.1 随机森林的基本流程 根据训练数据,构建出多棵决策树,形成随机森林。 对于测试数据,将测试数据输入到随机森林中,每一棵决策树做出预测结果。 对于每一棵决策的决策结果,根据少数服从多数的投票方法或者加权的方式来决定最终的结果。 2.2 随机森林的构建过程 我们假设训练集包括M个训练样本,具体形式为: D = [ X 1 , X 2 , . . . . . , X M ] D=[X_1,X_2,.....,X_M] D = [ X 1 ​ , X 2 ​ , . . . . . , X M ​ ] 每一个 X i X_i X i ​

随机森林算法实现分类

回眸只為那壹抹淺笑 提交于 2020-02-17 06:12:50
文章目录 导入数据 导入pandas,并且重命名为pd。 数据导入 数据处理 建立模型 模型评估 更多内容关注公众号:邯郸路220号子彬院 导入数据 导入pandas,并且重命名为pd。 import pandas as pd #通过互联网读取泰坦尼克乘客档案,并存储在变量titanic中。 titanic = pd.read_csv( ‘titanic.txt’) #引入pandas,并且重命名为pd。 将熊猫作为pd导入 #通过互联网读取泰坦尼克乘客档案,并存储在变量titanic中。 泰坦尼克号= pd.read_csv(‘titanic.txt’) 数据导入 #导入pandas,并且重命名为pd。 import pandas as pd #通过互联网读取泰坦尼克乘客档案,并存储在变量titanic中。 titanic = pd . read_csv ( 'http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt' ) #人工选取pclass、age以及sex作为判别乘客是否能够生还的特征。 x = titanic [ [ 'pclass' , 'age' , 'sex' ] ] y = titanic [ 'survived' ] 数据处理 #对于缺失的年龄信息,我们使用全体乘客的平均年龄代替

scala-MLlib官方文档---spark.mllib package--classification and regression

ⅰ亾dé卋堺 提交于 2020-01-26 07:55:42
三、Classification and regression Spark.mllib包为二分类、多分类和回归分析提供了多样的支持工具 linear models(线性模型) 1)Mathematical formulation(数学公式) 很多标准的机器学习方法都可以表述为凸优化问题,例如:找到依赖于变量向量w的凸函数f的极小值的任务(在代码中被称为权重),通常含有d个输入。形式上,我们可以将其写为优化问题minw∈ℝdf(w),,具有如下形式的目标方程 这里的向量 这里向量xi∈ℝd 是训练数据示例, 其中1≤i≤n, 并且 yi∈ℝ是他们相应的标签, 也是我们想要预测的。我们称方法是线性的如果L(w;x,y) 可以被表示称方程 wTx and y。spark.mllib的几种分类和回归算法都属于此类,在此进行讨论。 目标方程f具有两部分: The objective function f has two parts: 控制模型复杂度的正则化器,以及测量训练数据上模型误差的损失。损失函数L(w ;.)通常是w中的凸函数。固定的正则化参数λ≥0(代码中的regParam)定义了两个目标之间的权衡,这两个目标是最小化损失(即训练误差)和最小化模型复杂度(即避免过度拟合)。 (1)损失方程 下表总结了spark.mllib支持的方法的损失函数及其梯度或子梯度: 注意

机器学习之监督学习supervised learning

前提是你 提交于 2019-12-06 16:36:06
分类与回归 监督学习的问题主要有两种,分别是分类classification和回归regression。 分类: 分类问题的目的是预测类别标签class label,这些标签来自预定义的可选列表。 回归: 回归任务的目的是预测一个连续值,也叫作浮点数floating-point number,即预测值不是一个类别而是一个数字值。打个比方,假如要根据一个人的年龄学历等feature来预测这个人的收入,那么预测值为一个金额,可以在给定范围内任意取值。 区分分类与回归: 最好的办法就是看输出是否具有某种连续性,如果在可能的结果之间具有连续性,那么它就是一个回归问题。 泛化 generalize: 如果一个模型能对没有见过的数据做出准确的预测,那么就表明这个模型能从训练集generalize到测试集。 过拟合 overfitting 欠拟合 underfitting: 如果我们总想找到最简单的模型,构建与一个对于现有信息量过于复杂的模型,即在拟合模型的时候过分关注训练集的细节,得到了一个与训练集上表现很好但是不能泛化到新数据上的模型,那么就是overfitting过拟合。 反之 ,如果模型过于简单,无法抓住数据的全部内容以及数据中的变化,甚至在训练集上表现就很差,那么就是underfitting欠拟合。 所以 ,在二者之间存在一个最佳位置,找到这个位置就是我们最想要的模型。 监督学习算法

随机森林算法

匿名 (未验证) 提交于 2019-12-03 00:22:01
1.每棵树的按照如下规则生成   1)如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;   从这里我们可以知道:每棵树的训练集都是不同的,而且里面包含重复的训练样本(理解这点很重要)。    为什么要随机抽样训练集?(add @2016.05.28)   如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的,这样的话完全没有bagging的必要;    为什么要有放回地抽样? (add @2016.05.28)   我理解的是这样的:如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是"盲人摸象"。   2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;   3)每棵树都尽最大程度的生长,并且没有剪枝过程。   一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性

随机森林算法OOB_SCORE最佳特征选择

时光毁灭记忆、已成空白 提交于 2019-11-30 00:51:01
RandomForest算法(有监督学习),可以根据输入数据,选择最佳特征组合,减少特征冗余;原理:由于随机决策树生成过程采用的Boostrap,所以在一棵树的生成过程并不会使用所有的样本,未使用的样本就叫(Out_of_bag)袋外样本,通过袋外样本,可以评估这个树的准确度,其他子树叶按这个原理评估,最后可以取平均值,即是随机森林算法的性能;特征选择原理:因为袋外样本的存在,因此不需要进行十字交叉测试(节省时间),通过依次对每个特征赋予一个随机数,观察算法性能的变化,倘若变化大,则说明该特征重要,sklearn中会对每个特征赋予一个分数,分数越大,特征越重要,因此,可以根据特征重要性排序,然后选择最佳特征组合;随机森林算法特征维度,不同于PCA,随机森林算法能够考虑到特征对类别的影响,而PCA是单纯的数据方差;但是随机森林的缺点是需要迭代计算,如果在大数据条件下,进行选择,就难免有点捉襟见肘了;与LDA区别在于:LDA根据标签,通过变换将同标签数据距离缩小,将累间距离方法;LDA是一种有监督方法,PCA属于无监督方法;以上是原理和一些个人见解;现在上代码;已经在工作中跑了,学了Python的应该都能看懂,只要改一下数据路径,初始特征选择数量等就可以使用,不懂的可以问我,博客会常在的, 没全部注释!还有另外一个特征选择,就是通过利用oob对每个特征,迭代进行,评估分数