时间序列_隐马尔可夫模型HMM
机器学习 _ 隐马尔可夫模型
HMM
1. 马尔可夫链
马尔可夫链是满足马尔可夫性质的随机过程。马尔可夫性质是无记忆性。
也就是说,这一时刻的状态,受且只受前一时刻的影响,而不受更往前时刻的状态的影响。我们下面说的隐藏状态序列就马尔可夫链。
2. 隐马尔可夫模型
隐马尔可夫模型(Hidden Markov
Model,HMM)是统计模型,用它处理的问题一般有两个特征:
第一:问题是基于序列的,比如时间序列,或者状态序列。
第二:问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观测到的,即隐藏状态序列,简称状态序列,该序列是马尔可夫链,由于该链不能直观观测,所以叫“隐”马尔可夫模型。
简单地说,状态序列前项能算出后项,但观测不到,观测序列前项算不出后项,但能观测到,观测序列可由状态序列算出。
HMM 模型的主要参数是λ=(A,B,Π),数据的流程是通过初始状态 Pi
生成第一个隐藏状态 h1,h1 结合生成矩阵 B 生成观测状态 o1,h1
根据转移矩阵 A 生成 h2,h2 和 B 再生成
o2,以此类推,生成一系列的观测值。
HMM
3. 举例
1) ...
机器学习_集成算法
机器学习 _ 集成算法
为什么使用集成算法
简单算法一般复杂度低,速度快,易展示结果,但预测效果往往不是特别好。每种算法好像一种专家,集成就是把简单的算法(后文称基算法/基模型)组织起来,即多个专家共同决定结果。
如何组织算法和数据
这里我们的着眼点不是某个算法,某个函数,而是对数据和算法整体的规划。
从数据拆分的角度看:可以按行拆分数据,也可以按列给属性分组。
从算法组合的成份看:可以集成不同算法,也可以集成同一算法不同参数,还可以集成同一算法使用不同数据集(结合数据拆分)。
从组合的方式看:可以选择少数服从多数,或加权求合(可根据正确率分配权重)。
从组合的结构看:可以是并行,串行,树型或者更复杂。
综上,我们看到了各种构造集成的方法,这里面可选的组合太多,不可能一一尝试,目前拼的还是人的经验:对数据的理解,对算法的组织,以及对工具的驾驶能力。在使用集成算法的过程中,除了调库,调参,更重要的是领会精神。也可以自己编写一些集成算法。
三个臭皮匠顶个诸葛亮
三个臭皮匠是否能顶诸葛亮,这还得具体问题,具体分析。如果基算法选错了,即使再怎么组合,再怎么调参也 ...
实战大数据竞赛平台——Kaggle入门
大数据竞赛平台——Kaggle 入门
#算法实战
在学习了一些数据挖掘和机器学习的算法之后,需要积累实际开发经验。在实践的过程中不仅需要自己摸索,还需要向牛人学习和请教。Kaggle
就提供这样的数据平台,企业或者研究者可以将数据、问题描述、期望的指标发布到
Kaggle 上,开发者其数据下载到本地,分析,处理后将结果上传,Kaggle
将结果排名显示,有的比赛设有资金。Kaggle
还有活跃的讨论区,供大家交流。
如何使用 Kaggle
我们先来看看,Kaggle 的具体使用方法。在竞赛界面中
https://www.kaggle.com/competitions,可看到比赛分类:Getting
Start,Playground,Featured,Research 等(用不同颜色区分).建议初学者从
Getting Start
级别开始,在这个级别上可以看到更多的教程和代码分享,题目也比较简单,适合入门.
competitions
以参赛队最多的 Tinanic
沉船问题为例.https://www.kaggle.com/c/titanic.它的目标是预测乘客是否幸 ...
百度自动驾驶系统Apollo源码分析
百度自动驾驶系统 Apollo
源码分析
Apollo(阿波罗)是百度今年发布的汽车自动驾驶系统,它是不是可以无人驾驶?安全性又如何保证?下面我们就来看看自动驾驶指的是什么,以及它是如何实现的.
##自动驾驶评级
先来看看什么是自动驾驶,2014 年,SAE
International(国际汽车工程师协会)制订了一套自动驾驶汽车分级标准,其对自动化的描述分为
5 个等级。
自动驾驶评级
从辅助驾驶到全自动驾驶,都属于自动驾驶,只是级别不同,现在有很多车已经配置了定速巡航,自动泊车,这是从
L1 走向 L2 阶段;而 L3
是说人可以不进行主动驾驶,但需要时刻保持注意力;据说 Google 的 Waymo
自动驾驶系统已达到 L4
水平,它能在特定地理区域和条件下,完成整个动态驾驶任务.大家离 L5
还都有一段很长的路要走.百度的目标是 2019 年量产 L3 的汽车.
同样是自动,但是程度不同,具体要看:设计运行范围(operational
design domain,简称
ODD),它包括地理位置、道路类型、速度范围、天气、时间、国家和地方性交通法律法规等等.
硬 ...
AlphaGoZero与增强学习
AlphaGo Zero 与增强学习
2017 年 10 月 19 日凌晨,DeepMind
在《自然》杂志上发表了一篇论文,正式推出人工智能围棋程序的最新版本——AlphaGo
Zero.
AlphaGo Zero 成长史
最初 AlphaGo Zero
除了围棋的基本规则以外,没有任何关于围棋的知识;
3 个小时之后,它通过自学入门围棋,成为人类初学者水平;
19
个小时之后,它自已总结出了一些"套路",比如死活,打劫,先占边角等等;
自学第三天后,它战胜了 AlphaGo Lee(当初击败李世石的 AlphaGo
版本);
自学第四十天后,它战胜了 AlphaGo Master(今年击败柯洁的 AlphaGo
版本)
与之前的 AlphaGo 版本相对,它不但提高了水平,而且节约了算力.
这还不是最重要的,最重要的是它只使用了增强学习,因此它的意义就不仅仅是赢得棋类比较这么简单了.
增强学习
先来看看什么是增强学习(Reinforcement
Learning),我们知道机器学习分为有监督学习和无监督学习,增强学习介于它们两个之间,它关注的是智能 ...
深度学习_总结篇
深度学习 _ 总结篇
前篇总结
深度学习 _ 简介及相关概念
http://blog.csdn.net/xieyan0811/article/details/78401473
深度学习 _ 工具
http://blog.csdn.net/xieyan0811/article/details/78411882
深度学习 _BP 神经网络
http://blog.csdn.net/xieyan0811/article/details/78425453
深度学习 _ 卷积神经网络 CNN
http://blog.csdn.net/xieyan0811/article/details/78438329
深度学习 _ 循环神经网络 RNN 与 LSTM
http://blog.csdn.net/xieyan0811/article/details/78462982
朋友反馈说,看不懂 CNN 和 RNN
篇.文章确实因为篇幅原因,有点跳步了.不过我觉得主要原因还是跳过了前面的基础部分.我们很多时候喜欢直击重点,跳过过程,但是有的过程确实跳不过去.
数据挖掘,机器学习,机器视觉,语言处理这些背 ...
深度学习_循环神经网络RNN与LSTM
深度学习 _ 循环神经网络 RNN
与 LSTM
1. 循环神经网络 RNN
1) 什么是 RNN?
循环神经网络(RNN)是一种节点定向连接成环的人工神经网络。具体应用有语音识别,手写识别,翻译等.
2) 什么时候使用 RNN?
FNN(前馈神经网络,如 BP,CNN 等)效果已经不错了,RNN
还需要更大量的计算,为什么要用 RNN 呢?如果训练 N
次,每次和每次都没什么关系,那就不需要
RNN,但如果每个后一次都可能和前一次训练相关,比如说翻译:一个句子里面N个词,一个词为一次训练(train
instance),一个词的意思很可能依赖它的上下文,也就是其前次或后次训练,这个时候就需要
RNN.
3) RNN 与 FNN 有何不同?
如图所示,左边的是前馈神经网络,数据按黑箭头方向从输入层经过隐藏层流入输出层,向前流动,因此叫做前馈网络.右图中,隐藏层中的数据除了传向输出层,还和下次输入一起训练后续的隐藏层,不再是单向,而是包含了循环,则构成了循环神经网络.下图是将各个时间点画在同一图上,左边前馈
FNN 的展开图,右边是 RNN 的展开图.
简单地说,它只是在隐藏层处加了 ...
深度学习_卷积神经网络CNN
深度学习 _ 卷积神经网络 CNN
1. 引入
卷积神经网络(CNN)是一种专门用来处理具有网格结构数据的神经网络.它属于前馈神经网络,它被定义为:至少在某一层用卷积代替了矩阵乘法的神经网络.最常见的应用场景是图像识别.
前篇我们自己动手,用 Python 实现了一个 BP 神经网络,本篇我们在 Keras
框架之下实现卷积神经网络(Keras 框架详见《深度学习 _ 工具》篇).Keras
几乎是搭建 CNN
最简单的工具了,然而原理并不简单:除了基本的神经网络中用的误差函数,激活函数等概念以外(具体详见《深度学习
_BP 神经网络》),CNN 还用到了卷积,池化,DropOut
等方法.将在本文中逐一介绍.
2. 原理
1) 图像识别
先来看看图形学中的图像识别是如何实现的.
图片.png
我们拿到了原图(图上左),一般先将其转换成灰度图(图上中).然后进行边缘检测,图像处理中常使用计算梯度方法(判断某像素与它相邻像素的差值)检测边缘.在
CNN 中我们用卷积来检测:先设计一个卷积核计算相邻像素的差值,然后用
ReLU(f(x)=max(0,x)) 激活函数将那些差值小的置为 ...
深度学习_BP神经网络
深度学习 _BP 神经网络
1. 说明
现在使用深度学习算法都以调库为主,但在使用库之前,先用 python
写一个最基本的神经网络的程序,也非常必要,它让我们对一些关键参数:学习率,批尺寸,激活函数,代价函数的功能和用法有一个直观的了解。
2. 原理
1) BP 神经网络
BP
神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络.这又前馈又逆向的把人绕晕了.先看看什么是前馈神经网络,回顾一下《深度学习
_ 简介》中的图示:
图片.png
这是一个典型的前馈神经网络,数据按箭头方向数据从输入层经过隐藏层流入输出层,因此叫做前馈.前馈网络在模型的输出和模型之间没有反馈,如果也包含反馈,则是循环神经网络,将在后续的
RNN 部分介绍.
前向网络和循环网络的用途不同,举个例子,比如做玩具狗,前馈是用不同材料和规格训练N次,各次训练之间都没什么关系,只是随着训练,工人越来越熟练.而循环网络中,要求每次做出来的狗都是前次的加强版,因此前次的结果也作为一种输入参与到本次的训练之中.可把循环网络理解成前馈网络的升级版.本篇讲到的
BP
神经网络,以及处理图像常用的卷积神经网络都是前馈网络 ...
深度学习_工具
深度学习 _ 工具
1. 引入
深度学习的工具有很多 Tensorflow, Theano, Caffe, Keras, MXNet,
Scikit-learn…有用 c++ 写的,有用 Python 写的,还有R的,Java
的,从哪里入手呢?
先看看最热门的
Tensorflow,它是谷歌研发的人工智能学习系统,主要优点是分布式计算,特别是在多
GPU 的环境中。Theano
也是比较低级的库,一般单机使用.什么是低级库?就像炒回锅肉不用从杀猪开始,杀猪就是比较低级的工作,已经有人帮你做好了,像
Keras 这种较上层的工具,它把 Theano 和 TensorFlow 包装成了更具人性化的
API。至于是选择低级工具,还是上层工具,主要取决于您的目标是开肉联厂还是开饭馆.
图片.png
2. 工具简介
Caffe 是 c++
写的库,是较低层级的库,它是个老牌的工具,工作稳定,性能也好,还提供绑定到
Python 上的编程语言,但相对没有 Python 类工具灵活.
Theano 是一个低级库,透明地使用 GPU
来完成数学计算.也是一个老牌的工具,工作比较稳定,只支持单机 ...