预测模型

各种树模型细节比较(分类树,回归树,随机森林,gbdt, xgboost)

烈酒焚心 提交于 2019-11-27 05:41:49
前言 树模型实在是个庞大的家族,里面有许多细节值得注意,怕自己遗忘,写一期总结方便以后查询。先介绍三种划分方式: 信息增益: 计算数据集D中的经验熵H(D): 计算特征A对数据集D的经验条件H(D/A): 计算休息增益差: 其中D为样本容量,pi代表当前节点D中i类样本比例。设有K个类(1,2,…,K),Ck为属于为K类样本的样本数。设特征A有j个不同的取值(a1,…,aj),根据A的取值将D划分为D1,…,Dj(代表样本数)。 信息增益率: 分裂信息计算公式: 信息增益率定义为: 选择最大增益率作为分裂特征 Gini系数: 在CART树中使用,这里CART先不展开后文会写。 从根节点开始,对节点计算现有特征的基尼指数。 对每一个特征,例如A,再对其每个可能的取值如a,根据样本点对A=a的结果划分为两个部分(这里假设A只有两个值,因为 CART是二叉树 ): 上面的式子表示的是不确定性的大小,越小表示数据纯度越高。 分类树 ID3: ID3算法的核心是在决策树各个节点上根据 信息增益 来选择进行划分的特征,然后递归地构建决策树。 具体方法: 从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益值最大的特征作为节点的划分特征; 由该特征的不同取值建立子节点; 再对子节点递归地调用以上方法,构建决策树; 到所有特征的信息增益都很小或者没有特征可以选择为止,得到最终的决策树。

5.多项式回归与模型泛化

 ̄綄美尐妖づ 提交于 2019-11-27 03:59:11
(一)什么是多项式回归 还记得线性回归法吗?线性回归法有一个很大的局限性,那就是需要数据是有一定的线性关系的,但是现实中的很多数据是没有线性关系的。多项式就是用来解决这个问题的,可以处理非线性数据 在线性回归中,我们是假设数据具有线性关系的,因此我们在简单线性回归中,将直线的方向设置为y=ax+b的形式,那么我们求出a和b即可。 而对于有些数据,我们虽然也可以使用线性回归,但是显然具有更加强的非线性的关系,换句话说,如果我们用一个二次曲线来拟合这些点,效果会更好。因此函数就变成了了y=ax^2+bx+c,我们求出a、b、c即可。但是本质上,和线性回归一样,目前都是只有一个特征,只不过我们为样本多添加了一些特征,这些特征是原来的多项式项。求出了对原来的特征而言,一个非线性的曲线。 生成数据集 import numpy as np import matplotlib.pyplot as plt # 生成一百个样本,每个样本只有一个特征 X = np.random.uniform(-3, 3, size=(100, 1)) y = 0.5 * X ** 2 + X + 2 + np.random.normal(0, 1, size=(100,1)) plt.scatter(X, y) plt.show() 可以看到数据大概满足一条二次曲线,但是我们使用线性回归法来拟合一下 from

BERT的通俗理解

柔情痞子 提交于 2019-11-26 21:54:51
1、预训练模型 BERT是一个预训练的模型,那么什么是预训练呢?举例子进行简单的介绍 假设已有A训练集,先用A对网络进行预训练,在A任务上学会网络参数,然后保存以备后用,当来一个新的任务B,采取相同的网络结构,网络参数初始化的时候可以加载A学习好的参数,其他的高层参数随机初始化,之后用B任务的训练数据来训练网络,当加载的参数保持不变时,称为"frozen",当加载的参数随着B任务的训练进行不断的改变,称为“fine-tuning”,即更好地把参数进行调整使得更适合当前的B任务 优点:当任务B的训练数据较少时,很难很好的训练网络,但是获得了A训练的参数,会比仅仅使用B训练的参数更优 Task #1: Masked LM 为了训练双向特征,这里采用了Masked Language Model的预训练方法,随机mask句子中的部分token,然后训练模型来预测被去掉的token。 具体操作是: 随机mask语料中15%的token,然后将masked token 位置输出的final hidden vectors送入softmax,来预测masked token。 这里也有一个小trick,如果都用标记[MASK]代替token会影响模型,所以在随机mask的时候采用以下策略: 1)80%的单词用[MASK]token来代替 my dog is hairy → my dog is

通俗易懂的AI算法原理

我是研究僧i 提交于 2019-11-26 21:46:39
https://www.toutiao.com/a6706348363916247559/ 写给产品经理的机器学习算法入门,在文章中会忽略一些细节以及算法本身具体的实现方式。我想尽量用直白的语言、较少的数学知识给各位产品经理讲清楚各个算法的原理是什么。 机器学习的过程 机器学习的过程从本质上来说就是通过一堆的训练数据找到一个与理想函数(f)相接近的函数。在理想情况下,对于任何适合使用机器学习的问题在理论上是存在一个最优的函数让每个参数都有一个最合适的权重值,但在现实应用中不一定能这么准确得找到这个函数,所以我们要去找与这个理想函数相接近的函数,能够满足我们的使用那么我们就认为是一个好的函数。 这个训练数据的过程通常也被解释为在一堆的假设函数(Hypothesis set)中,它是包含了各种各样的假设,其中包括好的和坏的假设,我们需要做的就是从这一堆假设函数中挑选出它认为最好的假设函数(g),这个假设函数是与理想函数(f)最接近的。 机器学习过程 机器学习这个过程就好比在数学上,我们知道了有一个方程和一些点的坐标,用这些点来求这个方程的未知项从而得到完整的方程是什么。但在机器学习上我们往往很难解出来这个完整的方程是什么,所以我们只能通过各种手段求最接近理想情况下的未知项取值,使得这个结果最接近原本的方程。 什么问题适合用机器学习解决 机器学习不是万能的,并不能解决所有的问题

机器学习之集成学习

自闭症网瘾萝莉.ら 提交于 2019-11-26 17:04:43
1. 什么是集成学习? 如果你随机向几千个人询问一个复杂问题,然后汇总它们的答案。在许多情况下你会发现,这个汇总的回答比专家的答案还要好,这被称为集体智慧,同样,如果你聚合一组预测器的预测,得到的预测结果也比最好的单个预测器要好,这样的一组预测器,我们称为集成,也被称为集成学习。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。 集成学习有两个主要的问题需要解决: 如何得到若干个个体学习器 如何选择一种结合策略,将这些个体学习器集合成一个强学习器 2. 集成学习之结合策略 2.1 个体学习器已知的情况下 blending就是将所有已知的个体学习器 结合起来,发挥集体的智慧得到 强学习器 。值得注意的一点是这里的 都是已知的。blending通常有三种形式: uniform:简单地计算所有 的平均值 non-uniform:所有 的线性组合 conditional:所有 的非线性组合 其中,uniform采用投票、求平均的形式更注重稳定性,而non-uniform和conditional追求的更复杂准确的模型,但存在过拟合的危险 2.2 个体学习器未知的情况下 blending是建立在所有 已知的情况。那如果所有个体学习器 未知的情况,对应的就是学习法,做法就是一边学 ,一边将它们结合起来

机器学习--介绍

本小妞迷上赌 提交于 2019-11-26 11:35:57
1.机器学习:通过对以往历史数据的学习建立一个模型用来预测以后的数据进行预测和分析。 1.1监督学习 supervised learning     监督学习 可以分为 生成方法 (生成模型generative)和 判别方法 (判别模型discreiminative)   生成模型:学习联合概率分布p(x,y) p(y|x)=p(x,y)/p(x)=p(y)p(x|y)/p(y) 比如贝叶斯模型,隐马尔科夫模型(HMM)   判别模型:有数据直接学习f(x)或者条件概率分布p(y|x) 比如:最近邻(KNN),感知机(perception),决策树等 学习过程的三要素:模型(Model)、策略、算法 Model,即你要学习什么样的模型,包括线性模型,非线性模型等,取决于你要学习的问题和数据。 策略,模型按照什么样的准则在整个模型解空间中选择最优的模型,其实就是损失代价函数包括(0-1损失,平方损失等)   算法,参数模型的求解方法,比如梯度下降法,牛顿法等。 风险函数: 分险函数度量评价意义下的模型预测的好坏。 经验风险最小化,在假设空间,损失函数已经训练数据集确定的情况下: 期望风险最小化(设计的模型与真实的误差) 但是由于我们是无法知道数据的真实分布的,如果知道数据的真实分布,我们就不需要学习模型参数了,但是根据大数定律,当我们的训练数据趋于无穷大的时候

飞桨端到端开发套件揭秘:低成本开发的四大秘密武器

心不动则不痛 提交于 2019-11-26 10:35:58
11 月 5 日,在 Wave Summit+2019 深度学习开发者峰会上,飞桨全新发布和重要升级了最新的 21 项进展,在深度学习开发者社区引起了巨大的反响。 很多未到场的开发者觉得遗憾,希望可以了解飞桨发布会背后的更多技术细节,因此我们特别策划了一个系列稿件,分别从核心框架、基础模型库、端到端开发套件、工具组件和服务平台五个层面分别详细解读飞桨的核心技术与最新进展,敬请关注。 今天给大家带来的是系列文章之飞桨的端到端开发套件解读。 飞桨全新发布包含语义理解(ERNIE),目标检测(PaddleDetection),图像分割(PaddleSeg)和点击率预估(ElasticCTR)四大端到端开发套件,旨在通过模块化的设计和端到端的体验,满足企业低成本开发和快速集成需求。核心内容3503字,预计阅读时间4分钟。 1. 端到端开发套件的初心 飞桨发布端到端开发套件的初心,是为了更好满足开发者的低开发成本、快速集成需求而来的。开发者的时间、人力非常宝贵,效率提升非常重要。为了要解放开发者劳动力,降低开发的成本,同时能够快速的集成和部署,飞桨推出了端到端开发套件。 端到端开发套件具有以下三个通用特点:一是满足真正的工业场景中性能要求,保持性能领先;二是开发简单易用,高效解决问题;三是打通端到端流程,落地高效易部署。 对于端到端体验的流程中,数据处理也是非常重要的环节

bert今生前世全总结

半腔热情 提交于 2019-11-26 01:35:27
一、Bert简介 谷歌AI实验室的BERT深刻影响了NLP的格局。 BERT之后,许多NLP架构、训练方法与语言模型如雨后春笋般涌现,比如谷歌的TransformerXL、OpenAI’s GPT-2、 XLNet、ERNIE2.0、 RoBERTa等。 BERT团队对该框架的描述: BERT全称Bidirectional Encoder Representations from Transformers(Transformers的双向编码表示),对未标注的文本,通过上下文约束预训练深层双向表示。训练完成后,只需要对BERT预训练模型进行fine-tune,再加上针对特定任务的输出层就可以取得SOTA(state of the art)结果。 BERT是在大量的未标注文本上预训练得到,包括整个Wikipedia(25亿单词)和图书语料库(8亿单词)。 BERT最吸引人的在于,我们仅仅通过在模型后根据自己的需求加上输出层部分就可以在各类NLP任务取得SOTA结果。 二、从Word Embedding到Bert 1. 图像预处理 自从深度学习火起来后,预训练过程就是做图像或者视频领域的一种比较常规的做法,有比较长的历史了,而且这种做法很有效,能明显促进应用的效果。 预处理过程如上图: 我们设计好网络结构以后,对于图像来说一般是CNN的多层叠加网络结构

常用的集成学习方法

夙愿已清 提交于 2019-11-26 00:45:37
集成学习是构建一组基学习器,并将它们综合作为最终的模型,在很多集成学习模型中,对基学习器的要求很低,集成学习适用于机器学习的几乎所有的领域: 1、回归 2、分类 3、推荐 4、排序 集成学习有效的原因 多样的基学习器可以在不同的模型中取长补短 每个基学习器都犯不同的错误,综合起来犯错的可能性不大 但是想同的多个基学习器不会带来任何提升 集成学习示例: 例如在上图中每个线性模型都不能成功将该数据集分类 但是三个线性模型的简单综合即可将数据集成功分类,每个模型犯不同的错,但是在综合时能够取长补短,使得综合后的模型性能更好。 那么如何构建不同的基学习器?如何将基学习器综合起来? 如何构建不同的学习器 1、采用不同的学习算法 2、采用相同的学习算法,但是使用不同的参数 3、采用不同的数据集,其中采用不同的样本子集,在每个数据集中使用不同的特征 如何综合不同的基学习器 1、投票法 每个基学习器具有相同的权重 2、有权重的投票 可用不同的方法来确定权重 3、训练一个新模型来确定如何综合 stacking 我们一般偏好简单的模型(线性回归) 主要的集成学习模式有以下几种 1、bagging random forest(随机森林) 2、boosting adaboost GBDT 3、stacking bagging 在集成算法中,bagging