目录
一、数据智能化挑战
二、算法开发的作用
三、算法架构与算法使用场景
3.1 算法架构总览
3.2 算法的适用场景
3.2.1 金融风控和反欺诈
3.2.2 文本挖掘分析
3.2.3 广告精准营销
3.2.4 个性化推荐
四、 算法开发涉及的内容
4.1 建模
4.1.1 可视化建模
4.1.1.1 可视化建模作用
4.1.1.2 拖曳式实验流
4.1.1.3 丰富算法组件
4.1.1.4 实验周期调度
4.1.1.5 告警通知
4.1.1.6 多角色协同
4.1.2 Notebook建模
4.1.2.1 Notebook建模的作用
4.1.2.2 JupyterLab在线编程
4.1.2.3 支持通过API方式调用标准算法组件
4.1.2.4 支持多语言
4.1.2.5 高可用
4.2 数据集管理
4.2.1 概述
4.2.2 数据接入
4.2.3 数据标注
4.2.4 数据探查
4.3 核心算法组件介绍
4.3.1 概述
4.3.2 算法组件分类图
4.3.3 算法组件分类说明
4.3.3.1 数据获取及存储
4.3.3.2 数据预处理
4.3.3.3 特征工程
4.3.3.4 统计分析
4.3.3.5 机器学习
4.3.3.6 深度学习
4.3.3.7 文本分析
4.3.3.8 网络分析
4.3.3.9 工具类
4.4 算法框架多版本支持
4.5 与离线、实时开发的联合应用
4.6 算法框架简介
4.6.1 概述
4.6.2 TensorFlow
4.6.3 PyTorch
4.6.4 LightGBM
一、数据智能化挑战
DT时代的数据具有高维稀疏特征,对算法处理提出了更高的要求。面对百亿样本级别的数据量,传统的数据挖掘在辨识价值信息、挖掘数据关系和数据趋势方面捉襟见肘。此外,DT时代的业务具有快速迭代、敏捷开发、灵活试错的特性,新的时代特征为数据智能化发展带来了新的挑战,具体表现在如下方面:
- ❑数据处理难度加大;
- ❑业务处理要求变高;
- ❑烟囱式的开发模型;
- ❑散落各地的模型服务;
- ❑模型研发环节繁多;
- ❑冗余、分散的基础设施;
- ❑数据处理/特征工程;
- ❑多角色企业研发团队。
二、算法开发的作用
算法开发套件作为一站式的企业级机器学习工具,旨在快速赋予企业构建核心算法服务的能力,它集成了以批计算为核心的离线模型训练功能,以流计算为核心的在线机器学习,以及基于在线查询、即席分析的数据探索和统计分析能力。算法开发套件为算法人员提供可视化建模和Notebook建模两种建模方式,集成主流的机器学习、深度学习计算框架和丰富的标准化算法组件能力,能够帮助企业快速实现数据智能、数据科研、预测分析等人工智能应用的构建与落地。
三、算法架构与算法使用场景
3.1 算法架构总览
3.2 算法的适用场景
不同企业的算法应用场景不一样,数据的差异性决定了每个企业的算法效果会有很大差别,数据和特征决定了机器学习的上限。比较常见的应用场景如下:
3.2.1 金融风控和反欺诈
利用关联分析、标签传播、PageRank和社团发现等图算法组件,构建金融反欺诈核心能力,根据客户本身属性和行为数据识别虚假账号和欺诈行为,增强金融监管能力,保障金融业务稳定和安全。
3.2.2 文本挖掘分析
利用命名实体识别、图挖掘等文本算法能力,通过分析非结构化的文本信息自动识别其中的实体以及它们之间的关系,构建关系网,可以深度分析以前未处理的一些线索。
3.2.3 广告精准营销
通过深入洞察客户需求、偏好和行为,利用特征分箱、LightGBM、PMI等算法组件构建的机器学习模型来智能挖掘潜在客户,实现可持续的精准营销计划和高质量曝光率,有效提升广告点击率。
3.2.4 个性化推荐
利用协同过滤、XGBoost等推荐场景组件,通过分析海量用户行为数据构建多维用户画像,实现千人千面的推荐,提高转化率。
通过算法开发工具可以大幅提升这些场景的落地效率,当企业缺少算法工程师构建场景时,可以降低企业构建智能化场景的门槛,快速实现企业需求。
四、 算法开发涉及的内容
4.1 建模
4.1.1 可视化建模
4.1.1.1 可视化建模作用
可视化建模面向算法工程师和数据分析人员,通过拖曳的可视化交互方式便捷编排算法实验,集数据处理、模型训练和评估、在线预测于一体,帮助开发者实现零代码的开发工作。为达到这一目标,功能设计需要考虑以下方面。
4.1.1.2 拖曳式实验流
通过可视化拖曳,自由编排数据集、模型以及机器学习/深度学习等算法组件,组成有向无环图。屏蔽了复杂的算法代码开发过程,极大降低了用户进行算法开发或数据分析的门槛,为用户提供“所见即所得”的交互体验,帮助用户在面对智能业务需求时快速响应、快速试错。
4.1.1.3 丰富算法组件
提供大量开箱即用的算法组件,支持用户完成数据处理、模型训练、模型评估和预测的实验流程设计与调试,覆盖主流算法应用场景。通过可视化配置算法参数,零基础算法背景的用户也能快速上手,训练出可用的算法模型。同时,对算法模块进行不同的参数设置,能让模型训练过程透明可控,分析结果更准确。
4.1.1.4 实验周期调度
在实际的智能业务场景中,经常需要根据每天产生的最新数据来定时运行实验和训练算法模型。根据不同的需求灵活安排调度实验,需要支持细粒度的调度周期,包含分钟、小时、天、周、月等级别。
4.1.1.5 告警通知
算法模型训练时间往往较长,设置告警通知可以保证在第一时间得知实验运行和模型训练的结果。提供不同的告警方式(邮件、短信、钉钉等),可自定义告警规则和内容,灵活适配不同的用户习惯。
4.1.1.6 多角色协同
算法开发是一项团队性工作,需要很多角色共同参与。从底层资源的运维到上层的项目管理,多人多角色分工协作的项目管理模式,可以让算法开发者专注算法建模任务,减少烦琐的底层资源运维工作,同时保障人员权限隔离和数据安全。
4.1.2 Notebook建模
4.1.2.1 Notebook建模的作用
Notebook建模提供了一个集成的Jupyter工具,提供专业算法开发环境和主流算法框架,帮助算法工程师快速、轻松地通过代码开发来构建和训练机器学习模型。Notebook建模环境的构建,需要考虑的功能点如下。
4.1.2.2 JupyterLab在线编程
主流的专业机器学习环境,轻便快捷,支持开发结果查看。JupyterLab是一个交互式的开发环境,使用它,用户能够以灵活、集成可拓展的方式处理文档和活动。可开启终端,用于交互式代码运行,支持丰富的输出。它支持代码、Markdown文档、JSON、YML、CSV、各种格式的图片、Vega文件等多种文件,还支持多种插件,能最大限度提升算法开发生产力。
4.1.2.3 支持通过API方式调用标准算法组件
内置大量优化的机器学习算法,高效处理海量数据,提高开发人员的开发效率。
4.1.2.4 支持多语言
包括Scala、Python、R、Shell等,同时可进行拓展。
4.1.2.5 高可用
支持共享存储,实现数据高可用和数据隔离;支持Kubernetes集群,保证服务的高可用和资源隔离。
4.2 数据集管理
4.2.1 概述
数据集是算法建模过程中不可或缺的原材料。由于企业业务场景的复杂性,算法开发过程需要管理并整合不同来源的数据,同时对数据集进行标注和可视化探查,使数据的使用更高效,简化建模流程。作为统一维护数据集的场所,数据集管理需要考虑的功能点如下。
4.2.2 数据接入
支持多种类型的数据,主要可分为结构化数据和非结构化数据。提供多种数据接入方式,包括本地数据上传、HDFS数据上传、Kafka数据接入、数据源接入等。可对数据集进行统一管理,并直接在可视化构建实验流时使用。
4.2.3 数据标注
高质量的数据是模型和算法突破瓶颈的关键因素。通常,数据标注越精准,算法模型训练的效果就越好。大部分算法在拥有足够多普通标注数据的情况下,能够将准确率提升到95%,但要从95%提升到99%甚至99.9%,就需要大量高质量的标注数据。通过对人工少量标注的样本进行建模训练,然后用训练出来的模型进行数据预标注,由人工判断标注是否准确,并反馈结果用于优化算法,直到机器标注的准确率达到要求。支持的数据标注类型包括图片、语音、文本、视频等,通过抽检、多重审核机制把控标注结果的准确性,提升数据输出质量。
4.2.4 数据探查
数据探查是算法开发人员建模前必不可少的工作。通过数据探查可快速评判数据集的质量和可用性,并根据数据集展现的特点评估适用的模型范围。在数据探查时,不仅可对数据内容进行预览,还可以搭配丰富的统计分析组件对数据进行可视化展示,直观反映字段级的数据特征。
4.3 核心算法组件介绍
4.3.1 概述
为了提高可用性和降低使用门槛,主流机器学习平台都会提供内置的机器学习算法组件,覆盖从数据接入、数据预处理、特征工程、模型训练到评估和导出的完整算法建模过程,辅助用户高效完成复杂的业务建模。
4.3.2 算法组件分类图
4.3.3 算法组件分类说明
4.3.3.1 数据获取及存储
数据获取及存储组件主要用来从HDFS等存储平台中读取或保存数据和文件,是整个机器学习平台的运行基础。
4.3.3.2 数据预处理
由于现实中的大多数数据是不完整、不一致的脏数据,无法直接应用算法,或算法效果不尽如人意,因此需要在算法建模和预测之前对数据进行简单处理。此外,机器学习平台往往很难支持全量数据分析,当要处理或者分析大数据量时就需要借助抽样技术进行样本分析。为了解决上述问题,通常可以采用数据清理、数据集成、数据变换、数据归约及数据采样等方法。因此数据预处理是提高数据质量和算法效率的关键因素。常见的组件有随机采样、加权采样、分层采样、拆分、join、归一化、标准化、缺失值填充、类型转换等。
4.3.3.3 特征工程
特征工程是指在算法开发过程中,利用特征选择、特征加工、特征降维等技术手段构建对结果具有显著影响或便于模型处理的特征。利用特征工程相关的组件可以快速构建特征体系,快速选择有效特征,进而大幅提高算法的质量,提升分析效率。常见的组件有主成分分析、特征尺度变换、特征离散、特征异常平滑、奇异值分解、one-hot编码等。
4.3.3.4 统计分析
主要用来探索和分析数据特征及其他相关数据的深层统计意义,涵盖相关性分析、分布、参数校验等功能。常见的组件有直方图、协方差、相关系数矩阵、正态检验、皮尔森系数、T检验、百分位、洛伦兹曲线、经验概率密度图等。
4.3.3.5 机器学习
机器学习是算法开发的核心模块之一,包含主流分类算法、回归算法和聚类算法,可以满足大多数算法需求。
- 分类
分类是监督学习领域的一个核心问题,分类用于推测输入数据的类别。当分类的类别为两个时称之为二分类问题,当分类的类别为多个时称之为多分类问题。分类预测在许多领域都有应用,例如,在银行领域用来预测客户是否逾期还款,在新闻领域用来预测新闻所属的类别,在医学领域用来预测病人是否患病等。以预测病人是否患病为例,将历史病人数据作为训练数据,通过数据预处理和特征工程组件将病人的相关体征与信息处理成输入的特征,并将是否患病作为标签列,就可以通过分类组件与机器学习预测组件对后续的病人是否患病进行预测。常见的组件有GBDT二分类、线性支持向量机、k-近邻、决策树分类、多层感知机分类、朴素贝叶斯分类、LightGBM分类、随机森林分类、逻辑回归分类等。
- 回归
回归是监督学习领域的一个重要问题,用于预测输入变量和输出变量之间的关系。按输入变量与输出变量之间的关系类型来分,回归可以分为线性回归和非线性回归。许多领域的问题都可以转化为回归问题,例如股价预测、销量预测、营业额预测、房价预测等。以房价预测为例,将过去一段时间的数据作为训练数据,利用数据预处理和特征工程组件将影响房价的信息处理成输入的特征,并将房价作为标签列,就可以通过回归组件与机器学习预测组件对未来的房价进行预测。常见的组件有GBDT回归、随机森林回归、线性回归、LightGBM回归等。
- 聚类
聚类是无监督学习领域被研究较多的问题,其目的是将数据分为多个簇,使得簇内的样本较为相似、簇与簇之间样本的差距较大。聚类在许多领域都有着广泛的应用,例如在电商领域用于发现兴趣相似的用户,进而向这类用户推荐相似的商品。通过数据预处理和特征工程组件将原始数据处理成输入的特征,就可以通过聚类组件对数据进行聚类。常见的组件有k-means、高斯混合聚类等。
4.3.3.6 深度学习
支持TensorFlow、MXNet、Caffe、XGBoost、LightGBM等主流深度学习框架,利用这些组件可以灵活、高效地构建深度学习应用。
4.3.3.7 文本分析
主要包括文本相关的特征处理、模型构建等功能,专门用来实现文本分类、关键词抽取、摘要生成等文本相关应用。包括PLDA、TF-IDF、Word2Vec、Doc2Vec、词频统计、去停用词、分词处理和关键词抽取等。
4.3.3.8 网络分析
提供了基于图数据结构的分析组件,这些组件一般用于解决包含网状关系的业务场景,例如金融风控、社群发现、最短路径查找等。常见的组件有最大联通子图、标签传播分类、标签传播聚类、Modularity、树深度等。
4.3.3.9 工具类
工具类组件是解决组件间数据格式不一致,以及满足其他额外数据处理需求的一系列组件,是对现有其他功能组件的补充。常见的组件有自定义SQL、PySpark、表转文件、文件转表等,涵盖数据预处理、特征工程、机器学习、深度学习、文本处理、图像处理、视频处理、人脸识别、OCR、车牌识别、知识图谱构建与推理等。
4.4 算法框架多版本支持
实现同一个框架不同版本统一运行,可对不同版本进行统一管理。同时支持机器学习/深度学习计算框架与大数据平台无缝打通,共享存储和计算资源。
多版本实现要支持两种技术:一种是基于Conda的环境隔离,可以将不同版本的算法框架打包成不同的Conda环境,支持运行时加载,不侵入已有的机器环境;另一种是基于Docker的隔离,将不同版本的算法框架打包成不同的镜像,运行时根据需要加载不同镜像来执行,该方案隔离性更好,但会有虚拟化性能的损失。
4.5 与离线、实时开发的联合应用
算法模型具备开发、运行这两个典型状态。开发态主要是对算法模型进行训练,通过输入训练数据集和测试数据集对模型进行训练,并周期生成模型;运行态是将算法模型部署到运行的容器或其他执行系统中,对输入数据进行计算并输出结果。
可见,无论是开发还是运行,都具备输入和输出这两个重要特性,因此也能够与数据批量处理、流处理进行深度整合使用。甚至可以将开发态、运行态整合在流批一体的计算引擎中,持续训练模型、发布模型,并通过最新模型处理数据和返回结果。
在训练模型方面,可以将训练文件引入数据开发的业务流程中,进行统一调度运行。在上游处理离线数据之后,启动模型训练,结合离线数据、实时数据完成模型训练并输出模型,同时自动创建版本用于后期的管理和引用。
在应用模型方面,可以将算法模型引入数据计算任务或即席分析过程中,通过动态加载定期更新版本的算法模型,为业务提供最新的算法服务,提升数据应用效果。
4.6 算法框架简介
4.6.1 概述
机器学习框架涵盖用于分类、回归、聚类、异常检测和数据准备的各种学习方法。深度学习利用多层神经网络被广泛应用到图像、文本、语音等场景中。机器学习/深度学习计算框架的出现降低了算法开发的入门门槛,让开发人员可以方便地利用内置的算法SDK,大大减少算法模型的开发工作量。算法开发工具需要具备以下功能特性。
4.6.2 TensorFlow
TensorFlow是谷歌研发的用于研究和生产的开源机器学习库,提供了各种API,可供初学者和专家在桌面、移动、网络和云端环境下进行开发,是目前最常用的深度学习框架。
4.6.3 PyTorch
它是Facebook开源的一个深度学习框架,采用动态计算图架构,具有先进的设计理念、完整的生态和易用的接口,也是目前常用的深度学习框架之一。
4.6.4 LightGBM
它是一个梯度boosting框架,使用基于学习算法的决策树。它有以下优势:训练速度快,内存占用低,准确率高,支持并行计算。
好了,本次内容就分享到这,欢迎大家关注《数据中台》专栏,后续会继续输出相关内容文章。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!