高维文本分类,高效方法

时间:2017-07-19 02:25:00

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

我们问题的子样本如下。

我们有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个词汇量。 我不确定降维是否有意义 对于这个问题。

那么有人曾经遇到过像这样的问题吗?

1 个答案:

答案 0 :(得分:2)

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

示例(删除非字母后):

{ London Chelsea Kensington } -> { Kensington}

所以我也认为:

{ Chelsea Kensington } ->  { Kensington}

 { Kensington } ->  { Kensington}

如果没有任何进一步的要求,则由Set of Sets解决。一个简单的解决方案是比较新的Set To Be Predicted与所有标记集的交集并找到“赢家”。如果你有很多套,那么你将需要一个Trie的术语森林 - 代表集合的成员 - 以帮助使搜索易于处理