机器学习模型上线及优化流程

2023-10-29

机器学习模型上线及优化流程

  • 时间:2020-07-09

通用流程:

如何应用机器学习模型来构建一个智能化应用的通用的过程

1) 业务问题界定和定义

将一个业务中待解决问题转化为一个机器学习模型应用问题。这个步骤非常重要,要有清晰的业务目标,避免产品、服务沦为技术展示。

如何将一个业务中待解决问题转化为一个机器学习模型应用问题,是机器学习应用的第一步,也确定后面所有流程的工作方向。如果这个部分界定或拆分的不好,那就很难产出好的业务效果。

  • 监督学习:

    • 分类:预测数据所属的类别;(包括:二分类、多分类、多标签分类)
      • 应用:(1)NLP:垃圾邮件检测、情感分析等。(2)CV:图片质检(黄赌毒暴政)、猫狗检测、垃圾分类
      • 算法:(1)传统:K近邻算法、线性回归、支持向量机(SVM)、决策树和随机森林、神经网络(浅层);(2)深度:DNN、CNN、RNN;
    • (复合型)目标检测:找出图像中所有感兴趣的目标(物体),确定它们的位置和大小。
      • 应用:LOGO识别、人头识别、ps检测
      • R-CNN、Fast/Faster R-CNN;SSD、YOLO 。以最大得分的框去与其他框做IoU操作,并过滤那些IoU较大(即交集较大)的框。
    • (复合型)OCR:身份证OCR、银行卡OCR
    • (副产物)分布式表征:将一个图像、自然语言、录音抽象为机器能理解的向量。
      • 应用:文本相似度、图像搜索、看图写话
      • 算法:(1)词嵌入onehot、Word2vec;(2)DNN中间层(图像)
    • 序列模型:
      • 应用:词性标注、分词、命名实体识别、信息抽取
      • 算法:隐马尔可夫HMM、条件随机场CRF、RNN-CRF
    • 回归:根据先前观察到的数据预测数值;
      • 应用:房价预测、股价预测、身高-体重预测等。
      • 算法:线性回归、多项式回归、逻辑回归
  • 无监督学习

    • 聚类算法:信用卡交易异常检测、相册人物聚类、
      • 模型:K均值算法(K-means)、基于密度的聚类方法(DBSCAN)、最大期望算法
    • 可视化和降维:降维的目的在于不丢失太多的信息的情况下简化数据。
      • 模型:主成分分析pca
    • 关联规则学习
      • Apriori、Eclat
  • 强化学习:解决交互学习问题:国际象棋、deep mind LOL

    • Q学习、深度强化学习

2) 数据样本的筛选和构造

在这个阶段,会确定我们可用的数据样本的规模,确定训练样本、测试样本的拆分方式。有几点思路:

1) 尽量多的数据样本

爬虫、业务方提供。数据增强:
NLP:可以通过重复采样、时间窗口滑动等方式增大样本规模。
CV:数据增强:随机的裁剪、旋转、缩放变形、翻转(from keras.preprocessing.image import ImageDataGenerator)

train_datagen = ImageDataGenerator(rescale=1. / 255, # 预测的时候,特征也要这么处理
    shear_range=0.2, # 用来进行剪切变换的程度
    zoom_range=0.2, # 用来进行随机的放大
    horizontal_flip=True) # 随机的对图片进行水平翻转

2) 针对预测目标做一些倾斜采样处理(业务方提供常见,eg:电话业务分类)

例如如果正样本少,而我们应用主要需要预测正样本,这时候,可以针对已有正样本进行重复采样,扩大正样本在总体样本中的比例。

3) label的定义与标注

label的定义和问题的界定直接相关。 Label我们要尽量选择用户在产品中做出的明确清晰的标注。例如是否点击了广告、是否发单,需要尽量和业务方一起来做label。

理想是丰满的,但显示是骨干的。往往有时候缺少标签数据,需要自己构建。

  • 分类标签:可以利用
  • 目标检测、信息抽取类,就要靠自己标注。

4) 选择机器学习算法

  • 在数据规模大不是特别特别大情况下,成熟机器学习算法的结果差异不会太大。
  • 如果有大数据,一般DL是比ML效果好。越新的越好。

5) 确定模型性能的度量方式

在选择了适合训练集的模型之后,可以用测试集来评估它在新数据上的性能,以评估泛化误差。如果对模型的性能感到满意,那么就可以用它来预测未来的新数据。

  • 分类模型:Accuracy (Precision、Recall、F1 score)
  • 目标检测:在某iou标准下:mAP(mean Average Precision)即各类别AP的平均值,(AP: PR曲线下面积)PR曲线: Precision-Recall曲线
  • OCR:字符串相似度sim的均值:1- L/max(a,b) L为编辑距离
  • 序列模型:F-score: 分别对每种实体类别分别计算对应类别的F-score,再求整体平均
  • 回归模型:均方误差MSE、均方根误差RMSE、平均绝对误差MAEMAE

6) 模型优化

包括特征工程、算法调参、bad case 分析等,这是一个反复迭代优化的过程。

6.1 特征工程(ML):

  1. 加入更多更好的特征。首先自己要深入理解业务的运作方式,了解影响模型label目标的主要业务因素;其次多和业务的专家沟通,获取到从他们角度认为重要的因素;拉入更多人员进行头脑风暴,找到尽可能多的影响因素。 (微博表情例子)
  2. 特征可视化,可以通过分布图等方式观察下特征数据的特点,并去除一些异常特征。
  3. 统计特征:有了原始的特征因素后,可以让这个特征具备更强的表达性。统计化是一个常用的方式,主要有最大值、最小值、平均值、标准差、方差、中位数、分布区间统计数等。例如周一的平均订单数、最大订单数等。
  4. 特征组合:组合多个相关特征提取出其相关的规律,例如多个特征加和、求差、乘除、求斜率、变化比率、增长倍数等。(今年的购买记录 减 去年的记录 = )
  5. 特征拆解:将一个特征拆为多个更易理解的特征。 例如日期,可以拆为年、月、日、小时、分、秒、星期几、是否为周末。是否为节假日。
  6. 统计性特征映射为解释型特征:如将一个数字型或统计性特征,映射为多个范围区间。历史月订单0~5 为低频、6~15 为中频、 大于16为高频,
  7. 特征筛选:当有很多特征时,有部分特征是强相关的,属于冗余特征,贡献小甚至负面贡献。这时候需要做一些特征筛选。例如特征两两组合确认特征之间的相关性系数,对于相关性非常高的特征只保留一个;从基础特征集合开始,逐渐加入新特征或新特征集实验,如果新特征效果不好,则丢弃。
  • 深度学习特征工程:

论文中相对于机器学习手工设计特征,“深度能自动获取特征”,深度神经网络经过训练 ,自动进行特征组合 和特征舍弃。 但是实践中,我们肯定发现做一定的处理,引入先验知识,能够加快收敛,甚至提升模型精度。

比如NLP:one-hot(离散、稀疏的值) -> 词向量(word2vec,glove,BERT) -> 句向量
图像就是:灰度、梯度、边缘、纹理、边缘(对这些组合:SIFT、SURF、HOG)、知名深层网络(在大规模图像库中训练后)的中间层。

6.2 算法调参(DL)

  1. 每个模型 特有算法参数 调整:每种模型有不同的超参数,而每个超参数的意义有不同,所以要熟悉模型原理的细节。比如为之前用过SVM:SVM模型有:(线性核函数、多项式核函数、RBF核函、sigmoid核函数 )重要的参数C与gamma。其中 C是惩罚系数,即对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。C越小,容易欠拟合。C过大或过小,泛化能力变差。gamma是选择RBF函数作为kernel后,该函数自带的一个参数。隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少。 sklearn 自带的调参函数:网格搜索
from sklearn.model_selection import GridSearchCV
parameters={'kernel':['linear','rbf','sigmoid','poly'],'C':np.linspace(0.1,20,50),'gamma':np.linspace(0.1,20,20)}
svc = svm.SVC()
model = GridSearchCV(svc,parameters,cv=5,scoring='accuracy')
  1. 通用的超参数:
    • 学习率:初始学习率很重要,学习率的变化策略也很重要。开始可以高一些,后面低一些。在0.1到0.00001范围
    • batch size:随机梯度下降是建立在batch基础上的,常取2的n次方,太大的batch size会受GPU显存的限制,所以不能无限增大。一般32 或者64的多。
    • epoch:训练轮数。如果你的模型已经过拟合了,你就没必要继续跑了;相反,如果你的epoch太小,你epoch跑完了,模型的loss还在下降,模型还在优化,那么你这个epoch就太小了,应该增加。
    • 模型层数,每层的神经元个数:模型越深越宽复杂,越容易欠拟合。需要考虑自己的数据。不要以为追求复杂网络,除非有先验知识。
    • 优化算法:SGD算法+ Adam优化算法+退火算法(学习率(α)衰减值)
    • 激活函数:神经网络目前效果随着网络的深度不断增加,效果也不断提升,一个重要原因就是通过非线性的变换。(Sigmoid函数、Tanh、ReLU)
    • Droupout系数,防止过拟合,一般0.5-0.9之间

6.3 bad case分析

实践中最有用的没有之一。

  1. 业务数据测试集 结果可视化。
  2. 搜集此类错误数据集,验证是否这类的数据全不行?还是误差
  3. 追溯这个case计算的整个流程:未登录词问题,分词问题(冠军:武大 靖),词典质量或者覆盖度不足,模型效果不佳等。 比如分类的阈值是0.5. 模型输出prediction 0.51(模棱两可)
  4. 修正训练集。不要觉得训练集一定是完全正确的。 lable修正、数据不均衡(添加此类数据)。
  5. 调参:logo识别双框重叠问题

7) 模型实验的策略

最常规有效的方式就是按一定规则随机分组,进行A/B实验,做分组尽量引入随机算法,避免使用固有id取模的方式分组。在确定B实验有效 再更新模型,否则回退。

8) 模型线上应用

  • 收集用户数据(非公开)业务方训练集有偏。logo识别 用户上传。
  • 体验服务 -> 生产服务
  • 负载均衡 网关 监控 业务方调用统计 加解密 代码管理 模型存储

9)业务效果评估

机器学习模型应用是一个反复迭代实验过程,根据实验效果进行很多次的分析调整,以上环节会反复循环进行。

参考

《机器学习模型应用以及模型优化的一些思路》:https://blog.csdn.net/mozhizun/article/details/60966354

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习模型上线及优化流程 的相关文章

  • elasticsearch之嵌套对象、父子文档

    一 嵌套对象 es并非关系型数据库 它并不擅长关系型数据库的join操作 在存储数据时 用冗余数据替代查询时的关联 如blog和comments 如果用关系型数据库 会将blog存一个表 comments存另一个表 然后将这两个表关联起来
  • 华兴数控g71外圆循环编程_数控车床加工时的复合循环指令G70,G71,G72,G73

    复合循环指令应用在切除非一次加工即能加工到规定尺寸的场合 主要在粗车和多次切螺纹的情况下使用 它主要有以下几种 外径 内径粗车循环指令G71 该指令将工件切削到精加工之前的尺寸 精加工前工件形状及粗加工的刀具路径由系统根据精加工尺寸自动设定
  • DataWorks数据埋点的设计及未来发展的思考

    什么是前端埋点 马总曾经说过现在是DT时代 大数据的时代 数据已经成为一家公司最宝贵的财富 越来越多的互联网公司开始重视数据的应用 数据应用的过程是 数据收集 gt 数据整理 数据同步 gt 数据分析 gt 数据可视化 前端埋点是用户行为数
  • ChatGPT的主要应用场景例子

    ChatGPT是一种基于深度学习技术的大型语言模型 它可以根据用户提供的输入信息 生成自然语言文本或响应 这种技术可以应用于很多领域 下面将详细介绍ChatGPT在以下几个方面的应用 以下是使用过程中的一些应用场景对话记录 欢迎补充更多的应

随机推荐

  • 什么是ioc

    什么叫ioc 1 ioc叫做控制反转 是面向对象的一种设计方式 2 把对象的创建和对象之间的调用过程 交给spring管理 3 目的 为了使耦合度降低 耦合度 我有多个service类 都需要调用一个dao类 当我修改这个dao类的位置时
  • Spark Streaming流式数据处理

    目录 一 Spark Streaming 简介 二 简单的例子 三 Spark Streaming相关核心类 3 1 StreamingContext 3 2 离散流 Discretized Streams DStreams 3 3 Inp
  • LiDAR Camera Calibration

    LiDAR和Camera的联合标定 目前有不少方法 不同方法适合不同的传感器 如果有必要 可以自己写一个联合标定的工具 不少公司会自己再写一个 因为标定之后精度可以更高 如果LiDAR是32 及其以上 适合使用Baidu Apollo的方法
  • java模式之装饰器模式

    定义 装饰器模式也叫作包装器模式 只在不改变原有对象的基础上 动态的给一个对象添加一些额外的职责 就增加功能来说 装饰器模式相比生成子类更为灵活 属于结构型设计模式 装饰器模式提供了比继承更有弹性的替代方案将功能附加到对象上 因此 装饰器模
  • 服务器数码管不显示,数码管常见故障及检修方法

    数码管不亮 产生此故障的原因可能有 1 变压器损坏 引线断开或虚焊 若变压器损坏 则予以更换或重新绕制 若引线断开或虚焊 则应重新连接或重新焊接 2 5V电源故障 应检查显示电路电源电压及数码管供电是否正常 正常时为5V直流电压 若两者不正
  • photoshop 去除水印的六种方法

    一 使用仿制图章工具去除文字这是比较常用的方法 具体的操作是 选取仿制图章工具 按住Alt键 在无文字区域点击相似的色彩名图案采样 然后在文字区域拖动鼠标复制以覆盖文字 要注意的是 采样点即为复制的起始点 选择不同的笔刷直径会影响绘制的范围
  • 我们常说的十三薪、十五薪这种,能百分之百发下来吗?它和年终奖有什么区别?

    大家在跳槽谈薪的时候 经常会听到公司说发十三薪 十五薪 这种薪资能百分之百发下来吗 它和年终奖有什么区别 来看下网友们怎么说吧 有人说 它们就是年终奖 十三薪是年终奖发一个月工资 十五薪就是年终奖发三个月工资 当然 也不一定百分之百发放 可
  • 博易大师交易系统改成自己的服务器6,博易大师行情交易软件,如何自定义页面设置?...

    可以根据个人需要对页面进行设置 以新建页面为例 具体步骤如下 1 点击左上角菜单栏中的 页面 新建页面 如图4 6 1 或者点击左上角系统页面中的 我的页面 新建页面 如图4 6 2 图4 6 1 2 2 在空白窗口中点击鼠标右键 选择 切
  • 【Java核心】JDK、JRE、 JVM的联系与区别

    个人简介 Java领域新星创作者 阿里云技术博主 星级博主 专家博主 正在Java学习的路上摸爬滚打 记录学习的过程 个人主页 29 的博客 学习社区 进去逛一逛 JDK JRE JVM的联系与区别 1 简述 2 是什么 3 联系和区别 1
  • Element-UI Methods 如何调用

    现在用 Element UI 做上传文件的功能 需要调用 clearFiles 方法 但尝试了几次不行 查了好久终于明白了 1 先在el upload 加个 ref xx 2 然后把这个写在对应的事件方法里面 this refs xx cl
  • 高效 MacBook 工作环境配置

    高效 MacBook 工作环境配置 作者 正鹏 隃墨 来源 http www xialeizhou com p 71 工欲善其事 必先利其器 工具永远都是用来解决问题的 没必要为了工具而工具 一切工具都是为了能快速准确的完成工作和学习任务而
  • 微信小程序第一次提交审核之 用户隐私保护指引设置

    微信小程序第一次提交审核之 用户隐私保护指引设置 微信小程序新规 提交的时候需要填写这个 用户隐私保护指引设置 填写方式如下图 参考图片如下
  • 使用ajax请求提交数据时,日期类型无法转换为JAVA中的日期类型

    在做毕业项目时碰见日期类型无法传到后台controller中的问题 因为springMVC中没有提供默认的日期转换器 前端页面传过来的日期类字符串无法转换为java中的日期类型 使用 DatetimeFormat注解完成转换 做一个笔记 前
  • 【压力测试 2】JMeter压力测试之Internal server error 500 问题解决思路

    一 JMeter客户端实现有两种方式 1 Java 选择压测时 链接是复用的 代码中的http调用都加了连接池 2 httpclient4 压测时 每请求一次都创建一个新的链接 jmeter5 0以前默认关闭了连接复用 5 0上是打开的 即
  • Hive 计算用户留存率(次日,3日,N日)

    文章目录 什么是用户留存率 创建数据源 计算留存率 计算 N 日的留存率 什么是用户留存率 用户留存率是指在特定时间段内 用户在使用某个产品或应用程序后 再次使用该产品或应用程序的比例 它可以帮助公司了解用户是否喜欢他们的产品 并提供有价值
  • Unity 雨水滴到屏幕效果

    文章目录 前言 一 实现过程 1 代码 2 代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果 文章介绍的是基础实现 读完这篇文章再去实现复杂效果会更得心应手些 我们先看更高级效果的图片 一 实现过程 1 代码
  • 微信朋友圈点赞如何设计测试用例,微信发语音消息,购物车,支付页面如何设计软件测试用例?

    做过软件测试或者面试过的人应该了解这个问题你肯定被问过 属于面试必问 就算没遇到 预测你以后面试肯定会遇到 希望你能想到想到我分享的思路 那么如何轻松优雅的回答这个题目 我给大家分享一个万能公式 打遍天下无敌手的招式所以正在学习软件测试的小
  • Yolov7学习笔记(三)训练部分

    文章目录 导读 训练前期属性配置 权值平滑 开始训练 导读 按批将图片进行预测后 将结果与真实框进行loss计算 训练相对预测部分 多了损失函数的计算以及反向求导梯度下降 进而更新函数 训练前期属性配置 创建模型 model YoloBod
  • mysql传入乱码_mysql 插入中文乱码解决方案 --转了

    MySQL 4 1的字符集支持 Character Set Support 有两个方面 字符集 Character set 和排序方式 Collation 对于字符集的支持细化到四个层次 服务器 server 数据库 database 数据
  • 机器学习模型上线及优化流程

    机器学习模型上线及优化流程 时间 2020 07 09 文章目录 机器学习模型上线及优化流程 通用流程 1 业务问题界定和定义 2 数据样本的筛选和构造 3 label的定义与标注 4 选择机器学习算法 5 确定模型性能的度量方式 6 模型