2012年10月21日,星期日

套袋!

我的 最近的Kaggle比赛 经验使我印象深刻,需要更快地选择模型。我最初的计划是创建一个交叉验证 威杜布 插件(减少),但是 尼科斯 说服我 套袋 具有更多的功能和更连贯的知识。基本思想是在vee-dub中复用权重向量,并同时学习一组模型,每个模型都经历输入序列的不同自举版本。结果有三点好处:
  1. 型号选择。 预算外估计 功能类似于交叉验证的估计。当多次遍历数据集时,监视袋外估计而不是渐进式验证丢失是一个更好的主意。
  2. 置信区间。当开发一个独立的决策系统时,一个点预测通常就足够了;但是,当开发要集成到更大决策系统中的子系统时,区间预测为下游使用者提供了更丰富的摘要。
  3. 更好的结果。归纳可以提高模型的通用性 偏差方差权衡。到目前为止,我还没有看到对数据集的任何实际提升,这是可以理解并可以预期的:线性模型的方差低,因此不能从套袋中受益。为了从套袋中受益,您必须做一些最终输出对训练数据差异更敏感的事情,例如神经网络,树或具有自动数据驱动特征选择的线性模型。
选择模型是我最初的动机,因此这里是利用 KDD世界杯98 数据。竞赛提供了数百个预测功能,但获胜作品仅使用了少量,表明模型选择非常重要。比赛如下:要求您决定向谁发送邀请(蜗牛)邮件;每封邮件的成本为68美分。训练集由特征($ x_i $)对($(x_i,r_i)$)和对应于先前邮件活动的响应捐赠金额(r_i $)组成。评估集仅由$ x_i $组成(除了比赛已结束,因此我们可以窥视并看到评估集的$ r_i $);提交了评估集中每个实例的估计捐赠$ \ hat r_i $,然后根据$ 1 _ {\ hat r_i进行评分>0.68}(r_i-0.68)$。换句话说,即使决定是是否邮寄某人,该决定还是通过估计的大于或小于68美分的答复发送的;否则,就无法评估估计响应的准确性,而实际获得的总利润是评分标准。

我们可以将其建模为重要性加权分类问题,根据\ [将对$ {x_i,r_i)$转换为三元组$(x_i,y_i,c_i)$。
(x_i,r_i)\ to(x_i,1_ {r_i>0.68},| r_i-0.68 |)。
\]对于评估集,我们可以解码是否直接将决定作为模型的预测类邮寄的决定。在这种情况下,常量预测变量对应于不发邮件或发邮件给所有人的策略。正如曾经拥有邮箱的任何人所能证明的那样,向所有人发送邮件比不向任何人发送邮件更有利可图,因此``向所有人发送邮件''是要克服的基本策略。 (从理论上讲:也许不应该使用机器学习的商业秘密垃圾邮件过滤器,而应该使用机器学习并公开分发 其实 想要购买伟哥并拯救其他所有人免于烦恼。)

我建立了一个幼稚的``厨房水槽''模型,方法是采用训练集中的所有功能,将日期自1900年1月起以数字形式编码为月,使用带有经验分母的样条曲线将数字编码为结点,并对所有其他变量进行分类编码。我还整理了一个模型,其中包含10个功能(通过查看获奖者的作品)(使用与厨房水槽相同的策略进行编码)。结果如下:\ [
\ begin {array} {c | c | c | c}
\ mbox {型号}&\ mbox {训练集利润}&\ mbox {培训设置的利润(实际支出)}&\ mbox {评估集利润} \\ \ hline
\ mbox {向所有人发送邮件}& \$10788.54 & \$10704 \pm \$529 & \$10560.08 \\
\ mbox {10个功能}& \$17596.35 & \$14617 \pm \$434 & \$14896.07 \\
\ mbox {厨房水槽}& \$24353.80 & \$493 \pm \$80 & \$154.92 \\
\ end {array}
\]因此,厨房水槽严重超出了训练范围,但实际购买力不足以检测到这一点。哇

不幸的是,减少装袋并不比运行多个vee-dub快。对于具有大量I / O开销的简单模型来说,它的速度更快,但是对于更复杂的模型,摊销I / O只是一个适度的好处。在内部对所有内容进行编排更为方便,减少的内容应与vee-dub的分布式学习功能结合在一起,但是在笔记本电脑领域,这并不是一个巨大的胜利。

当然,一旦有了套袋,自然的下一步就是尝试一些不稳定的学习方法。敬请关注!




2012年10月2日,星期二

卡格勒比赛提示

我最近进入了 卡格勒 第一次比赛。总体而言,这是一次积极的经历,我向有兴趣应用机器学习的任何人推荐它。

这是一场私人比赛,所以我只能讨论一般性,但是幸运的是有很多。经验验证了所有 机器学习民间智慧 尽管Pedro Domingos支持这些原则的应用,但这些支出的最高度量指标驱动的性质对其进行了修改。就像在扑克中一样,需要在锦标赛和桌面游戏之间进行战略调整,而机器学习竞赛则采用了在正常的工业环境中不合适的技术。

评价

对于比赛,我们首先了解评估指标。在现实生活中(又名``桌上游戏''),机器学习系统的目标通常没有被明确指定(例如,``改善相关性''或``检测出类似现象''),或者由于以下原因而难以直接优化:总体影响和不受控制的外部因素(例如,``提高长期客户保留率和满意度'')。在这种情况下使用代理指标,但希望没有人会太在意它们,因为每个人都理解为方便起见选择了代理指标。

在比赛中(又称``锦标赛比赛''),评估指标确定您获得的报酬。因此,需要非常认真地对待它。第一步是尝试使用简单模型(例如,常量模型)重现评估指标,该模型通常是应用于未知数据集的已知函数。可以使用评估泛化误差的方法($ k $倍交叉验证,袋外估计),但重要的是要记住,您并不是要泛化为来自相同分布的未来数据集,而是而是用于评估的特定固定数据集。注意,如果可能的话,过度拟合评估数据集绝对没有问题。是否可行取决于您分配的中间提交数和评分方式,以及是否可以看到评估功能。

在本次比赛中,训练集和评估集之间没有特定变量的配对,因此在对训练集进行交叉验证以估计最终分数时,必须考虑到这一点。但是,提交是在评估数据的固定(未知)子集上评分的,该子集是评估集的逐行随机拆分。因此,提交是探索评估指标的一种高质量方法,我们尽可能多地使用它们(以提交限制为准)。例如,由于评估集是已知的(但标签未知!),我们尝试使用协变量移位来对训练数据进行加权并改善模型。仅使用培训数据来估计其影响将需要实施交叉交叉,并且可能会产生误导。相反,我们准备了两份仅在这方面有所不同的意见书,并很快了解到这不是一个有希望的攻击路线。再举一个例子,我们通过准备一对提交并观察结果分数,在正则化参数的两个不同设置之间做出决定。 (我们使用了无聊的实验设计策略来探究评估集;也许有更好的方法来利用提交的内容。)

特征工程

在这里,比赛和桌上游戏机器学习更加统一,因为特征工程在这两者中都扮演着至关重要的角色。但是,由于比赛的获胜幅度很小,因此比赛功能设计更为疯狂。简而言之,如果它看起来完全可以改善模型,那么它仍然存在:在锦标赛中,可解释性,实现复杂性,可维护性或评估时间等问题并不重要,除非它们在建模期间会给建模者带来问题。竞赛。在桌面游戏中,功能受更细微的成本效益分析的影响,这些因素也考虑了这些因素。

由于特征工程是模型选择,因此监视评估指标很重要。在功能工程阶段,我们使用了 威杜布 专门为了尽快翻动模型。

是时候取消拉皮条功能了。
值得在比赛中花一些时间来提高评估估算的速度。我做了几个,但是错过了一个大比赛,直到比赛结束后才意识到:我通过使用不同的输入调用vee-dub 10次来进行10倍交叉验证,但这最好是在vee内部进行-通过还原接口复制以分摊I / O。希望我能在不久的将来实现它。

数据整形也非常重要且效率较低。通过数据整形,我的意思是选择如何代表学习算法的特定功能(例如,尝试获取该东西的日志并在此处,此处和此处设置一些样条线结)。能够直接向vee-dub指定这种数据整形将再次通过摊销I / O来促进快速实验和参数清除。

最后,我们在数据中发现了某些“特征”,这些特征显然是比赛数据的收集方式,不太可能“真正地泛化”。对于比赛而言,问题在于它们是否会泛化为评估集,因此我们准备了成对的评估稿。在桌面游戏中,除非预测提升很明显,否则根本不会使用这些功能,并且由于明显缺乏面部有效性,即使使用了附加数据,也要谨慎评估这些功能。

顺便说一句,我们确实发现了(显然)真实的功能,这些功能应该可以为比赛发起人提供见识。尽管与比赛相关的激励措施并不完善,但大多数情况下仍可以归结为做好工作。

模型平均

我们的获奖作品包括几种机器学习的模型,这些模型使用完全不同的程序进行训练并取平均。现在这是标准的锦标赛技术,尽管我从未在桌上游戏中明确使用过它(隐式的是,通过增强和装袋;但是平均树和神经网络并不是我在商业环境中做过的事情)。我多么震惊这是多么有效:将一个模型与另一个模型进行平均,这显然更糟,结果要好于任何一个,这要归功于 偏差方差权衡。迅速获得无所作为的习惯成为一种成瘾的习惯,但是最好的结果是结合使用完全不同的方法训练的模型(即,不易变形的模型),并且很难找到产生竞争性结果的完全不同的方法(例如,我们尝试了基于指标的方法,但这些方法太差了,以至于我们在最终的集成中没有使用它们。

Gettin的真实

关于比赛的最好的部分是比赛的激烈程度。在桌面游戏中,您通常会与其他机器学习专家合作,以产生一个有益于业务的良好模型。尽管您可能也在利用机器学习技术与其他企业竞争,但是您的雇主的命运与机器学习模型的质量之间的关系却被模糊了。在锦标赛中,比您在排行榜上表现更好的球队直接表明了您当前技术的次优状态。如果您确实碰巧发现自己处于领先地位,那么线索的微不足道和短暂的性质将驱使您找到进一步的改进和见解。我发现自己的工作远远超出了我的预期。

笑嘻嘻!