景氣預測效果很好,作爲例子顯示: 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%作爲logistic迴歸輸入):
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%.... 所以,我的問題是,什麼是「信息」是在向量中,如果不是向量的相似性,那麼使基於向量的預測工作?或者,我的方法根本無法捕獲矢量的相似性是否正確?
謝謝你那麼長的答案!我明白你對降維的看法。對我有意義。但是這也爲我提出了相反的問題:如果一個向量有100個維度,每個維度都會爲情感預測提供有用的信息,爲什麼餘弦距離成爲語義相關句子的一個很好的衡量標準?因此,是否可以通過使用餘弦距離度量來訓練分類器以查找語義相關的句子並獲得「更好」的結果? –
餘弦距離是矢量相似性的常用和簡單度量 - 考慮向量範數方向,而不考慮幅度。恰好在基礎NN中,相同方向(0.0餘弦距離)的輸入向量將產生相同的排序輸出預測(剛剛按照量值縮放),而具有小余弦距離的輸出向量給出相似的預測。所以這種距離適合這個模型,結果經常很好地工作。 (仍然:如果所有向量都是單位規範的,歐幾里德距離將產生與最近鄰居相同的排名。) – gojomo
對於原始doc-vecs可能有一些其他特徵轉換可以與正確的分類器配合產生更好的最終結果 - 通過一些評估更普遍,更好的得分。也許在原始空間中,情感的「社區」不能通過Logistic迴歸來完全分離,而是可能與其他綜合維度或其他分類模型分離。 (你將100d轉化爲一個半徑值本質上是應用一個'徑向基核' - 如果*這些類是可以被球體分開的,並且選擇了正確的中心,那將是一個很好的方法。) – gojomo