2

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

 1 year ago
source link: https://blog.51cto.com/u_11200224/5379996
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

1 引子(买瓜)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 算法建模到底在干什么

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

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

大白话概括买瓜流程

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

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

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

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

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

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

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

大数据算法建模核心思想

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

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

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

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

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

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

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

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

1)流程说明

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

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

2)数据、业务理解

常有的一个误区:

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

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

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

3)数据预处理

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

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

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

4)特征工程

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

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

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

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

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

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

5)模型训练

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

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

常见的机器学习算法:

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

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

6)模型评估

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

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

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

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

漫画趣解大数据算法建模:买瓜_人工智能_15
  • 稳定性评估
    即模型的稳定性,防止随着时间推移,应用模型的样本特征可能会发生变化,影响模型的预测结果。常通过计算特征的PSI值(变化程度),调整模型。

常用方法:PSI计算

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

7)预测

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

0.958

0.943

0.412

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:大数据兵工厂


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK