Home Blog

林荟 (Hui Lin)  

2016-9-12  

文中的代码可重复:),有任何问题联系邮箱: <longqiman>@gmail.com

数据科学可以解决什么问题?

前提要求

数据科学不是万能药,数据科学家也不是魔术师,有些问题我们无法用数据科学解决,最好在一开始就对问题做出判断,对于那些无法解决的问题,诚实的告诉对方并解释原因,那我们对问题有什么要求呢?

  1. 你的问题需要尽可能具体

    来看两个例子:

    • 问题1: 如何提高产品销售量?
    • 问题2: 今年年初推出的新促销手段是不是提高了先锋先玉696玉米种子在西南地区的销售量?

    比较上面这两个问题,大家是不是很快能发现它们的差别?问题1从语法上是个正确的问题,但从解决的角度,并不是一个能够用分析给出答案的问题。为什么?因为问题太泛了,根本无从定义该问题背后的自变量和应变量。而问题2就是一个恰当的问题。从分析的角度,应变量很明显是“先锋先玉696玉米种子在西南地区的销售量”,感兴趣的自变量是“今年年初推出的新促销手段”,我们想要研究的就是这两者之间的关系。从这里开始再去寻找其它变量,这样就慢慢的进入分析流程了。当然,问题具体不代表就能够回答。比如我曾经遇到一个很具体的供应链问题,问的是针对某一个特定产品在特定区域的库存该是多少。这个问题为什么无法回答呢?这个项目一开始我通过多元自适应回归样条(MARS)模型以为找到了一个合理的答案,但到项目的最后才发现,他们给我的供应相关的数据极其不准确,很多地区的供应量都只是估计。这是我从业生涯中的一次教训,这告诉我们下面将要提到的一点。

  2. 你要有和问题相关的必要数据

    巧妇难为无米之炊,这老古人的话放在那里时刻闪闪发光。艺术源于生活,所以你首先得要有数据,之所以数据科学会火也是因为计算机的发展,使数据的收集更容易。上面提到的供给问题就是一个很好的例子,没有相对准确的数据,之后任何模型都没有意义。当然,任何数据都是存在误差的,但是误差必须在一定范围内。尤其是感兴趣的自变量(如之前问题2里的“新促销手段”相关的数据)和应变量(“先锋先玉696玉米种子在西南地区的销售量”),如果这些必要的变量有很大缺失,或者不准确的话,模型是无法发挥作用的。再如,你要预测某个产品的消费者中谁最可能在接下来的3个月内购买该产品。要解决这个问题,你需要有目标消费者群体历史购买行为的信息:上一次购买的时间,消费量,优惠券使用情况等等。如果你仅仅知道这些客户的银行卡号,身份证号,出生月份之类的信息是不会对你的预测有任何帮助的。

    很多时候数据的质量比数量重要,但数量也是不容忽视的。在能保证数据质量的前提下,数量越多越好。样本量越大,你能够回答的问题也就更细,且模型发现的置信度也更高。如果你有一个具体合理的问题,有足够大,质量合理的相关数据集,那么恭喜你,可以开始玩数据科学啦!

问题种类

很多数据科学的书籍都从技术的角度对各种模型分类。比如有监督模型和无监督模型,线性模型和非线性模型,参数模型和参数模型等等。这里我们换而使用之前提到的“问题导向”的思维方式,对数据科学回答的问题进行分类,然后介绍哪些模型可以用于回答相应类别的问题,希望这些分组能在你面对自己的问题时帮助思考。

  1. 比较

    第一类常见的问题是比较组之间不同的问题。常见的句式是:A在某方面是不是比B好?或者多者比较:A、B、C之间在某方面有没有差别?下面是一些问题的例子:

    - 参与促销活动和没有参与促销活动消费者购买量有差异么?
    - 男性是不是比女性更倾向于购买我们的产品?
    - 用户满意度在不同商业区是不是有不同?
    - 服用某种药物的老鼠比没有服用药物的老鼠体重增长的是否更快?
    - 携带某种基因的大豆是不是比普通大豆产油量高?
    

    对于这类数据,通常从各组观测的基本统计量和可视化开始初步探索数据。在对数据分布和组之间的差异有个初步直观了解之后,通过统计检验测试组间是否在感兴趣的变量上有显著不同。处理这类问题常用的是经典统计推断:开方检验,t检验和方差分析。放在贝叶斯框架下也有一种比较组间不同的方法。如果因子增加,结构变得复杂(如在生物医药领域的复杂实验设计有随机效应因子),则需要使用更加复杂的混合效应模型。

  2. 描述

    在分析中不可避免的要描述数据。比如聚类问题。当你通过算法找到不同的样本分类后,就需要对类进行定义,这要通过比较各类中变量的描述统计量得到。常用的描述问题有:

    - 样本中家庭年观测的收入是不是无偏的?
    - 某产品在不同区域的月销售量均值/方差是多少?
    - 变量的量级差异大么?(决定是否需要对数据标准化)
    - 模型中的预测变量观测缺失情况如何?
    - 问卷调查回复者的年龄分布范围是多少?
    

    这类数据描述常用于检查数据,找到合适的数据预处理方法,以及拟合模型后对结果的分析和展示。

  3. 聚类

    聚类是一个极其常见的问题,其通常和判别联系在一起。聚类模型回答的问题是:

    - 哪些消费者有相似的产品偏好?(市场营销)
    - 哪些打印机损坏的模式相同?(质量控制)
    - 公司员工在对公司评价上可以分为几类?(人力资源)
    - 哪些词更经常同时出现?(自然语义处理)
    - 哪些文档可能有相似的主题?(自然语义处理)
    

    聚类是无监督分析。

  4. 判别

    判别是另外一个经典的分析问题。通常用类别已知的样本作为训练集拟合判别器,然后用训练好的判别器预测新样本的类别。下面是一些关于判别的问题:

    - 哪些新客户最有可能转化(购买)?
    - 当前的压力度数是正常的么?
    - 某贷款人有不还款的风险么?
    - 这个消费者还可能喜欢什么产品?
    - 这本书的作者可能是谁?
    - 这封邮件是不是垃圾邮件?
    

    关于判别的模型有数百种,在实践中我们其实不必要尝试所有的模型而只要拟合其中几种在大部分情况下表现最好的模型即可。我们在后面判别的章节还会介绍。

  5. 回归

    当你感兴趣的量是一个数值而非类别时,通常就是一个回归问题。比如:

    - 明天的气温可能会是多少?
    - 公司今年第4季度的销售额会是多少?
    - 某品牌打印机明年上半年在北京市的销量会是多少?
    - 该引擎还能工作多久?
    - 这次活动中需要准备多少啤酒?
    

    通常情况下,回归能够给出一个数值答案。回归通常解决“…是多少?”这样的问题。在有些时候模型给出的负数结果可能需要解释为0,或者有小数点的结果需要解释为最近的整数。

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.