2016-01-13 22 views
3

我有一個需求,我需要找到在ANN實現中使用的屬性的相對重要性。我使用Spark MLib庫MultiLayerPerceptron來實現。該模型給我一個向量,這是一個權重數組。我知道有算法可以從權重中推導出相對的重要性,但是MLib實現給出了一個大的單維數組,並且沒有說明與每個輸入對應的權重。任何人都知道如何獲得與每個輸入節點相對應的權重?如何使用Spark Mlib多層感知器權重陣列

+0

對此的任何答案?我一直想知道權重向量的語義 – besil

回答

0

model使用Breeze操縱:toDenseVector展平權重矩陣。 (注意行:val brzWeights: BV[Double] = weightsOld.asBreeze.toDenseVector

這個操作acts like numpy's flatten()。 因此,取回權重矩陣,你必須做兩件事情:

  1. 拆分的權重向量部分,根據您的圖層。您必須爲每個非最終層(+1由於偏差)採取(layerSize + 1) * nextLayerSize權重。
  2. 對於每個展平的權重矩陣,應用numpyreshape以及參數(layerSize + 1, nextLayerSize)

當您獲取權重的相對重要性,注意到在pyspark implementation,偏置表示爲最後一個特性:from the docs:

因此,每個權重矩陣中的最後一行代表偏差值。