对于IT界的从业人员而言,从事传统信息系统项目开发的项目经理、工程师,可能大多数都被这个时髦的名字所吸引,但却不知如何下手打造一个高大上的AI项目,就像古代的杨子,遇见了歧路便只知道蹲下来哭泣。好在这是一个最美的时代,我们不用再望着千百条路不知如何下脚,大量头戴智慧光环的科学家与工程师们,早已为我们打下了牢固的基础,出现了许多连业余人员都可以快速上手的AI建模平台。
说到机器学习,可能很多人会望而却步,认为需要掌握非常高深的数学知识和各种晦涩难懂的理论。幸而不幸,专业的AI人员确实需要掌握牢固的数学知识,也需要精通机器学习的各种理论,但对于构建一个AI项目却不一定要精通这些知识。这里我会从一个简单场景逐步铺开,帮助大家了解一个典型的机器学习项目构建过程。
所谓众生熙熙皆为利来,那我们就拿金融业中的场景开刀。金融业可能是大家非常关注的一个领域,就连穷得走漏了风声的我,也略微知道几个金融业术语,比如信用卡欺诈。既然第一个冒出的念头是信用卡申请欺诈,那就听从内心的声音,让我们以信用卡申请欺诈检测为例聊聊AI项目的构建过程。
万事开头难,然后中间难,最后结尾难。对于很多人而言,AI项目似乎就是这种感觉,总是让人难以捉摸。有人说,AI三要素是“数据”、“算力”和“算法”,但我认为还有一个要素也不可或缺—“业务”。与学术研究不同,工程项目通常是面向特定的业务场景及特定的业务目标的,平时我们在构建AI项目的过程中,总是习惯性地把整个过程划分为数据处理、特征工程、模型训练、模型推理及模型部署等过程,但其实对业务的分析与理解贯穿项目始终。一位前辈说,以他从事AI项目开发的经验,理解了业务、有了充足的数据、找到了合适的算法,这个项目便十拿九稳,其中吃透业务是至关紧要的一步,我深以为然。
既然业务理解会贯穿始终,那么我们首先来谈谈业务理解。简单地讲,业务理解就是要去弄清楚我们要做的事(业务常识)、这件事的现状(现有资源)以及要达成的目标(业务目标)等。对于信用卡欺诈检测项目而言,除了项目准备、资源准备等前期工作外,首先需要做的就是深入理解信用卡业务,知道什么是信用卡申请欺诈、为什么容易出现信用卡申请欺诈、我们拥有哪些可用的数据资源,以及信用卡欺诈检测系统要达成的目标,等等,然后才去思考如何做信用卡申请欺诈检测。业务理解的过程,往往需要业务专家的深度介入,需要算法建模人员与业务专家的密切配合。
在理解了业务需求后,对数据的获取、分析及处理就成为了无法绕过的重要步骤。数据的获取相对容易理解,简单点说就是在合法合规的前提下,尽可能多地收集到与业务问题密切关联的数据,比如信用卡申请人在申请信用卡过程中填写的个人信息、人行征信报告、第三方机构的信用分析报告等等,均可作为信用卡申请欺诈检测系统的输入数据。数据分析的主要目的是认识数据并从数据中提取有用信息,这又是一个一言难尽的大范畴,工具五花八门,手段也多种多样,甚至贯穿着整个AI项目构建过程。
一般而言,从不同渠道获取到的数据,其质量良莠不齐,充斥着大量的冗余、重复、缺失、异常以及不一致的数据,很难直接用于AI模型的构建过程。冗余数据的判定需要结合业务分析、相关性分析等手段,通常包括在业务上无效的数据,或与别的数据高度相关的数据等,这类数据与重复数据的处理方法很简单,简单粗暴地删除即可;缺失数据的处理方式有很多种,通常有简单删除、特殊值填补、相关数据衍生等常规方法,以及热卡填充、聚类填充、基于简单机器学习模型预测的高阶方法等;而异常值的处理,需要采用箱型图、三西格玛准则、DBSCAN聚类及孤立森林等方法进行分析,识别出数据中的异常值后,按照缺失值的处理方式进行处理;不一致数据主要指那些意义相同但表示方式不一致的数据,比如大小写混用、日期格式不规则、地址不规范以及单位不统一等,这类数据只需要结合数据规则进行统一规整即可。