2.1 大数据分析模型建立方法大数据分析模型可以基于传统数据分析方法中的建模方法建立,也可以采取面向大数据的独特方法来建立。为了区分这两种模型建立方法,我们分别简称其为传统建模方法和大数据建模方法。由于这两种模型建立方法存在一些交集(如业务调研、结果校验等),我们采取统一框架来进行介绍,在介绍时区分两种建模方法的不同之处。传统数据分析建模方法与大数据分析建模方法从大数据这个概念提出开始,就有“大数据分析方法与传统数据分析方法同与异”之辩。有的观点认为,传统分析是“因果分析”,而大数据分析是“关联分析”;有的观点认为,传统分析是“假设→验证”形式的分析,大数据分析是“探索→关联”形式的分析;也有观点认为,大数据分析并无新颖之处,只不过是传统分析扩展到了更大规模的数据上,需要的只是一些大规模数据处理技术而不是更新的建模方法。笔者认为,“大数据分析”和传统的“数据分析”并不是一个割裂的或者说对立的概念,其分析模型建立方法可谓“运用之妙,存乎一心”,建立数据分析模型的目的是解决问题,可以根据分析的目标和所拥有的数据资源选择建模的方法论,而并不一定要区分是使用传统的数据分析建模方法还是大数据数据分析建模方法。
(1)业务调研首先需要向业务部门进行调研,了解业务需要解决的问题,将业务问题映射成数据分析工作和任务。对业务的了解无疑是传统建模方法和大数据建模方法都需要的。(2)准备数据根据业务需求准备相应的数据。需要注意的是,传统建模方法通常有明确的建模目的,根据建模的目的准备数据,而大数据建模方法通常尽可能搜集全量数据,以便于从中发现此前没有发现的规律。(3)浏览数据这一步骤是大数据建模方法所特有的,在这一步骤中,数据科学家或者用户通过浏览数据发现数据中一些可能的新关联,这个步骤可以通过对大数据进行可视化来实现。(4)变量选择经过业务调研、准备数据和浏览数据,手中已有的数据和分析的目标已经清楚了,在这一步骤中,基于分析的目标选择模型中的自变量,并定义模型中的因变量。因变量根据数据来定义,自变量根据数据的模式以及和因变量之间的关系进行选择。需要注意的是,有的时候并不能够精准地选择自变量,在这种情况下可以选择一个较大的自变量范围,然后利用本书第9章提出的技术有效选择相应的变量。(5)定义(发现)模型的模式这一步骤根据上一步骤选择的自变量和因变量定义或者发现模型的模式。所谓模型的模式指的是模型的“样子”,例如,自变量x1,x2,…,xn和因变量y之间显式地表示成方程y=f(x1,x2,…,xn),或者自变量构成决策树,因变量y在叶子上,这些都是模型的模式。在这一步骤中,数据科学家的经验起着非常重要的作用,因为在有些情况下,模式有很多选择,哪一种能够有效地描述数据之间的关系是因问题而异、因数据而异的。在有些情况下甚至需要根据后面步骤对模型有效性进行评估的结果来迭代地修改模式。这个过程对大数据分析建模尤其重要,因为大数据分析建模中数据的模型可能更加不明显,需要迭代地修正模型的模式。(6)计算模型参数通常在模型中有一些参数,这些参数决定了模型的最终形式。有些参数需要根据需求或者数据的形式来定义,例如有些聚类模型中聚类的个数;而有些参数需要通过算法学习得出,例如线性回归中自变量的系数。有时候,模型中的参数需要根据分析模型的实际应用结果进行调整,即所谓的“调参”,这是一个重要的过程,因为参数直接决定了模型的有效性。 (7)分析模型的解释和评估数据分析模型从业务中来,最终要应用到业务中去,因而当分析模型建立之后,需要由业务专家进行业务解释和结果评价。具体来说,可以将分析模型应用于业务中的数据,由业务专家根据经验解释从分析模型得到的结果,看此结果是否符合业务要求;也可以基于已知有效分析结果的数据对模型进行评估,自动验证模型得到的分析结果是否和有效的分析结果相符合。上面谈到的7个步骤是广义的分析模型建立步骤,包括了从需求到模型验证的部分;如果是狭义的建模,即根据需求和数据建立模型,仅包含其中的(3)~(6)四个步骤。我们用一个例子来说明大数据分析的过程。我们期望研究提升学生学习成绩的方法,经过老师的分析,希望研究“基于学生的行为数据预测学习成绩”这一数据分析任务。对于这一任务,传统的建模方法可能由专家去分析一系列可能的因素,比如上课的出勤率、作业完成率等,然后到相关的数据库中获取相应的数据,并从数据库中得到学生的成绩。大数据建模方法中,试图去获取所有可能的数据,包括学生的起床时间、学生体检记录、学生的籍贯等。继而通过可视化(比如做折线图)等方法分析这些因素是否可能和学生的学习成绩相关。究竟选择哪些变量是要进行研究的。根据领域知识和浏览数据,实际上已经发现了一些可能影响学生成绩的因素,这些因素在数据库中体现为“属性”,对应着分析模型中的“变量”。在大数据分析建模方法中,可能得到了很多自变量(比如起床时间、吃早餐的时间、血压等也许相关也许不相关的变量),在这种情况下,可以使用一些特征工程的方法,选择和成绩相关性比较高的变量,并且排除不相关的自变量。比如起床时间和吃早餐的时间在统计上就有较强的相关性。假设在这一步中,我们选择了上课的出勤率、作业完成率和血压作为自变量。接下来定义模型的模式,这与自变量和因变量数据的类型有关。在这个例子中,出勤率、作业完成率和血压都是数值型,而学生成绩也是数值型,则可以考虑多元线性回归。比如我们选定了多元线性回归作为模式,下一步就是通过算法确定多元线性回归中的参数。当然在有些情况下,即使算法得到了最优参数,最后结果的误差仍然很大,在这种情况下,很有可能是模型模式选择的问题,也就是多元线性回归模型可能难以准确描述学习成绩和出勤率、作业完成率以及血压的关系,可能需要换其他模式,比如多项式回归等。当确定了模型,则可以对其进行解释。一种方法是由专家来分析,比如“为什么血压的平方会对成绩有影响?”;另一种方法就是用更多的数据(出勤率、作业完成率、血压和学习成绩)来验证这个模型是否可以推广。需要注意的是,这是一个为了解释上述过程的虚拟例子,并不代表实际情况。在现实中,一些数据会由于得不到(比如学生起床时间)或者侵犯隐私(比如学生的健康情况)而无法使用。现实中的建模通常要迁就可以有效使用的数据。