星期二, 一月 31, 2012

什么是大数据(下)

前文,大数据的特征除了规模以外还有快速和多样

快速(Velocity)

数据流入组织的速度越来越快,这使得数据的速度和规模同样重要。以前只有少数行业如金融交易公司需要关注快速传输数据,那么现在许多行业都将面临这个问题。

其原因何在?因为如今我们处于互联网和移动时代,网络会记录下人们对各种产品和服务的消费,这样产生了大量的数据并流回到供应商手中。例如网上零售商就能够记录下客户的每一次点击和交互。那些能够迅速地利用这些信息的企业就能获得竞争优势。智能手机时代的出现则再次增加了数据流入的速度,因为消费者能随身携带它们以获取地理信息数据。

星期一, 一月 30, 2012

什么是大数据(上)

大数据(Big Data)是指那些超过传统数据库系统处理能力的数据。它的数据规模和转输速度要求很高,或者其结构不适合原本的数据库系统。为了获取大数据中的价值,我们必须选择另一种方式来处理它。

数据中隐藏着有价值的模式和信息,在以往需要相当的时间和成本才能提取这些信息。如沃尔玛或谷歌这类领先企业都要付高昂的代价才能从大数据中挖掘信息。而当今的各种资源,如硬件、云架构和开源软件使得大数据的处理更为方便和廉价。即使是在车库中创业的公司也可以用较低的价格租用云服务时间了。

对于企业组织来讲,大数据的价值体现在两个方面:分析使用和二次开发。对大数据进行分析能揭示隐藏其中的信息,例如零售业中对门店销售、地理和社会信息的分析能提升对客户的理解。对大数据的二次开发则是那些成功的网络公司的长项。例如Facebook通过结合大量用户信息,定制出高度个性化的用户体验,并创造出一种新的广告模式。这种通过大数据创造出新产品和服务的商业行为并非巧合,谷歌、雅虎、亚马逊和Facebook,它们都是大数据时代的创新者。

星期日, 一月 29, 2012

ggplot2绘图入门系列之五:时间序列(完)

ggplot2包也能对时间序列数据绘图,但在处理上需要有些注意的地方。下面我们以上证指数为例进行作图,首先利用quantmod包从yahoo数据源获取从1997年以来的数据,存于变量SSEC中,抽取收盘数字,然后分别提取时间数据和指数数值,绘图结果如下图。
library(quantmod)
library(ggplot2)
getSymbols('^SSEC',src='yahoo',from = '1997-01-01')
close <- (Cl(SSEC))
time <- index(close)
value <- as.vector(close)
p <- ggplot(data.frame(time,value),aes(time,value))
p + geom_line()

星期五, 一月 27, 2012

ggplot2绘图入门系列之四:再说散点图

前文中已初步介绍了散点图的绘制方法,本文介绍一些细节方面的参数设置。

1 色彩和形状的控制
数据特征不仅可以用坐标来表示,也可以用不同的色彩或形状来表示。仍以mpg数据集为例,所用到的变量有cty(城市中行驶距离),hwy(高速路行驶距离),displ(排量大小),year(生产年份)
library(ggplot2)
p <- ggplot(mpg, aes(cty, hwy))
p1 <- p + geom_point(aes(colour = factor(year),shape = factor(year), size = displ), alpha = 0.6, position = 'jitter')
print(p1)

星期四, 一月 19, 2012

ggplot2绘图入门系列之三:位置调整与条形图

位置调整(Position adjustments)是针对同一图层内元素的位置进行微调的方法。它包括五种设置,分别是stack、dodge、fill、identity、jitter。

我们用条形图来展示其用法,仍使用mpg数据集,其中用到的变量是class,即生产汽车的类型,以及year生产年份。下面的条形图是将各类型的汽车数量进行汇集,并以年份作为分组变量。我们首先载入扩展包,然后用频数表对数据进行大致的了解,最后绘制了四种条形图。
library(ggplot2)
with(mpg,table(class,year))
p <- ggplot(data=mpg,aes(x=class,fill=factor(year)))
p + geom_bar(position='dodge')
p + geom_bar(position='stack')
p + geom_bar(position='fill')
p + geom_bar(position='identity',alpha=0.3)
 

星期日, 一月 15, 2012

ggplot2绘图入门系列之二:图层控制与直方图

前文所述,ggplot2使用图层将各种图形元素逐步添加组合,从而形成最终结果。第一层必须是原始数据层,其中data参数控制数据来源,注意数据形式只能是数据框格式。aes参数控制了对哪些变量进行图形映射,以及映射方式,aes是Aesthetic的缩写。

下面我们来绘制一个直方图作为示例。数据集仍采取mpg,对hwy变量绘制直方图。首先加载了扩展包,然后用ggplot函数建立了第一层,hwy数据映射到X轴上;使用+号增加了第二层,即直方图对象层。此时p被视为一种层对象,使用summary函数可得到关于它的更多信息,print(p)命令即可进行绘图。

星期五, 一月 13, 2012

ggplot2绘图入门系列之一:导论

1 什么是ggplot2
ggplot2是用于绘图的R语言扩展包,其理念根植于《Grammar of Graphics》一书。它将绘图视为一种映射,即从数学空间映射到图形元素空间。例如将不同的数值映射到不同的色彩或透明度。该绘图包的特点在于并不去定义具体的图形(如直方图,散点图),而是定义各种底层组件(如线条、方块)来合成复杂的图形,这使它能以非常简洁的函数构建各类图形,而且默认条件下的绘图品质就能达到出版要求。

2 与lattice包的比较
ggplot2和lattice都属于高级的格点绘图包,初学R语言的朋友可能会在二者选择上有所疑惑。从各自特点上来看,lattice入门较容易,作图速度较快,图形函数种类较多,比如它可以进行三维绘图,而ggplot2就不能。ggplot2需要一段时间的学习,但当你跨过这个门槛之后,就能体会到它的简洁和优雅,而且ggplot2可以通过底层组件构造前所未有的图形,你所受到的限制只是你的想象力。

星期三, 一月 11, 2012

Twitter文本挖掘初步

Twitter已经成为社交媒体领域重要的信息来源,也是数据挖掘和可视化的重点研究对象。据说华尔街的多家对冲基金公司已经在利用twitter数据挖掘来衡量人们的情绪,从而预测资本市场的运动方向。可见在未来数年,对twitter信息的挖掘必将成为一个热点。

在R语言中提取twitter信息的扩展包是twitterR,它可以提取公共信息流,也可以针对某个用户提取其信息流,或者是以某个标签搜索推文。下面我们以“wukan”(乌坎)为关键词搜索推文标签,观察推友的发推数量。

首先载入软件包,以#wukan为关键词提取1000条推文,然后将其转化为数据框格式。df数据中存储的中文推文内容在R中似乎无法正常浏览,不过推文的用户名仍然是英文的可加以利用。

星期二, 一月 10, 2012

数据挖掘项目失败的原因

商业智能(BI)领域内,预测分析和数据挖掘(PADM)一直缓慢而稳步的成长。机器学习(Machine Learning)技术是支持PADM的重要驱动力量。在过去二十年间出现的桌面计算能力和软件自动化水平,使得PADM在各大中型企业的商业智能运用中起到了重要的作用。虽然存在阻力影响着PADM的广泛运用,但PADM的势头将继续增长。这是因为大多数组织正在稳步进行商业智能的开发,这包括了从数据采集,存储,结构,探索,可视化等方面。

为什么大多数PADM项目会失败
在商业世界中,更为看重的是对业务的提升而非精妙的技术。可惜的是,大部分的专业人士把重点放在构建精确模型的技术上。这样构建出来的模型没有回答正确的商业问题。建模结果无法得到很好的解释,也无法适用于运营环境。这样的结果不能合理的实现,也不能被高层所理解和赞赏。这也难怪,有相当数量的项目没有完成,也就无法得到正的投资回报率。

星期六, 一月 07, 2012

用nls函数进行非线性回归

在许多实际问题中,回归模型中响应变量和预测变量之间的关系可能是复杂的非线性函数。有时候能通过变量变换的方法可以将其变为线性模型,有时则不能。在后一种情况下,就需要采取专门的非线性回归方法来建立模型。

非线性回归是在对变量的非线性关系有一定认识前提下,对非线性函数的参数进行最优化的过程,最优化后的参数会使得模型的RSS(残差平方和)达到最小。在R语言中最为常用的非线性回归建模函数是nls,下面以car包中的USPop数据集为例来讲解其用法。数据中population表示人口数,year表示年份。如果将二者绘制散点图可以发现它们之间的非线性关系。在建立非线性回归模型时需要事先确定两件事,一个是非线性函数形式,另一个是参数初始值。

星期四, 一月 05, 2012

再谈广义线性模型

广义线性模型(generalized linear model, GLM)是简单最小二乘回归(OLS)的扩展,在OLS的假设中,响应变量是连续数值数据且服从正态分布,而且响应变量期望值与预测变量之间的关系是线性关系。而广义线性模型则放宽其假设,首先响应变量可以是正整数或分类数据,其分布为某指数分布族。其次响应变量期望值的函数(连接函数)与预测变量之间的关系为线性关系。因此在进行GLM建模时,需要指定分布类型和连接函数。

在R中通常使用glm函数构造广义线性模型,其中分布参数包括了binomaial(两项分布)、gaussian(正态分布)、gamma(伽马分布)、poisson(泊松分布)等。和lm函数类似,glm的建模结果可以通过下述的泛型函数进行二次处理,如summary()、coef()、confint()、residuals()、anova()、plot()、predict()

转载:来自 Google 的 R 语言编码风格指南

本文转自Xiao Nan的博客

R语言是一门主要用于统计计算和绘图的高级编程语言. 这份 R 语言编码风格指南旨在让我们的 R 代码更容易阅读、分享和检查. 以下规则系与 Google 的 R 用户群体协同设计而成.

星期三, 一月 04, 2012

Moneyball与体育数据挖掘

培根曾说,知识就是力量。如果以Billy Beane的角度来看,他也许会说,数据就是金钱。

一、背景
Moneyball》是Michael Lewis在2003年出版的一本书,讲述奥克兰运动家棒球队总经理比利·比恩(Billy Beane)利用体育数据挖掘来组织球队获得胜利的故事。由此书改编的影片在2011年上映,其中billy是由著名影星Brad Pitt出演。这本书颠覆了美国传统的体育管理思路,Billy Beane的经营哲学是用极少的资金经营这家俱乐部,他打破常规方法,使用历史数据和数据挖掘方法来构建评价模型,低价购入了那些被低估的球员。使得球队有能力与大名鼎鼎的纽约扬基队竞争市场。

星期一, 一月 02, 2012

R语言多元分析系列之五:聚类分析(完)

聚类分析(Cluster Analysis)是根据“物以类聚”的道理,对样品或指标进行分类的一种多元统计分析方法,它是在没有先验知识的情况下,对样本按各自的特性来进行合理的分类。

聚类分析被应用于很多方面,在商业上,聚类分析被用来发现不同的客户群,并且通过购买模式刻画不同的客户群的特征;在生物上,聚类分析被用来动植物分类和对基因进行分类,获取对种群固有结构的认识;在因特网应用上,聚类分析被用来在网上进行文档归类来修复信息。