阅读 1161

业务系统如何引入神经网络

切入点

目前的AI其实更多就是仅仅用来从历史数据中学习到一些规律而已,在业务上,更多的只是减少人为介入工作,所以要在业务系统中引入神经网络,其实主要就是在要找到切入点。

简单来说,可以走访一线用户看他们花最多的时间在系统哪些地方,经常重复了哪些工作,也可以通过统计日志找到合适的切入点。

理解问题

  • 业务上要解决的问题:预测某个分类。
  • 问题涉及到的信息管道:xx。
  • 数据源及采集方式:数据源在xx业务系统上,可由相关api获取。
  • 数据属于定期发布还是实时:定期&实时发布。
  • 影响模型的有价值因素:咨询业务专家提供初步模型特征。
  • 工作量:制定项目计划。

数据预处理

  • 过滤操作,将不符合条件的数据记录去掉。
  • 空值填充,补0或其他填充措施。
  • 对数据进行标准化处理。
  • 字符串集标签化。

样本统计

对样本进行统计分析,看看可用样本数量为多少,对于一般的分类任务,每个分类的样本数一般可以从几千到上万个。另外也要检查是否存在样本不平衡问题,如果存在的话要对其进行平衡处理,比如上采样操作。

模型定义

定义模型,比如定义传统的多层神经网络,两个隐含层,每个层100个神经元。

确定输入为attribute1、attribute2、...,输出为分类编号。

损失函数可选:tanh、logistic或relu。

优化方法可选:梯度下降法或adam。

image

模型训练

  • 将整个数据集分成两组,比例是8:2,第一组为训练集,用于调整模型参数;第二组为测试集,用于测试训练得到的模型准确性。
  • 最大迭代数为10000。
  • 批大小为200。
  • 优化提升容忍程度为1e-8。
  • 标准化初始权重。

模型迭代

模型的效果需要不断分析特征,选择或生成更有价值的特征,不断优化模型效果。比如

  • v0.1 凭感觉选择若干数据特征作为输入,效果可能比较差。
  • v0.2 咨询业务专家,结合他们的意见使用或者生成更有价值的特征,precision、recall、f1-score都提升了,因为增加了某些属性,而且还从额外的系统提取了有用的特征。
  • v0.3 已经无法直接找到有价值的特征,可以考虑引入自然语言处理对一些文本进行分析,使用词向量、tfidf之类的特征,precision、recall、f1-score都达到90%以上。
版本 precision recall f1-score
v0.1 0.52 0.59 0.54
v0.2 0.83 0.82 0.81
v0.3 0.91 0.90 0.90

线上部署

有以下几种方式部署模型,需要综合考虑。

  • 嵌入到业务系统中,将模型与业务系统耦合,需要考虑业务系统和模型开发使用的统一语言,比如业务系统一般用java开发,模型较多使用python,而java调python并发起来后性能有问题,不然就用java做模型并提供jar。
  • 单独模型部署,将模型系统通过服务形式对外开放,由业务系统访问,达到解耦效果,但对于一些情况下会导致整个系统架构比较重。
  • 后台部署,直接由模型系统访问业务数据层,将预测的结果回写到业务数据持久化中。

-------------推荐阅读------------

我的开源项目汇总(机器&深度学习、NLP、网络IO、AIML、mysql协议、chatbot)

为什么写《Tomcat内核设计剖析》

2018汇总数据结构算法篇

2018汇总机器学习篇

2018汇总Java深度篇

2018汇总自然语言处理篇

2018汇总深度学习篇

2018汇总JDK源码篇

2018汇总Java并发核心篇

2018汇总读书篇


跟我交流,向我提问:

欢迎关注:

关注下面的标签,发现更多相似文章
评论