Machine learning 如何在SVR任务中处理高维稀疏特征?

Machine learning 如何在SVR任务中处理高维稀疏特征?,machine-learning,nlp,pyml,Machine Learning,Nlp,Pyml,我有一个类似twitter(另一个微博)的数据集,有160万个数据点,并试图根据其内容预测其转发数量。我提取了它的关键字,并使用这些关键字作为单词包的特征。然后我得到了120万维的特征。特征向量非常稀疏,通常在一个数据点中只有十维。我用SVR做回归。现在花了两天时间。我认为训练时间可能需要相当长的时间。我不知道我这样做是否正常。是否有任何方法或必要优化此问题? 顺便说一句,如果在这种情况下,我不使用任何内核,机器是32GB内存和I-7 16核。预计培训时间为多长?我使用了lib-pyml。首先,

我有一个类似twitter(另一个微博)的数据集,有160万个数据点,并试图根据其内容预测其转发数量。我提取了它的关键字,并使用这些关键字作为单词包的特征。然后我得到了120万维的特征。特征向量非常稀疏,通常在一个数据点中只有十维。我用SVR做回归。现在花了两天时间。我认为训练时间可能需要相当长的时间。我不知道我这样做是否正常。是否有任何方法或必要优化此问题?

顺便说一句,如果在这种情况下,我不使用任何内核,机器是32GB内存和I-7 16核。预计培训时间为多长?我使用了lib-pyml。

首先,您可以简单地删除所有高频词和所有低频词,因为它们都不能告诉您关于文本内容的很多信息,然后您必须进行词干分析


在此之后,您可以尝试使用或使用一些更高级的降维技巧(,),甚至两者来降低空间的维数。

您需要找到一种适用于您的问题的降维方法

我研究过一个与您类似的问题,我发现信息获取效果很好,但还有其他问题

我发现这篇论文(Fabrizio Sebastiani,《自动文本分类中的机器学习》,ACM计算调查,第34卷,第1期,第1-47页,2002年)是文本分类的一个很好的理论处理,包括通过从简单(术语频率)到复杂(信息理论)的各种方法进行特征约简

这些函数试图捕捉一种直觉,即ci的最佳术语是 在一系列积极和消极的例子中,这些例子的分布最为不同 ci。然而,不同职能部门对这一原则的解释各不相同。例如,在实验科学中,χ2用于测量观察结果与初始假设预期结果的差异(即独立性)(数值越低,相关性越低)。在DR中,我们测量tk和ci的独立性。因此,χ2(tk,ci)值最低的术语tk与ci最为独立;因为我们对不感兴趣的术语感兴趣,所以我们选择χ2(tk,ci)最高的术语

这些技术可以帮助您选择在将培训文档分为给定类时最有用的术语;对您的问题具有最高预测值的术语

我已经成功地将信息增益用于特征约简,并发现本文(基于熵的文本分类特征选择Largeron,Christine and Moulin,Christophe and Géry,Mathias-SAC-Pages 924-928 2011)是一个非常好的实用指南

在这里,作者提出了一个基于熵的特征选择的简单公式,它有助于在代码中实现:

给定一个术语tj和一个类别ck,ECCD(tj,ck)可以是 根据列联表计算的。让A作为数字 包含tj的类别中的文件数量;B、 号码 包含tj的其他类别的文件;C、 不包含tj和D的ck文件数量, 其他类别中的文档数 不含tj(N=A+B+C+D):

使用此列联表,可通过以下方式估计信息增益:

该方法易于实现,并提供了很好的信息论特征约简


你也不需要使用任何一种技术;你可以把它们结合起来。Ter频率很简单,但也可以有效。我将信息增益方法与术语频率相结合,成功地进行了特征选择。你应该对你的数据进行实验,看看哪种或哪种技术最有效

嗨,问题是这不是一个普通的英语nlp问题。这是一个中文微博。我找不到一种方法来拼写汉语单词。我没有发现频率高的词,最高的是5099个频率。但是我认为去除低频真的是个好主意。所以通常在这种情况下,应该保留多少维度?@deathlee,嗯,我对中文一无所知,无论如何,你需要自己调整维度的数量,并检查模型对这些维度的分类精度是否足够。也许你可以找到中文停止词词典并删除它们(事实上这和删除高频词是一样的)考虑以下2种情况:1)一个高频率或低频率项,该术语的所有出现在一个或另一个类的文档中,2)高或低频项,该项的出现在2个类的文档之间均匀分布。在情况1中,该术语为高值特征,与频率无关;在情况2中,该术语为低值特征,也与频率无关。tf idf最基本的特征选择技术通过检查术语的频率和分布来解决这一问题。还有其他更复杂的统计方法。@BobDillon,这是一个很好的方法,但我认为只有当你的类与类别相等时,它才可能有用。我的意思是你可以假设每门课都有一些主要的主题(技术、金融、新闻)。但他只想预测某条推文是否会被转发,而“是”(retweeted)类可能同时包含多个主题,因为不同的人可以转发不同的推文,并且对不同的主题感兴趣。