文档向量中的哪些“信息”使情感预测得以实现?

基于文档向量的情感预测表现得非常好,如下例所示:https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-IMDB.ipynbhttp://linanqiu.github.io/2015/10/07/word2vec-sentiment/

我想知道向量中是什么模式使得这种预测成为可能。我原以为应该是向量的相似性使得这成为可能。Gensim 的相似性度量依赖于余弦相似性。因此,我尝试了以下方法:

随机初始化一个固定的“比较”向量,获取该“比较”向量与训练集和测试集中所有其他向量的余弦相似性,使用训练集的相似性和标签来估计一个逻辑回归模型,并用测试集评估模型。

看起来是这样的,其中 train/test_arrays 包含文档向量,train/test_labels 标签为 0 或 1。(注意,文档向量是从 gensim doc2vec 获得的,并且训练得很好,如果直接用作逻辑回归的输入,可以正确预测测试集的 80%):

fix_vec = numpy.random.rand(100,1)def cos_distance_to_fix(x):    return scipy.spatial.distance.cosine(fix_vec, x)train_arrays_cos =  numpy.reshape(numpy.apply_along_axis(cos_distance_to_fix, axis=1, arr=train_arrays), newshape=(-1,1))test_arrays_cos = numpy.reshape(numpy.apply_along_axis(cos_distance_to_fix, axis=1, arr=test_arrays), newshape=(-1,1))classifier = LogisticRegression()classifier.fit(train_arrays_cos, train_labels)classifier.score(test_arrays_cos, test_labels)

结果表明,这种方法不起作用,只能预测测试集的 50%……所以,我的疑问是,如果不是向量的相似性,那么向量中的“信息”是什么,使得基于向量的预测能够工作?或者我的方法根本无法正确捕捉向量的相似性?


回答:

这个问题与其说是关于 Doc2Vec 的,不如说是关于高维数据的机器学习原则的。

你的方法是将 100 维度压缩到一个维度——到你那个随机点的距离。然后,你希望这个单一维度仍然具有预测能力。

而逻辑回归对于这种单值输入所能做的,大致就是尝试选择一个阈值,当你的距离在这个阈值的一侧时,预测一个类别——在另一侧时,预测另一个类别。

将这个单一阈值距离重新投射到原始的 100 维空间中,本质上是在尝试找到一个超球体,围绕你的随机点,这个超球体能够很好地收集一个单一类别的所有实例,要么在其内部,要么在其外部。

在复杂的高维空间中,你的随机放置的中心点加上一个可调整的半径,能够很好地做到这一点的概率是多少?我的直觉是:不太大。而你的结果,与随机猜测一样好,似乎也表明了这一点。

能够访问完整 100 维度的逻辑回归能够找到一个用于分配类别的区分边界,这个边界由 100 个系数和一个截距值描述——所有这些 101 个值(自由参数)都可以调整以提高其分类性能。

相比之下,你的替代逻辑回归只能访问一个“距离随机点”的维度,只能选择一个系数(用于距离)和一个截距/偏置。它只有 1/100 的信息可以使用,并且只有 2 个自由参数可以调整。

作为一个类比,考虑一个更简单的空间:地球表面。选择一个“随机”点,比如说南极。如果我告诉你你在一个距离南极 8900 英里的未知地点,你能回答你更可能在美国还是中国吗?几乎不可能——这两个“类别”的位置都有很多实例距离南极 8900 英里。

只有在极端情况下,距离才能确定你所在的类别(国家)——因为美国的阿拉斯加和夏威夷的某些部分比中国的某些部分更靠北或更靠南。但即使在那里,你也无法仅用一个单一阈值来很好地管理:你需要一个规则,说“小于 X 大于 Y,在美国;否则未知”。

Doc2Vec 向量的 100 维空间(或其他丰富的数据源)通常只能通过远为复杂的规则来合理划分。而且,我们基于 2 维或 3 维空间的关于距离和体积的直觉,往往会在高维度中误导我们。

尽管如此,地球类比确实提示了一种前进的途径:有一些参考点在地球上,当你知道到它们的距离时,会在决定你是否在美国或中国时表现得更好。特别是,美国中心或中国中心的一个点会非常有效。

同样,如果你不是选择一个随机的 fix_vec,而是选择(a)已知类别的任何点;或(b)一个类别的所有已知点的平均值,你可能会获得更好的分类准确性。在任何一种情况下,你的 fix_vec 都可能位于“类似示例的邻域”中,而不是某个随机点(这个随机点与你的类别没有比南极与北半球温带国家更重要的关系)。

(此外:选择 N 个多个随机点,然后将 N 个距离输入到你的回归中,将保留更多原始 Doc2Vec 数据的信息/形状,从而使分类器有更好的机会找到一个有用的分隔阈值。两个距离可能会比你一个距离做得更好,而 100 个可能会接近或超过原始的 100 个维度。)

最后,关于 Doc2Vec 方面的一些评论:

Doc2Vec 优化了在其受限模型内能够较好地预测文本词语的向量。正面情感词语倾向于一起出现,负面情感词语也是如此,因此训练好的文档向量倾向于在需要预测类似含义词语时排列在相似的位置。因此,文档向量空间中可能存在与主要正面情感或负面情感词语良好相关的“邻域”,从而与正面或负面情感相关联。

这些邻域不一定是两个巨大的邻域,“正面”和“负面”,由一个简单的边界分隔——甚至不是少数几个匹配我们对 3-D 固体体积概念的邻域。许多沟通的细微之处——如讽刺、引用不持有的观点来批评它、花更多时间在负面方面但最终得出正面结论等——意味着替代情感词语会侵入文本。一个完全理解语言的人类代理可以理解这些以得出“真实”的情感,而这些基于词语出现的方法仍然会感到困惑。

但有了足够的模型和适当数量的自由参数,分类器可能会捕捉到关于高维空间的一些可推广的见解。在这种情况下,你可以使用 Doc2Vec 维度实现相当好的预测——正如你在完整的 100 维向量上看到的约 80%+ 的结果一样。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注