2015-12-19 92 views
1

我們知道如何繪製邏輯迴歸和其他分類器方法的決策邊界,但是我對一個圖不感興趣;而是我想要的是二項式預測值的確切值.50。R如何快速獲得邏輯迴歸的決策邊界

例如:

train=data.frame(1:20) 
train$response=rep(1:0,10) 
model=glm(response ~ poly(X1.20, 2), data=train, family=binomial) 


train$X1.20[1]=10.5 
predict(model, train[1,], type="response") 

葉我10.5判定邊界,我可以通過試驗和誤差與預測()函數找到,這意味着10.5爲獨立變量的值給出的響應恰好.50。有沒有一種自動化的方式來找到什麼值會給出.50的迴應?

回答

3

您應該使用logit模型中預測的零值意味着響應概率爲0.5的事實。因此,您可以嘗試找到一個值x,使預測值儘可能接近零。這裏deviationFromZero()發現給定值爲x的模型的預測值從零到多遠。

df <- data.frame(x = 1:20, response = rep(1:0, 10)) 
model <- glm(response ~ poly(x, 2), data = df, family = binomial) 
deviationFromZero <- function(y) abs(predict(model, data.frame(x = y))) 
boundary <- optimize(f = deviationFromZero, interval = range(df$x)) 

boundary 
$minimum 
[1] 10.5 

$objective 
      1 
1.926772e-16 
+0

對於其他人有興趣在此,速度的改進可以使用NLM(),而不是優化()存在,但你必須確保包裹在SUM()函數,這樣它看起來像總和( abs(預測(......)( –

+0

@JamesH)你說得對,我認爲'nlm'肯定會更快,在這種情況下,基於梯度的方法會更快,因爲一切都很好而且連續。一個網格搜索,所以它有點慢(但根據我的經驗,在其他情況下更穩健一些)。 – christoph