1

R で xgboost を使用して、トレーニング データセットで分類モデルを構築していtrainます。train以下の属性を持っています。

  1. すべての数値機能を備えています
  2. 欠損値はありません。
  3. カテゴリ/テキスト/因子変数は存在しません。
  4. TARGET1/0 の値をとるターゲット変数です。

xgb.train ではデータを特定の形式で渡す必要があるため、xgb.train で必要な形式を取得するために次の 2 つの方法を試しました。

1.

y <- train$TARGET
train <- sparse.model.matrix(TARGET ~ ., data = train) ##has 76000 rows and 307 columns
xgtrain <- xgb.DMatrix(data=train, label=y)

2.

y <- train$TARGET
train$TARGET <- NULL
x = as.matrix(train)
x = matrix(as.numeric(x),nrow(x),ncol(x)) ##has 76000 rows and 307 columns
xgtrain = xgb.DMatrix(x, label = y)

xgtrainさて、これら 2 つの作成方法によって構築されたモデルを使用してテスト セットをスコアリングすると、異なるスコア/AUC が得られます。1番目の方法または2番目の方法を2回/ 3回実行するとスコアを再現できたため、ランダム化の問題ではないことを確認しました。私が理解できなかった2つの方法で、何かが異なって起こっています。誰かがその違いを特定するのを手伝ってもらえますか?

別の言葉で質問します。 提供されたデータに欠損値やカテゴリ変数がない数値特徴のみが含まれている場合との違いは何ですか?sparse.model.matrixas.matrix

4

2 に答える 2

1

(sparse.model.matrix で) 式を使用すると、データに切片が追加されます (たとえば、すべて 1 の列)。したがって、使用している 2 つの行列は異なるため、結果も異なります。その使用を避けるには:

train = sparse.model.matrix(TARGET~.-1,data = train)

また、データセットをデータ モデル マトリックスでオーバーライドすることはおそらくお勧めできません (両方とも "train" という名前を付けます)。

于 2016-04-07T09:18:05.187 に答える