前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >资源 | Python上的图模型与概率建模工具包:pomegranate

资源 | Python上的图模型与概率建模工具包:pomegranate

作者头像
机器之心
发布2018-05-11 13:17:03
1.9K0
发布2018-05-11 13:17:03
举报
文章被收录于专栏:机器之心

选自GitHub

机器之心编译

参与:路雪

近日,pomegranate 的作者宣布发布新版本 pomegranate v0.9.0。新版本为概率分布、k 均值、混合模型、隐马尔可夫模型、贝叶斯网络、朴素贝叶斯/贝叶斯分类器等模型提供模型拟合、结构化学习和推断过程的修正,并重点关注于处理数据缺失值。

  • 文档地址:http://pomegranate.readthedocs.io/en/latest/
  • GitHub 地址:https://github.com/jmschrei/pomegranate

新版重点关注于缺失值的处理,而我们通常的方法是仅从观察中收集充分数据,并忽略或设定相近的值来代替缺失值。但 pomegranate v0.9.0 会比常见的简单填补方法有更好的结果。作者还宣布适用于所有概率图模型的缺失值处理方法已经调试完毕,不过可能还需修复一些问题。

pomegranate v0.9.0 所做的修正有:

  • 添加了「缺失值」部分的文档。
  • 添加如何进行缺失值处理的扩展教程。
  • 添加了之前作者在 ODSC west 2017 演讲中提到的一些功能。

pomegranate 的模块化本质意味着大家现在可以把缺失值支持和其他功能结合起来用。例如,你可以轻松添加多线程以加快模型速度,或者使用不完整的数据集进行 out-of-core 学习,或用不完整的数据和标签进行半监督学习。

复制该 GitHub repo 或者运行 pip install pomegranate 即可安装 pomegranate。这一次更新确实非常有助于开发者处理更加复杂的概率图模型,它所注重的缺失值处理也优于一般朴素的处理方法。既然这次更新这么有诚意,它所推荐的缺失值处理也非常有效,那么 pomegranate 到底是什么?以下我们将简要介绍 pomegranate 的特性、安装方法与该系统的研究论文。

pomegranate 简介

pomegranate 是基于 Python 的图模型和概率模型工具包,它使用 Cython 实现以加快反应速度。它源于 YAHMM,可实现快速、高效和极度灵活的概率模型,如概率分布、贝叶斯网络、混合隐马尔可夫模型等。概率建模最基础的级别是简单的概率分布。以语言建模为例,概率分布就是是一个人所说的每个单词出现频率的分布。

1. 概率分布

第二个级别是以更复杂的方式使用简单分布的概率模型。马尔可夫链可以扩展简单的概率分布,仍旧以语言建模为例,即某个单词的概率依赖于先前所说单词。隐马尔可夫模型中某个单词的概率依赖于前一个词的潜在/隐藏状态,如名词通常在形容词后面。

  • 马尔可夫链
  • 贝叶斯分类器和朴素贝叶斯
  • 一般混合模型
  • 隐马尔可夫模型
  • 贝叶斯网络
  • 因子图

第三个级别是概率模型的堆叠,可以建模更复杂的现象。如果单个隐马尔可夫模型可以捕捉口音(如某个人的说话习惯),那么混合隐马尔可夫模型可以将其调整以适应特定情况。比如,一个人可能在工作时使用更为正式的语言,在与朋友交流时使用稍微随意的语言。通过将其建模为混合隐马尔可夫模型,我们将这个人的语言表示为各种口音的「混合」。

1. GMM-HMMs

2. 混合模型

3. 模型的贝叶斯分类器

2. 安装

pomegranate 依赖项要求:

代码语言:javascript
复制
- Cython (only if building from source)
- NumPy
- SciPy
- NetworkX
- joblib

运行测试前,还要安装 nose。

pip 安装:

代码语言:javascript
复制
pip install pomegranate

conda 安装:

代码语言:javascript
复制
conda install pomegranate

无需 C++编译器,快速安装 Windows 版本的 Wheels 已构建完毕。

3. 验证安装

设置已完成,现在需要检查 pomegranate 是否可以使用:

代码语言:javascript
复制
$ python -c 'from pomegranate import *; print(NormalDistribution(0, 1).probability(0))'
0.398942280402

如果你没有看到如上输出,或者遇到了其他错误,请提交问题至 https://github.com/jmschrei/pomegranate/issues。此外,若需要了解详细的使用教程,请查看 tutorials 文件夹,里面包含几个关于如何有效使用 pomegranate 的教程。

论文:pomegranate: fast and flexible probabilistic modeling in python

论文地址:https://arxiv.org/pdf/1711.00137.pdf

摘要:本文展示了 pomegranate,一个 Python 下的概率模型开源机器学习包。概率建模包括大量使用概率分布明确描述不确定性的方法。pomegranate 中实现的三种广泛使用的概率模型为通常混合模型、隐马尔可夫模型和贝叶斯模型。pomegranate 的重心是从训练模型的定义中抽象出其复杂性,允许用户专注于为自己的应用选择合适的模型,而不用受到对底层算法理解不足的限制。pomegranate 的这一重心包括从数据集中收集充分的统计数据,作为一种训练模型的策略。该方法使用了很多有用的学习策略,如 out-of-core 学习、小批量学习和半监督学习,用户无需考虑如何分割数据或修改算法,算法自己处理这些任务。pomegranate 用 Cython 构建以加速计算,同时内置多线程并行处理方法,pomegranate 可匹配甚至优于其他类似算法的实现。本文概览了 pomegranate 的设计思路,以及如何使用简单的代码支持复杂的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 TI 平台
腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档