第1讲-数据分析方法概述

# 数据分析方法概述¶

## 引子1：关于数据和数据分析的小故事¶

    1. 百货公司知道女孩怀孕：美国的Target百货公司上线了一套客户分析工具，对顾客的购买记录进行分析并向顾客进行产品推荐。一次，他们根据一个女孩在Target连锁店中的购物记录，推断出这一女孩怀孕，然后开始通过购物手册的形式向女孩推荐一系列孕妇产品。这一作法让女孩的家长勃然大怒，事实真相是女孩隐瞒了怀孕消息。
    2. 阿里云知道谁需要贷款：每天，海量的交易和数据在阿里的平台上跑着，阿里通过对商户最近100天的数据分析，就能知道哪些商户可能存在资金问题，此时的阿里贷款平台就有可能出马，同潜在的贷款对象进行沟通。
    3. 啤酒与尿布

## 引子2：大数据分析案例¶

    1. 大数据应用案例之医疗行业：乔布斯是世界上第一个对自身所有DNA和肿瘤DNA进行排序的人。为此，他支付了高达几十万美元的费用。他得到的不是样本，而是包括整个基因的数据文档。医生按照所有基因按需下药，最终这种方式帮助乔布斯延长了好几年的生命。

    2. 大数据应用案例之通信行业：法国电信-Orange集团旗下的波兰电信公司Telekomunikacja Polska是波兰最大的语音和宽带固网供应商，希望有效的途径来准确预测并解决客户流失问题。他们决定进行客户细分，方法是构建一张“社交图谱”- 分析客户数百万个电话的数据记录，特别关注 “谁给谁打了电话”以及“打电话的频率”两个方面。“社交图谱”把公司用户分成几大类，如：“联网型”、“桥梁型”、“领导型”以及“跟随型”。这样的关系数据有助电信服务供应商深入洞悉一系列问题，如：哪些人会对可能“弃用”公司服务的客户产生较大的影响?挽留最有价值客户的难度有多大?运用这一方法，公司客户流失预测模型的准确率提升了47%。

    3. 大数据应用案例之电商行业：意料之外：胸部最大的是新疆妹子。曾经淘宝平台显示，中国女性购买最多的文胸尺码为B罩杯。B罩杯占比达41.45%，其中又以75B的销量最好，其次是A罩杯，购买占比达25.26%，C罩杯只有8.96%。虽然淘宝数据平台不能代表一切，但是结合现实来看，这个也具有普遍的代表性，只能感慨中国女性普遍size。在文胸颜色中，黑色最为畅销，黑色绝对是百搭，每个女性必备。从省市排名，胸部最大的是新疆妹子。这些数据都对于文胸店铺而言是很好的参考，为店铺的库存、定价、款式选择等策略都有奠定数据基础。

## 一、什么是数据、信息和大数据？¶

    - 数据：是事实或观察的结果，是用于表示客观事物的未经加工的原始素材，可以是数字、文字、语音、视频、图像等。
    1. Structured
    2. Unstructured
    3. Natural language：is a special type of unstructured data
    4. Machine-generated：created by a computer, process, application, or other machine without human intervention
    5. Graph-based：can be a confusing term because any data can be shown in a graph
    6. Audio, video, and images

    - 信息：抽象的说，就是可信的数据。与数据最大的区别就在于，一个是客观，一个是主观。

    - 大数据：
    Volume — How much data is there?
    Variety — How diverse are different types of data?
    Velocity — At what speed is new data generated?
    Value - What is the value of the data?

## 二、什么是数据统计、数据分析和数据科学？¶

- 数据统计，是指对某一现象有关的数据的搜集、整理、计算、分析、解释、总结等的活动。
- 数据分析，是对数据的一种操作手段，利用领域知识对数据进行整理，筛选，加工，由此得到信息。传统的数据分析大多脱离计算机，数据量可以很小。如Orley Ashenfelter关于葡萄酒的故事。
- 数据科学，一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据科学通常与计算机科学有关，并通过统计、在线分析处理、情报检索、机器学习、专家系统（依靠过去的经验法则）和模式识别等诸多方法来实现上述目标。如无人汽车、Alphago等。

- 2010 Drew Conway:“The Data Science Venn Diagram”。URL: http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram

## 三、数据科学和我们的关系¶

### 为何需要数据科学：¶

- 如果没有数据，可以用什么决策？（直觉，经验，逻辑推理，算命）。
- 因为数据就是现实世界的历史痕迹，需要通过各种痕迹来推断未来、解释过去，数据就是历史，挖掘就是归纳。
- 数据太多，人脑无法直接处理，而且形式和来源都越来越复杂。自然产生的数据，人类社会产生的数据（社交网络，文本，图像，语音，视频等）。

### 数据科学为什么火？¶

- 硬件价格的下降，使数据的存储和运算成本更低。
- 开源软件工具和公开课分享使跨界更为容易。
- 不同学科的壁垒被打破，可以较为容易的获得并学习其它学科的知识和工具，成为专业余人士。
- 个人和创业公司得以进入数据领域。

### 数据科学和谁打交道¶

- 产品：侧重于底层数据框架搭建，数据报表开发，数据产品开发，例如淘宝的数据魔方的开发工作，这类工作需要很强的软件开发背景。
- 模型：侧重于对数据的研究，用统计理论或机器学习的方法对数据进行分析建模，如广告点击率分析建模，这类工作需要丰富的统计和模型算法知识。
- 美学：侧重于对数据的创作，用WEB技术进行数据可视化或者制作信息图，例如卫报的数据网站，需要很强的可视化能力和前端技术。
- 决策：侧重于数据中包含的商业价值，强调对专业领域的业务理解和交流沟通，例如咨询公司发布的商业分析报告，需要广泛的业务知识和商业敏感度。

### 应用领域有哪些：¶

- 商业零售
- 医疗
- 金融
- 太空探索
- 文字语音识别
- 下棋。。。
- 蚂蚁金服 8000人 大约2000人从事数据相关的工作

### 数据利用的四层境界¶

- 数据：数据底层，原始数据的汪洋大海。形态：数据库。功能：直接取数。
- 信息：基于数据提炼得到的指标，新客有多少？老客有多少？老客都有什么特征，新客都有什么特征？形态：汇总报表。功能：指标提供，回答过去已经发生了什么的问题，业务人员运用得当也可以解决很多问题。
- 知识：基于信息建立各指标之间的关系模型。什么情况下新客会转化为老客？形态：模型，功能：回答为什么的问题，解释关系和因果，预测未来。
- 智慧：将知识融入决策流程，将模型嵌入产品。我们要怎么做，才会让新客转化为老客。形态：数据产品。功能：改变未来。

### 数据产品例子¶

- 数据产品就是给决策者提供行动信息的载体，例如
  - Amazon的商品推荐 推荐
  - 天气预报 预测
  - Stock Market Predictions 股市预测
  - Production Process Improvements 优化
  - Health Diagnosis 精准医疗
  - Flu Trend Predictions 疾病预测
- 有些看起来也能提供决策者行动信息，如黄历，星相，但它们不是基于数据的洞察。

## 四、数据分析研究过程（后续课程会详细介绍）¶

- The data science process typically consists of six steps.
  1. Setting the research goal -- Defining the what, the why, and the how of your project in a project charter.
  2. Retrieving data -- Finding and getting access to data needed in your project. This data is either found within the company or retrieved from a third party.
  3. Data preparation -- Checking and remediating data errors, enriching the data with data from other data sources, and transforming it into a suitable format for your models.
  4. Data exploration -- Diving deeper into your data using descriptive statistics and visual techniques.(step1 to step 4 will take you about 90% time)
  5. Data Modeling -- Using machine learning and statistical techniques to achieve your project goal.
  6. Presentation and automation -- Presenting your results to the stakeholders and industrializing your analysis process for repetitive reuse and integration with other tools.

## 五、需要掌握哪些技能¶

- 有形的技能:

        - 理论：气宗。 例如统计理论、机器学习算法。个人体会精通理论后再做数据工作就如汤泼雪。我也承认学习理论是艰难的，但是一定要在年轻的时候读最难的书。《数学之美》中谈到，技术分为术和道两种，具体的做事方法是术，做事的原理和原则是道，只追求术的人工作很辛苦，只有掌握了道才能永远游刃有余。
        - 工具：剑宗。理论不用在产品上就是王语焉的学院派。从理论到产品，需要掌握各种工具。这类工具用得熟了能事半功倍，例如R、python、SQL、hadoop这类。学习工具和学习语言一样，都要多读多写，模仿揣摩，就可以运用自如。不过迷信工具是没有意义的，没有最好的工具，只有最合适的工具。如果你是独孤求败，可以玩玄铁剑，如果你是东方不败，可以玩绣花针。
        - 经验：实战。有内力有剑法，就需要下山了。对战最强悍的对手，才能让你的内力剑法融为一体。做项目，在工作解决难题，才是长进最快的。

- 无形的气质:

        - Curiosity，好奇心和兴趣是从数据中得到洞察的驱动力。有好奇心的人才会对数据有持续的热情。
        - Innovation，兵无常势，数据的工作都是千差万别的，虽然可以依靠一些老的经验做些照猫画虎的事。但最好还是需要根据不同的项目情况来做出判断。独立思考和创造让你走得更远。
        - Fortitude，创造、前沿、探索性的工作，一定会有失败，快速失败，快速学习，不断修正，能够败中求胜。

### 如何培养数据科学的技能¶

- 两个字：自学。 “知识与耐心，是击败强者的唯一方法。”
  - 通过阅读来学习。包括了阅读经典的理论教材、代码、论文、上公开课。
  - 通过牛人来学习。包括同行的聚会、讨论、大牛的博客、微博、twitter、RSS。
  - 通过练习来学习。包括代码练习题、参加kaggle比赛、解决实际工作中的难题。
  - 通过分享来学习。包括自己写笔记、写博客、和同事分享交流、培训新人。

## 六、数据分析中的各种坑¶

- 建模过程的问题

  - 缺乏业务问题的沟通和理解
  - 只关注训练数据或只过于相信数据
  - 只依赖于一种技术
  - 错误的变量输入

- 挖掘结果不真实

  - 模型结果不代表任何规律
  - 模型训练集可能不反映真正的总体
  - 数据的详细程度有误

- 挖掘结果没有用

  - 挖掘结果众所周知
  - 挖掘结果不可用于决策

- 数据分析师的30种死法

  1. 项目来了，发现找不到数据，卒。
  2. 找开发同学帮忙取数，一个月的项目排期要等三个星期，卒。
  3. 靠着不停的骚扰开发同学，一个星期拿到数据，发现重要的数据项不全，卒。
  4. 终于拿到完整数据，发现超过一百万行，Excel打不开，卒。
  5. 导到MySQL里处理，发现单机跑一个连接操作要老长时间，卒。
  6. 建立索引，操作跑的快一些了，开始做数据清洗，发现存储过程写错了字段名，把不该删的内容删了，卒。
  7. 重新来过，做完数据清洗，跑出了统计报表，发现有异常值，去问开发同学，开发同学经过认真细致的排查，表示之前取错数了，卒。
  8. 再三确认数据没错，正准备甩开膀子大干一番，领导过来说需求改了，卒。
  9. 按新需求取数，准备开始建模，发现数据项不符合模型要求，卒。
  10. 动用大杀器Python对数据进行重构，遇到中文乱码问题，卒。
  11. 重构完数据，开始建模，发现模型结果不显著，卒。
  12. 调参数，重跑，再调，几次之后觉得效果还不错，把规则提取出来，然后发现召回率不够，卒。
  13. 终于把模型搭建好了，开始写PPT，绞尽脑汁想洞察结论，想不出来，卒。
  14. BOSS觉得报告内容太单薄，打回重写，卒。
  15. BOSS觉得报告的故事线不明确，打回重写，卒。
  16. BOSS觉得模型看上去不够高大上，打回重写，卒。
  17. BOSS觉得PPT不好看，打回重写，卒。
  18. BOSS……BOSS没意见了，拿去给业务部门讲，被质疑成筛子，卒。
  19. 吸收了业务部门的意见，重新做了报告，业务部门表示非常好，希望今后每周都能更新，卒。
  20. 决定做模板来满足业务部门需求，发现原始数据还得自己取，卒。
  21. 找开发同学谈定期取数，开发同学表示这个事产品经理说了算，卒。
  22. 找产品经理谈需求固化，产品经理表示这事优先级不够高，等俩月排期，卒。
  23. 软磨硬泡搞定了产品经理，BOSS又要求模型能够支持产品策略优化，卒。
  24. 整理完策略规则，跟产品经理磨破了嘴皮子确定了产品优化方案，线下测试发现策略有问题，卒。
  25. 新策略终于上线了，结果线上产品出了问题，莫名其妙背锅，卒。
  26. 数据分析工作的KPI不容易衡量，升职困难，卒。
  27. 好不容易升了职，发现工作量没减少，要开的会倒变多了，卒。
  28. 新来的小弟表示我其实一看数据就头疼，就是觉得搞大数据能赚钱，啥都学不会也不愿意学，卒。
  29. 上边的大BOSS换了个不懂行的，要汇报工作，大BOSS问，报告又不能卖钱，你们的价值体现在哪，卒。
  30. 大BOSS表示数据分析团队不能直接创收，应该改行做业务，卒。

## 七、一点经验¶

- 提问题比回答问题更重要：一个具体的业务痛点是数据挖掘的起点，精心计划流程步骤，业务知识贯穿挖掘建模的每个阶段。

- 对数据持谨慎的态度：数据很可能出错，数据整理占据大部分的工作时间。

- 数据本身仅能用于描述历史：不能展现因果，也不能预知未来。

- 数据价值体现在落地应用：数据挖掘价值并不取决于模型的准确或稳定，取决于背后的决策组织。

- 不同的指标和模型都有其适用范围：随时间环境变化，所有的模式都会改变，不断尝试，不断修正。(？什么样的模型是好的模型)

- 工作中的文档化和自动化

### 一些关于数据工作的感受¶

- 数据分析研究就象养小孩，涉及到很多清理和维护工作，但这些工作往往被忽视，也得不到什么掌声。出自《Introduction to Data Technologies》

- 所有的模型都是错的，但有些是有用的。出自GeorgeBoX。所有的数学模型都是对真实世界的一种近似，否则就需要研究大量过于细节的因素。近似是有用的，就是因为它可以得到误差在可接受范围内的解。生活中的现实很难和书上的理论完全匹配，于其纠结于理论的不完美，不如先将近似的解拿到手里试试再说。

- 机器学习是通过数据来找模式，人类也是不断观察新的事物，不断学习其中的规律，同时持续在自己的大脑中建模，或者称之为三观。但是有的人过度拟合了，有的人拟合不足。

- 随机梯度下降算法是一种贪婪算法，像大多数的人眼光一样，只能看到几步远，所以生活中全局最优很难达到。解决的办法是引入随机性，尽量多尝试，尽可能地多走几步，你总会向最优解靠拢。

- 在集成学习方法里面，有一种称之为提升算法，它是使用一系列的学习器叠加来完成任务，后一个学习器要考虑的是修正前一个前学习器产生的错误。正所谓弃我去者，昨日之日不可留。通过不断试错，反复迭代，知错能改，你总能够找到不错的路。

# 数据挖掘工具简介¶

- Excel：可以进行各种小规模数据的标准处理、统计分析和辅助决策操作，它能够方便地制作出各种电子表格，可以直观明了的用各种图表来表示数据；

- SPSS：世界上最早的统计分析商业软件，数据分析版的Excel。用户无需深入了解各种算法，只需要了解简单的统计知识通过拖拖拽拽就可以出分析结果并进行图标展现。但SPSS对原始数据的要求较高。

- SAS：把数据存取，管理，分析和展现有机地融为一体的商业软件。SAS提供了从基本统计数的计算到方差分析，回归分析以及多元分析的多种统计分析过程，几乎囊括了所有标准化的分析方法，其分析技术先进，可靠。通过简单代码使用Data步做数据预处理，通过Proc步完成统计分析和图表展现。SAS还支出宏的编写，可以比较灵活地处理数据。

- R：一套完整的数据处理、计算和制图软件系统，一个开源的平台。R的思想是提供一些集成的统计工具和各种数学计算、统计计算的函数，从而使使用者能灵活机动地进行数据分析，甚至创造出符合需要的新的统计计算方法。做学术的更偏向于用它，因为它的自由度更高。但是计算速度是R的软肋，不过目前开发者们也研发了很多开源软件包通过并行计算来提升R的计算性能。

- MATLAB：很强大的计算商业软件，广泛应用于计算或者仿真，语法特征与C++语言极为相似。被广泛的应用于自动控制、机械设计、流体力学和数理统计等工程领域。你既可以编程实现自己的算法，也可以利用它提供的各种内置函数编写的算法。它实现算法快，并且数据可视化很方便，但是比较偏向于数值计算，循环计算效率一般。

- Java：面向对象编程语言，C++的升级版。 Java简单易学，程序语言好理解，自动垃圾回收机制也很好；Java的功能强大，可以编写多渠道的应用程序和电脑游戏。但对于非计算机出生的用户而言，Java比较晦涩，而且功能强大势必意味着代码就复杂，不适合做数据挖掘。

- Python：一种面向对象、解释型计算机程序设计语言，语法简洁而清晰，具有丰富和强大的类库，常被昵称为胶水语言，能够把用其他语言制作的各种模块很轻松地联结在一起。Python的设计具有很强的可读性，它具有比其他语言更有特色的语法结构，它易于学习、有着广泛的标准库，在做数据挖掘和实现复杂算法的时候可以很快找到相应的包和函数。

## IPython Notebook¶

- IPython，全称Interactive Python，是一个Python的交互式shell，比默认的Python shell好用得多，支持变量自动补全，自动缩进，支持bash shell命令，内置了许多很有用的功能和函数。
- Notebook是一个基于web的交互式环境，用于陈述计算过程，允许多个客户端连接到kernel。
- IPython Notebook使用浏览器作为界面，向后台的IPython服务器发送请求，并显示结果。IPython notebook目前已经成为用Python做教学、计算、科研的一个重要工具。

# Assignments - 1¶

### 练习题1:图解中国人的生活水平变化¶

#### 1. 你认为应该用什么样的数字来度量中国人的生活水平变化？¶

#### 2. 尝试找到这样的数据源并画出图看看。¶

#### 3, 用这种数字来衡量有什么样的缺点？¶

### 练习题2:理解双盲实验¶

`盲`指的是对实验的信息进行屏蔽。若被试知道了自己处于实验组，则容易出现”安慰剂效应“，表现出与平常情况下不同的行为。若实验主试知道现在面对的是实验组被试，则会有意或无意地表现出对被试行为的期望，从而影响到实验结果，这种情况也被称作”观察者偏差“。安慰剂效应和观察者偏差都会影响到实验结果的客观性，为了减少其影响，在实验中需要让被试和主试都不知道被试是处于实验组还是对照组，这样的实验也就是双盲实验。

### 练习题3:学习使用Google Ngram Viewer¶

学习使用Google Ngram Viewer服务，并研究你关心的某一组词汇的变化。

现在心理学领域有一股积极心理学 (positive psychology) 的思潮，它提倡去研究人积极的方面。

于是在`Google Ngram Viewer`搜`positive psychology`

### 练习题4:理解Simpson's Paradox¶

理解什么是Simpson's Paradox。

辛普森悖论(Simpson's Paradox)是指两变量x与y之间的关系，在考虑进第三个变量z之后，出现了反转。

UC Berkeley的一个数据可视化小组做了一个交互式网站，在上面可以对辛普森悖论有更直观的了解。

辛普森悖论提醒我们要用批判性的思维谨慎对待观察型研究得到的数据，因为可能存在一个未考虑到的潜在变量，它能反转现有数据得出的结论。

## 练习题5:利用贝叶斯定理解题¶

学习贝叶斯定理，做下题：

已知某种疾病的发病率是0.001，即1000人中会有一个人得病。现有一种试剂可以检验患者是否得病，它的准确率是0.99，即在患者确实得病的情况下，它有99%的可能呈现阳性。它的误报率是5%，即在患者没有得病的情况下，它有5%的可能呈现阳性。现有一个病人的检验结果为阳性，请问他确实得病的可能性有多大？