原创 PowerData飞绝 PowerData
本文由PowerData飞绝贡献 姓名:雷鑫 花名:飞绝 微信:threekupup 年龄:90后 工作经验:3-5年 工作内容:算法,数分 自我介绍:大数据算法工程师一枚
全文共 6372 个字,建议阅读 12 分钟
分享预告
针对开年后广大同学自我提升的目标,借助chatGPT爆火的契机,PowerData邀请资深大数据算法工程师,社区成员 PowerData飞绝-雷鑫 为大家带来【数据从业者的机器学习入门分享】,分享信息见下图,各位可扫码报名与加入社区!
文章导读
本文作为入门分享的预告文章,围绕机器学习的入门知识展开,主要分为以下四个部分:
- 第一部分简要介绍一些机器学习和大数据的联系,主要是围绕为什么大数据中需要机器学习来展开。
- 第二部分主要集中在机器学习的简介,包括基本概念,核心和本质,结合3个典型案例对概念进行讲解。
- 第三部分主要是围绕机器学习3个核心概念介绍机器学习的流程。
- 第四部分介绍机器学习如何入门以及从业者该如何进阶。
一、机器学习和大数据
1.1 为什么大数据中需要机器学习?
大数据(Big Data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
用简单的话来说,大数据是一个很大的数据集合。我们知道数据是有价值的,数据放在那里,就像一座未开采的巨大矿山,所以还需要有趁手的工具去挖掘它潜在的价值,抛开数据表面的泥土,真正地发挥数据的价值。我个人认为,价值或者说业务,其实就是有价值的数据加上合理的分析,最终我们的目的是为了从数据中发现价值,把数据转化为价值。
数据 + 分析 = 业务价值
最终的目的是为了从数据中发现价值,把数据转化为价值
那么,我们如何去分析数据呢? 在计算机诞生之前,人们采用的是观察,归纳,演绎到总结的过程,比如说行星运动规律的发现,这种方式简单直接、符合直觉,但是依赖人本身的能力进行数据处理和分析,无法处理大数据量的信息筛选、信息提炼。
计算机诞生之后,特别是互联网的建立产生大量的信息,借助于性能强大的计算机,数据处理流程变为收集,存储,分析,应用。这种方式凭借成熟的大数据框架,适合处理大数据量的信息筛选、信息提炼,也就是我们常说的ETL(Extract-Transform-Load)。
从两种对数据的认识过程可以看到,两种方式都比较依靠人自身的知识储备、对问题的理解和认识(Domain Knowledge)。
机器学习是将人类的知识和推理转换成适合于机器和工程自动化系统形式的方法之一。
实践证明,机器学习是数据挖掘领域最有效、最主流的方法之一。
1.2 大数据和机器学习
以下的思维导图展示了机器学习和大数据相结合,形成一个数据->模型->数据的闭环。
笔者个人认为,大数据主要是分为三个部分,包括数据的采集,数据的储存和数据的分析。数据经过传输和同步,落到储存引擎和介质上,形成数据资产。数据资产主要包含两种,一种是未处理或者经过简单处理的日志数据,另外一种是经过ETL的画像数据。
机器学习要做的,其实就是将解决的问题进行抽象,利用现有的大数据计算框架,按照实际问题对数据进行处理,比如说,将日志数据加工为研究对象的新特征(也就是所谓的标签),对研究对象的特征进行分析和筛选,在这个工程中会产生新的画像、新的特征字段,把对业务有帮助、重复使用率高的字段保存下来,就可以作为新的数据资产。
特征工程完毕之后,调用机器学习库中的算法进行模型训练。数据量小的可以选用单机版的算法库,比如Sklearn,大数据量的模型训练需要借助于诸如Spark ML的第三方库。模型训练完成之后,模型产生的数据可以作为下游应用的源头数据之一,帮助下游任务提升业务指标。当整个系统运行起来之后,就形成了数据到模型,模型到数据的链路闭环。
二、机器学习的基本概念
什么是机器学习呢?
Mitchell (1997): 如果在特定的任务中,考虑了相关数据之后,模型的表现有所改进,则称为该模型从数据中学到了某种规律。
概念是比较晦涩难懂的,读者只需要关注以下几个地方
1. 数据,模型,算法三要素
2. 机器学习能从海量的数据中挖掘出潜在的有用的规律和知识
3. 机器学习是数据挖掘的主流工具之一
2.1 机器学习中常见的概念
介绍完机器学习基本概念之后,笔者再向大家简要介绍一些常用的机器学习中常见的概念,帮助读者理解后续的内容。
PAC框架(Probably Approximately Correct)
机器学习的理论基础,描述机器学习能力的数学框架
给出了一个抽象描述机器学习能力的框架:比如至少需要多少样本才能训练得到较好的模
损失函数(loss function)或代价函数(cost function)
损失函数定义为给定输入的预测值和真实值之间的非负实值函数,记作。
训练集、测试集、验证集
训练集:用来训练模型,模型从训练集上发现数据的规律 验证集:用来检验模型在未知数据上的效果好坏 测试集:相当于模拟的测试集,事先测试模型在训练集上发现的规律是否同样适用于未知数据
泛化能力
模型在未知数据集上的表现能力
过拟合和欠拟合
欠拟合:模型在训练集上效果差 过拟合:模型在训练集上效果好,但是在测试集或者验证集上效果差
结构风险(structural risk)
通常,造成模型的过拟合原因之一是模型的复杂度过高,为了避免模型过拟合,通常在损失函数中加入对模型复杂度的惩罚项,公式如下
其中为模型复杂度, 是系数,用以权衡经验风险和模型复杂度。
结构化数据
- 数学语言:矩阵
- 组织形式:表
- 表的每一行表示研究对象的全部信息,每一列表示研究对象的特征
- 目标(target,label):研究对象的“标记”,表当中最特殊的列,与研究问题直接相关,也就是损失函数定义真实值
- 结构化数据在机器学习中又称为样本集合,把不包括目标那列的剩余部分称为特征数据
举个例子,现在我们需要识别出哪些贷款的用户会违约,图1表示介绍了数据中每个字段代表的含义,有具体含义的特征叫做具象特征,图2是用户数据表,每一行表示一个用户的信息,蓝色框内的数据称为特征,红色框内数据为label。研究的问题决定哪列特征是label,比如说这个问题是识别违约的人群,那么label=0表示这个用户没有违约,label=1表示这个用户是违约用户。
图1 特征解释
图2 样本数据
有监督问题
,其中,表示问题的label值
无监督问题
,其中
半监督问题
部分数据有label,部分数据没有label
有监督学习-分类问题和回归问题
,则该问题为回归问题
如果,则该问题为分类问题,特别的,如果取值范围为两个整数,则该问题为二分类问题
以识别违约用户的数据为例,isDefault的表示用户是否违约,是该问题的label,label有两个取值,所以这个问题是有监督的二分类问题。
图3 有监督的二分类问题
第二个例子要求我们的模型识别手写数字,比如说图4是手写的5,0,4,1的图像,要求输入数字的图像,返回图像所表示的数字。数据是一个28*28的像素矩阵,每个元素取值为0,1,其中0表示空白像素,1表示黑色像素,label是人工标注的0-9 10个数字,这个问题是一个多分类的有监督问题。
图4 MNIST数据集合
模型
有参数模型:模型中有可学习参数,比如,其中为学习参数 无参数模型:模型中没有可学习参数 单模型:由单个模型组成的模型,比如逻辑回归
集成模型:由多个模型组合的模型,比如梯度提升树,其中为树模型
算法
最后一个要素算法,机器学习中的算法指的是优化问题的求解方法,方法有很多,比如有协同过滤中用到的矩阵分解,梯度下降,坐标下降,贪心+迭代等。
优化问题中,得到最优解或者局部最优解的求解方法
- 矩阵分解,如奇异值分解(SVD)
- 梯度下降算法(Gradient Descent)
- 坐标下降算法(Coordinate Descent)
- 贪心算法 + 增量迭代
- ......
最后总结一下,第二部分主要从机器学习三个要素数据、模型、算法介绍了一些基本概念。
从数据的角度,根据数据有无label值分为如下三类:
- 监督学习
- 无监督学习
- 半监督学习
从模型的角度,根据模型有无可学习参数分为如下两类:
- 有参数
- 无参数
从算法的角度,根据问题的求解方式分为如下两类:
- 迭代解
- 解析解
2.2 核心和本质
- 机器学习的本质是在已知的数据上训练模型,预测未知的数据
假如所有的数据都可见,那么对于未知的数据而言,只需要做查询即可。但是,毕竟数据是有限的,而且工程师关心的是模型在未知数据上的表现,而模型在已知数据集上表现的再好,未知数据表现欠佳,这个模型依然无法使用。机器学习的本质可以这么说:从已知的数据上学习,在未知的数据上作预测
- 数据和特征工程决定机器学习的上限,而模型和算法只是去逼近这个上限
数据在机器学习中是第一要素,数据的质量的好坏直接决定了模型效果的好坏。
- 机器学习=矩阵+优化+算法+统计
整个机器学习的理论都是建立在概率统计的基础上。机器学习的输入数据集一般表示成矩阵的形式,通过将问题抽象为相应优化问题(分类问题的目标函数为最小化交叉熵,回归问题目标函数为最小化平方差函数),利用数值优化算法进行迭代求解。
- 机器学习=数据+模型+算力
机器学习需要相关问题的数据,利用模型进行规律的发现,数据的处理和优化问题求解都需要集群算力的支持。
2.3 经典案例
应用1:手写数字识别
目的:邮编识别,电话号码识别 数据:手写数字,label为0-9这10个自然数 类型:有监督的多分类模型 模型和算法:LR(梯度下降),SVM(SMO),XGBoost(贪心+迭代),NN(梯度下降)
图5 MNIST数据集合
应用2:预测某热销商品的销量
目的:事前知晓某热销商品的销量,方便商家提前进行囤货,防止库存穿透或者库存积压 数据:商品静态属性,商品历史订单信息等,label为某热销商品的销量 类型:有监督的回归模型 模型和算法:LR(梯度下降),SVM(SMO),XGBoost(贪心+迭代),NN(梯度下降)
应用3:预测用户是否会点击某个商品
目的:网站推荐的商品是否是用户感兴趣的商品,点击是购买的第一步 数据:商品静态属性,用户历史和实时行为信息,用户标签信息等,label为用户对某个商品是否点击 类型:有监督的二分类模型 模型和算法:LR(梯度下降),XGBoost(贪心+迭代),NN(梯度下降)
从以上3个应用案例可以看到,能用机器学习的方法来解决的问题的特点:
- 依赖数据:数据与目标存在一定相关性,两者关系之间无法描述或者无法穷尽
- 数据量要达到一定规模,数据之间有潜在的规律,一般分为明细数据和特征数据
- 响应速度要快,结果相对准确
- 通常问题有一个优化目标,可以转化为一个优化问题
三、机器学习流程
介绍完机器学习的基本概念和一些典型应用之后,工程师面对一个实际的问题,具体机器学习一般都遵循如下步骤和流程:
- 收集与所关心问题相关的数据,并对数据进行适当的加工;
- 根据所关心的问题,确定模型和优化目标;
- 运用求解最优模型的算法,即学习的算法,选择出效果最好的模型;
- 对新数据进行预测或分析。
3.1 数据
机器学习适合结构化数据的问题,算法工程师在拿到结构化数据之后一般会做所谓的特征工程,包括:
数据清洗:过滤掉脏数据,做一些适当的聚合操作等; 特征构造:构造与问题相关的特征,从现有的特征中衍生出其他特征,比如交叉特征; 特征处理:归一化,特征转换,异常值处理,缺失值处理等; 特征筛选:选择出与问题相关度高、效果好的特征。
3.2 模型
根据具体问题和场景,选择适合的机器学习模型,下面列举一些常见的机器学习模型。
有监督常用模型
分类问题和回归问题均可用以下模型,在实际中最常用的模型XGBoost和LightGBM。
- Logistic Regression(逻辑回归)
- 决策树
- GBDT(梯度提升树)
- XGBoost
- LightGBM
无监督常用模型
无监督的模型一般用于将相似的数据分成若干簇,这类问题称为聚类问题。聚类问题可以用以下模型:
- 聚类算法:K-means
- 降维算法:t-SNE、PCA
3.3 算法
机器学习问题一般最后抽象为相应的最优化问题,求解机器学习问题最终转化为求解最优化问题。求解方法一般有如下几种:
- 矩阵分解
- 梯度下降
- 坐标下降
- 贪心+迭代
各个模型都有相应的求解算法。
3.4 实际案例
最后,举2个按照机器学习的流程步骤做下来的实际案例。
案例1:金融风控-贷款违约预测
该例子来自阿里天池竞赛-零基础入门,以金融风控中的个人信贷为背景,根据贷款申请人的数据信息预测。数据如下
图6 特征解释
图7 样本数据
首先,明确问题的属性,这是一个有监督的二分类问题。
1. 数据准备
- 该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量
- 抽取80万条作为训练集,20万条作为测试集A,20万条作为测试集B,同时会对employmentTitle、purpose、postCode和title等信息进行脱敏
2. 数据处理和模型训练
- 特征筛选,特征转换
- 有监督的二分类问题,采用模型为XGBoost
3. 成果
图8 排名
案例2:预测上架商品未来7天的GMV
首先,明确问题的属性,这是一个有监督的回归问题。
1. 数据准备
- 全量商品的画像,百万量级,500+字段,包括历史曝光特征,历史销售特征,历史转化特征,历史点击特征,商品静态属性等等;
- 按商品的类别做抽样,比如服装类做下采样,3c类做上采样;
- 由于长尾效应,商品GMV的差距非常大,对GMV做放缩;
- 少量商品用商品类别做替换,做聚类;
- 把商品销量的回归模型转化为分类模型。
2. 模型训练和预测
- 多个模型,每个大类目商品一个回归模型,一个分类模型,小类目合并为一个类目,一个回归模型,一个分类模型;
- 采用模型为XGBoost;
- 分布式训练;
- 商品未来7天的GMV = 回归结果与分类结果的最小值。
3. 成果
- 商品点击率、购买转化率提升;
- 全站GMV提升;
- 预测结果作为排序的因素之一,推荐召回的来源之一;
- 预测结果作为后续运营策略重要考量因素之一。
四、入门和进阶
机器学习这一领域近年来在市场上非常的火热,市面上的资料如雨后春笋般喷涌而出,让想人门的新手眼花缭乱,无从下手;具有一定工作经验的从业者想进一步提升自己,也不知道从哪方面着手。
那么,第三部分介绍的机器学习的入门知识主要针对一些想入门的新手,主要是从理论和实践两个角度给想要入门的新手提供清晰的学习和实践脉络。
针对具有一定工作经验的从业者,进阶知识部分梳理了可以提高的若干个方面,可以根据自己的实际情况,有针对性地进行提升。
1. 入门知识
图9 入门思维导图
(1)数学基础知识
每个机器学习的背后都有强大的数学基础保证了模型的有效性和正确性。要想深入地理解每个模型的细节,学习数学知识是必不可少的。
- 高等数学
高等数学中的求导部分,包括常见函数的导数,链式法则等。
- 线性代数
线性代数中向量,矩阵部分,包括矩阵运算,几何含义,特征值,常见矩阵分解等。
- 概率论
概率论中参数估计,条件概率,包括极大似然估计,条件概率公式,常见的概率分布等。
- 最优化理论
最优化理论中的概念,梯度下降法,包括优化问题的描述,凸优化的基本概念,KKT条件,琴森不等式,牛顿梯度下降法等。
推荐一本免费的参考书供大家学习。在这本书中,机器学习的数学理论和模型算法都有涉及,第一部分详细的描述了机器学习中用到的数学知识,第二部分列举了机器学习中非常经典的几个算法,是一本内容全面,脉络清晰的好书。
图10 Mathematics for Machine Learning
(2)机器学习基础知识
要了解机器学习,光学习数学知识是远远不够的,还要落到机器学习本身上。笔者把机器学习的基础知识分成两块,第一块是概念,主要是要了解机器学习中各种概念,第二块是模型,主要就是学习各种具体的模型算法。
概念方面
- 经验风险和结构风险
- 过拟合和欠拟合
- 训练集,测试集和验证集
- 机器学习的PAC框架
模型方面
- Logistic Regression(逻辑回归)
- 决策树(ID4.5,CD3)
- 集成学习
- GBDT(梯度提升树)
- XGBoost
- LightGBM
- KNN
- K-means
- PCA
推荐一本中文参考书供大家学习。《统计学习方法》是李航博士写的一本中文机器学习教材,内容丰富,基本覆盖了机器学习中重要的概念和所有常用的经典的机器学习算法。这是一本从业者必读的机器学习书籍之一。
图11 统计学习方法
(3)机器学习基础实践
俗话说的好,“纸上得来终觉浅,绝知此事要躬行”。熟悉了机器学习的理论知识之后,光有理论,不会实践是不行的,机器学习的实践主要可以参加一些数据竞赛,比如:
- Kaggle
图12 Kaggle
- 阿里天池大数据竞赛
图13 阿里天池大数据竞赛
通过实践,不仅可以和理论知识相结合,可以快速地掌握常见工具的使用,而且,通过参考他人的方案,可以非常快速地提高自己对机器学习的实践水平,是初级阶段提升最快的方法之一。
2. 进阶知识
图14 进阶思维导图
结合自身和客观的情况,对于有经验的从业者来说,可以从以下几个方面去提升自己的机器学习水平。
首先是数据层面,包括
- 问题抽象
- 数据集的构造
- 特征工程和可视化
然后是模型算法层面,包括
- 模型细节的了解,模型优缺点
最后是具体实践层面,包括
- 大数据量的模型训练
- 大数据量的模型预测
- 机器学习模型部署
五、结尾
由于笔者水平和文章篇幅有限,机器学习本身内容非常的丰富,本篇文章无法面面俱到,仅作为对机器学习感兴趣的读者入门了解。
在接下来的分享过程中会针对文中提到的一些部分,深入地剖析和讲解,各维可以扫码参与,敬请期待。
想要加入社区或对本文有任何疑问,可直接添加作者微信交流。
图:作者微信
我们是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的PowerData数据之力社区。
可关注下方公众号后点击“加入我们”,与PowerData一起成长
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。