天天看点

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

大数据开发如何转型算法?

算法建模主要做什么?调参为什么玄学?

如何通俗理解算法建模过程。。

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

1 引子(买瓜)

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

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

天气可真热,等会一定要挑个​

​又甜​

​、​

​又熟​

​的大西瓜。

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

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

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

放心好了,看看这​

​瓜纹​

​和​

​瓜蒂​

​,而且我都是​

​自家种​

​的,肯定保熟。

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

小张心里直打鼓: 瓜蒂​

​蜷曲​

​、瓜纹​

​青绿​

​,看起来貌似是好瓜。但是之前按这标准买的瓜,吃起来并不甜。

回想起父辈的挑瓜经验:敲声​

​浊响​

​的才是好瓜。于是就再敲了敲几个大瓜,嗯,​

​声音​

​倒是没错。

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

保险起见,还是货比三家靠谱。小张走向其他​

​店铺​

​,又挑了不同​

​种类​

​和​

​大小​

​的西瓜,并试吃了一些。

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

经过了几分钟斟酌,在众老板的欣慰目光中,小张终于选好了一个皮​

​薄​

​、颜色​

​青绿​

​、根蒂​

​卷​

​、敲击会发出​

​浊响​

​的大瓜。

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

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

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

2 算法建模到底在干什么

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

  • 自己想买个又甜又熟的大西瓜
  • 筛选西瓜的

    颜色

    瓜蒂

    声音

    种类

    大小

  • 根据总结的

    选瓜方法

    在不同的

    瓜摊

    中挑选试吃
  • 综合对比,选出了

    最好的

    一个瓜,实现了西瓜自由
大白话概括买瓜流程

先确定一个​

​预期目标​

​(买到好瓜)和选瓜​

​环境​

​(村东头);其次总结选瓜​

​方法​

​(父辈经验)和选瓜​

​特征​

​(颜色、瓜蒂等);最后根据这套​

​方法论​

​ + ​

​实战​

​,货比三家,对比得到了最好的​

​预期结果​

​(一个好瓜)。

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

故事中的小张凭借多年挑瓜​

​经验​

​,总结好瓜的​

​特征​

​: ​

​皮薄​

​、​

​青绿瓜纹​

​、​

​曲根蒂​

​和​

​浊响声​

​。根据这些特征,现场进行​

​望闻问切​

​,多次实验,选出​

​最好​

​的瓜。

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

我们给机器输入一些西瓜的数据:包括各种西瓜的​

​大小​

​、​

​种类​

​、​

​颜色​

​、​

​瓜蒂​

​和​

​敲击声​

​等信息,再提供一些计算好瓜的​

​算法公式​

​,希望机器能够稳定、准确的帮我们筛选出好瓜和坏瓜。

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

通俗理解,这就是大数据算法建模所做的工作。

大数据算法建模核心思想

在理解业务背景、数据含义的基础上确定​

​预期目标​

​;数据​

​预处理​

​后,选择合适的​

​算法​

​和​

​数据特征​

​并构建​

​模型​

​,训练最好的模型帮助我们最大化逼近(​

​预测​

​)预期目标。

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

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

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

我会详细介绍算法建模的具体流程,并借助于​

​买西瓜​

​的例子说明。

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

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

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

1)流程说明

整体大致可分为​

​业务/数据理解​

​、​

​预处理​

​、​

​特征工程​

​、​

​模型训练​

​、​

​模型评估​

​和​

​预测​

​几个步骤。

  • 首先要理解

    数据

    业务目标

    ,即明确目标和测试的数据。比如说我想挑一个好西瓜,你总不能去个早餐店拿两个包子回来吧?
  • 其次是数据预处理工作。一般读取的数据是存在一些空值、异常值等其他

    非友好

    的特性,需要做些特殊处理。
  • 在预处理基础上,进一步获取为模型所用的数据(

    特征

    ),被称作

    特征工程

    。在买瓜过程,小张就很老道的看瓜纹、瓜蒂、听敲击声,这些就是好瓜的特征。
  • 特征工程完成后,可以选择合适算法进行

    模型训练

    。此时通常将数据集分成

    测试集

    验证集

    ,以此检验模型效果,即区分好瓜的正确程度。
  • 经过几轮模型训练和特征工程(过程可迭代、可双向),获取效果最好的模型,在真实数据集进行

    预测

    (切瓜)。

2)数据、业务理解

常有的一个误区:

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

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

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

3)数据预处理

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

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

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

4)特征工程

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

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

​上限​

​。

举个例子:选西瓜过程中,经验丰富的小明对比不同种类西瓜的​

​纹路​

​、​

​瓜蒂​

​、​

​敲击声​

​、​

​尺寸​

​和​

​种类​

​等特征,快速挑选出想要的好瓜。

假如小明是个新手,那么可能只会根据瓜的​

​大小​

​、​

​颜色​

​来区分,认为大而绿的就是好瓜,当然结果可能相差十万八千里。

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

  • 基于样本特性筛选特征: 使用数据

    统计学

    知识,比如计算特征的

    方差

    相关系数

    分箱/WOE

    IV值

    信息熵

    等,筛选出结果比较好的特征。
  • 基于模型筛选特征: 将部分特征放入到模型中训练,筛选效果好的特征,适用于特征数据量比较大的场景,比较精确。
  • 特征衍生:需要引入一些衍生特征(组合旧特征、开发新特征),提高特征的丰富性
漫画趣解大数据算法建模:买瓜

5)模型训练

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

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

常见的机器学习算法:

  • 监督学习:包含分类和回归两大类。常见的算法有LR、树算法、神经网络和GBRT等,其中

    LR逻辑回归

    树算法

    常用于解决风控场景
  • 非监督学习:聚类算法、PCA算法和关联规则等算法。其中

    Kmeans算法

    被广泛运用于数据挖掘分类场景,

    关联规则

    则应用于推荐中。
漫画趣解大数据算法建模:买瓜

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

6)模型评估

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

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

  • 准确性评估

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

常用方法:混淆矩阵、KS曲线、ROC曲线等
漫画趣解大数据算法建模:买瓜
  • 稳定性评估

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

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

7)预测

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

序号 颜色 瓜蒂 敲击声 好瓜
1 青绿 蜷缩 浊响 0.958
2 乌黑 蜷缩 浊响 0.943
3 青绿 硬挺 清脆 0.412
4 乌黑 稍蜷 沉闷 0.533

4 算法建模如何学习

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

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

其实在实际工作中,我们可能大半时间都集中在​

​特征处理​

​和​

​模型训练​

​,当然还有玄学的​

​调参​

​。

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

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

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

5 一些误区和建议

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

并不能这么说,正如文中所说​

​特征​

​和​

​数据​

​是决定模型的上限。特征处理也要很精通,特别是python和pandas等技术

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

其实这两者都可以归为​

​特征处理​

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

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

我的建议是先去看你的数据,观察特征的​

​饱和度​

​、​

​IV值​

​、​

​PSI值​

​等,一般不好的特征很大程度影响模型好坏。随后再去调整模型的​

​超参数​

​,只有你的特征比较好,调整超参才能发挥更好的效果。

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

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

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

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

6)一点点建议

6 写在最后

继续阅读