【问题标题】:High Dimension Text Classification , Efficient Way高维文本分类,高效方法
【发布时间】:2017-12-24 02:22:58
【问题描述】:

我们的问题的一个子样本如下。

我们有 1600 个地址位置可供机器学习查找。 我们的训练数据形式为

City Subdivision District number1-number2-number3

我们有显示城市分区的官方数据

London Chelsea Kensington 2-3-15
London Chelsea Kensington 4-3-15
London Chelsea Battersea  3-4-2
London Greenwich Charlton 4-3-15
London Greenwich Coldharbour 1-2-1

我们有 10K 个这样的样本。

所以我们的训练数据是 10K。

Training Data

----------


Label      | Features

Kensington | London Chelsea Kensington 5-1-1

Kensington | London Chelsea Kensington 4-3-15

Battersea  | London Chelsea Battersea  5-1-1

Battersea  | London Chelsea Battersea  4-2-1

Charlton   | London Greenwich Charlton 5-1-1

Coldharbour| London Greenwich Coldharbour 5-1-1


----------

将数字视为地址编号。所以不是独一无二的,不是一个显着的特征。

我们需要猜测的是

----------


Chelsea Kensington 5ー1ー1 sea harbor = Kensington ( sea harbor some additional items which can exist in other addresses 
and can mislead our algorithms)

Kensington 5ー1ー1  =  Kensington ( Think 5-1-1 exists for lots of addresses and some algorithms (Bayes or Decision Trees)guess this as another address with 5-1-1 Charlton)

Kensington 5      =  Kensington ( One might think since it has only Kensington it will gues Kensington but if there is an address
as  xxx 5 5 5 Bayes thinks it is xxx )


----------

人们会立即说这需要 ngram。但是 ngrams 匹配 非常不相关的条目很有可能。使用 Ngram2 或 Ngram3 的贝叶斯可以找到很多正确的匹配项,但他们也声称错误结果的概率为 99。

我尝试过贝叶斯、决策树、随机森林...... OnevsRest 从未在如此高的维度上完成。

多层感知器未完成 12K 特征空间。 出现内存不足错误。

我将维度减少到 3000,但即使这样也没有看到结果。

SVM 不适用,因为它是多类的。

总结一下:

我的训练数据非常简单,不包含太多信息。 (一个地方所有地址的列表) 问题是高维的。(1600个区)

我的可能数据可能是看不见和不可预测的。有一些 输入错误。

我正在考虑做一些 PCA(SVD),然后是多层感知器 或 CNN。

但想想我有 1600 节课的 12000 个词汇。 不知道有没有降维的意思 对于这个问题。

那么有人曾经解决过这样的问题吗?

【问题讨论】:

  • 标签似乎总是等于特征之一。为什么要使用机器学习而不是简单的搜索?
  • 亲爱的 Lior,测试数据不准确。也许它不可读。我让它更具可读性。认为我并不总是得到标签,或者在不同的地方有多个巴特西。
  • 尽管如此,我不认为机器学习会被证明是最好的方法。我会将输入分解为姓名和数字,并在这些地址和真实地址之间定义一些距离分数。
  • 我和你一样。问题受到误差函数的影响(距离分数意味着我认为相同)。我不知道我是否变得更好。所以功能损失风格的算法是没用的。
  • 概率的不可靠。对于一些错误的结果,贝叶斯给出了 %99。如果您将输入用于决策树,则它只能处理一层树,即区域本身。像 SVM 这样的几何图形不适用于高维。也许我需要用这个输入证明这不是机器学习。我在想MultiLayer Perceptron的参数生成,看看字母和输出有没有神奇的关系。

标签: algorithm apache-spark svm text-classification perceptron


【解决方案1】:

为什么不简单地删除所有非字母(包括数字)和可能的停用词?到那时,如上所示的问题就变成了:当你看到Set A 的某个子集时,返回B。 { A -> `B' }

示例(去除非字母后):

{ London Chelsea Kensington } -> { Kensington}

所以我也假设:

{ Chelsea Kensington } ->  { Kensington}

 { Kensington } ->  { Kensington}

没有任何进一步的要求,只要通过Set of Sets 解决。一个简单的解决方案是将要预测的新集合与所有标记集合的交集进行比较,并找到“赢家”。如果您有很多集合,那么您将希望拥有一个由 Trie 的术语组成的森林 - 代表集合的成员 - 以帮助使搜索易于处理

【讨论】:

  • 亲爱的 javadba,训练数据很清楚,但测试数据(或真实数据)不会像 Kensington 一样出现。如果没有切尔西,它可能会以 Knsigton 或 Kenston 的身份出现。当时问题属于 ngram 风格的逻辑。 Ngrams 非常适合 Countvector 和 TF-IDF,在低空间。(20 级)。但是当它是 1600 类时,他们变得如此糟糕,他们以 %99 的概率声称错误的结果。(因为它是一个字符序列,并且某事物的错误版本与另一事物非常相似)
  • 这是一个根本不同的问题:您应该确保您的训练数据反映预期的测试数据。我的回答是针对您上面提出的问题。
  • 我同意。我得到了一个定义明确的训练集,需要猜测错误的输入。至少,我需要错误的输入来合并这个集合。问题定义不好。我能做的最好的事情就是生成一些列,让感知器发挥作用。
猜你喜欢
  • 2012-07-17
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2019-08-20
  • 2021-05-20
相关资源
最近更新 更多