1

景氣預測效果很好,作爲例子顯示: 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%.... 所以,我的問題是,什麼是「信息」是在向量中,如果不是向量的相似性,那麼使基於向量的預測工作?或者,我的方法根本無法捕獲矢量的相似性是否正確?

回答

1

這不是關於Doc2Vec的問題,而是關於高維數據的機器學習原理。

您的方法是將100維尺寸摺疊到一個維度 - 距離您的隨機點。然後,你希望單一維度仍然可以預測。

大致所有的LogisticRegression都可以處理單值輸入,試圖選擇一個閾值 - 當您的距離位於該閾值的一邊時,預測一個類 - 另一方面,預測不會 - 該級。

將這個單閾值距離重新回到原來的100維空間,它本質上是試圖在你的隨機點周圍找到一個超球體,它能很好地收集體內或體外的所有單個類。

在一個複雜的高維空間中,隨機放置的中心點加上一個可調整的半徑可以做得很好嗎?我的直覺是:不是很多。而且你的結果,不比隨機猜測更好,似乎也表明了同樣的結果。

訪問完整100維的LogisticRegression找到了一個區分前沿,用於分配由100個係數和一個截距值描述的類 - 並且可以調整所有這101個值(自由參數)以改進其分類表現。

相比之下,只有一個「距離隨機點」維度的另一個LogisticRegression可以選擇一個係數(距離)和截距/偏差。它有足夠的信息來處理,只有2個免費參數可供調整。

作爲一個比喻,考慮一個更簡單的空間:地球表面。選擇一個「隨機」的觀點,就像說南極那樣。如果我然後告訴你,你離南極8900英里處於一個陌生的地方,你能否回答你是否更喜歡美國或中國?幾乎沒有 - 這兩個地點的「班級」都有很多距離南極8900英里的地方。

只有在極端情況下,距離才能確定您所在的班級(國家) - 因爲美國的阿拉斯加和夏威夷的部分地區比中國的部分地區更偏南北。但即使在那裏,你也無法用一個單一的門檻管理好:你需要一個規則:「在美國,小於X 大於Y;否則不知道」。

Doc2Vec向量(或其他豐富的數據源)的100維空間通常只會被明顯更復雜的規則分割。而且,我們對基於2維或3維空間的距離和體積的直覺往往會導致我們在高維度上走向歧途。

儘管如此,地球比喻確實表明了前進的道路:有一些參考點在地球上,如果你在美國或者中國是,將工作方式更好,當你知道它們的距離,在決定。尤其是,美國中心或中國中心的一個點可以很好地發揮作用。類似地,如果你選擇的是(a)任何一個類是已知的,那麼你可能會得到更好的分類準確度,而不是隨機的fix_vec;或(b)一類的所有已知點的平均值。無論哪種情況,您的fix_vec可能都是類似的例子中的「鄰居」,而不是一些隨機點(與南極對北半球溫帶地區國家沒有更多的本質關係)。 (另外:或者選取N個多個隨機點,然後將N個距離提供給您的迴歸,將保留原始Doc2Vec數據的更多信息/形狀,從而使分類器更有可能找到有用的。分離閾值的兩個可能會做得比你一個距離比較好,和100可能接近或超過100種原始尺寸)

最後,關於Doc2Vec方面的一些評論:

Doc2Vec優化是somewhat-矢量在他們的約束模型中,在預測文本的詞語方面是好的。積極情緒詞傾向於同時發生,負面情緒詞也會一起發生,因此受訓的文檔向量在需要預測相似含義詞時傾向於將自己排列在相似的位置。因此,doc-vector空間中可能存在與主要積極情緒或消極情緒話語以及積極或消極情緒相關的「鄰居」。

這些不一定是兩個巨大的街區,'正面'和'負面',被一個簡單的邊界隔開 - 甚至是與我們的三維實體圖相匹配的少數鄰域。而溝通的許多微妙之處 - 比如諷刺,引用一種沒有持有的觀點來批評它,花費更多的時間在消極的方面,但最終得出積極的結果等等 - 意味着將不同的情緒詞彙帶入文本。一個完全理解語言的人類智能體可以理解這些以得出'真實'情感,而這些基於單詞發生的方法仍然會被混淆。

但是,通過適當的模型和正確數量的自由參數,分類器可能會捕捉到關於高維空間的一般概念。在這種情況下,您可以使用Doc2Vec尺寸實現相當好的預測 - 正如您在整個100維矢量上看到的〜80%+結果一樣。

+0

謝謝你那麼長的答案!我明白你對降維的看法。對我有意義。但是這也爲我提出了相反的問題:如果一個向量有100個維度,每個維度都會爲情感預測提供有用的信息,爲什麼餘弦距離成爲語義相關句子的一個很好的衡量標準?因此,是否可以通過使用餘弦距離度量來訓練分類器以查找語義相關的句子並獲得「更好」的結果? –

+0

餘弦距離是矢量相似性的常用和簡單度量 - 考慮向量範數方向,而不考慮幅度。恰好在基礎NN中,相同方向(0.0餘弦距離)的輸入向量將產生相同的排序輸出預測(剛剛按照量值縮放),而具有小余弦距離的輸出向量給出相似的預測。所以這種距離適合這個模型,結果經常很好地工作。 (仍然:如果所有向量都是單位規範的,歐幾里德距離將產生與最近鄰居相同的排名。) – gojomo

+0

對於原始doc-vecs可能有一些其他特徵轉換可以與正確的分類器配合產生更好的最終結果 - 通過一些評估更普遍,更好的得分。也許在原始空間中,情感的「社區」不能通過Logistic迴歸來完全分離,而是可能與其他綜合維度或其他分類模型分離。 (你將100d轉化爲一個半徑值本質上是應用一個'徑向基核' - 如果*這些類是可以被球體分開的,並且選擇了正確的中心,那將是一個很好的方法。) – gojomo

相關問題