2017-02-16 39 views
0

我在Scikit-learn中使用局部線性嵌入(LLE)方法來降維。我能找到的唯一例子屬於Scikit-learn文檔herehere,但我不知道該如何選擇該方法的參數。特別是,數據點的維數或樣本數量與鄰居數量(n_neighbors)和組件數量(n_components)之間是否有任何關係? Scikit-learn中的所有示例都使用n_components = 2,情況總是如此嗎?最後,是否有其他參數對調節至關重要,或者我應該使用其餘參數的默認設置?在Scikit-learn中設置局部線性嵌入(LLE)方法的參數以減少降維

回答

0

您可以使用GridSearch(Scikit-learn)爲您選擇最佳值。

+0

謝謝你的回答。我實際上對這些參數之間存在的任何關係感興趣,而不是通過應用GridSeach來尋找最佳選擇,這可以應用於其他方法來找到給出特定問題的最佳結果的值。 – Miranda

0

是否有數據點的尺寸或樣本的數目和鄰居的(n_neighbors)組分(n_components)號碼和號碼之間的任何關係?

一般來說,不相關。樣本間的距離通常決定於n_neighbors。特別是,如果您知道樣本的類別,則最好將n_neighbors設置爲比每個類別中的樣本數量稍多一點。雖然n_components,即縮減的維度大小,是由原始維度的數據的冗餘確定。根據具體的數據分佈和您自己的需求,您可以選擇合適的投影空間尺寸。

n_components=2是將原始高維空間映射到2d空間。實際上,這是一個特殊情況。

是否有任何其他參數對調諧至關重要,或者我應該使用其餘參數的默認設置?

這裏有幾個其他的參數你應該照顧。

  • reg重量正則化,這是不是在the original LLE paper中使用。如果你不想使用它,只需簡單地將它設置爲零。但是,reg的默認值是1e-3,它很小。
  • eigen_solver。如果您的數據量很小,建議使用dense來確保準確性。你可以在這方面做更多的研究。
  • max_itermax_iter的默認值只有100,,這往往導致結果不收斂。如果結果不穩定,請選擇一個更大的整數。