一种基于网络爬虫技术的价格指数计算模型国家统计局城市社会经济调查司孙易冰、赵子东、刘洪波内容摘要:近年来国内外机构已经开展基于大数据的网络购物价格指数分析研究。
本文参照官方CPI的制度方法,设计了一种基于网络爬虫技术的价格指数计算模型。
通过模型试算值与官方数据的比较,以及对原始数据的特征挖掘,我们发现该种模型具有时效性强和灵敏度高的优点。
关键词:价格指数;网络爬虫;聚类分析;幂律分布;季节调整A Model of Compiling Price Index Based on the‘Web Scraping’ TechnologyAbstract:In recent years,some domestic and foreign institutions have been taking researches on using big data in compiling online price indexes. This paper refers to the official CPI methodology,designing a model of compiling price index based on the ‘web scraping’technology. By comparing results of this model with official CPI data,and analyzing characteristics of raw data,we find out that our model has the advantages of strong timeliness and high-sensitivity.Keywords:Price Index;Web scraping;Cluster Analysis;Power-Law Distribution ;Seasonal Adjustment一、问题的提出近年来大数据技术已经深刻影响着统计工作的具体实践,也要求统计部门积极应用大数据技术,更好地为有关部门决策提供依据。
其中,价格统计部门当前的首要任务就是处理好网络购物等经济生活中的新动态,并利用大数据技术完善价格指数编制工作。
国外官方统计部门通常将网络零售商认为是价格调查点并纳入居民消费价格指数(Consumer Price Index,以下简称CPI)调查中。
其中,美国CPI调查统计中9%的原始数据是通过互联网采集的。
学术界和网络零售商则基于不同考虑,针对各自获取数据的特点,设计出不同的网络价格指数,在价格方面的大数据实践中领先于官方统计部门。
本文通过分析爬虫获取的数据,在传统CPI基本分类商品指数计算模型基础上,设计了一种基于网络爬虫技术的日度价格指数计算模型,并进行了数据实证。
本文后续安排如下:第二部分介绍并比较了三种实际应用中的价格指数;第三部分给出了基于爬虫技术的价格指数编制模型,并初步分析了数据特征;第四部分从工程角度利用K-means聚类算法处理海量数据中的异常值,并深入分析了数据特征;第五部分设计了一种基本分类商品的日度价格指数计算模型,并进行了实证分析和与官方数据的比较;第六部分为结论和下步工作打算。
二、CPI指数和几种网络价格指数的比较从一般意义来说,价格指数是指两个不同时期价格水平变动的相对数,即报告期价格水平与基期价格水平变动的比例关系。
通过建立时间序列,用来分析研究一个较长时期相关商品或者生产要素价格与供求关系变化的规律,同时还可以用来预测未来一个时期市场发展变化的趋势。
价格指数中影响最大的就是消费者价格指数。
(一)消费者价格指数根据2003年国际劳工组织理事会第十七届国际统计学家大会上的定义,消费者价格指数用来衡量家庭为消费目的所获取、使用或支付的商品和服务的总体价格水平的变化,其目的是衡量消费价格随时间而发生的变动情况。
该指数是度量一定时期内居民消费商品和服务价格水平变动的相对数,综合反映居民消费商品和服务价格水平的变动趋势和变动程度,也是宏观经济分析和决策、价格总水平监测和调控以及国民经济核算的重要指标。
编制CPI指数的流程是先编制基本分类商品(例如大米、手机等商品)的价格指数,在此基础上按照权数资料进行逐层汇总,生成各分类指数和CPI总指数。
包括我国在内的国内外官方统计机构普遍采用拉氏公式进行指数汇总。
(二)网络价格指数近年来,网络销售和大数据技术的兴起,国外学术界和网络零售商也开始从事网络价格指数编制工作。
总体上,这些机构在编制过程中均以CPI编制方法为基础,结合自身数据特征设计出不同的网络价格指数。
2008年,阿里巴巴公司推出网购核心商品价格指数(aSPI-core),数据基于淘宝网、天猫网、支付宝等网络平台,权重基于淘宝网支付宝成交金额的比重,分成11个大类,每年调整一次。
由于我国网络销售中含有大量批发业务,所以该指数并不是纯正的消费者物价指数,而是一个结合了生产、批发、零售和消费等多种市场行为的综合类价格指数。
麻省理工学院开发的十亿价格项目(Billion Price Project,以下简称BPP)是通过爬虫技术计算价格指数的成功典范。
该项目每天从网上抓取不少于50万笔的商品价格信息,计算出20多个国家的每日网上价格指数。
从实践中看,该指数和美国官方CPI指数具有高度相关性。
(三)CPI指数和网络价格指数的比较价格指数的编制方法和统计制度、抽样方法、数据来源、权数资料高度相关。
下表是我国官方CPI指数和两种网络价格指数的具体情况对照表。
从上表可以看出,三种指数均是基于拉氏公式进行汇总,仅原始价格数据和权数资料的获取方式不同。
由于官方统计部门处于第三方角色,无法像淘宝、京东商城等网络零售商一样从内部数据库获取详细的原始价格和销售量,只能参考麻省理工学院的BPP项目,基于网络爬虫技术获取数据并进行价格指数计算。
三、基于网络爬虫技术的价格指数计算系统架构及实践(一)基于网络爬虫技术的价格指数计算系统架构网络爬虫技术已经在Google、百度为代表的网络搜索业中取得广泛应用,获得了巨大成功。
网络爬虫从指定的网页出发,通过分析网页内的标记结构,获取指向其它页面的超级链接,然后通过既定的搜索策略选择下一个要访问的站点。
理论上,如果指定适当的初始页面集和网络搜索策略,网络爬虫就可以遍历整个网络。
图1是网络爬虫处理流程。
图1 网络爬虫处理流程各国官方统计部门在价格采集实际工作中以人工采集为主。
参照传统的采价流程和BPP 的系统架构,设计了基于网络爬虫技术的价格指数计算系统架构,如图2所示。
图2系统架构 我国CPI 价格调查中采价工作遵循“三定一直”(定人、定时、定点,直接调查)原则。
由于程序具有客观性,隐含着定人、定点和直接调查的原则,并可通过定时抓取网络数据,保证定时的要求。
(二)从非结构化文本中提取数据大数据实践中,遇到的半结构化(网页、非结构化文本)和非结构化数据(视频、音频等多媒体数据)占绝大多数。
由于关系型数据库的广泛应用,结构化数据的处理基本已无障碍,而半结构化和非结构化数据则需要根据具体的数据结构编写程序。
考虑到网络电商通过HTML类型的网页文件发布信息,可通过正则表达式处理原始数据。
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
例如表达式^\d{n}$用来匹配n位数字,即可以匹配108、44455等数字。
通过合理设计语法处理程序和正则表达式,可以从抓取的文件中批量提取出有用信息。
提取的典型数据条目如下:2014年7月1日,苹果iPhone4S (8GB版,白色),有货,价格2448.00元,好评数54243,中评数2453,差评数1822。
(三)实践及相关数据特征在Linux环境下采用Perl编写网络爬虫程序,设定为每天上午8:30定时运行,5月12日-8月14日从某大型B2C电子商务网站(以下简称为A电商)手机分类中共计抓取数据累计20GB,提取出数据35万条左右。
我们发现通过网络爬虫技术获取的数据具有以下特点:1、商品数量丰富。
该段时间内A电商销售手机共计4500款左右,基本涵盖市场上出现的各种手机型号,然而由于库存管理、促销推广、新品上市、旧品下架等情况,日均销售款式在3000款左右。
2、价格波动剧烈。
和消费者感受一致,电商销售价格波动极为剧烈,绝对价格长期走低,部分手机单品价格波动更加剧烈,图3是5月13日-8月14日A电商手机算术平均价。
图3 5月13日-8月14日A电商手机算术平均价3、缺货现象严重。
电商普遍采用供应链管理和预售模式等策略,库存管理极为灵活,经常出现缺货现象。
例如A电商2014年7月1日当天在售手机3655款,上午有2424款手机有货,而下午则变成2399款手机有货。
(四)网络爬虫技术的局限性尽管网络爬虫技术具有技术领先性,但通过实践我们也发现网络爬虫技术存在以下局限性。
1、页面解析复杂。
电商通过设计复杂版面吸引顾客,所以相关的页面信息高度冗余。
例如A电商的商品页面平均在4.5MB左右,有用信息却仅几百个字节,编写程序提取出精确数据极为困难。
同时,由于部分电商采用价格标签图片防止第三方机构轻松获取数据,甚至需要采用图像识别技术。
2、网站频繁改版。
网络电商经常举办专项销售活动吸引顾客,网页版面也经常改版。
由于文本解析策略与页面版式高度相关,所以开发人员必须长期跟踪目标网站,根据变动情况改写程序。
实践中,A电商在今年5月下旬上线了新的商品推荐系统,导致重新设计了文本解析策略。
3、信息不完整。
爬虫程序无法获得电商的完整数据集合(例如精确销售量),并且仅能获得某一时间点的数据,所以相比电商自身数据,基于爬虫程序获取的数据比例较小。
此外,由于网络阻塞、网站安全策略、技术屏蔽等原因,实践中也会出现数据丢失的情况。
四、数据的预处理和挖掘做好网络价格指数的前提就是从工程实践中处理海量数据中出现的异常值,同时挖掘出电商区别于传统零售商所特有的销售策略,并研究相应的价格处理办法。
(一)聚类分析和数据预处理1、异常值的处理K-means是基于划分的经典聚类方法,原始版算法清晰简单。
基本思想是以空间中k个点为中心进行聚类,对最靠近的对象归类,通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
考虑到K-means算法属于无监督学习,具有复杂度线性增长、对异常数据的高敏感性、以及结果不稳定性三大特征,恰好可以用于从海量数据中随机分类出异常值。
表2周手机单品日度环比价格指数表(前一天=100,#表示无比较结果)为去除手机单品绝对价格对数据挖掘带来的干扰,我们将35万条原始数据按照表2格式处理(如A手机周三价格200.00元,周四价格为250.00元,则周四的环比值为125.0),生成32万条数据。