2016-11-02 62 views
1

有時功能可能有0s 缺失值。例如,你可以測量每投手遊戲三振一組棒球投手,並且你最終像XGBoost是否在R中的稀疏矩陣中區分缺失值和0?

feats <- c(NA, NA, NA, 3.7, 0, 2.2) 

這裏的特徵矢量,1名投手平均每場0三振和3名投手沒沒有記錄任何數據,因爲他們還沒有投入比賽。當我們將它轉​​換爲一個稀疏矩陣,我們得到類似

library(Matrix) 
sparse1 <- sparseMatrix(i=4:6, j=rep(1, 3), x=c(3.7, 0, 2.2), dims=c(6, 1)) 
sparse1 

[1,] . 
[2,] . 
[3,] . 
[4,] 3.7 
[5,] 0.0 
[6,] 2.2 

這裏,dgCMatrix類明確區分失蹤0的數據,但是從我的理解,假設在dgCMatrix丟失數據採取值0

我想知道的是,當XGBoost試圖拆分這些數據時,它會分別處理0和缺失的數據嗎?換句話說,當XGBoost試圖在這個特性上分裂時,它是否遵循NA協議(檢查兩個拆分方向)丟失的數據,還是將丟失的數據發送到與非稀疏0值相同的位置?

+0

好像有一個小例子,你可以實證檢驗這... – Gregor

回答

0

爲了雖然回答確切的問題:

是,缺失值不考慮增益計算而0值(不以提高樹添加漸變和孩子的粗麻布的總和)被考慮(並且在增強樹中增加了兒童的梯度和粗麻布的總和)

因此,0和缺失值是不相同的。

+0

我主要是困惑,因爲我認爲'dgCMatrix'矩陣存儲遺漏值來港,但實際上它們存儲爲0。 – Ben

0

在您的代碼中,您明確指定了稀疏矩陣的表示形式。所有其他人都隱含地認爲是零。它們顯示爲點,但這並不意味着它們是NAs。 as.matrix()將顯示這些點實際上是零。

library(Matrix) 
sparse1 <- sparseMatrix(i=4:6, j=rep(1, 3), x=c(3.7, 0, 2.2), dims=c(6, 1)) 
as.matrix(sparse1)