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

来自:远洋号(微信号:seaboat-top),作者:wj seaboat

切入点

目前的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%以上。

版本precisionrecallf1-score
v0.10.520.590.54
v0.20.830.820.81
v0.30.910.900.90

线上部署

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

  • 嵌入到业务系统中,将模型与业务系统耦合,需要考虑业务系统和模型开发使用的统一语言,比如业务系统一般用java开发,模型较多使用python,而java调python并发起来后性能有问题,不然就用java做模型并提供jar。

  • 单独模型部署,将模型系统通过服务形式对外开放,由业务系统访问,达到解耦效果,但对于一些情况下会导致整个系统架构比较重。

  • 后台部署,直接由模型系统访问业务数据层,将预测的结果回写到业务数据持久化中。

推荐↓↓↓
人工智能与大数据
上一篇:【生活现场】从洗袜子到hbase存储原理解析(上篇) 下一篇:一名软件工程师的机器学习初体验