首先简单说说什么是大数据。
大数据一般指在数据量在10TB以上的数据集, 通常有以下5个特点:
1. 容量(Volume):数据量大,数据量的大小决定所考虑的数据的价值和潜在的信息;
2. 种类(Variety):
数据类型多,包括但不仅限于文本,音频,视频以及图片;
3. 速度(Velocity):指数据产生和获取的速度快;
4. 低价值密度(Value):数据中的有价值数据量级较小;
5. 真实性(Veracity):数据质量因数据来源以及记录方式等影响因素的不同,会出现较大的差异,而这种差异性会极大程度地影响数据分析的精确性;
简单说来,大数据建模就是指利用相关的计算机技术从大数据中挖掘数据特征,并用量化理论数学化数据特征关系以描述业务需求和模式的一种方法体系。
回到题主的问题上,我们要如何学习并掌握这个方法体系呢?
首先是丰富的理论知识储备。
必须掌握和了解:计算机基础;数据分析软件;机器学习算法基础/进阶; 统计分析基本方法;计量模型体系以及数据库基础。
建模数据的抽取,清洗和加工以及建模算法的训练和优化会涉及大量的计算机语言和技术。比如:数据查询语言SQL;数据环境Hadoop和Spark;数据操作系统Linux; 数据分析软件R、Python、SAS、Matlab等。
特征工程涉及到统计/数学/信息论/计量等学科的基本概念。比如:变量的均值;分位数;峰度;谱;信息熵;cosi;衰退速率以及马氏距离等。
建模阶段涉及多种量化模型,比如:统计模型;计量模型;机器学习模型;复杂网络等。比较常见的模型有:回归分析模型;随机森林;时间序列;神经网络;SVM等。
想要在实际的项目中自如的运用这些模型算法,不仅仅需要了解基本的数学原理,还需要深入掌握对应的计算机语言实现。至少要会在主流的分析软件中调用算法包,更高阶的要求是能自己实现算法的编写和精进。只有这样才能相对正确地设计并依据实际数据结构优化算法,得到各方面表现都相对优异的模型。
其次是积累实战技能。
实战是将理论和现实结合重要一环,对于那些无法在实际工作中积累大数据建模经验的同学来说,参加各平台的数据建模竞赛也许是个不错的选择。
已被谷歌收入旗下的美国著名大数据建模竞赛平台Kaggle、Analytics Vidhya平台上的Hackatons、国内天池大数据竞赛、DataCastle等都是比较不错的竞赛平台。
最后来说一说那些恐怕书本上较少能够直接获取,需要大量实践以及项目经验中获取知识。
比如特征工程中缺失值处理、特征构建、变换等等,取决于模型方法、数据、业务目标等。除了基于之前提到过的量化指标构造的特征,最后对模型表现贡献最多的特征往往是那些构造逻辑和业务逻辑挂钩非常紧密的特征。
这里举两个例子来说明。
例1:异常的交易风险,通常表明客户存在违约或者欺诈的风险,那么如何去构造特征来描述异常交易风险呢?
可以是统计指标方差、变异度、数学指标马氏距离;
也可以是业务逻辑“过去3天的交易金额相较于历史水平涨幅大于100%”。
后者显然不专属于任何一门学科,它来自于对业务的理解和消化。
例2:在构建线性模型时通常会对变量间的非线性关系做线性数学变换(Log),而在实际的操作中,需不需要做变换以及如何变换是与具体的模型形式挂钩的。
神经网络,随机森林等模型,是不需要做线性变换的,反而会倾向于对特征做离散化处理。
模型训练调整参数,需要在心中有一杆bias variance的秤,揣着一把奥卡姆剃刀,方能建一手好模。
同样,模型算法的选择需要考虑的不仅仅是模型表现,还需要考虑成本。
因为建模是一方面,模型能够实施生产是另一方面。结构复杂和特征量大的模型往往意味着背后需要大量的计算资源,人力资源和时间资源支持。模型的现有表现和未来可能的衰减速度值不值得耗费大量人力物力去生产部署,部署后模型带来的效益是否能在长期内冲销成本也是建模人员需要去考虑的事情。
最最重要的是,需要意识到大数据建模只是解决问题的一种方法,与其他任何一种解决问题的途径手段在本质上并无不同。
建模前对业务目标的了解,对建模必要性的分析,对模型目标变量的刻画以及对建模样本的选取等问题反而比建模本身更值得引人关注。
以前端风控业务中的反欺诈识别为例,如何精确地定义欺诈行为是建模前需要解决的第一要事。如果对欺诈的定义有偏差,即使后续的算法表现优良,模型也无法最大程度地服务需求,基于不准确的定义识别出的“欺诈行为”不再符合对业务的定义,整个建模工作在某种程度上也失去了本来的意义。
就像是本来要找脸上有斑的人,由于错误的认为“斑”就是“痣”,最后找了脸上有痣的人,虽然脸上都有东西,但却再也不是对的人。
对于专业的modeler来说,真正花费在建模上时间恐怕不会超过他们日常工作的40%。
毕竟建模技术的实现容易,而让模型最大程度地的满足业务需求,发挥商业价值则需要花费非常多的心血。