R のキャレット パッケージを使用して、グリッド検索とモデル評価を行っています。絶対誤差の加重平均であるカスタム評価指標があります。重みは観測レベルで割り当てられます。
X <- c(1,1,2,0,1) #feature 1
w <- c(1,2,2,1,1) #weights
Y <- 1:5 #target, continuous
#assume I run a model using X as features and Y as target and get a vector of predictions
mymetric <- function(predictions, target, weights){
v <- sum(abs(target-predictions)*weights)/sum(weights)
return(v)
}
ここでは、summaryFunction を使用してキャレットの train() のカスタム評価メトリックを定義する方法の例を示します。引用するには:
trainControl 関数には、パフォーマンスを計算するための関数を指定する summaryFunction という引数があります。関数には次の引数が必要です。
data は、obs および pred と呼ばれる列を含むデータ フレームまたは行列の参照であり、観測および予測された結果値 (回帰の数値データまたは分類の文字値のいずれか) を表します。現在、クラス確率は関数に渡されません。データ内の値は、チューニング パラメーターの 1 つの組み合わせに対する保持された予測 (および関連する参照値) です。trainControl オブジェクトの classProbs 引数が TRUE に設定されている場合、データ内にクラス確率を含む追加の列が存在します。これらの列の名前は、クラス レベルと同じです。lev は、トレーニング データから取得した結果因子レベルを含む文字列です。回帰の場合、NULL の値が関数に渡されます。model は、使用されているモデルの文字列です (つまり、
観測の重みを summaryFunction に渡す方法がよくわかりません。