有时,功能可以包含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值相同的位置? / p>
答案 0 :(得分:0)
回答确切的问题:
是的,增益计算不考虑缺失值(不会增加增强树中子项的梯度和粗糙度之和),而考虑0值(并添加到梯度和粗糙度的总和)在一棵鼓励的树上的孩子们)
因此,0和缺失值不一样。
答案 1 :(得分:0)
在您的代码中,您明确指定了稀疏矩阵的表示。所有其他人都被隐含地假定为零。它们被显示为点,但这并不意味着它们是NA。 git clone https://android.googlesource.com/platform/development
~/tools/development/vndk/tools/definition-tool/datasets[master]$ ls
eligible-list-o-mr1-release.csv eligible-list-o-release.csv minimum_dlopen_deps.txt minimum_tag_file.csv
会显示这些点实际上是零。
as.matrix()