大数据开发如何转型算法?
算法建模主要做什么?调参为什么玄学?
如何通俗理解算法建模过程。。


夕阳下的村东头,有一人来买瓜。

1 引子(买瓜)

忙碌的一天刚刚结束,村里的小张就匆匆的骑上车,准备买个西瓜解暑。

漫画趣解大数据算法建模:买瓜_建模

天气可真热,等会一定要挑个​​又甜​​、​​又熟​​的大西瓜。

心里嘀咕着,小张慢慢的来到了村东头水果摊前(这里的瓜最好)。

漫画趣解大数据算法建模:买瓜_建模_02

老板,你这西瓜保熟吗?给我挑个甜的、熟点的。

放心好了,看看这​​瓜纹​​和​​瓜蒂​​,而且我都是​​自家种​​的,肯定保熟。

漫画趣解大数据算法建模:买瓜_大数据_03

小张心里直打鼓: 瓜蒂​​蜷曲​​、瓜纹​​青绿​​,看起来貌似是好瓜。但是之前按这标准买的瓜,吃起来并不甜。

回想起父辈的挑瓜经验:敲声​​浊响​​的才是好瓜。于是就再敲了敲几个大瓜,嗯,​​声音​​倒是没错。

漫画趣解大数据算法建模:买瓜_建模_04

保险起见,还是货比三家靠谱。小张走向其他​​店铺​​,又挑了不同​​种类​​和​​大小​​的西瓜,并试吃了一些。

漫画趣解大数据算法建模:买瓜_算法_05

经过了几分钟斟酌,在众老板的欣慰目光中,小张终于选好了一个皮​​薄​​、颜色​​青绿​​、根蒂​​卷​​、敲击会发出​​浊响​​的大瓜。

现场切开尝了下,味道很甜。

漫画趣解大数据算法建模:买瓜_机器学习_06

开心的小张付完钱,嘴里哼着小调,骑行而去。。

2 算法建模到底在干什么

小张最后买到了好瓜,好奇的我们先来围观一下他的买瓜过程 :

  • 自己想买个又甜又熟的大西瓜
  • 筛选西瓜的颜色瓜蒂声音种类大小
  • 根据总结的选瓜方法在不同的瓜摊中挑选试吃
  • 综合对比,选出了最好的一个瓜,实现了西瓜自由


大白话概括买瓜流程


先确定一个​​预期目标​​(买到好瓜)和选瓜​​环境​​(村东头);其次总结选瓜​​方法​​(父辈经验)和选瓜​​特征​​(颜色、瓜蒂等);最后根据这套​​方法论​​ + ​​实战​​,货比三家,对比得到了最好的​​预期结果​​(一个好瓜)。

漫画趣解大数据算法建模:买瓜_大数据_07故事中的小张凭借多年挑瓜​​经验​​,总结好瓜的​​特征​​: ​​皮薄​​、​​青绿瓜纹​​、​​曲根蒂​​和​​浊响声​​。根据这些特征,现场进行​​望闻问切​​,多次实验,选出​​最好​​的瓜。

现在换个角度,假设有台机器可以帮我们这些事情。

我们给机器输入一些西瓜的数据:包括各种西瓜的​​大小​​、​​种类​​、​​颜色​​、​​瓜蒂​​和​​敲击声​​等信息,再提供一些计算好瓜的​​算法公式​​,希望机器能够稳定、准确的帮我们筛选出好瓜和坏瓜。

漫画趣解大数据算法建模:买瓜_算法_08通俗理解,这就是大数据算法建模所做的工作。


大数据算法建模核心思想


在理解业务背景、数据含义的基础上确定​​预期目标​​;数据​​预处理​​后,选择合适的​​算法​​和​​数据特征​​并构建​​模型​​,训练最好的模型帮助我们最大化逼近(​​预测​​)预期目标。

漫画趣解大数据算法建模:买瓜_大数据_09


3 大白话讲解算法建模流程

前文介绍了算法建模帮我们解决了什么问题?接下来瞅瞅如何进行算法建模。

我会详细介绍算法建模的具体流程,并借助于​​买西瓜​​的例子说明。


为避免内容枯燥,后面画了大量示意图,方便理解


先来看看整体的算法建模流程:

漫画趣解大数据算法建模:买瓜_大数据_101)流程说明

整体大致可分为​​业务/数据理解​​、​​预处理​​、​​特征工程​​、​​模型训练​​、​​模型评估​​和​​预测​​几个步骤。

  • 首先要理解数据业务目标,即明确目标和测试的数据。比如说我想挑一个好西瓜,你总不能去个早餐店拿两个包子回来吧?
  • 其次是数据预处理工作。一般读取的数据是存在一些空值、异常值等其他非友好的特性,需要做些特殊处理。
  • 在预处理基础上,进一步获取为模型所用的数据(特征),被称作特征工程。在买瓜过程,小张就很老道的看瓜纹、瓜蒂、听敲击声,这些就是好瓜的特征。
  • 特征工程完成后,可以选择合适算法进行模型训练。此时通常将数据集分成测试集验证集,以此检验模型效果,即区分好瓜的正确程度。
  • 经过几轮模型训练和特征工程(过程可迭代、可双向),获取效果最好的模型,在真实数据集进行预测(切瓜)。

2)数据、业务理解


常有的一个误区:


即无需事先确定目标和数据,总以为能够找到一个完美的算法,能够帮我们自动获取数据规律。

但是算法并不是万能的,需要与之适配的数据和使用场景。再好的剑也需要有温养的环境和一副好剑鞘。

漫画趣解大数据算法建模:买瓜_大数据_11

3)数据预处理

算法建模中的数据来源为数据同事开发的指标。比如用户产品推荐,就需要加工一些用户行为指标。

当然这些加工后的数据不能直接给模型使用,需要进行处理。

  • 饱和度(空值填充、异常值过滤)
  • 无量纲化:将数据转换为同等规格。比如特征的少量数值过大,可以统一缩放到[0,1]范围,降低样本计算影响程度)
  • 定量数据转换:比如西瓜的敲击声(清脆、浊响)转换为数字形式(00、01),进行哑编码(定量编码的一种)。
  • 定性数据转换: 比如根据西瓜的重量是否大于5斤,将西瓜的重量分为[0,1]两类,便于数学计算。

漫画趣解大数据算法建模:买瓜_人工智能_124)特征工程

特征工程的主要目的是选择具有价值的数据信息,帮助模型快速和准确训练和预测。

好的数据和特征可以决定训练模型的​​上限​​。

举个例子:选西瓜过程中,经验丰富的小明对比不同种类西瓜的​​纹路​​、​​瓜蒂​​、​​敲击声​​、​​尺寸​​和​​种类​​等特征,快速挑选出想要的好瓜。

假如小明是个新手,那么可能只会根据瓜的​​大小​​、​​颜色​​来区分,认为大而绿的就是好瓜,当然结果可能相差十万八千里。

特征工程的主要工作内容主要如下:

  • 基于样本特性筛选特征: 使用数据统计学知识,比如计算特征的方差相关系数分箱/WOEIV值信息熵等,筛选出结果比较好的特征。
  • 基于模型筛选特征: 将部分特征放入到模型中训练,筛选效果好的特征,适用于特征数据量比较大的场景,比较精确。
  • 特征衍生:需要引入一些衍生特征(组合旧特征、开发新特征),提高特征的丰富性

漫画趣解大数据算法建模:买瓜_算法_135)模型训练

在完成特征工程的基础上,需要选择适配的机器学习算法,构建模型。


这里建议可再次计算部分特征的IV值、信息熵等,确保特征完整性。


常见的机器学习算法:

  • 监督学习:包含分类和回归两大类。常见的算法有LR、树算法、神经网络和GBRT等,其中LR逻辑回归树算法常用于解决风控场景
  • 非监督学习:聚类算法、PCA算法和关联规则等算法。其中Kmeans算法被广泛运用于数据挖掘分类场景,关联规则则应用于推荐中。

漫画趣解大数据算法建模:买瓜_算法_14

选择好算法和特征,开始训练模型。训练时间会很长且过程可逆,可适时调整特征和算法迭代。

6)模型评估

模型需要在训练集和验证集上进行训练,如何判断模型训练效果呢?

一般需要从两方面去考虑,即模型准确性和稳定性。

  • 准确性评估
    模型能否正确预测结果。比如判断一颗表皮青绿、瓜蒂蜷曲、敲击浊响的瓜有多大概率是好瓜。


常用方法:混淆矩阵、KS曲线、ROC曲线等



漫画趣解大数据算法建模:买瓜_机器学习_15

  • 稳定性评估
    即模型的稳定性,防止随着时间推移,应用模型的样本特征可能会发生变化,影响模型的预测结果。常通过计算特征的PSI值(变化程度),调整模型。


常用方法:PSI计算


  • 小于10%,则无需更新模型;10%-20%, 需检查变化原因,加强监控频率;大于20%,则模型需要迭代。

7)预测

将模型带入到真实预测集中,预测结果。

序号

颜色

瓜蒂

敲击声

好瓜

1

青绿

蜷缩

浊响

0.958

2

乌黑

蜷缩

浊响

0.943

3

青绿

硬挺

清脆

0.412

4

乌黑

稍蜷

沉闷

0.533

4 算法建模如何学习

上面简单介绍了下大数据算法建模的基本流程。

​由于篇幅问题,不详细之处,可添加我的wx交流。

其实在实际工作中,我们可能大半时间都集中在​​特征处理​​和​​模型训练​​,当然还有玄学的​​调参​​。

一个模型运行的好坏,可能会和多种因素有关。需要在掌握底层原理和技术手段的基础上,根据自己的经验去慢慢调试。

而至于如何去学习入门算法建模,这里也提供个人学习方法和路线(仅供参考)。

漫画趣解大数据算法建模:买瓜_人工智能_16

  • 数据知识:统计学、线性代数和离散数学
  • 算法知识:机器学习、深度学习算法、某领域场景算法
  • Python基础知识:可以对照菜鸟教程学习
  • Python数据分析:Pandas、Numpy、Matploblib
  • 框架学习:jupyter、sklearn、tensorflow、pytorch
  • 算法建模实战:系统项目实战、领域延深
  • 其他:Spark、Hive等大数据技术

5 一些误区和建议


1)做算法建模是不是只会算法就好了?


并不能这么说,正如文中所说​​特征​​和​​数据​​是决定模型的上限。特征处理也要很精通,特别是python和pandas等技术


2)特征工程和数据预处理的关系?


其实这两者都可以归为​​特征处理​​,也即特征工程包含预处理,都是进行数据处理和特征筛选,只不过有的技术体系将其单独划分。


3)模型的准确度不好,如何调参?


我的建议是先去看你的数据,观察特征的​​饱和度​​、​​IV值​​、​​PSI值​​等,一般不好的特征很大程度影响模型好坏。随后再去调整模型的​​超参数​​,只有你的特征比较好,调整超参才能发挥更好的效果。


4)没基础怎么学习算法建模


建议可以按照我上面推荐的学习路线去看,其实算法建模对于没有基础的朋友来说是有蛮高门槛的,推荐一定要把算法理论和数学理论学扎实点,不要深究,理解并会使用即可。


5)那么多编程框架怎么选?学习哪个好


框架只是一个工具,方便编码和调试;重要的是把基础知识学好,任意选择一个即可,推荐pytorch。


6)一点点建议


建议先把基础知识打牢,包括算法和数学知识,这样在后面会学的很轻松。 至于python、pandas、pytorch等全是工具组件,比较好入门。一开始不用铺开学习所有算法,建议学习一些常用的,后面根据具体场景实战中学习即可。

6 写在最后

有一人来买瓜,这瓜保熟。。

》》》更多文章,欢迎关注我的gzh:大数据兵工厂