আর-তে লজিস্টিক রিগ্রেশনের বিকল্পসমূহ


55

আমি লজিস্টিক রিগ্রেশন হিসাবে একই কাজ সম্পাদন করে এমন অনেক অ্যালগরিদম চাই। এটি হল অ্যালগরিদম / মডেল যা কিছু ব্যাখ্যামূলক ভেরিয়েবল (এক্স) সহ বাইনারি প্রতিক্রিয়া (ওয়াই) এর পূর্বাভাস দিতে পারে।

আপনি যদি অ্যালগরিদমের নাম রাখেন, তবে আপনি এটি আর-তে কীভাবে প্রয়োগ করবেন তাও যদি দেখান তবে আমি খুশি হব other এখানে এমন একটি কোড যা অন্যান্য মডেলের সাথে আপডেট করা যেতে পারে:

set.seed(55)
n <- 100
x <- c(rnorm(n), 1+rnorm(n))
y <- c(rep(0,n), rep(1,n))
r <- glm(y~x, family=binomial)
plot(y~x)
abline(lm(y~x), col='red', lty=2)
xx <- seq(min(x), max(x), length=100)
yy <- predict(r, data.frame(x=xx), type='response')
lines(xx, yy, col='blue', lwd=5, lty=2)
title(main='Logistic regression with the "glm" function')

আমরা, আপনি ভবিষ্যতবক্তা একটি নির্দিষ্ট সেট বিবেচনা করা হয় অনুমান করতে হবে অর্থাৎ আপনি যদি একটি নির্ভরযোগ্য ভবিষ্যদ্বাণী দেওয়া পেয়ে আগ্রহী না ভবিষ্যতবক্তা, অথবা আপনি এছাড়াও দণ্ডনীয়তা কিছু আগ্রহী ? kXj(j=1k)
chl

আমি স্বীকার করি যে আমার ব্যক্তিগত স্বার্থের জন্য শাস্তি দেওয়ার প্রয়োজন হবে না, এবং জ্ঞানের জন্য এখানে আমি উভয়ই প্রাসঙ্গিক উত্তর বলতে চাই :)
তাল গ্যালিলি

ভবিষ্যতের রেফারেন্সের জন্য: আপনি সম্ভবত এই প্রশ্নটি এমনভাবে বাক্যবর্গ করতে সক্ষম হবেন যে আমরা এটিকে একটি সিডাব্লু -হীন প্রশ্ন হিসাবে অনুমতি দিতাম। মেটা.স্ট্যাটস.স্ট্যাকেক্সেঞ্জারওয়েজ
শেন

শেন লিঙ্কটির জন্য আপনাকে ধন্যবাদ। আপনি সেখানে খুব আকর্ষণীয় আলোচনা খুললেন। টমাসাস উত্তর পড়ার পরে, আমি বিশ্বাস করি এটি এখনও একটি সম্প্রদায়ের উইকি হওয়া উচিত, যেহেতু আমার উদ্দেশ্য ছিল যতটা সম্ভব বিকল্পগুলি সন্ধান করা (যে কোনও সন্দেহ যে কোনও এক ব্যক্তি সরবরাহ করতে সক্ষম হবে)। তবুও, আবার আমাকে সেই থ্রেডে পরিচালিত করার জন্য আপনাকে ধন্যবাদ!
তাল গ্যালি

জবাবদিহি করার মতো এটি সত্যই বিস্তৃত নয় - বর্তমানে এটির 6 টি উত্তর রয়েছে (5 টি উন্নত)। তদুপরি, প্রশ্নটি উচ্চ উত্সাহিত এবং অত্যন্ত পছন্দসই, এবং সিডব্লিউ। আইএমও এটি খোলা থাকা উচিত।
গুং - মনিকা পুনরায়

উত্তর:


28

এই মুহুর্তে জনপ্রিয় র্যান্ডমফোরস্ট এবং জিবিএম (যাকে মার্ট বা মেশিন লার্নিং সাহিত্যে গ্রেডিয়েন্ট বুস্টিং বলা হয়), সাধারণ গাছগুলির জন্য আরপিআর্ট। এছাড়াও বেইসগ্ল্যাম জনপ্রিয়, যা নিয়মিতকরণের জন্য প্রিপার্স সহ এমএপি ব্যবহার করে।

install.packages(c("randomForest", "gbm", "rpart", "arm"))

library(randomForest)
library(gbm)
library(rpart)
library(arm)

r1 <- randomForest(y~x)
r2 <- gbm(y~x)
r3 <- rpart(y~x)
r4 <- bayesglm(y ~ x, family=binomial)

yy1 <- predict(r1, data.frame(x=xx))
yy2 <- predict(r2, data.frame(x=xx))
yy3 <- predict(r3, data.frame(x=xx))
yy4 <- predict(r4, data.frame(x=xx), type="response")

24

আসলে, এটি আপনি কী পেতে চান তার উপর নির্ভর করে। আপনি যদি কেবলমাত্র পূর্বাভাসের জন্য লজিস্টিক রিগ্রেশন করেন তবে আপনি আপনার ডেটার উপযোগী যে কোনও তদারকি করা শ্রেণিবিন্যাস পদ্ধতি ব্যবহার করতে পারেন। আরেকটি সম্ভাবনা: বৈষম্যমূলক বিশ্লেষণ (lda () এবং qda () প্যাকেজ এমএএসএস থেকে)

r <- lda(y~x) # use qda() for quadratic discriminant analysis

xx <- seq(min(x), max(x), length=100)
pred <- predict(r, data.frame(x=xx), type='response')
yy <- pred$posterior[,2]

color <- c("red","blue")

plot(y~x,pch=19,col=color[pred$class])
abline(lm(y~x),col='red',lty=2)
lines(xx,yy, col='blue', lwd=5, lty=2)
title(main='lda implementation')

অন্যদিকে, আপনার ভবিষ্যদ্বাণীগুলির কাছাকাছি যদি আপনার আত্মবিশ্বাসের ব্যবধানগুলি বা আপনার অনুমানের উপর স্ট্যান্ডার্ড ত্রুটিগুলির প্রয়োজন হয় তবে বেশিরভাগ শ্রেণিবদ্ধকরণ অ্যালগরিদমগুলি আপনাকে সহায়তা করবে না। আপনি সাধারণীকরণযোগ্য (মিশ্র) মডেলগুলি ব্যবহার করতে পারেন, যার জন্য বেশ কয়েকটি প্যাকেজ উপলব্ধ। আমি প্রায়শই সাইমন উডের এমজিসিভি প্যাকেজ ব্যবহার করি। সাধারণীকরণযোগ্য মডেলগুলি লজিস্টিক রিগ্রেশনের চেয়ে আরও নমনীয়তার মঞ্জুরি দেয়, কারণ আপনি আপনার ভবিষ্যদ্বাণীকারীদের মডেলিংয়ের জন্য স্প্লাইন ব্যবহার করতে পারেন।

set.seed(55)
require(mgcv)
n <- 100
x1 <- c(rnorm(n), 1+rnorm(n))
x2 <- sqrt(c(rnorm(n,4),rnorm(n,6)))
y <- c(rep(0,n), rep(1,n))
r <- gam(y~s(x1)+s(x2),family=binomial)

xx <- seq(min(x1), max(x1), length=100)
xxx <- seq(min(x2), max(x2), length=100)
yy <- predict(r, data.frame(x1=xx,x2=xxx), type='response')

color=c("red","blue")
clustering <- ifelse(r$fitted.values < 0.5,1,2)

plot(y~x1,pch=19,col=color[clustering])
abline(lm(y~x1),col='red',lty=2)
lines(xx,yy, col='blue', lwd=5, lty=2)
title(main='gam implementation')

আরও অনেক কিছু করার আছে:

op <- par(mfrow=c(2,1))
plot(r,all.terms=T)
par(op)

summary(r)
anova(r)

r2 <- gam(y~s(x1),family=binomial)
anova(r,r2,test="Chisq")

...

আমি জেনারালাইজড অ্যাডিটিভ মডেলগুলি সম্পর্কে সাইমন উডের বইটি সুপারিশ করব


14

আমি জোয়ের সাথে একমত, এবং যুক্ত করব:

কোনও শ্রেণিবদ্ধকরণ পদ্ধতি নীতিগতভাবে ব্যবহার করা যেতে পারে, যদিও এটি ডেটা / পরিস্থিতির উপর নির্ভর করবে। উদাহরণস্বরূপ, আপনি সম্ভবত জনপ্রিয় সি-এসভিএম মডেলের সাথে একটি এসভিএমও ব্যবহার করতে পারেন। রেডিয়াল বেস কার্নেল ফাংশনটি ব্যবহার করে কার্নলব থেকে এখানে একটি উদাহরণ দেওয়া হয়েছে:

library(kernlab)
x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2))
y <- matrix(c(rep(1,60),rep(-1,60)))

svp <- ksvm(x,y,type="C-svc")
plot(svp,data=x)

12

ক্যারেট প্যাকেজের মাধ্যমে প্রশিক্ষণযোগ্য এমন প্রায় 100 টি শ্রেণিবদ্ধকরণ এবং রিগ্রেশন মডেল রয়েছে । শ্রেণিবদ্ধকরণ মডেলগুলির যে কোনও একটি আপনার জন্য বিকল্প হতে পারে (রিগ্রেশন মডেলগুলির বিপরীতে, যার একটি ধারাবাহিক প্রতিক্রিয়া প্রয়োজন)। উদাহরণস্বরূপ একটি এলোমেলো বন প্রশিক্ষণ:

library(caret)
train(response~., data, method="rf")

ক্যারেট মডেল প্রশিক্ষণ ভিগনেট দেখুন যা উপলব্ধ মডেলগুলির সম্পূর্ণ তালিকার জন্য বিতরণের সাথে আসে। এটি দ্বৈত-ব্যবহার এবং শ্রেণিবদ্ধকরণ মডেলগুলিতে বিভক্ত (উভয়ই আপনি ব্যবহার করতে পারেন) এবং কেবলমাত্র রিগ্রেশন (যা আপনি পারবেন না)। ক্যারেট স্বয়ংক্রিয়ভাবে আপনার জন্য নির্বাচিত মডেলের জন্য পরামিতিগুলি প্রশিক্ষণ দেবে।


7

বাইনারি প্রতিক্রিয়া সন্ধান করার জন্য নায়েভ বয়েস প্রশিক্ষণ ডেটার একটি সহজ সহজ পদ্ধতি।

library(e1071)
fitNB <- naiveBayes(y~x)
predict(fitNB, x)

3

লজিস্টিক রিগ্রেশনের দুটি ভিন্নতা রয়েছে যা এখনও রূপরেখায় নেই। প্রথমত লজিস্টিক রিগ্রেশন একটি লজিস্টিক ফাংশন ব্যবহার করে সম্ভাব্যতাগুলির অনুমান করে যা একটি ক্রমবর্ধক লজিস্টিক বিতরণ (সিগময়েড নামে পরিচিত)। অন্যান্য বিতরণ থেকে প্রাপ্ত ফাংশনগুলি ব্যবহার করে আপনি সম্ভাব্যতাও অনুমান করতে পারেন। লজিস্টিক রিগ্রেশন ব্যতীত সর্বাধিক সাধারণ উপায় হ'ল প্রাক বিতরণ যা সাধারণ বিতরণ থেকে প্রাপ্ত from প্রবিট এবং লগইটের পার্থক্যের মধ্যে আরও বিস্তারিত আলোচনার জন্য দয়া করে নীচের সাইটটি দেখুন।

লগইট এবং প্রবিট মডেলগুলির মধ্যে পার্থক্য

set.seed(55)
n <- 100
x <- c(rnorm(n), 1+rnorm(n))
y <- c(rep(0,n), rep(1,n))
r <- glm(y~x, family=binomial(link="probit"))
plot(y~x)
abline(lm(y~x),col='red',lty=2)
xx <- seq(min(x), max(x), length=100)
yy <- predict(r, data.frame(x=xx), type='response')
lines(xx,yy, col='red', lwd=5, lty=2)
title(main='Probit regression with the "glm" function')

দ্বিতীয় বিকল্পটি আপনি প্রয়োগ করেছেন লজিস্টিকাল ফাংশনটির এক সপ্তাহ উল্লেখ করে। আপনার যদি একটি ছোট নমুনার আকার এবং / অথবা মান অনুপস্থিত থাকে তবে লজিস্টিক ফাংশনটি যুক্তিযুক্ত নয়। অতএব একটি সঠিক লজিস্টিক রিগ্রেশন একটি ভাল মডেল। ফলাফলের লগ প্রতিক্রিয়াগুলি পূর্বাভাসীর ভেরিয়েবলগুলির লিনিয়ার সংমিশ্রণ হিসাবে মডেল করা হয়।

elrm(formula = y ~ x)

এছাড়াও অন্যান্য বিকল্পগুলি উল্লেখ করার মতো রয়েছে:

  1. দ্বিমুখী কন্টিনজেন্সি টেবিল
  2. দ্বি-গ্রুপ বৈষম্যমূলক কার্য বিশ্লেষণ।
  3. হোটলিংয়ের টি 2।

চূড়ান্ত মন্তব্য: একটি লজিস্টিক রিগ্রেশন হাইড লেয়ার ছাড়াই একটি ছোট নিউরাল নেটওয়ার্ক এবং চূড়ান্ত স্তরের মাত্র একটি পয়েন্টের সমান same সুতরাং আপনি নিউরাল নেটওয়ার্ক প্যাকেজগুলির প্রয়োগগুলি যেমন nnetআর তে ব্যবহার করতে পারেন in

সম্পাদনা:

কয়েক সপ্তাহ পরে আমি বুঝতে পারি যে উইনো এবং পারসেপ্ট্রন অ্যালগরিদমও রয়েছে। উভয়ই শ্রেণিবদ্ধকারী যা দুটি গ্রুপে শ্রেণিবদ্ধকরণের জন্যও কাজ করে, তবে দু'জনেই গত 15 বছরে অনুকূল হয়ে পড়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.