2016-11-02 29 views
1

は時々0 欠損値を持つことができます。たとえば、多分あなたは野球の投手のセットに対して投手あたりのゲームごとの三振を測定し、そしてあなたがここXGBoostはRの疎行列の欠損値と0を区別しますか?

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

のような特徴ベクトルで終わる、1人の投手は、試合あたり0奪三振と3人の投手がdidnの平均しました彼らはまだゲームを投げていないので、すべてのデータを記録しません。我々は疎行列にこれを変換すると、我々はここで

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と欠落データを別々に扱うのでしょうか?つまり、XGBostがこの機能を分割しようとすると、欠落しているデータに対してNAプロトコル(分割された両方の方向をチェック)に従うか、欠落したデータをスパース以外の0値と同じ場所に送信しますか?

をはい、欠損値は、ゲインの計算に考慮されていません(高める木の子供の勾配とヘッセ行列の合計に追加されません)0値ながら:しかし、正確な質問に答えるために

+0

小さな例であなたが経験的にこれをテストすることができように思える... – Gregor

答えて

0

ブースティングツリー内の子供の勾配とヘッセ行列の合計に加算されます。

したがって、0と欠損値は同じではありません。あなたのコードで

+0

私は 'dgCMatrix'行列はNASとして欠損値を格納していたと思ったので、私はほとんどが混乱していたが、それは実際には0として格納します。 – Ben

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) 
関連する問題