如何将 AdaBoost 应用于更“复杂”(非二进制)的分类/数据拟合?

数据挖掘 机器学习 大数据 优化
2021-09-16 18:01:15

这篇文章中,Chris McKinlay 说他使用 AdaBoost 来选择他在 okcupid 上回答的问题的正确“重要性”。

如果你没看过也不想看文章,或者对okcupid和提问系统不熟悉,下面是他遇到的数据和问题:目标是尽可能多的“匹配”到尽可能多的用户可能,每个人都可能回答了任意数量的问题。这些问题每个可能有 2 到 4 个答案,为了简单起见,我们假设匹配的公式% M 您和其他用户之间的信息由

 M=Qa/Qc

在哪里  Qc 是您和其他用户共同的问题数量,以及

 Qa 是您回答的相同值的问题数。

真正的公式稍微复杂一些,但是关于“选择”正确答案的方法是相同的(他实际上使用提升来找到放置在给定问题上的理想“重要性”,而不是正确答案)。在任何情况下,关键是您要为每个问题选择一个特定的值,这样您就可以最大化与尽可能多的用户的匹配百分比 - 您可以通过总和来量化 M超过所有用户。

现在我已经看了麻省理工学院的人工智能课程,包括关于提升的讲座,但我不明白你如何将它应用到这样的问题上。老实说,我什至不知道从哪里开始为弱学习者选择规则。我没有任何关于为每个问题选择什么值的“规则”(如果用户低于 5'5,请选择 A 等)——我只是想拟合我拥有的数据。

这不是应该使用提升的方式吗?他是如何解决这个问题的,是否还有其他一些优化?

2个回答

AdaBoost 是一种监督学习方法;它从一个“正确”答案表开始,并为一个已知的目标生成一个预测模型。然后可以检查这个模型以弄清楚它是如何工作的,它认为什么更重要。考虑到这一点,这是我对他所做的事情的猜测:

首先,他创建了一个训练数据集。根据文章,数据集是这样创建的:

现在他也会为爱做同样的事。首先他需要数据。在他的论文工作继续进行的同时,他建立了 12 个假 OkCupid 帐户并编写了一个 Python 脚本来管理它们。该脚本将搜索他的目标人群(25 至 45 岁的异性恋和双性恋女性),访问她们的页面,并从她们的个人资料中获取所有可用信息:种族、身高、吸烟者或不吸烟者、星座——“所有这些废话,”他说。

为了找到调查的答案,他不得不做一些额外的调查。OkCupid 让用户可以看到其他人的回答,但仅限于他们自己回答的问题。McKinlay 设置他的机器人来简单地随机回答每个问题——他没有使用虚拟个人资料来吸引任何女性,所以答案并不重要——然后将女性的答案收集到数据库中。"

所以他用python脚本收集了大量的信息!最后,他有一个数据表,其中每行包含三条信息: - 机器人对所有问题的回答及其权重 - 女性对所有问题的回答 - 他们的匹配百分比。

对此,他可以使用 AdaBoost 创建一个预测模型,根据可用信息预测匹配百分比。弱学习者可能是决策树桩,一次贪婪地选择一个变量进行拆分,这就是人们在谈论 AdaBoost 时所指的标准。

一旦预测模型到位,它就可以用于优化 - 在保持所有其他变量不变的情况下确定问题的权重,最大化目标受众中女性的平均匹配百分比。

当然,这只是一个猜测。文章没有太多细节。但这是为此目的使用 AdaBoost 的一种潜在方式。

我最好的猜测:

三周后,他收集了来自全国 20,000 名女性的 600 万个问题和答案。

我假设我们可以收集女性回答的内容、她们会接受的答案以及她们对问题的重视程度。这是训练集

他挑选了两个集群中最受欢迎的 500 个问题。

这就是特征选择

要最小化的损失函数可能是匹配百分比(对数)的负和

m(x,s,w,yi,ti,vi)

在他的回答之间 x (长度为 500 的向量),他接受的答案 s, 重要性 w 他将每个问题归结为 i'th 女人的回答 yi, 答案 ti 她会接受以及她赋予他们的重要性 vi.

他已经决定要诚实地填写答案

意思是 xs 是固定的,只有 w 被调整以最小化目标函数。

如果匹配百分比很简单,例如“以相同方式回答的问题数量乘以您分配给该问题的重要性”,那么简单的“最重视您回答的问题,与您首选集群中的女性相同,并且重要性为零对其他问题”应该最大限度地提高这一点。但是,匹配百分比函数更复杂。

一开始就对所有问题赋予同等重要性。然后计算每个问题对整体损失函数的贡献:questionsj 对于他的答案与许多女性答案不匹配的问题,下一轮的权重会降低,匹配问题的权重会增加(不过,我必须考虑权重更新的细节如何)。

请注意,向量中的问题相关性 w只能采用一组离散的值(0、1、10、50、250),使其成为离散优化问题,因此可能是 NP-hard。在实践中,我会允许权重w 取 0 到 250 之间的任何实际值,然后最后四舍五入到最接近的允许值。

(免责声明:我从未使用过 OkCupid)