临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

机器学习条军规解密谷歌机器学习工程最佳实践上

6月2日 断龙塔投稿
  文章把在产品中应用机器学习的过程从浅到深分成了三个大的阶段,又在这三个大的阶段中细分出了一些方面,以此对43条规则进行逻辑分类。一起来学习下。
  本文是对rulesofmachinelearning:一文的翻译解读。看过我翻译文章的同学知道我翻译文章一般都不太老实,没有那么忠于原著,本篇也不例外,本篇对于原文的解读大概有三种形式:
  原文翻译。对于作者本身阐述的比较好,而我也没什么可补充的部分,基本会原文翻译。
  半翻译半解读。有的条目我觉得有些自己的经验和感想可以和大家分享,就会加一些自己的解读在里面。
  省略。还有一些时候我觉得作者说的太仔(luo)细(suo),或者这个条目说得比较基本,无需太多解释,我就会不同程度的省略原文。
  这种形式对于有的同学来讲可能会对原文信息有所损失,所以想要读到原文的同学,可以在这里找到原文。或者去搜一些其他人比较忠于原著的翻译。
  作者介绍
  什么样的NB人物写东西敢起号称RulesofMachineLearning这种不怕闪了腰的题目?首先我们来简单介绍一下本文的作者MartinZinkevich。
  MartinZinkevich现在是谷歌大脑的高级科学家,负责和参与了YouTube、GooglePlay以及GooglePlus等产品中的机器学习项目。在加入谷歌之前是雅虎的高级科学家,曾在2010年和2011年两度获得雅虎的最高荣誉YahooTeamSuperstarAwards,对雅虎的广告系统做出过很多杰出贡献。
  拥有如此NB的背景,我们有理由相信这哥们儿写出来的东西还是具有足够的参考价值的。
  梗概介绍
  本文把在产品中应用机器学习的过程从浅到深分成了三个大的阶段,又在这三个大的阶段中细分出了一些方面,以此对43条规则进行逻辑分类。简单来说,如果你是从头开始做机器学习系统,那么就可以在不同阶段参考这里面对应的条目,来保证自己走在正确的道路上。
  正文开始
  Tomakegreatproducts:
  domachinelearninglikethegreatengineeryouare,notlikethegreatmachinelearningexpertyouaren’t。
  这句话一定程度上是对整篇文章(叫手册可能更合适)的一个高度概括,ML在实际工作确实更多是工程问题,而不是算法问题。优先从工程效率中要效果,当把这部分榨干后,再考虑算法的升级。
  BeforeMachineLearning
  Rule1:Don’tbeafraidtolaunchaproductwithoutmachinelearning。
  规则1:不要害怕上线没有机器学习的产品。
  中心思想一句话概括:Ifyouthinkthatmachinelearningwillgiveyoua100boost,thenaheuristicwillgetyou50ofthewaythere。
  Rule2:First,designandimplementmetrics。
  规则2:在动手之前先设计和实现评价指标。
  在构建具体的机器学习系统之前,首先在当前系统中记录尽量详细的历史信息,留好特征数据。这样不仅能够留好特征数据,还能够帮助我们随时了解系统的状态,以及做各种改动时系统的变化。
  Rule3:Choosemachinelearningoveracomplexheuristic。
  规则3:不要使用过于复杂的规则系统,使用机器学习系统。
  简单来讲,复杂的规则系统难以维护,不可扩展,而我们很简单就可以转为ML系统,变得可维护可扩展。
  MLPhaseI:YourFirstPipeline
  构建第一个ML系统时,一定要更多关注系统架构的建设。虽然机器学习的算法令人激动,但是基础架构不给力找不到问题时会令人抓狂。
  Rule4:Keepthefirstmodelsimpleandgettheinfrastructureright。
  规则4:第一个模型要简单,但是架构要正确。
  第一版模型的核心思想是抓住主要特征、与应用尽量贴合以及快速上线。
  Rule5:Testtheinfrastructureindependentlyfromthemachinelearning。
  规则5:独立于机器学习来测试架构流程。
  确保架构是可单独测试的,将系统的训练部分进行封装,以确保其他部分都是可测试的。特别来讲:
  测试数据是否正确进入训练算法。检查具体的特征值是否符合预期。
  测试实验环境给出的预测结果与线上预测结果是否一致。
  Rule6:Becarefulaboutdroppeddatawhencopyingpipelines。
  规则6:复制pipeline时要注意丢弃的数据。
  从一个场景复制数据到另一个场景时,要注意两边对数据的要求是否一致,是否有数据丢失的情况。
  Rule7:Turnheuristicsintofeatures,orhandlethemexternally。
  规则7:将启发规则转化为特征,或者在外部处理它们。
  机器学习系统解决的问题通常都不是新问题,而是对已有问题的进一步优化。这意味着有很多已有的规则或者启发式规则可供使用。这部分信息应该被充分利用(例如基于规则的推荐排序时用到的排序规则)。下面是几种启发式规则可以被使用的方式:
  用启发规则进行预处理。如果启发式规则非常有用,可以这么用。例如在垃圾邮件识别中,如果有发件人已经被拉黑了,那么就不要再去学拉黑意味着什么,直接拉黑就好了。
  制造特征。可以考虑从启发式规则直接制造一个特征。例如,你使用启发式规则来计算query的相关性,那么就可以把这个相关性得分作为特征使用。后面也可以考虑将计算相关性得分的原始数据作为特征,以期获得更多的信息。
  挖掘启发式规则的原始输入。如果有一个app的规则启发式规则综合了下载数、标题文字长度等信息,可以考虑将这些原始信息单独作为特征使用。
  修改label。当你觉得启发式规则中包含了样本中没有包含的信息时可以这么用。例如,如果你想最大化下载数,同时还想要追求下载内容的质量。一种可行的方法是将label乘以app的平均star数。在电商领域,也常常用类似的方法,例如在点击率预估的项目中,可考虑对最终下单的商品或者高质量的商品对应的样本增加权重。
  已有的启发式规则可以帮助机器学习系统更平滑的过渡,但是也要考虑是否有同等效果更简单的实现方式。
  Monitoring
  概括来讲,要保持好的监控习惯,例如使报警是可应对的,以及建设一个Dashboard页面。
  Rule8:Knowthefreshnessrequirementsofyoursystem。
  规则8:了解你系统对新鲜度的要求。
  如果模型延迟一天更新,你的系统会受到多大的效果影响?如果是一周的延迟呢?或者更久?这个信息可以让我们排布监控的优先级。如果模型一天不更新收入就会下降10,那么可以考虑让一个工程师全天候监控它。了解系统对新鲜度的要求是决定具体监控方案的第一步。
  Rule9:Detectproblemsbeforeexportingmodels。
  规则9:在模型上线之前检测问题。
  模型上线前一定要做完整性、正确性检查,例如AUC、Calibration、NE等指标的计算确认等。如果是模型上线前出了问题,可以邮件通知,如果是用户正在使用的模型出了问题,就需要电话通知了。
  Rule10:Watchforsilentfailures。
  规则10:关注静默失败。
  这是一个非常重要,而又经常容易被忽略的问题。所谓的静默失败指的是全部流程都正常完成,但是背后依赖数据出了问题,导致模型效果逐步下降的问题。这种问题在其他系统中并不常出现,但是在机器学习系统中出现几率会比较高。例如训练依赖的某张数据表很久没有更新了,或者表中的数据含义发生了变化等,再或者数据的覆盖度忽然变少,都会对效果产生很大的影响。解决方法是是对关键数据的统计信息进行监控,并且周期性对关键数据进行人工检查。
  Rule11:Givefeaturecolumnownersanddocumentation。
  规则11:给特征组分配负责人,并记录文档。
  这里的featurecolumn指的是一个特征组,例如用户可能属于的国家这组特征就是一个featurecolumn。
  如果系统庞大,数据繁多,那么知道每组数据由谁生成就变得非常重要。虽然数据都有简单描述,但是关于特征的具体计算逻辑,数据来源等都需要更详细的记录。
  YourFistObjective
  objective是模型试图优化的值,而metric指的是任何用来衡量系统的值。
  Rule12:Don’toverthinkwhichobjectiveyouchoosetodirectlyoptimize。
  规则12:不要过于纠结该优化哪个目标。
  机器学习上线的初期,即使你只优化一个目标,很多指标一般都会一起上涨的。所以不用太纠结究竟该优化哪个。
  虽然大佬这么说,但是在我自己的实践经验中,只优化一个目标,系统的整体效果却未必会上涨。典型的如推荐系统的CTR模型,上线之后CTR确实会提升,但是对应的CVR很有可能会下降,这时还需要一个CVR模型,两个模型同时使用才能真正提升系统效果。究其原因,是因为每个目标只关注系统整个过程的一个子过程,贪心地去优化这个子过程,不一定能够得到全局的最优解,通常需要把主要的几个子过程都优化之后,才能取得整体效果的提升。
  Rule13:Chooseasimple,observableandattributablemetricforyourfirstobjective。
  规则13:为你的第一个objective选择一个简单可观测可归因的metric。
  objective应该是简单可衡量的,并且是metric的有效代理。最适合被建模的是可直接观测并被归因的行为,例如:
  链接是否被点击?
  软件是否被下载?
  邮件是否被转发?
  尽量不要在第一次就建模非直接效果的行为,例如:
  用户第二天是否会访问?
  用户在网站上停留了多久?
  日活用户有多少?
  非直接指标是很好的metric,可以用ABTest来进行观测,但不适合用作优化指标。此外,千万不要试图学习以下目标:
  用户对产品是否满意?
  用户对体验是否满意?
  这些指标非常重要,但是非常难以学习。应该使用一些代理指标来学习,通过优化代理指标来优化这些非直接指标。为了公司的发展着想,最好有人工来连接机器学习的学习目标和产品业务。
  Rule14:Startingwithaninterpretablemodelmakesdebuggingeasier。
  规则14:使用可解释性强的模型可降低debug难度。
  优先选择预测结果有概率含义、预测过程可解释的模型,可以更容易的确认效果,debug问题。例如,如果使用LR做分类,那么预测过程不外乎一些相乘和相加,如果特征都做了离散化,就只有加法了,这样很容易debug一条样本的预测得分是如何被计算出来的。所以出了问题很容易debug。
  Rule15:SeparateSpamFilteringandQualityRankinginaPolicyLayer。
  规则15:将垃圾过滤和质量排序的工作分离,放到策略层(policylayer)。
  排序系统工作的环境中数据分布是相对静态的,大家为了得到更好的排序,会遵守系统制定的规则。但是垃圾过滤更多是个对抗性质的工作,数据分布会经常变动。所以不应该让排序系统去处理垃圾信息的过滤,而是应该有单独的一层去处理垃圾信息。这也是一种可以推广的思想,那就是:排序层只做排序层的事情,职责尽量单一,其他工作让架构上更合适的模块去处理。此外,为了提升模型效果,应该把垃圾信息从训练数据中去除。
  MLPhaseII:FeatureEngineering
  前面第一阶段的重点是把数据喂到学习系统中,有了基础的监控指标,有了基础的架构。等这一套系统建立起来后,第二阶段就开始了。
  整体来讲,第二阶段的核心工作是将尽量多的有效特征加入到第一版的系统中,一般都可以取得提升。
  Rule16:Plantolaunchanditerate。
  规则16:做好持续迭代上线的准备。
  简单来说,就是要深刻认识到,系统优化永远没有终点,所以系统设计方面要对迭代非常友好。例如增加删除特征是否足够简单,正确性验证是否足够简单,模型迭代是否可以并行运行,等等。
  这虽然不是一条具体可行动的(actionable)规则,但是这种思想上的准备对整个系统的开发很有帮助。只有真正深刻意识到了系统持续迭代上线的本质,才会在设计在线和离线架构时为持续迭代最好相应的设计,并做好相应的工具,而不是做一锤子系统。
  Rule17:Startwithdirectlyobservedandreportedfeaturesasopposedtolearnedfeatures。
  规则17:优先使用直接观测或收集到的特征,而不是学习出来的特征。
  所谓学习出来的特征,指的是用另外的算法学习出来的特征,而非可以直接观测或收集到的简单特征。学习出来的特征由于存在外部依赖,或者计算逻辑复杂,不一定适用于你当前的模型,所以稳定性和有效性会有风险。而直接可观测的特征由于是相对比较客观的,依赖较少的,所以比较稳定。
  Rule18:Explorewithfeaturesofcontentthatgeneralizeacrosscontexts。
  规则18:探索使用可以跨场景的内容特征。
  中心思想是在说,要多利用可以在多个场景下使用的特征,例如全局的点击率、浏览量这些特征,可以在多个场景下作为特征使用。这样可以在一些冷启动或者缺乏有效特征的场景下作为特征使用。
  Rule19:Useveryspecificfeatureswhenyoucan。
  规则19:尽量使用非常具体的特征。
  如果数据量足够大,那么相比少数复杂特征,使用海量简单特征是更简单有效的选择。
  所谓非常具体,指的是覆盖样本量比较少的特征,例如文档的ID或者query的ID等。这样的特征虽然每个只覆盖很少一部分特征,但是只要这一组特征整体能够覆盖率比较高,例如90,那就是OK的。而且还可以通过正则化来消除覆盖率过低或者相关性差的特征。这也是大家都偏爱大规模ID特征的一个原因,现在很多大厂的排序模型特征都大量使用了大规模ID特征。
  Rule20:Combineandmodifyexistingfeaturestocreatenewfeaturesinhumanunderstandableways。
  规则20:用人类可理解的方式对已有特征进行组合、修改来得到新特征。
  离散化和交叉是最常用的两种特征使用方式。其本质都是用特征工程的方式,在不改变使用模型本身的情况下增加模型的非线性。这两种方法本身没什么好说的,值得一致的是,在大规模ID类特征的交叉时,例如一段是query里的关键词,另一端是文档里的关键词,那就会产生很大量级的交叉特征,这时有两种处理方法:
  点积。其实计算query和文档共同包含的关键词数量。
  交集。每一维特征的含义是某个词同时出现在了query和文档中,同时出现则该维特征为1,否则为0。
  所谓人类可理解的方式,我的理解就是离散化和交叉要基于对业务逻辑的理解,不能乱交叉。
  Rule21:Thenumberoffeatureweightsyoucanlearninalinearmodelisroughlyproportionaltotheamountofdatayouhave。
  规则21:线性模型中可学到的特征权重数量,与训练数据的数量大体成正比。
  这背后有复杂的统计原理做支撑,但你只需要知道结论就可以了。这个原则给我们的启示,是要根据数据量来选择特征的生成方式,例如:
  如果你的系统是一个搜索系统,query和文档中有百万级的词,但是你只有千级别的标注样本。那你就别用ID级关键词特征了,而是要考虑点积类特征,把特征数量控制在几十个这个级别。
  如果你拥有百万级样本,那么可以将文档和query的关键词进行交叉特征,然后用正则化进行特征选择。这样你会得到百万级特征,但是正则化之后会更少。所以说,千万级样本,十万级特征。
  如果你有十亿级或者更高级别的样本,那么你可以使用query和文档的ID级特征,然后加上特征选择和正则化。十亿级样本,千万级特征。
  总结起来就是,根据样本决定特征使用方式,样本不够就对特征进行高层次抽象处理,指导和样本量级相匹配。
  Rule22:Cleanupfeaturesyouarenolongerusing。
  规则22:清理不再使用的特征。
  如果某个特征已经没有用,并且它与其他特征的交叉也已经没有用,就应该将其清理掉,保持架构的整洁性。
  在考虑添加或保留哪些特征时,需要统计一下特征的样本覆盖率,例如一些整体覆盖率很低的个性化featurecolumn,只有很少用户能覆盖到,那么大概率这组特征作用不大。但另一方面,如果某个特征覆盖率很低,例如只有1,但是其区分度非常大,例如90取值为1的样本都是正样本,那么这个特征就值得加入或保留。
  未完待续
  End。
投诉 评论

植树节来啦我写了句文案抗疫情1。根脉相连,携手同心,共克时艰2。向着光亮奋力地生长,终会冲破眼前这黑暗食品类1。吸收好营养才有好成长2。吃的好才能长得好房产类……机器学习条军规解密谷歌机器学习工程最佳实践上文章把在产品中应用机器学习的过程从浅到深分成了三个大的阶段,又在这三个大的阶段中细分出了一些方面,以此对43条规则进行逻辑分类。一起来学习下。本文是对rulesof……双象床垫简介床垫挑选技巧分享床垫是人们睡觉时必用的生活用品,其实现在市场上也是有很多床垫品牌的,其中最受欢迎的就是双象床垫了,那么双象床垫好吗?下面就跟随一起装修网小编来看看双象床垫简介,并来了解床垫挑选……去除皮肤油光的正确方法这个技巧会显得看图:由于各种原因,有时候我们在拍照的时候,可能会导致皮肤上总会存在一些油光和高光。今天介绍一个比较好玩的去除方法,它可以真实快速的去除这些烦人的东西。接下来……玩盆景必学截桩基本要求和截口处理技巧盆景,作为一种消费升级型产品,受到越来越多人的喜爱。盆景,不同于手串之类的文玩,也不同于奇石珠宝类产品。玩盆景,养的是一个活的植物。原本野生的植物,已经长期在原有环境下形成它的……优秀的销售人员常用的大购买行为模型菲利普科特勒(PhilipKotler)对消费者购买行为曾作出这样的结论:消费者购买行为是指人们为满足需要和欲望而寻找、选择、购买、使用、评价及处置产品、服务时介入的过程活动,……团队协作故事自私就是自毁《中外管理》杂志曾刊登过这样一个哲理故事:在铸造车间,有一个特殊的工种叫浇注工,浇注工要时时穿上厚重的工作服,戴上安全帽,戴上手套。即便是酷热的夏天,也必须把自己包裹起来……风水最好的房屋格局图个实例一:房子的格局要方正从风水角度看比较方正的房子户型能够让主人财运和运势旺盛,如果房子有这样的缺角的户型对居住主者不利。二:房子南北通透最好南北方向通透的房子居……九星应克天蓬星天蓬星值子时主有鸡鸣犬吠,宿鸟闹林,或有鸟自北方争闹飞来,作用后缺唇人至:六旬日后应鸡生肉卵,主口舌官讼破财,凶。天蓬星值丑时主树倒伤人,有雷电大作及风雨为应……太准了十二星座超能力大揭秘超能力是电影剧情里面的特权?有没有想过十二星座中各有各的超能力,你想知道你的星座具备什么样的超能力吗?跟小编来看一下吧白羊座:能够在千钧一发闪过的直觉白羊座的人其实……手相桃花怎么看命犯桃花的种类型手相手相桃花怎么看婚姻线看桃花运一、一个人的婚姻线清晰且水平延伸,其桃花运大多比较不错,能够找到理想的对象,婚姻生活也将更加的幸福、美满。二、一个人的手掌上有两条……卧室潮湿床怎么处理经常盖潮湿的被子会怎样呢卧室潮湿床怎么处理被子拿出去晒找一个阳光明媚的天晴日子,把被子拿出去晒一下,如果你勤快的话,完全可以一天晴就去晒被子,这样被子不但能除湿,还更加保暖。垫一个防……
长时间的爱抚好吗种男人补肾壮阳的方法你一定不能错过如何做分数乘法麦吉尔大学年的清明节放假吗清明节加班有三倍工资吗汽车更换轮毂会影响速度表的准确度吗春节旅游景点攻略一起尽享乐趣吧居家达人教你如何选择家居装修墙纸双离合变速器结构图双离合变速器优缺点分析芹菜心腐病如何防治阳宅大门最吉尺寸发财的人都特别讲究这一点谁是你命中的贵人蛇头造句用蛇头造句大全全球首个月壤数字藏品限量发行春节作文话题河南老表30年前土埋20瓶茅台,如今打开全变黄水,为何?杨幂头上扎针郭麒麟与女网红聊天记录曝光,约完就删?女方认识我是他的晦气谁是百兽之王张品成永远的哨兵读后感三篇兰州曼谷,正班航线恢复!孩子自卑懦弱消极怎么办孩子自卑懦弱消极怎么教育年你一定听过流量池但你听过内容池吗老人脚扭伤肿了不能吃什么

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找