基于文档向量的情绪预测非常有效,例如: https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-IMDB.ipynb http://linanqiu.github.io/2015/10/07/word2vec-sentiment/
我想知道载体中的模式是什么样的。我认为它应该是矢量的相似性,这使得某种程度上可行。 Gensim相似性度量依赖于余弦相似性。因此,我尝试了以下方法:
随机初始化修复“比较”向量,获得“比较”向量与训练和测试集中所有其他向量的余弦相似度,使用列车集的相似性和标签来估计逻辑回归模型,评估模型与测试集。
看起来像这样,其中train / test_arrays包含文档向量和train / test_labels标签0或1.(注意,文档向量是从genism 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%.... 所以,我的问题是,如果不是向量的相似性,向量中的“信息”是什么,使基于向量的预测起作用?或者我的方法根本无法捕捉向量的相似性是否正确?
答案 0 :(得分:1)
这不是关于Doc2Vec的问题,而是关于具有高维数据的机器学习原则。
您的方法是将100维折叠到单个维度 - 与随机点的距离。然后,您希望单个维度仍然可以预测。
大概所有LogisticRegression都可以使用单值输入尝试选择一个阈值数,当您的距离在该阈值的一侧时,预测一个类 - 另一方面,预测不是 - 那个-类。
将单阈值距离重新转换回原始的100维空间,它本质上试图在随机点附近找到一个超球面,它可以很好地收集内部或类似的所有单个类别。超出其数量。
在复杂的高维空间中,随机放置的中心点加上一个可调半径的几率是多少?我的预感是:不是很多。你的结果,并不比随机猜测更好,似乎也有同样的建议。
可以访问完整100维的LogisticRegression找到一个区分边界,用于分配由100个系数和一个截距值描述的类 - 并且所有这些101个值(自由参数)都可以调整提高其分类性能。
相比之下,您的替代LogisticRegression只能访问距离随机点一个距离的距离'维度只能选择一个系数(距离)和截距/偏差。它可以获得1/100的信息,只需要调整2个免费参数。
作为类比,考虑一个更简单的空间:地球表面。选择一个随机的'点,就像说南极。如果我告诉你,你在距离南极8900英里的一个不为人知的地方,你能否回答你是否更有可能在美国或中国?几乎没有 - 这两个类'位置有很多实例离南极8900英里。
只有在极端情况下,距离才会告诉您确定您所在的哪个级别(国家/地区) - 因为美国的阿拉斯加州和夏威夷州的某些地区比中国的部分区域更南北。但即便如此,只需一个门槛就无法妥善管理:在美国,您需要一条规则,即小于X 或大于Y的规则;不知道"。
Doc2Vec向量(或其他丰富数据源)的100维空间通常只能通过更复杂的规则进行合理划分。而且,我们对基于2维或3维空间的距离和体积的直觉常常会导致我们误入歧途。
尽管如此,地球上的比喻确实提出了一条前进的方向:地球上有一些参考点,当你知道它们的距离时,它会更好地工作,决定你是否“在美国或中国。特别是,在美国中心或中国中心的一个点可以很好地运作。
同样,如果不是随机fix_vec
,你可以获得更好的分类准确度,你可以选择(a)任何已知类的点;或(b)一类所有已知点的平均值。在任何一种情况下,您的fix_vec
都可能在"在一个街区"类似的例子,而不是一些随机点(与你的班级没有比南极到北半球温带地区国家更重要的关系)。
(另外:选择N个多个随机点,然后将N个距离输入到回归中,将保留原始Doc2Vec数据的更多信息/形状,从而使分类器更有可能找到有用的分离-threshold。两个可能比你的一个距离更好,100可能接近或超过100个原始尺寸。)
最后,关于Doc2Vec方面的一些评论:
Doc2Vec在预测文本的单词时优化在约束模型中有些好的向量。积极情绪词语倾向于一起出现,负面情绪词也是如此,因此训练有素的医生载体在需要预测相似词义时往往会将自己安排在相似的位置。因此,可能会有邻居'文档向量空间与主要的积极情绪或消极情绪词相关,从而与正面或负面情绪相关。
这些不一定是两个巨大的社区,而且是积极的'并且'否定',由一个简单的边界分隔 - 或者甚至是少数与我们的三维实体积相匹配的邻域。许多沟通的微妙之处 - 例如讽刺,引用一种不持有的观点来批评它,在消极方面花费更多时间但最终得出积极的结论等 - 意味着将交替情绪词语插入到文本中。一个完全语言理解的人类代理人可以理解这些,以得出真实的'情绪,而这些基于单词出现的方法仍然会被混淆。
但是如果有足够的模型和正确数量的自由参数,分类器可能会捕获一些关于高维空间的一般概述。在这种情况下,您可以使用Doc2Vec维度实现相当好的预测 - 正如您在完整的100维向量上看到的~80%+结果一样。