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

  • 时间:2020-07-09

文章目录

  • 机器学习模型上线及优化流程
  • 通用流程:
    • 1) 业务问题界定和定义
    • 2) 数据样本的筛选和构造
    • 3) label的定义与标注
    • 4) 选择机器学习算法
    • 5) 确定模型性能的度量方式
    • 6) 模型优化
      • 6.1 特征工程(ML):
      • 6.2 算法调参(DL)
      • 6.3 bad case分析
    • 7) 模型实验的策略
    • 8) 模型线上应用
    • 9)业务效果评估
  • 参考

通用流程:

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

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

机器学习模型上线及优化流程相关推荐

  1. 大讲堂 | 预测时间敏感的机器学习模型建模与优化

    雷锋网AI研习社讯:机器学习模型现在已经广泛应用在越来越多的领域比如地震监测,闯入识别,高频交易:同时也开始广泛的应用在移动设备中比如通过边缘计算.这些真实世界的应用在原有的模型精度基础之上带来很多实 ...

  2. 机器学习—模型估计与优化—线性模型—最小二乘估计

    最小二乘估计 Least squares estimation 最小二乘法是一种基于误差平方和最小化的参数估计方法 最小二乘估计法,又称最小平方法,是一种数学优化技术.它通过最小化误差的平方和寻找数据 ...

  3. 9 张手绘图:阐明机器学习模型训练全流程

    Datawhale干货 译者:张峰,安徽工业大学,Datawhale成员 周末在家无聊闲逛github,发现一个很有趣的开源项目,作者用手绘图的方式讲解了机器学习模型构建的全流程,逻辑清晰.生动形象. ...

  4. 干货:机器学习模型训练全流程!

    [提醒:公众号推送规则变了,如果您想及时收到推送,麻烦右下角点个在看,或者把本号置顶] 正文开始 周末在家无聊闲逛github,发现一个很有趣的开源项目,作者用手绘图的方式讲解了机器学习模型构建的全流 ...

  5. python训练模型、如何得到模型训练总时长_【绝对干货】机器学习模型训练全流程!...

    周末在家无聊闲逛github,发现一个很有趣的开源项目,作者用手绘图的方式讲解了机器学习模型构建的全流程,逻辑清晰.生动形象.同时,作者也对几张图进行了详细的讲解,学习之后,收获很多,于是将其翻译下来 ...

  6. 最全的机器学习模型训练全流程

    简言 发现一个很有趣的开源项目,作者用手绘图的方式讲解了机器学习模型构建的全流程,逻辑清晰.生动形象.想给大家分享一下. 项目地址:https://github.com/dataprofessor/i ...

  7. 一文掌握常用的机器学习模型(文末福利)

    AI 科技大本营按:本文节选自微软亚洲研究院机器学习研究团队刘铁岩.陈薇.王太峰.高飞合著的<分布式机器学习:算法.理论与实践>一书.为了让大家更好地理解分布式机器学习,AI科技大本营联合 ...

  8. 一文掌握常用的机器学习模型(免费课程+送书福利)

    导读:人工智能和大数据时代,解决最有挑战性问题的主流方案是分布式机器学习. 近几年,机器学习在许多领域取得了前所未有的成功,由此也彻底改变了人工智能的发展方向,引发了大数据时代的到来.其中最富有挑战性 ...

  9. 一文掌握常用的机器学习模型

    AI 科技大本营按:本文节选自微软亚洲研究院机器学习研究团队刘铁岩.陈薇.王太峰.高飞合著的<分布式机器学习:算法.理论与实践>一书.为了让大家更好地理解分布式机器学习,AI科技大本营联合 ...

最新文章

  1. python 自动生成C++代码 (代码生成器)
  2. linux sntp 代码,C语言window(linux)平台的SNTP实现
  3. 三十六亿的《哪吒》历时五年,如何用AI解决动画创作难题?
  4. html和css之间有什么区别,html语法和css语法之间有什么区别
  5. php 制表符分隔csv,CSV(逗号分隔)、文本文件(制表符分隔) 等文件的读取
  6. Redhat 释放cached 内存
  7. IFRAME jquery 获取document对象
  8. 手机APP的秘密,看的一清二楚!
  9. PHP正则提取table中数据
  10. python socket tcp实战_Python socket.TCP_MAXSEG属性代码示例
  11. 谷歌金山词霸正式发布--免费午餐越来越多
  12. 计算机系军训横幅,军训横幅标语有创意精选100句
  13. 科三十六项操作方法指导
  14. Pycharm画图中文显示报错:UserWarning: Glyph 20013 (\N{CJK UNIFIED IDEOGRAPH-4E2D}) missing from current font.
  15. Surface Pro 4 系统优化全教程及QA
  16. 前端-JS基础之运算符
  17. flask---》url_for 模板语法 内置过滤器 url_map
  18. 【C语言程序设计】实验 4
  19. PyQt5 从零开始环境搭建
  20. 研磨设计模式 之 访问者模式(Visitor)2——跟着cc学设计系列

热门文章

  1. php 周易,GitHub - jyiL/lunarPHP: 易经六十四卦排盘类库
  2. unraid应用_unraid 篇三:unraid docker之网页文件管理,强迫症的福音
  3. 一篇最通俗易懂的性能调优总结,这篇就够了
  4. 多张照片怎么做成动图
  5. 书评|《小岛经济学》
  6. 还在为图片转Excel而烦恼?6种转换方法让你3秒实现转换
  7. 北航软件测评中心 招聘FPGA测试工程师
  8. Halcon找圆系列(4)测量圆直径/半径的方法之暴力拟合法 vs 测量工具法
  9. 软件测试网课笔记(持续更新)
  10. java求多项式回归_通过LINEST进行多项式回归(Polynomial Regression via LINEST)