机器学习如何对已经上线的模型进行召回 & 重新训练

2020-01-28 18:45:33 +08:00
 SlipStupig

问题一:我做了一个新闻分类器,在本地训练和测试的准确率是 70%,我上线之后,如何评估线上的准确率呢?

问题二:假设我有一些类别分错了,我想定期自动分拣出错误的结果,然后加入到训练模型里面重新训练,然后再上线(相当于一个自动召回系统?)

5056 次点击
所在节点    程序员
28 条回复
shikimoon
2020-01-28 19:19:28 +08:00
问题一不说了,问题二不一定总是有效
classyk
2020-01-28 19:25:21 +08:00
在线学习 online learning 了解一下
SlipStupig
2020-01-28 20:30:05 +08:00
@shikimoon 结果是 1 和 2 我都不知道该怎么办。。
SpencerCJH
2020-01-28 20:40:02 +08:00
有请算法工程师登场 (逃
paopjian
2020-01-28 21:01:45 +08:00
线上准确率不就是接着打标签再算吗?
sethverlo
2020-01-28 21:24:29 +08:00
1. 打日志就行了嘛…

2. 看你用的是什么框架啊,有的框架不支持 continue training 的,比如说 fasttext

(其实 fasttext 支持 unsupervised 的再训练,但我用的是 supervised learning
SlipStupig
2020-01-28 21:36:56 +08:00
@sethverlo 框架用的是 sklearn,日志确实能知道分类结果,但是我如何知道哪些是正确的哪些是错误的,如果数据过大靠人工似乎不现实。我想的是有没有一个相对自动的一点方案能让我分拣出漏报和误报的样本,然后让我重新进行训练,类似汽车召回一样的机制。

@paopjian 比如我又 100 个样本以及被分类了,我离线的时候可以划分测试集和训练集,线上实际生产环境如何划分呢?我如何知道哪些被分错了的,并纠正然后继续训练?
SlipStupig
2020-01-28 21:41:11 +08:00
@sethverlo 还有一种情况就是加入了新的样本,进行增量训练
razrlele
2020-01-28 21:43:06 +08:00
Q1:
可以用 AUC 来衡量离线在线指标。

Q2:
定期更新模型。
shikimoon
2020-01-28 22:00:38 +08:00
@SlipStupig 你这是想当然了,把识别错误的 case 加进训练集重新训练效果就能变好,那一直加 acc 不是变 100%?
Xs0ul
2020-01-28 22:43:39 +08:00
线上如果没有用户反馈给你标 label,没法知道预测是对是错. 不然你把这套流程移到输出之前,岂不是凭空提高了准确率
paopjian
2020-01-29 00:17:30 +08:00
你要想在线学习我建议走 deeplearning,不用打标签,你这也太理想化了,监督学习引入非监督变量,那怎么判错?
SlipStupig
2020-01-29 00:28:28 +08:00
@paopjian
@Xs0ul
@shikimoon

感谢各位指正,这方面我水平不够,确实走入了误区。想请教一下各位,实际生产环境中模型上线了之后如何进行优化,有没有什么流程性的东西可以指点一下?
HankAviator
2020-01-29 00:29:41 +08:00
1. 看你关注的指标,AUC,lift,误分类率都可能用得上。
2. 持续训练是成本最低且现实的方案,主流企业也都是采用这个办法。样本量够大就足以生成令人满意的模型。
HankAviator
2020-01-29 00:31:07 +08:00
另外采用复杂算法(集合树)相对简单二分类树可能有更好的效果
HankAviator
2020-01-29 00:33:18 +08:00
上线模型一般都做周期性检验,然后测试环境跑一下,没问题就迭代到生产。引入尽可能多的变量也会有帮助(如果成本允许)
SlipStupig
2020-01-29 00:44:17 +08:00
@HankAviator 问一个小白问题,指标该如何选择?
paopjian
2020-01-29 01:35:32 +08:00
建议看一下 Hands - On.Machine.Learning.with.Scikit - Learn.and.TensorFlow。里面的机器学习方法都有讲,你这个 70 正确率也不是太好的
Mrpasserby
2020-01-29 03:13:20 +08:00
你需要收集日志
t6attack
2020-01-29 06:27:46 +08:00
现实生产环境中,比如 预测金融市场、预测天气,都是用事实结果作为新数据持续训练的。
你这种,事实结果只能人工判断。没有其他办法。如果有,那就形成了逻辑悖论。如果有其他“非人工”方式可以知道分类结果是否准确,为什么不直接用这个方式进行分类呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/640671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX