ML专案的特徵工程为什麽存在?包含哪些层面?怎麽练手感?

在讨论MLOps的过程当中,许多客户会针对他们有兴趣的事情提出不同的问题,像是:模型监测、安全性、常见案例、资料的隐私处理等等。其中一次在谈论AWS的ML Lens白皮书的时候,在看这张:End-to-End Machine Learning Process.

*来源:Phases of ML Workloads

大家便开始讨论目前想做的应用情境、公司的资料储存状况等等。其中一个讨论来自则是关於特徵工程:"我记得以前也做过机器学习的专案,像是商业案例要对应到机器学习问题、挑演算法这些,我都能理解,可是特徵工程是在做什麽?"

为什麽会有特徵工程

特徵:可以想成是电脑透过数值,理解这个世界的方式。举例来说,我们想预测一颗苹果咬下去是甜的、是酸的,就会需要收集一些跟这个苹果有关的数据去陈述。在陈述这颗苹果的时候,可能包含颜色、重量、甜度、品种、大小、摘取时间、产地等等。这些围绕在苹果的数据,帮助人、也帮助电脑去理解这个资料点的一些特性。

对於传统的机器学习,通常是用来解答具有特定答案的单个问题或领域。资料团队准备数据,在一些简单的资料整理过後就可以给模型来学习了。过去在讲到机器学习的时候,特徵值的数量也不太多,或者当特徵值一多的时候,大家还会去思考怎麽使用评估函数(evaluation function)来帮现在的状况对应到一个函数值。

而神经网络在过去已经是一门学问,但是在 1980 年代重新出现。当时研究人员开发了反向传播参数的方法构建和训练多级神经网络。Yoshua Bengio、Yann LeCun 和 Geoffrey Hinton 在该领域做了许多激发想像、开创性的工作。这三位也在 2018 年获得图灵奖。

在过去的10几20年间,大家使用电脑、资讯产品的时间越来越多了,资料的产生也是过去以往无法比拟的速度在增长。同时间硬体的进步,也让资料科学家们能够从CPU计算走到GPU甚至TPU运算。这些在过去价格高昂的机器,现在也能够以更亲人的价格去使用它们。能够做的机器学习、深度学习题目也变得更多元。如果还想了解更多近期深度学习的发展,也可以参照这篇阅读2010 年代:深度学习十年 / 2020 年代展望

在资料量与计算能量双重成长之下,机器能学习的特徵值也变得比以前要多出许多,有些模型甚至从数百、上千的特徵值当中学习。也因此在机器学习专案的开发过程当中也增加了特徵工程,特别针对不同的特徵来事先处理,让资料集可以更容易被演算法识别、分类。

特徵工程为什麽重要

根据上图可以看到,资料科学家所做的工作中有近 82% 是构建、清理、组织和收集数据。这些工作都属於特徵工程的一环。像是确保资料都有被标签注记,透过不同的数学特徵来确保资料点是能够被电脑简单拆分的。

常见的特徵工程

特徵工程其中一件重要的事情,就是必须让领域专家与资料科学团队合作。资料集当中存在两种噪音,其存在可能会对模型带来不好的影响。一种是跟领域知识有关,哪些资料是否会影响我们要预测的标的。另一种则是跟数学有关,这些噪音是否会影响模型的表现,有没有资料点在这个阶段需要增加重新取样、删除?每一个产业的专家在过去都有其经验,知道公司面对的客群大概会是什麽分布、有哪些资料点会是公司比较在乎或是不在乎的等等。这些事情如果只就数学面来看,可能不一定呈现在资料集里面。

特徵工程通常包含特徵建构、特徵提取、特徵选择,让模型的各项指标(例如准确率、召回率)能够再提升一些和异常处理(异常值检测、处理缺失值、重新采样不平衡数据),让模型有更好适应性的前处理。

特徵建构(construction)/特徵转换

透过与人类行为/商业活动的逻辑,让资料集能够反映真实世界的样貌。举三个常见的例子:(1)日期(2)公车站牌(3)文字、图像分析

(1)日期:通常会是一个datetime的字串,像是2021-12-31 23:59:59.978,本身包含的讯息像是年、月、日、时、分、秒。在处理日期的特徵工程时常会把这些拆开来,除了可以加上相对应的季节、是不是假日、是不是节庆、一周的第几天等等的额外讯息,让模型可以学习到一些不同时间需要应对有不同的行为模式。

(2)公车站牌:或是其他跟地址位置相关的特徵,其对应的数字或字串通常都不代表有什麽意涵,但是却是描述资料点重要的特徵时。就会需要把公车站牌的名字,转换成经纬度、转换成在该路线上面的公里数等等。甚至是该公车站牌距离市中心多远、距离起点终点的距离等等,也都比单纯放上一个公车站牌的字串要有意义许多。

(3)文字、图像分析:在文字与图像的处理上,也都会把资料转换成向量。像文字,就会透过BERT等模型转换成一个向量,让电脑方便运算,用来代表平常人类阅读的文字。图片的话,最常使用的就是转换成RGB的向量。

特徵提取(extraction)

透过数学上的转换,让不同类别的资料可以更清楚地分开。可以是同样维度的转换,或是降低原本有的维度。以下图为例,如果要区分红色和蓝色的点,会需要一个圆形的函数去切分开他们,在适当的转换之後则可以用一条线、或一个平面轻易的将两者切分开来。这两者相比较的话,会是右边的资料点对於机器学习模型来说要友善一些。

*来源:feature engineering, before and after

常用的转换方式有:傅立叶转换、图像档案、数学特徵转换。而讲到降低特徵值的维度的话,则有PCA、TSNE 等算法可使用。透过不同的数学运算来让不同群集的资料点更靠近、或者距离更远,同时也需要保持资料点本身的完整性,不要因为转换之後资料点的数学或统计特性就消失了。

特徵选择(selection)

前面的几个应用,都是怎麽让特徵值变得更多元,更仔细的阐述事情的状况给电脑知道。有的时候也可能我提供给电脑的特徵太多了,因此就会想要有一些方式可以帮助我们选取重要的特徵就好。常见的特徵挑选方式,是使用:
(1) F-score 可以找到特徵和目标列之间的线性关系,并相应地创建分数。使用每个特徵的分数,我们可以消除具有较低 F 分数的特徵。同样,相互计算得分可以同时捕捉特徵和标签(label)之间的线性和非线性关系。

(2) 卡方是统计学中用来检验两个事件独立性的一种检验。较低的卡方值表示两个变量(特徵和目标)是独立的。两个变量的较高值意味着依赖,因此是重要的特徵。

(3) 其他常见的方式也可以到sklearn的官网看看,大家常用的特徵挑选方法有哪些。

这几种方式不外乎就是看看特徵之间是否相似、是否依赖,有没有可以剔除的。特徵与标签之间有没有相关,有没有直接就可以找到线性关系的可能。经过几次的计算、搜寻之後只会留下重要的特徵了。

还有其他的异常处理像是:异常值检测、处理缺失值、重新采样不平衡数据。也都属於常见的特徵工程要处理的范围。也蛮好从名字就可以想见内容是要做什麽资料处理。

结语

谈论到什麽是特徵、以及怎麽处理特徵工程之後,个人觉得在处理资料上,其实还是会需要经验的堆叠。也因此很推荐大家去看看各式各样的ML问题,像是企业成功案例分享、或是常见的Kaggle竞赛等等。虽说Kaggle的资料集已经比真实世界的要乾净、好处理很多,他仍然不失为一个,培养自己如何做特徵工程的好方式,竞赛的程序码分页也可以看看其他人是怎麽做的。除了这些之外,也可以直接找open dataset或者网路上爬取资料下来练习(以不违反该网站的分享license为前提)。

Real-life	vs Kaggle Competition
*来源:Real-life vs Kaggle Competition

今天先谈到这边,明天见。

Reference

[1]. Why Deep Learning Is So Hot Right Now
[2]. AI/Machine Learning has been around for many years, how come it suddenly has become such a hot topic?
[3]. The 2010s: Our Decade of Deep Learning / Outlook on the 2020s
[4]. Feature Engineering in Machine Learning
[5]. Feature Engineering Made Easy. When it comes to machine learning, I…
[6]. 4 Tips for Advanced Feature Engineering and Preprocessing - KDnuggets
[7]. Top 5 feature engineering tips for better models


<<:  LeetCode解题 Day07

>>:  Raspberry pi 4b 到手

Day 26 - 设定 OSPF

今天以 FRR 为例,OSPF 需要设定一个 Router ID,且 Area 必须相同。 除此之外...

Day26|【Git】 从 Git 中移除重要个资或彻底清除档案 - git filter-branch

有时候当我们在写程序码时会用到一些 API 金钥,或是个人的帐号、密码,这些都是属於「敏感资讯」,一...

全方位对比:SmartQuery VS FineReport来自报表工程师的经验

写在前面 相比起BI这些当红炸子鸡概念,报表工具大家可能不太熟悉,希望这篇文章能够给大家提供一些新的...

谁温暖了资安部-27(反渗透)

「小左,你觉得你适合资安部门吗? 我觉得,你应该比较适合资讯部门。」 ((资讯部? 我在资安部觉得很...

[Day2] 资讯安全的攻击与威胁-社交工程

今天纪录资讯安全的攻击与威胁里的社交工程。 社交工程 社交工程是一种透过沟通、欺骗的手法,取得他人的...