理解RNN
主要有一下几个内容:
1.1 引出循环神经网络
1.2 RNN 讲解
1.3 为什么可以参数共享的简单理解
1.4 RNN 的训练
1.5 RNN 几种架构
1.6 引出下文:Long-Term 依赖问题
1.7 为什么可以参数共享的简单理解
1.1 引出循环神经网络
在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如时序问题,比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。这个时候,我们怎么办呢?下面有两种解决方案
一种思路是记忆之前的分类器的状态,在这个基础上训练新的分类器,从而结合历史影响,但是这样需要大量历史分类器
重用分类器,只用一个分类器总结状态,其他分类器接受对应时间的训练,然后传递状态,这样就避免了需要大量历史分类器,而且还比较有效的解决了这个问题。而这样一种东西是什么呢?没错,就是 RNN(循环神经网络)
1.2 RNN 讲解
RNN 出现的目的是来处理序列数据的。RNN 之 ...
Introduction to Pseudo-Labelling-A Semi-Supervised learning technique
我们在解决监督机器学习的问题上取得了巨大的进步。这也意味着我们需要大量的数据来构建我们的图像分类器。但是,这并不是人类思维的学习方式。一个人的大脑不需要上百万个数据来进行训练,需要通过多次迭代来完成相同的图像来理解一个主题。它所需要的只是在基础模式上用几个指导点训练自己。显然,我们在当前的机器学习方法中缺少一些东西。我们能否可以建立一个系统,能够要求最低限度的监督,并且能够自己掌握大部分的任务。
本文将介绍一种称为伪标签(Pseudo-Labelling)的技术。我会给出一个直观的解释,说明伪标签是什么,然后提供一个实际的实现。
什么是半监督学习?
比方说,我们有一个简单的图像分类问题。训练数据由两个被标记的图像Eclipse(日食)和Non-eclipse(非日食)组成,如下所示。
我们需要从非日食图像中对日食的图像进行分类。但是,问题是我们需要在仅仅两张图片的训练集上建立我们的模型。
因此,为了应用任何监督学习算法,我们需要更多的数据来构建一个鲁棒性的模型。为了解决这个问题,我们找到了一个简单的解决方案,我们从网上下载一些图片来增加我们的训练数据。
但是,对于监督的方法,我们 ...
自然语言处理中的Attention Model:是什么及为什么
要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model(后文有时会简称AM模型)这个词。AM模型应该说是过去一年来NLP领域中的重要进展之一,在很多场景被证明有效。听起来AM很高大上,其实它的基本思想是相当直观简洁的。本文作者可以对灯发誓:在你读完这篇啰里啰嗦的文章及其后续文章后,一定可以透彻了解AM到底是什么,以及轻易看懂任何有关论文看上去复杂的数学公式部分。怎么样,这广告打的挺有吸引力吧,尤其是对那些患有数学公式帕金森病的患者。
引言
当我第一次看到机器学习领域中的Attention Model这个名字的时候,我的第一直觉就是:这是从认知心理学里面的人脑注意力模型引入的概念。若干年前,也就是在我年轻不懂事的花样年华里,曾有一阵子沉迷于人脑的工作机制,大量阅读了认知心理学方面的书籍和论文,而一般注意力模型会作为书籍的单独一章来讲。下面请允许我显摆一下鄙人渊博的知识。
注意力这东西其实挺有意思,但是很容易被人忽略。让我们来直观地体会一下什么是人脑中的注意力模型。首先,请您睁开眼并确认自己处于意识清醒状态;第二步,请找到本文最近出现的一个“Att ...
Summary of kaggle competition experience
Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台。在 Kaggle 上,企业或者研究机构发布商业和科研难题,悬赏吸引全球的数据科学家,通过众包的方式解决建模问题。而参赛者可以接触到丰富的真实数据,解决实际问题,角逐名次,赢取奖金。诸如 Google,Facebook,Microsoft 等知名科技公司均在 Kaggle 上面举办过数据挖掘比赛。2017年3月,Kaggle 被 Google CloudNext 收购。
1 参赛方式
可以以个人或者组队的形式参加比赛。组队人数一般没有限制,但需要在 Merger Deadline 前完成组队。为了能参与到比赛中,需要
在 Entry Deadline 前进行至少一次有效提交。最简单地,可以直接提交官方提供的 Sample Submission。关于组队,建议先
单独个人进行数据探索和模型构建,以个人身份进行比赛,在比赛后期(譬如离比赛结束还有 2~3 周)再进行组队,以充分发挥组队的效果(类似于模型集
成,模型差异性越大,越有可能有助于效果的提升,超越单模型的效果)。当然也可以 ...
使用Keras进行数据处理
任何机器学习模型对所需数据的规范和格式都有一定的要求,在深度学习中通常要求输入算法的数据为一个多维矩阵的形式,因此,在建模之前都要对原始数据进行处理.
Keras针对几种常见的输入数据形态,提供了几个易于使用的工具来处理数据,包括针对序列模型的数据预处理,针对文本模型的文字预处理,以及针对图片输入的预处理.所有函数都在Keras.preprocessing这个模块里面.
文字预处理
在文本建模实践中,一般都需要把原始文本进行分词,标记化处理,对于已经读入的文字的预处理包含以下几个步骤:
分词
建立索引
序列补齐
转化为矩阵
批处理
分词
分词主要利用到text.text_to_word_sequence函数,可以按照给定的分隔符进行分割文本,
1234keras.preprocessing.text.text_to_word_sequence(text, filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|} ...
Keras中的模型学习
在keras中主要有两大类深度学习模型: 一类是序列模型(Sequential);另一类是通用模型(Model),其中的差异主要体现在拓扑结构上.
序列模型
可以说序列模型是通用模型的一个子类,这种模型各层之间是依次顺序的线性关系,通常是叠加形式构造深度学习模型,比如:
12345678from keras.models import Sequentialfrom keras.layers import Dense,Activationmodel = Sequential()model.add(Dense(32,input_shape=(784,)))model.add(Activation('relu'))model.add(Dense(10))model.add(Activation("softmax"))
通用模型
通用模型可以用来设计比较复杂,任意结构的深度学习模型,比如:
12345678910111213141516from keras.layers import Input,Densefrom keras.models impor ...
Kaggle债务违约预测冠军经验分享
债务违约预测是Kaggle中的一个比赛,本文将介绍取得第一名成绩的方法,本次比赛的目标包括两个方面。其一是建立一个模型,债务人可以通过它来更好地进行财务方面的决策。其二是债权人可以预测这个债务人何时会陷入到财务方面的困境。最终目的是,通过预测未来两年内债务违约的概率,来改进现有的信用评分制度。这是一个极度复杂和困难的Kaggle挑战,因为银行和各种借贷机构一直都在不断地寻找和优化信用评分的算法。这个模型是银行用来判定是否准许某一笔贷款的。根据这个模型提供的信息,银行可以更好地作出决策,借贷者也可以更好地进行财务方面的规划,以免将来陷入债务危机。
本次挑战允许团队使用集成模型和算法,如XGBoost, Gradient Boosting, 随机森林(Random Forest), 限制玻尔兹曼机(Restricted Boltzman Machine Neural Networks), Adaboost。以及使用先进的堆叠技术(stacking)和投票分类器来准确地预测违约概率。
我们的测量和排名严格使用ROC曲线的AUC值。我们遵照了Agile过程,来确保我们分块、并行地完成关键的任 ...
Exploration data analysis(unfinished)
主要是常用的画图函数
主要是常用的数据分析函数模块
加载所需要模块
1234567import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snscolor = sns.color_palette()# pd.options.mode.chained_assignment = None%matplotlib inline
读取数据
12train = pd.read_json("train.json")test = pd.read_json("test.json")
显示前5行
1train.head()
从上可以看到数据类型都有:数值型,类别型,时间特征,文本特征…
查看数据的行数:
12print("Train Rows: ",train.shape[0])print("Test Rows: ",test.shape[0])
条形图
利用矩阵条的高度反映数值变量的集中趋势,某一类别下出现 ...
XGBoost-LightGBM和CatBoost的同与不同
尽管近年来神经网络复兴并大为流行,但是 boosting 算法在训练样本量有限、所需训练时间较短、缺乏调参知识等场景依然有其不可或缺的优势。本文从算法结构差异、每个算法的分类变量时的处理、算法在数据集上的实现等多个方面对 3 种代表性的 boosting 算法 CatBoost、Light GBM 和 XGBoost 进行了对比;虽然本文结论依据于特定的数据集,但通常情况下,XGBoost 都比另外两个算法慢。
2014 年 3 月,XGBOOST 最早作为研究项目,由陈天奇提出
2017 年 1 月,微软发布首个稳定版 LightGBM
2017 年 4 月,俄罗斯顶尖技术公司 Yandex 开源 CatBoost
由于 XGBoost(通常被称为 GBM 杀手)已经在机器学习领域出现了很久,如今有非常多详细论述它的文章,所以本文将重点讨论 CatBoost 和 LGBM,在下文我们将谈到:
算法结构差异
每个算法的分类变量时的处理
如何理解参数
算法在数据集上的实现
每个算法的表现
LightGBM 和 XGBoost 的结构差异
在过滤数据样例寻找分割值时,Light ...
数据探索的综合指南
没有任何捷径能一步掌握数据探索.如果你想要提高模型的准确性,你会发现数据探索会极大地帮助你提高模型的准确度.
我可以很自信地说,因为我经历过很多这样的情况。
本教程帮助您理解数据挖掘的底层技术。和往常一样,我尽力用最简单的方式来解释这些概念。为了更好的理解,我举了几个例子来演示复杂的概念。
数据准备
记住一点,我们输入的数据的质量决定了我们输出的质量,因此,一旦你拿到了你的业务准备,是值得花费时间和精力在这上面的。根据我个人的经验而言,数据探索、清洗和准备能耗费整个项目的70%的时间。下面是为建立你的预测性模型所做的数据理解、清洗和准备工作:
变量识别
单变量分析
双变量分析
缺失值处理
异常值检测
变量转换
变量创造
最终,我们将需要在提出我们的模型之前重复前面步骤4-7多次
现在让我们从每个步骤的细节学起
变量识别
首先,搞明白自变量(predictor(input))和因变量(target(output))。下一步,清楚数据类型和变量类别.
让我们通过一个例子更清楚的理解这个步骤:
Example:-假设,我们要预测学生是否将会打板球(参考下面的 ...