【问题标题】:Using match scores to determine right features (Machine Learning)使用匹配分数来确定正确的特征(机器学习)
【发布时间】:2014-12-01 01:26:29
【问题描述】:

一旦功能可用,我熟悉确定我们知识库中给定文档集与搜索查询文档(基于余弦距离)的匹配程度。我们会根据特征在向量空间上进行映射。

我如何处理反向问题——我已经获得了一组文档和多个查询文档的匹配分数,并且必须确定特征(或确定匹配的决策标准)。这将是训练数据,该模型将用于识别与我们的知识数据库匹配的新 搜索查询

我们目前的方法是想出一组特征,然后查看哪些组合在训练集中获得最佳匹配分数……但我们最终会尝试多种组合。有一个更好的方法吗?

【问题讨论】:

    标签: machine-learning feature-selection supervised-learning


    【解决方案1】:

    这是一种应该可行的简单直接的方法(线性模型)。 如果您正在处理文档和查询,那么您正在使用的功能可能是那些标记(或单词)或 n-gram 或主题。为简单起见,我们假设这些特征是单词。

    假设你有一个查询文档:

    apple iphone6 
    

    并且您有一组文档及其与上述查询的相应匹配分数: (假设文档是urls的内容)

    www.apple.com (Apple - iPhone 6) score: 0.8
    www.cnet.com/products/apple-iphone-6 (Apple iPhone 6 review), score: 0.75
    www.stuff.tv/apple/apple-iphone-6/review (Apple iPhone 6 review), score: 0.7
    ....
    

    按查询模型

    首先,您需要从匹配的 url 中提取单词特征。假设我们得到消息和他们的L1-normalized TF/IDF 分数:

    www.apple.com
    apple 0.5
    iphone 0.4
    ios8 0.1
    
    www.cnet.com/products/apple-iphone-6
    apple 0.4
    iphone 0.2
    review 0.2
    cnet 0.2
    
    www.stuff.tv/apple/apple-iphone-6/review
    apple 0.4
    iphone 0.4
    review 0.1
    cnet 0.05
    stuff 0.05
    

    其次,您可以结合特征分数和匹配分数,并在每个特征的基础上进行汇总:

    w(apple) = 0.5 * 0.8 + 0.4 * 0.75 + 0.1 * 0.7 = 0.77
    w(iphone) = 0.4 * 0.8 + 0.2 * 0.75 + 0.4 * 0.7 = 0.75
    w(ios8) = 0.1 * 0.8 = 0.08
    w(review) = 0.2 * 0.75 + 0.1 * 0.7 = 0.22
    w(cnet) = 0.2 * 0.75 = 0.15
    w(stuff) = 0.05 * 0.7 = 0.035
    

    您可能需要执行标准化步骤,将每个 w 除以文档数。现在,您将获得以下按相关性依次排列的功能:

    w(apple)=0.77 / 3
    w(iphone)=0.75 / 3
    w(review)=0.22 / 3
    w(cnet)=0.15 / 3
    w(ios8)=0.08 / 3
    w(stuff)=0.035 / 3
    

    你甚至可以通过使用这些权重得到一个线性分类器:

    score = w(apple) * tf-idf(apple) + w(iphone) * tf-idf(iphone) + ... + w(stuff) * tf-idf(stuff)
    

    假设现在您有一个检测到这些特征的新网址:

    ios8: 0.5
    cnet: 0.3
    iphone:0.2
    

    然后您可以计算其关于查询“apple iphone6”的匹配分数:

    score = w(ios8)*0.5 + w(cnet)*0.3 + w(iphone)*0.2
          = (.08*.5 + .15*0.3 + .75*.2 ) / 3
    

    然后可以使用匹配分数来根据文档与相同查询的相关性对文档进行排名。

    任意查询模型

    您执行相同的操作来为每个查询构建一个线性模型。假设你的训练数据中有k这样的查询和匹配的文档,你最终会得到 k此类机型;每个模型都是基于一个查询构建的。

    model(apple iphone6) = (0.77*apple + 0.75iphone + 0.22review + ...) / 3
    model(android apps) = (0.77google + 0.5android + ...) / 5
    model(samsung phone) = (0.5samsung + 0.2galaxy + ...) / 10
    

    请注意,在上述示例模型中,3、5、10 是规范化器(与每个查询匹配的文档总数)。

    现在一个新的查询来了,假设它是:

    samsung android release
    

    我们剩下的任务是:

    • 查找相关查询q1, q2, ..., qm
    • 使用查询模型对新文档进行评分和汇总。

    您首先需要从该查询中提取特征,并假设您已经为您学习的每个查询缓存了特征。根据任何nearest neighbor 方法(例如Locality sensitive hashing),您可以找到与“samsung android release”类似的前k 个查询,可能它们应该是:

    similarity(samsung phone, samsung android release) = 0.2
    similarity(android apps, samsung android release) = 0.2
    

    整体排名

    因此我们得到最终排名为:

    0.2*model(samsung phone) + 0.2*model(android apps) =
      0.2* (0.77*apple + 0.75iphone + 0.22review + ...) / 3 + 
      0.2* (0.77google + 0.5android + ...) / 5
    

    通常在那些信息检索应用程序中,您已经构建了从特征(单词)到文档的倒排索引。因此,最终排名应该能够非常有效地评估顶级文档。

    参考

    详情请参考Omid Madani等人的IND算法。 Learning When Concepts Abound.

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2018-10-17
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2019-11-16
      • 2015-12-11
      • 2012-03-28
      • 2019-07-14
      相关资源
      最近更新 更多