2012-06-21 19 views
6

glmnetを使用して、次のコードを使用して5つの機能のセットに基づいて確率を予測しています。別の(非R)プログラムで使用する必要があるため、実際の数式が必要です。得られた係数のglmnetでのRの係数名の解釈

deg = 3 

glmnet.fit <- cv.glmnet(poly(train.matrix,degree=deg),train.result,alpha=0.05,family='binomial') 

名は5つの位置を有している(私は、これは、各特徴の一つであると仮定)、それらの各々は0と3の間の数である(これは多項式の次数であると仮定する)。しかし、私はまだ式をどのように正確に再構築するのか混乱しています。

例えばこれらを取る:

> coef(glmnet.fit,s= best.lambda) 
(Intercept) -2.25e-01 
... 
0.1.0.0.1 3.72e+02 
1.1.0.0.1 9.22e+04 
0.2.0.0.1 6.17e+02 
... 

はのは、機能のA、B、C、D、Eを呼ぶことにしましょう。この式はどのように解釈されるべきですか?

これが正しくない場合、どのように解釈すればよいですか?

私は以下を見ましたquestion and answerしかし、これらのタイプの係数名は扱いませんでした。

ご協力いただきありがとうございます。

答えて

6

通常、予測機能を使用します。あなたの場合、別のプログラムで使用する係数が必要です。予測を使用することと、データに係数を乗じた結果との間の一致を確認することができる。

# example data 

library(ElemStatLearn) 
library(glmnet) 
data(prostate) 

# training data 

data.train <- prostate[prostate$train,] 
y <- data.train$lpsa 

# isolate predictors 

data.train <- as.matrix(data.train[,-c(9,10)]) 

# test data 

data.test <- prostate[!prostate$train,] 
data.test <- as.matrix(data.test[,-c(9,10)]) 

# fit training model 

myglmnet =cv.glmnet(data.train,y) 

# predictions by using predict function 

yhat_enet <- predict(myglmnet,newx=data.test, s="lambda.min") 

# get predictions by using coefficients 

beta <- as.vector(t(coef(myglmnet,s="lambda.min"))) 

# Coefficients are returned on the scale of the original data. 
# note we need to add column of 1s for intercept 

testX <- cbind(1,data.test) 
yhat2 <- testX %*% beta 

# check by plotting predictions 

plot(yhat2,yhat_enet) 

各係数はトレーニングデータの列に対応しています。最初のものは切片に相当します。要約すると、係数を抽出し、テストデータを乗算して、目的の結果を得ることができます。

+0

ご回答いただきありがとうございます。残念ながら、私はまだそれらの係数の名前と値を式に変換する方法がわかりません。 "各係数はトレーニングデータの列に対応します"。それは事実ではない。 〜80の非ゼロ係数があります。しかし私は5列のトレーニングデータしか持っていません。私は、それらのピリオドで区切られた数字のそれぞれがおそらく私のコラムの1つに対応していると思います。任意の第二の意見ですか? – dougp

+0

polyData < - poly(train.matrix、degree = deg)の列をチェックしてください。 polyは、直交多項式を使用してトレーニングデータを(5つの列から〜80まで)拡大しています。それはあなたが探しているものですか?新しい列/名前があり、これらが係数に一致することがわかります。私は見る。 – julieth

+0

。それは大いに役立ちます。ありがとうございました。私は「ポリ」なしでこれを一度試しました。度は1度でしたが、物事はもっとはっきりしていました。これをさらに調べると、私の一般的な数式の再構成は、1つのことを除いて正しいと思われます。私は、特徴A、B、C、D、Eは実際には直交する多項式(生データではない)であると考えています。 – dougp

関連する問題