R 语言企业级数据挖掘应用

标签: 语言 企业 级数 | 发表时间:2013-05-12 08:48 | 作者:
出处:http://www.bjt.name

三月底参加了中国人民大学统计学院海峡两岸数据挖掘研讨会,和大家简单聊了聊R语言在京东商城的数据挖掘应用。本来想接着写篇博文说明一下, 一直也没腾出时间,今天补上。

为什么要使用R语言

在互联网企业,在分析端使用闭源的商用软件几乎是不可能的,原因很简单:成本太高,不管是使用,还是研发及维护。 但我个人觉得这可能还不是最主要的原因,对于互联网企业来说,数据虽然获取更容易,但环境更为复杂。开源软件可以根据业务的变化 进行调整,但商业的闭源软件则很难做到。

R能不能处理大数据

好多人问过我这个问题,我会说你有多大内存就能处理多大数据,这话显然不负责任。这个问题确实不太好回答,因为每个人心中的大数据是不一样的。 比如有人觉得几百万就是大数据,有些人觉得没个几亿就不算大数据,甚至有人说你处理不了的就是大数据(擦!?)。这些还只是从记录 数(数据存储)的角度来看的,我们换个角度想想:建模工程师要做的事情无非是将用户和产品进行合理匹配,那最细粒度就是用户维(或产品维)。 试问你有超过千万的用户数据分析建模么?对于一般的分析(工程)师来说,常见的情况还是几十万甚或百万级别。这个量级对于R来说就很容易了, 比如我刚刚的工作就是在自己的PC上载入了一个50000000×3的数据框。

接着我们在说说速度,曾经有太多的人抱怨R的运行速度太慢,甚至堂而皇之的公开表明观点。但我发现大部分人是因为不熟悉R语言的编程, 而是直接套用C或Java的编程方式,因而导致无法快速得到结果。举两个例子:

有次在微博上一位朋友抱怨说R做了一个几千乘几千的相关矩阵花了他1天时间,我当时就愕然了,然后默默地给了一个几秒钟搞定的脚本。

还有一次更具有代表性:我的项目组有个R的项目需要上线,于是直接把原始代码交予了一位项目成员,嘱咐他稍作改动即可上线。 但他发现需要3个小时才能将线上的数据计算完毕,于是又找到我帮忙优化。我看了一下,果不其然,Java风格的R代码,向量化编程的思想 一点都没有用。改之,3分钟结束计算。

R语言的向量化运算几乎可以和底层语言的速度一较高下,并且向量化是天然的并行化方式,如果条件允许,R的向量化编程可以很方便的转化为并行框架, 这也就是为什么说 R + Hadoop是大数据的发展方向的理由之一。

再说个例子:试问100万行,20万列的数据是大数据么(你没看错,是200000维)?恩,R能够处理,而且可以在这类数据上构建模型。

再看看大数据的流动

对于管理者来说,合适的人出现合适的岗位是衡量管理者是否合格的重要标准之一。对于数据分析人员,合适的工具匹配合适的数据则是是否胜任工作的 基本素质之一。R并不是通吃所有的数据场景,它只是在出现在该出现的分析建模环节。

R的位置在哪里?先让我们看看所谓的 大数据是如何从企业中传递的(摘自本次人大的演讲材料)

  • 从最底层的原始数据来看,PB级数据确实不是R所擅长,但这些数据有Hadoop或者其他高性能存储和处理系统;
  • 向上是针对于不同业务场景的数据集市,经过清洗后,数据的规模则下降到了TB级;
  • 再向上则是针对于特定任务的分析和挖掘模块,数据已经被整理到了GB级,这时候R的处理则是非常方便
  • R分析的结果则是MB级的输出,比如图表、得分,或者是规则。比如规则很容易在数据集市这段做并行化计算

我的团队在大量使用R作为分析建模工具以外,看似比较另类,其实在Google、Facebook、Linkedin等公司都有大量的直接使用R作为分析挖掘的应用, 只是大家不太留意罢了。


一句话总结: R并不是在象牙塔里供科研人员玩耍的玩具,而是实实在在工业界使用的便捷环境。

当然,这里还有很多问题没有展开,比如:

  • R语言的数据挖掘应该在并行化环境完成还是在单台机器的计算环境完成?
  • 抽样可否解决大数据挖掘问题?
  • 生产中直接实施R环境是否可行?

我们有时间再聊~

相关 [语言 企业 级数] 推荐:

R 语言企业级数据挖掘应用

- - 刘思喆@贝吉塔行星
三月底参加了中国人民大学统计学院海峡两岸数据挖掘研讨会,和大家简单聊了聊R语言在京东商城的数据挖掘应用. 本来想接着写篇博文说明一下, 一直也没腾出时间,今天补上. 在互联网企业,在分析端使用闭源的商用软件几乎是不可能的,原因很简单:成本太高,不管是使用,还是研发及维护. 但我个人觉得这可能还不是最主要的原因,对于互联网企业来说,数据虽然获取更容易,但环境更为复杂.

Python语言在企业级应用上的十大谬误

- - 极客范 - GeekFan.net
语言多元化是PayPal编程文化中一个重要的组成部分. 在C++和Java长期流行的同时,更多的团队选择了JvaScript和Scala. 同时, Braintree的收购也引入了一个久经世故的Ruby社区. Python作为一门特别的语言,在eBay和PayPal有很长的历史. eBay的开发者支持Python这个应用于基层领域多年的语言.

从MongoDB IPO谈谈企业级数据库市场

- - IT瘾-bigdata
作者:巨杉数据库 联合创始人&CTO王涛. 10月20日,NoSQL数据库MongoDB在NASDAQ正式 IPO,当日收于 32.07 美元. 截至10月27日,MongoDB报收30.89美元,公司市值保持在15亿美元左右,可以说是分布式数据库的“第一股”. 作为同样数据库行业的一员,也是分布式数据库产品厂商,巨杉一直关注MongoDB的发展.

构建企业级数据仓库的五步法

- - 行业应用 - ITeye博客
       即确定数据分析或前端展现的主题(例如:某年某月某地区的啤酒销售情况). 主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系, 确定主题时要综合考虑..         确定主题后, 需要考虑分析的技术指标(例如: 年销售额等). 它们一般为数值型数据, 其中有些度量值不可以汇总; 有些可以汇总起来, 以便为分析者提供有用的信息.

MySQL企业级数据库灾备(备份)系统-DMB v2.1发布

- 彦强 - MySQL 实验室(BLOG) - MySQL性能、MySQL Cluster集群、MySQL HA高可用等研究 - MySQL实验室
为了这系统宅了很多个周末,又一个小长假过去了, DMB v2.1终于可以那得出手了,现在分享出来让朋友们使用,希望能得到更多更好的建议. DMB 对InnoDB存储引擎支持在线热备(ibbackup, xtrabackup等),还可以根据用户需求选择备份模式,是否加锁获取Master信息等. “DMB数据库监控及灾备系统(监控、备份) for MySQL” 简单介绍见 http://www.mysqlab.net/tool/dmb/.

Google开始面向企业提供大数据分析服务BigQuery,TB级数据十几秒便可返回结果

- - 36氪
Google已经开始销售在线数据分析服务,试图与市场上类似亚马逊网络服务(Amazon Web Services)这样的企业云计算服务竞争. 去年11月,Google曾让部分开发者访问其强大的数据分析软件 — BigQuery,它也是Google自己使用的互联网检索服务的一部分. 周二Google宣布开始销售这个软件,帮助企业用户在数秒内完成万亿字节的扫描.

语言壁垒

- kylexlau - Chun Tian (binghe)
虽然经常更新微博,但确实又有些日子没写常规博客了. 10 月开始前有必要再写一篇,整理一下近期的各种思路,以良好的精神面貌迎接今年的最后一个季度. 首先发布一个已经不太新的消息:Practical Common Lisp 的中文版《实用 Common Lisp 编程》几经周折终于付印了,下月即可正式出版;读者们甚至已经可以在当当网上预订了.

Java 语言被很多人抱怨语法繁琐、开发效率低、体系繁杂而笨重,为什么还有这么强的生命力,尤其是在企业软件领域?

- - 知乎每日精选
赞同 @pansz 的答案,java生命力源自其独特的优点. 至今为止,java是大量实际得到应用的语言中,可读性最强,最利于阅读和理解,语法最严谨和规范的语言(当然,这也可以理解为语法繁琐的另一种表述)之一,在这一点上,只有已经基本退出历史舞台的pascal可与之相提并论. 而pascal并不是面对对象的,(面对对象的特点和优势我就不再赘述了,有兴趣可以查阅相关资料).

UnQL:NoSQL查询语言

- 卡飞菲 - Solidot
CouchDB作者Damien Katz与SQLite作者Richard Hipp正在为NoSQL文档数据库开发一种高级查询语言UnQL(发音同Uncle,是UNstructured Query Language的缩写). Katz表示,他们坚信为了推广NoSQL需要一种通用的查询语言,类似当年推广关系型数据库应运而生的SQL语言.

Go 语言初步

- wei - 云风的 BLOG
所谓认真玩,就是拿 Go 写点程序,前后大约两千行吧. 据说 Go 的最佳开发平台是 Mac OS ,我没有. Windows 版还没全部搞定,但是也可以用了. 如果你用 google 搜索,很容易去到一个叫 go-windows 的开源项目上. 如果你用这个,很多库都没有,而且语法也是老的. 我在 Windows 下甚至不能正确链接自己写的多个 package.