簡體   English   中英

XGBoost是否區分R中稀疏矩陣中的缺失值和0?

[英]Does XGBoost distinguish between missing values and 0s in a sparse matrix in 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值(並添加到子項的梯度和粗體的總和)在一個助推樹)

所以,0和缺失值是不一樣的。

在您的代碼中,您明確指定稀疏矩陣的表示。 所有其他人都被隱含地假定為零。 它們被顯示為點,但這並不意味着它們是NA。 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM