数据算法工程师常犯的六个错误

反思这6个常见病

尽管我们对经典理论教材能做到人手一册,如数家珍,但是在实际应用中,一方面,我们常常会疏忽掉理论,甚至是理论常识;另一方面,不考虑实际情况,首先上马复杂理论模型却几乎是我们的一种时尚。这让无数项目(也包括我做过的项目)走了不少弯路,所以在这里做个总结。

文章目录
一、指标定义粗糙
二、唯模型论
三、没有baseline
四、测试数据的比例太少
五、缺乏对指标结果的审查
六、忽略数据泄露


一、指标定义粗糙

这是缺乏个性化建模的意识的一个体现。

实际业务场景有特定的需求,在清晰理解需求的基础上,选用甚至自定义尽可能准确的指标。一般模型中,指标定义对模型训练的指导流程如图1所示。

img1.png

图1.指标指导模型的调整

例如一个资产价值评估类项目,最初想当然地认为用户肯定是期望越准越好,所以用的指标是平均绝对百分率误差(Mean Absolute Percent Error),即每条样本评估价格与真实价格之间误差,在真实价格中所占的比例。

然而,实际使用中,尽管某些区域的MAPE很高,但用户反映体验并不好,也就是MAPE没有准确反映用户的体验。

原来,用户的需求是:每次估值只要偏差不是太大,均可接受。但是明显的偏离客观价值的结果,会被用户识别。

所以定义了一个新的指标——可用度:即MAPE在某一阈值(该阈值与用户沟通)内的测试样本的比例。这个指标非常好地反映了用户的感受,有效地改善了自测的客观性,项目优化。

在神经网络架构中,损失函数是模型调参的关键,除了准确的指标定义,还需要定义准确的损失函数。如图2所示。(而其他非神经网络模型,例如集成提升树、线性回归、逻辑回归,损失函数自定义的难度较高,不建议改动)

img2.png

图2.在神经网络模型中,指标定义、损失函数共同指导模型的调整

二、唯模型论

这是缺乏个性化建模的意识的另一个体现。

很多算法工程师热衷使用机器学习模型,认为只有这样才能体现算法工程师的价值。

然而从实践上来说,应用机器学习模型至少需要三个必要条件

  • 存在可供学习的潜在模式

    虽然理论上万事万物皆有联系,即潜在模式,但关键是要“可供学习”。例如用今天的湿度预测明天的天气,这种潜在模式是可供学习的。但是用今天的湿度预测今晚足球比赛的胜负,天气与比赛胜负之间的潜在模式在有限的数据集上很难学习,即可认为是不存在。

    如果不存在,则无法应用机器学习 。

  • 没有可编程实现的的简单定义

    如果我们已经熟知了某领域的规律,可以指定简单规则来实现,为何还要化简为繁,让机器学习来学习这个规律?

    在图像、语音、文本等模式识别这些领域,定义规则的经验门槛非常高,完备的规则几乎不可能。这时候,适合应用机器学习,从海量数据中挖掘规则。

  • 掌握关于这个模式的数据

不仅要有数据,而且必须包含该模式,这就要求数据状况达到一定的要求。

如果以上三个条件有一条不满足,则不应该使用机器学习模型。

此外,如果期望在已掌握数据上实现最高的预测可靠性,可直接在已知数据上用检索;而在未知数据上,使用机器学习模型。

三、没有baseline

baseline是指基础方法及其对应的指标,用来衡量其他改进方法的好坏。

精巧复杂的模型总是深得技术人的喜欢,然后在实践中针对特定问题应用复杂模型的同时,有必要构造一些baseline,甚至是强baseline,即在保证方法简单的同时还有相当不错的指标,以挑战复杂模型,最终方便我们权衡性能与代价,选取最合适的方法。

一般来说,简单和复杂的方法能达到同样的效果,那简单的方法更可靠。

构造方法即人工规则、或简单模型、或是该问题的常规方法。

四、测试数据的比例太少

尽管这是所有的机器学习教程上老生常谈的话题,但是工作中还是常见很多项目用非常小的测试集,例如用了2万条训练,500条测试。这是非常不合适的。测试的目的是评估模型在未知数据上的表现。如果测试比例非常少,则测试结果的随机性非常大(设想极端情况即仅用1条数据测试,指标会变得非常随机),指标的高或低很难反映模型表现。

但是我们手头的数据量又是有限的,如果分配的测试数据太多,训练数据就会太少,导致模型又没有见到足够多的数据。

所以建议:

  • 如果指标是用来自评,则用30%的数据进行测试,或者至少用20%测试。

  • 如果要获得最大说服力的指标,以和其他模型进行横向对比,建议用交叉验证,5折及以上。

五、缺乏对指标结果的审查

如果复杂问题却能获得很好的结果,一定要进行审查。因为大概率是存在问题的。

比如这样一个行为预测项目:即用已发生的行为序列预测下一个行为。事件池包含4000种事件,行为序列为顺序发生的5个事件。用数万条序列来训练,获得了0.8的正确率(accuracy)。

问题其实很明显:首先,这是个典型的组合问题,有4000的6次方种序列的可能(天文数字!),用数万条样本训练,几乎是沧海一粟。其次,即使不考虑行为序列里4000的5次方种组合,只考虑最终要预测的target就有4000种行为,竟然能预测出80%的正确率,几乎可以肯定是测试中存在问题。

六、忽略数据泄露

所谓数据泄露(data leakage),是指已知数据集的特征(即X)中包含了目标值(即Y)的强相关特征,而在实际评估阶段,输入数据中并不包含这些强相关特征。这将导致我们训练得很好,测试得很好,但是实际应用时,结果非常差。

例如:

  • 房屋价格评估项目

    在特征工程中我们把每个小区均价作为特征,将获得非常棒的训练指标、测试指标。原因是模型几乎是把本小区均价拿来用了。

    但是,在实际使用时,由于用户不会输入本小区均价(要知道均价还评什么劲?),你只能去检索最近小区的均价,模型的表现将取决于最近小区的均价是否与目标小区均价接近,接近则表现很棒,否则将非常糟糕。

  • 行为序列预测项目

    行为序列的生成方法是:拿出一批种子用户,从他们每个人很长的行为序列里,用尺寸为6的滑动窗口,每滑动一步,生成一个样本(即5个行为预测1个行为)。这样凑齐数万条数据。然后从中随机抽出训练数据,测试数据。

    问题就出在训练数据与测试数据的分割方式上。因为这种随机抽取的方式,导致一个用户的行为序列在训练数据与测试数据中均有分布,训练好的模型已经见过几乎全部测试数据里的行为序列(尽管有1位的差异)。测试数据比例非常少,甚至不到3%。获得了0.8的正确率大致是可能的。但是实际应用中的效果预期堪忧。

如有问题,欢迎评论交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容