【BitTiger读书会】·第四期《BadDataHandboo
【BitTiger读书会简介】
BitTiger读书会,以书会友。以报告方式,加强组织表达力;以讨论方式,激荡思考判断力,期能扩充知识领域,养成读书习惯。
每周一本好书,一年阅读50本书,集众智,挑好书,留精华内容,创优质社群。
BitTiger读书会,欢迎您的加入!
在上一期的活动中,我们跟随岳彩婷结合了Amazon,Netflix等具体案例解读了不同行业是如何有效利用行为数据
和应用不同推荐系统技术,从而做出用户满意的推荐的。
在接下来的第四期里,数据分析经理王頔将结合自己数据收集、数据整理、数据分析和数据展示的实战经验,
和大家分享《Bad Data Handbook》(数据整理实践指南)的内容。
【分享书籍】
《Bad Data Handbook》(数据整理实践指南)
【BitTiger读书会】·第四期《BadDataHandbook》(英文原版)
【BitTiger读书会】·第四期《BadDataHandbook》(中文版)
【书籍介绍】
现实工作中总会遇到一些坏数据,怎样避免“垃圾进垃圾出”?
整理数据时如何处理坏数据?
行业大牛们有怎样的坏数据处理的经验?
让我们跟随数据分析师王頔一起分享作者Q. Ethan McCallum的数据处理经。
【嘉宾介绍】
王頔, Data Analyst Manager,新晋辣妈。目前就职于一家Marketing & Consulting公司。对于数据收集,数据整理,数据分析,数据展示有扎实的实战经验。
【电子书下载】
或者从Google网盘下载(国内需翻墙):
https://drive.google.com/open?id=0Bzu4H4u37WXSZFZTeFdMYnJ5anc
【加入读书会】
获取BitTiger读书会系列读书分享信息,请添加微信ID: saraincs,备注“读书”加入BitTiger读书会活动群
【BitTiger读书会】·第四期《BadDataHandbook》【分享文稿】
Bad Data – 也可以形容成dirty,是相对于clean data而言,并没有整理好,以至于可以马上分析的数据。书上原文讲说:In short, Bad Data is data that gets in the way. 19位作者分别分享他们遇到的数据问题, 以及解决方法。
Chapter2. It Just Me, or Does This Data Smell Funny?
Kevin Fink k is an experienced biztech executive with a passion for turning data into business value.。
难易指数 *
语言 UNIX
Takeaway:介绍了简单实用的数据检验方法
2.1 Data Structure:
最常见也是最容易的几种数据形式 - columnar(e.g. CSV), XML, JSON and Excel. 有两个Perl one line example to export data。
Tips:
Tab-delimited – most data does not include tab characters, so it is a fairly safe ad therefore popular, delimiter.
2.2 Field validation
– 因为常常并不完全知道数据包含的意义,并且header也并不能表达的十分清晰。
Valid - misinterpreting the units or meaning of a field – 通过查看field的定义以及实际包含的数据,而弄清不同field的含义以及使用的单位,避免计算错误。
Valid - values are make sense – 确保数据是符合常识的。比如Pageview 应该是整数。
Missing or empty values - knowing what to expect and checking.NULL, N\A,0…
2.3 Value Validation -
enumerable是否在正确的数值区间?比如可数的month 数据范围应该为 1~12
numeric 是否全是数据?
fixed–format 是否都是应该有的格式?
2.4 physical interpretation of simple statistics - 容易自动化
numerical 检查最小值最大值
Ratio通常不超过1
Financial values应有合理上限
也可以通过平均值看是否合理
2.5 Visualization
画直方图histogram of the value in a data field. 易于看到极大值。
2.6 Keyword PPC example – Price per Click有code
涉及到-cat command, grep command, v –option, c –option
选择部分数据, sort,clean & aggregate the data, histogram, 从而发现一个明显的不合理的gap。 进而发现数据源中的算法错误。并且有两个不同的minimum bids.
2.7 Search Referral Example 有code
Google 搜索结果排名rank 和浏览量
10和11, 20和21 间的不连续性, 表明每个浏览页面有十个结果
在每个页面中,排名越靠前的结果浏览量越高,然而排名最后的结果浏览量比中间高。
为何第一页的pattern 和后面的不相同? 因为是显示的是总浏览量,这个网站并没有在那么多页面中拍到第一页,而在第二页和第三页则比较多。
2.8 Recommendation Analysis 有code
文章中的推荐链接 - log-log scale with cumulative distribution graph has a liner vertical scale.
并没有太多不连续,大部分, 大约300,000篇文章有一个推荐链接,一半的文章有7个或以下链接,最popular的文章有1800,文章数量随着推荐链接的增加骤减。
2.9 Time Series Data - 无code
Wikipedia Logs – long-term, large-scale seasonality model for traffic in various languages.
Chapter 3. Data Intended for Human Consumption, Not Machine Consumption
Paul Murrell – Senior lecturer in the Department of Statistics at the University of Auckland, New Zealand. R project core development member.
难易指数 *
语言 R
根据一个例子扩展开来讲解,如何使用R语言获取不常见数据各式中的数据。
3.1 the data-
在不同年级参加新西兰NCEA(National Certificate of Educational Achievement)的人数 国家统一认证年末考
3.2 问题 -
数据格式是excel 97-2003,并且按每年参考人数的年级和性别储存。
3.3 The arrangement of Data:
数据的使用受到数据layout 的限制,区别于”self-describing” format – available to be read by software without any human assistance whatsoever.(一个数据点包含所有相关信息)
3.4 有490所学校有类似格式的纪录, 如何选出一个所要找的学校
3.5 R Code:
3.5.1 读取数据-reading data from an awkward format. 在一个文件中读取特定行列的相关信息
3.5.2 读取数据-reading data spread across several files.就算490所学校数据的format不尽相同也可以写code来选取
3.5.3 Postscript -相关的假设
3.5.4 Other formats – 比如pdf 格式, web page
3.5.5 Summary –
takeaway 1 worthwhile learning about data formats 学习数据格式以便在给别人提供数据是更易于使用的格式。 Take away 2 worthwhile learning about computer code, 代码可以让我们处理别人给我们的数据时不易受到格式的限制。
Chapter 4. Bad Data Lurking in Plain Text
Josh Levy, PhD is a data scientist in Austin, Texas. He works on
难易程度 ****
语言 Python
解决三个问题:1. unknown character encoding 2.Misrepresented character encoding 3. Application-specific characters leaking into plain text.
这位PhD 还给大家细心地安排了课后习题。
Text Encoding is the mapping between the characters that can occur in a plain text file and the numbers computers use to represent them. Characters 的计算机表达。
问题:A program that joins data from multiple sources may misbehave if its inputs were written using different text encoding. 不同的text encoding在合并在一起时可能会出问题。
目标:how we can detect and normalize the encoding used on any given plain text file.
Chapter 5. (Re)Organizing the Web’s Data
Adam Laiacano has a BS in Electrical Engineering from Northeastern University
难易程度 **
语言 Python
介绍了如何从网上获取数据,据的例子是从爱达荷州政府网站上获取关于教育投资的数据。不及时一个很好的获取数据的例子,而且还教我们如何找各学校和学区的performance。有code的例子。感兴趣的同学以及给孩子挑学区的爸妈都可以去试试。
Chapter 6 Detecting Liars and the Confused in Contradictory Online Reviews
Jacob Perkins is the CTO of Weotta, a NLTK contributer, and the author of Python Text Processing with NLTK Cookbook.
难易程度 **
语言 Python
通过分析网上的评分和评价对商家的好坏做出判断,从而推荐给自己的客户。这其中很有意思的点是,评分和评价并不完全相关, 他发现有人给出很低的评分,只是为了别人不去自己喜欢的地方。他用了NTLK Python Nature Language Toolkit。很不幸,没有带有很多Code的例子。
Chapter 7. Will the bad data please stand up?
Philipp K. Janert is the author of two books on data analysis books.
难易程度 **
7.1 Example 1:Defect Reduction in Manufacturing 一个和检验残次品相关的例子。
数据显示残次品比预期多20倍,而数据收集和处理的各步骤都没有问题。最后在检测收集数据的机器时发现机器会受到一些人为因素的影响。
7.2 Example 2: Who’s calling? 一个小公司每天的来电次数。
按理来说这样的“单位时间内随机事件发生的次数的概率分布“比如来电次数应该符合泊松分布。所以由”人“-每天来电的平均值决定(单位时间内随机时间的平均发生率)决定。然而并不符合。原因是:符合泊松分布有三个前提条件:
Event occur at a constant rate
Events are independent of each other
Events do not occur simultaneously 事件不是同时发生
那么哪一个前提条件没有满足呢?
第三个肯定不是,电话不能两个电话同时打进来。第一个条件也是满足,应为只考虑business day.那就只有第二个了,来电之间不是独立事件。结果发现1/3 的来电视follow up之前电话的。所以改成只纪录每个打电话的人的第一个电话。
We need to make a statement about what we expect the data to do, not merely what we already know it does. 对于数据要先大概知道数据会告诉我们什么。比如这个例子就是先预计这个应该符合某个理论,而当结果不符合预期的时候, 进行测试从而找到改进的地方,使模型更加完善。所以bad data使可以让我们学习新的东西的。
7.3 Example 3: When “Typical” Does Not Mean “Average”
一个公司每月server2.6million个网页,由100,000个visitors. 于是说每个人浏览26个网页是完全错误的,因为真正的分布是,大部分人只浏览很少的网页,而少部分人贡献了大多数的浏览量。所以这个平均值完全不能说是typical visitor.
这些例子的有一个共同点,问题并不出在数据,而是data以及我们认为what the data should be 之间的差距。
作者个人经验,要检查数据基本的assumption,同时making assumptions explicit也可以帮助减少很多错误。我们应该常问自己,
What the data should do,
Examine what the data actually does do
Trying to formulate such hypotheses
If the data does not fit the hypothesis – hint for additional, deeper analysis.
Chapter 8. Blood, Sweat, Urine
Richard Cotton is a data scientist with a background in chemical health and safety.
难易程度 **
他自己使用很多检测来确认数据的正确性。
Three big problems with using spreadsheets for data analysis.
Firstly, the numerical routines in all the major spreadsheets are currently surprisingly poor.
Secondly, they contain some semantics design flaws that make it easy to get muddled
The other semantic flaw is that spreadsheets don’t easily deal with data that aren’t rectangular, or don’t have a location.
总结
• Working with the people who create or collect your data can be really informative. Try and organize a job swap or work shadowing.
• Laziness is a virtue. Try to automate as much of your job as possible.
• Having a central data management team can avoid data getting lost in the fringes of your organization, and help standardize formats across your organization.
• Write code that fails (early and often). The more checks you include in your code, the merrier.
• Stylish code is easier to maintain. Don’t underestimate the importance of writing code thats looks good.
• Spreadsheets are easily abused. Use them sparingly
Chapter 9. When data and reality don’t match
Spencer Burns is a data scientist/engineer living in San Francisco.
难易程度 *没有Code
Stocks, Split之后要如何计算股票价值
举了UA的股票由于乌龙新闻而受到真是损失的例子,总结为数据,特别是金融数据, 虽然看上去很clean 但是要明白数据的来源才能保证结论没有偏差。
Chapter 10. Subtle Sources of Bias and Error
Jonathan A. Schwabish is an economist at the Congressional Budget Office.
难易程度 *
他主要使用U.S. Social Security Administration (SSA) - worker’s W-2 tax forms 和 Survey的数据,讲了Imputation对数据产生的影响。(Imputation is the process of replacing missing data with substituted values)
Chapter 11. Don’t let the perfect be the enemy of the good, is bad data really bad ?
Brett Goldstein is the Commissioner of the Department of Innovation and Technology
for the City of Chicago.
难易程度 **
First, it is data that is simply incorrect
Second, we see data in which the actual entry is correct, but its associated metadata is either incorrect, or in many cases, nonexistent.
Third, there may be problems with data as part of the broader set or system. Example: 911- service data
政府数据两大问题:
Fear of academia
Fear of a surprise outcome.
解决的几个方向:
The first is open communication.
Second, and one of critical importance, is our determination to make small and incre‐ mental gains.
The third principle is is the marriage of social scientists and computer scientists.
Chapter 12. When Databases Attack: A Guide for When to Stick to Files
Tim McNamara is a New Zealander with a laptop and a desire to do good.
难易程度 *
类似于一个数据分析软件选择经验分享。最后作者选择用filesystem,并且举出了一系列这样选择的原因。file的概念以及包含的形式。专门举例讲了为什么JSON Is Not the World’s Best File Format
没有带code的实例。
Text analysis and natural language processing (NLP) techniques
Web crawling - crawl the New Zealand political blogosphere, identify discussion threads about open data, identify people who comment on this topic, then pull out the themes of these comments.
Real problem was storage, because I needed more ad-hoc query support than the tool could handle.
最终决定使用CouchDB的原因,以及有cs背景,在使用CouchDB实现map reduce 时遇到得两个最大的困难,debug 和耗时长
Chapter 13. Crouching Table, Hidden Network
Bobby Norton is the co-founder of Tested Minds
难易程度 **
开篇就被六个汉子吸引了:卧库表,隐网格。 看了好一会没看明白什么意思,还琢磨者是个什么新的技术叫卧庫表。
再一看作者引用了两句对话,
“You were enlightened?”
“No. I didn’t feel the bliss of enlightenment. Instead… I was surrounded by an endless sorrow.”
Yu Shu Lien describing the effects of bad data (…or something similar…) to Li Mu Bai in Crouching Tiger, Hidden Dragon。原来作者把卧虎藏龙,改成了卧table藏network。
Entity-Relationship (ER) modeling – Asset Cost 等于四个variable 的乘积
SQL例子- 讲解 cost allocation 的ER Model的原理
因为图像表达更为直观,The graph-based solution exploits the ease of finding paths through a directed graph.
Because graph databases don’t support SQL, querying must be done through client Frame works and vendor-specific API’s. Blueprints-compliant graph databases can use Gremlin, a graph traversal framework built on the JVM that includes implementations in Groovy, Java, Scala, and Clojure. – 有实例
Chapter 14. Myths of Cloud Computing 云计算的神话
Steve Francia – 10gen公司,也就是现在的 MongoDB 负责user experience – commercial support of open source database MongoDB, a NoSQL database that stores data in JSON-like documents with flexible schemas.
难易程度 **
开始简单介绍了什么是云,云计算和大数据。一个化名的实际例子关于一家startup公司把所有架构都放在云上面,刚开始很顺利,后来就出问题了引出几个关于云的神化。
Myth 1: Cloud Is a Great Solution for All Infrastructure Components
Myth 2: Cloud Will Save Us Money
Myth 3: Cloud IO Performance Can Be Improved to Acceptable Levels Through Software RAID
Myth 4: Cloud Computing Makes Horizontal Scaling Easy
总结,就云的发展而言并不是很成熟,ideal infrastructure应该是硬件和云结合起来的“easy management of stateful machines running on optimized hardware connected via LAN to commoditized cloud nodes for application processing”
Chapter 15. Dark Side of Data Science
Marck Vaisman – DS + consultant
难易程度 *
陷阱:看上去很简单,但确实是常常容易犯的错误或者陷阱。
I. Know nothing about thy data :
a) 数据清理方法不统一
b) 不做检验就认为数据是正确的
c) 时间数据的spillover,比如04062017,既可以是4月6号也可以是6月4号。
II. Thou shalt provide your data scientists with a single tool for all tasks。作者认为理想的DS环境。
III. Thou shalt analyze for analysis’ sake only。和做所有事情一样,对于做事的方向和预期结果要有概念。
IV. Thou shalt compartmentalize learnings 多沟通分享
V. Thou shalt expect omnipotence from data scientists 数据科学不是万能的
Chapter 16. How to feed and care for your Mahine –Learning Experts 机器学习
Pete Warden ex-Apple software,之前为O’Reilly写过Big Data Glossary 和Data Source Handbook
他参加Kaggle的经历,目标:用你朋友在各个社交媒体上分享的照片给你建一个travel magazine. 他们如何明确目标,如何一步一步实现,以及实现当中遇到的问题和解决方法。we literally handed over a dataset, a short description, and a success metric to a large group of strangers.
-列表Define the Problem - 明确目标,请花很多时间在这一步,因为所有的一切都建立于此基础上。
Fake It Before You Make It -假设问题都得到positive答案的时候,模型是否能回答你之前设定的问题。
Create a Training Set
Pick the Features
Encode the Data
Split Into Training, Test, and Solution Sets
Describe the Problem
Respond to Questions
Integrate the Solutions