যেহেতু আরএফ অ-রৈখিকতা পরিচালনা করতে পারে তবে সহগ সরবরাহ করতে পারে না, তাই গুরুত্বপূর্ণ গুণাবলী সংগ্রহ করার জন্য এলোমেলো বন ব্যবহার করা এবং তার সহগগুলি পাওয়ার জন্য এই বৈশিষ্ট্যগুলি একাধিক লিনিয়ার রিগ্রেশন মডেলটিতে প্লাগ করা কি বুদ্ধিমানের কাজ হবে?
যেহেতু আরএফ অ-রৈখিকতা পরিচালনা করতে পারে তবে সহগ সরবরাহ করতে পারে না, তাই গুরুত্বপূর্ণ গুণাবলী সংগ্রহ করার জন্য এলোমেলো বন ব্যবহার করা এবং তার সহগগুলি পাওয়ার জন্য এই বৈশিষ্ট্যগুলি একাধিক লিনিয়ার রিগ্রেশন মডেলটিতে প্লাগ করা কি বুদ্ধিমানের কাজ হবে?
উত্তর:
যেহেতু আরএফ অ-লিনিয়ারিটি পরিচালনা করতে পারে তবে সহগ সরবরাহ করতে পারে না, তাই গুরুত্বপূর্ণ লক্ষণগুলি সংগ্রহ করার জন্য র্যান্ডম ফরেস্ট ব্যবহার করা এবং তার লক্ষণগুলি ব্যাখ্যা করার জন্য এই বৈশিষ্ট্যগুলিকে একাধিক লিনিয়ার রিগ্রেশন মডেলটিতে প্লাগ করা কি বুদ্ধিমানের কাজ হবে?
আমি ওপি-র এক বাক্য প্রশ্নটির অর্থ এটি ব্যাখ্যা করে যে ওপি নিম্নলিখিত বিশ্লেষণ পাইপলাইনের কাম্যতা বুঝতে চায়:
আমি মনে করি না এই পাইপলাইনটি আপনি যা চান তা সম্পাদন করবে। এলোমেলো বনাঞ্চলে গুরুত্বপূর্ণ যে পরিবর্তনগুলি অবশ্যই ফলাফলের সাথে কোনও ধরণের রৈখিক যোগমূলক সম্পর্ক রাখে না। এই মন্তব্যটি আশ্চর্যজনক হওয়া উচিত নয়: এটাই এলোমেলো সম্পর্ক আবিষ্কারের জন্য এলোমেলো বনটিকে কার্যকর করে তোলে।
এখানে একটি উদাহরণ। আমি 10 শব্দ বৈশিষ্ট্য, দুটি "সংকেত" বৈশিষ্ট্য এবং একটি বিজ্ঞপ্তি সিদ্ধান্তের সীমানা সহ একটি শ্রেণিবিন্যাসের সমস্যা তৈরি করেছি।
set.seed(1)
N <- 500
x1 <- rnorm(N, sd=1.5)
x2 <- rnorm(N, sd=1.5)
y <- apply(cbind(x1, x2), 1, function(x) (x%*%x)<1)
plot(x1, x2, col=ifelse(y, "red", "blue"))
lines(cos(seq(0, 2*pi, len=1000)), sin(seq(0, 2*pi, len=1000)))
এবং যখন আমরা আরএফ মডেলটি প্রয়োগ করি, তখন আমরা অবাক হই না যে এই বৈশিষ্ট্যগুলি সহজেই মডেলটির দ্বারা গুরুত্বপূর্ণ হিসাবে বেছে নেওয়া হয়। (এনবি: এই মডেলটি মোটেই সুর করা হয়নি ।)
x_junk <- matrix(rnorm(N*10, sd=1.5), ncol=10)
x <- cbind(x1, x2, x_junk)
names(x) <- paste("V", 1:ncol(x), sep="")
rf <- randomForest(as.factor(y)~., data=x, mtry=4)
importance(rf)
MeanDecreaseGini
x1 49.762104
x2 54.980725
V3 5.715863
V4 5.010281
V5 4.193836
V6 7.147988
V7 5.897283
V8 5.338241
V9 5.338689
V10 5.198862
V11 4.731412
V12 5.221611
তবে যখন আমরা কেবল এই দুটি, দরকারী বৈশিষ্ট্যগুলিতে ডাউন-সিলেক্ট করি তখন ফলাফল লিনিয়ার মডেলটি ভয়াবহ ful
summary(badmodel <- glm(y~., data=data.frame(x1,x2), family="binomial"))
সংক্ষিপ্তসারটির গুরুত্বপূর্ণ অংশটি অবশিষ্টাংশের বিচ্যুতি এবং নাল বিচ্যুতির তুলনা। আমরা দেখতে পাচ্ছি যে মডেলটি মূলত বিচ্যুতি "সরানোর" জন্য কিছুই করে না। তদতিরিক্ত, সহগের অনুমানগুলি মূলত শূন্য।
Call:
glm(formula = as.factor(y) ~ ., family = "binomial", data = data.frame(x1,
x2))
Deviance Residuals:
Min 1Q Median 3Q Max
-0.6914 -0.6710 -0.6600 -0.6481 1.8079
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.398378 0.112271 -12.455 <2e-16 ***
x1 -0.020090 0.076518 -0.263 0.793
x2 -0.004902 0.071711 -0.068 0.946
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 497.62 on 499 degrees of freedom
Residual deviance: 497.54 on 497 degrees of freedom
AIC: 503.54
Number of Fisher Scoring iterations: 4
দুটি মডেলের মধ্যে বন্য পার্থক্য কি? ঠিক আছে, পরিষ্কারভাবে সিদ্ধান্তের সীমানা আমরা শিখার চেষ্টা করছি দুটি "সংকেত" বৈশিষ্ট্যের লিনিয়ার ফাংশন নয়। স্পষ্টতই যদি আপনি রিগ্রেশনটি অনুমান করার আগে সিদ্ধান্তের সীমার কার্যকরী ফর্মটি জানতেন তবে আপনি তথ্যকে এমনভাবে এনকোড করার জন্য কিছুটা রূপান্তর প্রয়োগ করতে পারেন যাতে রিগ্রেশন তখন আবিষ্কার করতে পারে ... (তবে আমি কখনই সীমানাটির রূপটি জানি না যেকোন বাস্তব-জগতে সমস্যার ক্ষেত্রে সময়।) যেহেতু আমরা কেবলমাত্র দুটি ক্ষেত্রে এই ক্ষেত্রে দুটি সংকেত বৈশিষ্ট্য নিয়ে কাজ করছি, ক্লাস লেবেলে শব্দ ছাড়াই একটি সিন্থেটিক ডেটা সেট করা হয়েছে, ক্লাসগুলির মধ্যে যে সীমানা আমাদের চক্রান্তে খুব স্পষ্ট। বাস্তব পরিসংখ্যানের সংখ্যায় বাস্তব ডেটা নিয়ে কাজ করার সময় এটি কম স্পষ্ট।
তদুপরি, সাধারণভাবে, এলোমেলো বনটি বিভিন্ন মডেলের উপাত্তের বিভিন্ন উপস্থানে ফিট করতে পারে। আরও জটিল উদাহরণে, এটি একক প্লট থেকে আদৌ কী চলছে তা স্পষ্ট হবে না এবং অনুরূপ ভবিষ্যদ্বাণীপূর্ণ শক্তির লিনিয়ার মডেল তৈরি করা আরও শক্ত হবে।
যেহেতু আমরা কেবল দুটি মাত্রা নিয়েই উদ্বিগ্ন, আমরা একটি পূর্বাভাসের পৃষ্ঠ তৈরি করতে পারি। যেমনটি প্রত্যাশা করা হয়েছিল, এলোমেলো মডেলটি জানতে পারে যে উত্সের চারপাশটি গুরুত্বপূর্ণ।
M <- 100
x_new <- seq(-4,4, len=M)
x_new_grid <- expand.grid(x_new, x_new)
names(x_new_grid) <- c("x1", "x2")
x_pred <- data.frame(x_new_grid, matrix(nrow(x_new_grid)*10, ncol=10))
names(x_pred) <- names(x)
y_hat <- predict(object=rf, newdata=x_pred, "vote")[,2]
library(fields)
y_hat_mat <- as.matrix(unstack(data.frame(y_hat, x_new_grid), y_hat~x1))
image.plot(z=y_hat_mat, x=x_new, y=x_new, zlim=c(0,1), col=tim.colors(255),
main="RF Prediction surface", xlab="x1", ylab="x2")
আমাদের অস্বাভাবিক মডেল আউটপুট দ্বারা ইঙ্গিত হিসাবে, হ্রাস-পরিবর্তনশীল লজিস্টিক রিগ্রেশন মডেল জন্য পূর্বাভাস পৃষ্ঠ মূলত সমতল।
bad_y_hat <- predict(object=badmodel, newdata=x_new_grid, type="response")
bad_y_hat_mat <- as.matrix(unstack(data.frame(bad_y_hat, x_new_grid), bad_y_hat~x1))
image.plot(z=bad_y_hat_mat, x=x_new, y=x_new, zlim=c(0,1), col=tim.colors(255),
main="Logistic regression prediction surface", xlab="x1", ylab="x2")
হংওই নোট করেছেন যে শ্রেণীর সদস্যপদ বৈশিষ্ট্যগুলির একটি লিনিয়ার ফাংশন নয়, তবে এটি একটি রৈখিক ক্রিয়াকলাপ একটি রূপান্তরের অধীনে রয়েছে। কারণ সিদ্ধান্তের সীমানা যদি আমরা এই বৈশিষ্ট্যগুলি বর্গক্ষেত্র করি তবে আমরা আরও কার্যকর রৈখিক মডেল তৈরি করতে সক্ষম হব। এটা ইচ্ছাকৃত। আরএফ মডেলটি রূপান্তর ছাড়াই two দুটি বৈশিষ্ট্যে সংকেত পেতে পারে তবে জিএলএম-তে একইভাবে সহায়ক ফলাফল পেতে বিশ্লেষককে আরও সুনির্দিষ্ট হতে হবে। সম্ভবত এটি ওপি-র পক্ষে যথেষ্ট: 2 টি বৈশিষ্ট্যের জন্য রূপান্তরগুলির একটি দরকারী সেট সন্ধান করা 12-এর চেয়ে সহজ But
@ সাইকোরাক্সের উত্তর চমত্কার। মডেল ফিট সম্পর্কিত সমস্যার পুরোপুরি বর্ণিত দিকগুলি ছাড়াও, একাধিক-পদক্ষেপ প্রক্রিয়া যেমন র্যান্ডম অরণ্য, লাসো বা "শিখতে" ইলাস্টিক নেট চালানো নয় যা ট্র্যাডিশনাল রিগ্রেশনকে খাওয়ানোর বৈশিষ্ট্যগুলি রয়েছে তার পিছনে আরও একটি কারণ রয়েছে। সাধারণ পীড়নটি এলোমেলো বন বা অন্যান্য পদ্ধতির বিকাশের সময় যথাযথভাবে কার্যকর হওয়া শাস্তি সম্পর্কে জানত না এবং পূর্বাভাস দেওয়ার ক্ষেত্রে খুব শক্তিশালী দেখাতে খারাপভাবে পক্ষপাতদুষ্ট এমন আনপেনাইজড প্রভাবগুলি মাপসই হবে । পদক্ষেপের পরিবর্তনশীল নির্বাচন চালানো এবং এটি কীভাবে এসেছিল তা বিবেচনায় না নিয়ে চূড়ান্ত মডেলটির প্রতিবেদন করার চেয়ে এটি আলাদা নয়।
আরও বেশি "এলোমেলো বন উপযুক্ত" এমন সমস্যায় প্রয়োগ করা একটি যথাযথভাবে নির্বাহ করা র্যান্ডম অরণ্য শব্দটি অপসারণের জন্য ফিল্টার হিসাবে কাজ করতে পারে এবং অন্যান্য বিশ্লেষণ সরঞ্জামগুলির ইনপুট হিসাবে আরও কার্যকর এমন ফলাফল তৈরি করতে পারে।
দাবিত্যাগ:
আমাকে আমার "উঁকি দেওয়া" কে "স্পাইডার" তৈরির জন্য একটি "চিৎকার" দিতে হবে। ( লিঙ্ক ) তাদের উদাহরণ সমস্যা আমার পদ্ধতির অবহিত। ( লিঙ্ক ) আমি থেইল-সেন অনুমানকারীদেরও পছন্দ করি এবং ইচ্ছা করি আমি থেইল এবং সেনকে প্রপস দিতে পারতাম
আমার উত্তর এটি কীভাবে ভুল করবেন সে সম্পর্কে নয়, তবে আপনি যদি বেশিরভাগ ক্ষেত্রে এটি সঠিকভাবে পান তবে এটি কীভাবে কার্যকর হতে পারে সে সম্পর্কে। আমি "তুচ্ছ" শব্দটি ব্যবহার করার সময়, আপনি "অ-তুচ্ছ" বা "কাঠামোগত" গোলমাল সম্পর্কে ভাবতে চান।
এলোমেলো বনের অন্যতম শক্তি হ'ল এটি উচ্চ-মাত্রিক সমস্যায় কতটা ভাল প্রয়োগ হয়। আমি পরিষ্কার ভিজ্যুয়াল উপায়ে 20k কলামগুলি (ওরফে একটি 20k মাত্রিক স্থান) প্রদর্শন করতে পারি না। এটা সহজ কাজ নয়। তবে, আপনার যদি 20 কে-মাত্রিক সমস্যা থাকে, তবে বেশিরভাগ লোকেরা যখন তাদের "মুখের" উপর চেপে যায় তবে এলোমেলো বন একটি ভাল সরঞ্জাম হতে পারে।
এটি এলোমেলো বন ব্যবহার করে সংকেত থেকে শব্দটি সরিয়ে ফেলার একটি উদাহরণ।
#housekeeping
rm(list=ls())
#library
library(randomForest)
#for reproducibility
set.seed(08012015)
#basic
n <- 1:2000
r <- 0.05*n +1
th <- n*(4*pi)/max(n)
#polar to cartesian
x1=r*cos(th)
y1=r*sin(th)
#add noise
x2 <- x1+0.1*r*runif(min = -1,max = 1,n=length(n))
y2 <- y1+0.1*r*runif(min = -1,max = 1,n=length(n))
#append salt and pepper
x3 <- runif(min = min(x2),max = max(x2),n=length(n)/2)
y3 <- runif(min = min(y2),max = max(y2),n=length(n)/2)
x4 <- c(x2,x3)
y4 <- c(y2,y3)
z4 <- as.vector(matrix(1,nrow=length(x4)))
#plot class "A" derivation
plot(x1,y1,pch=18,type="l",col="Red", lwd=2)
points(x2,y2)
points(x3,y3,pch=18,col="Blue")
legend(x = 65,y=65,legend = c("true","sampled","false"),
col = c("Red","Black","Blue"),lty = c(1,-1,-1),pch=c(-1,1,18))
আমাকে এখানে যা চলছে তা বর্ণনা করতে দিন। নীচের এই চিত্রটি "1" শ্রেণির প্রশিক্ষণের ডেটা দেখায়। ক্লাস "2" একই ডোমেন এবং ব্যাপ্তির তুলনায় অভিন্ন র্যান্ডম। আপনি দেখতে পাচ্ছেন যে "1" এর "তথ্য" বেশিরভাগ সর্পিল, তবে "2" এর উপাদান দিয়ে দূষিত হয়েছে। আপনার 33% ডেটা দূষিত হওয়া অনেক ফিটিং সরঞ্জামগুলির জন্য সমস্যা হতে পারে। থিল-সেন প্রায় 29% থেকে অবনমিত হতে শুরু করে। ( লিঙ্ক )
এখন আমরা তথ্যগুলি আলাদা করি, কেবল কী শব্দ হয় তা সম্পর্কে ধারণা।
#Create "B" class of uniform noise
x5 <- runif(min = min(x4),max = max(x4),n=length(x4))
y5 <- runif(min = min(y4),max = max(y4),n=length(x4))
z5 <- 2*z4
#assemble data into frame
data <- data.frame(c(x4,x5),c(y4,y5),as.factor(c(z4,z5)))
names(data) <- c("x","y","z")
#train random forest - I like h2o, but this is textbook Breimann
fit.rf <- randomForest(z~.,data=data,
ntree = 1000, replace=TRUE, nodesize = 20)
data2 <- predict(fit.rf,newdata=data[data$z==1,c(1,2)],type="response")
#separate class "1" from training data
idx1a <- which(data[,3]==1)
#separate class "1" from the predicted data
idx1b <- which(data2==1)
#show the difference in classes before and after RF based filter
plot(data[idx1a,1],data[idx1a,2])
points(data[idx1b,1],data[idx1b,2],col="Red")
এখানে উপযুক্ত ফলাফল:
আমি সত্যিই এটি পছন্দ করি কারণ এটি একই সময়ে একটি শক্ত সমস্যার কাছে একটি শালীন পদ্ধতির শক্তি এবং দুর্বলতা উভয়ই দেখাতে পারে। আপনি যদি কেন্দ্রের কাছাকাছি তাকান তবে দেখতে পাবেন কীভাবে কম ফিল্টারিং রয়েছে। তথ্যের জ্যামিতিক স্কেল অল্প এবং এলোমেলো বন এটি অনুপস্থিত। এটি ক্লাস ২ এর জন্য নোডের সংখ্যা, গাছের সংখ্যা এবং নমুনার ঘনত্ব সম্পর্কে কিছু বলেছে (-50, -50) এর কাছাকাছি একটি "ফাঁক" এবং বেশ কয়েকটি জায়গায় "জেটস" রয়েছে। সাধারণত, ফিল্টারিং শালীন হয়।
বনাম এসভিএম এর সাথে তুলনা করুন
এসভিএমের সাথে তুলনা করার জন্য কোডটি এখানে:
#now to fit to svm
fit.svm <- svm(z~., data=data, kernel="radial",gamma=10,type = "C")
x5 <- seq(from=min(x2),to=max(x2),by=1)
y5 <- seq(from=min(y2),to=max(y2),by=1)
count <- 1
x6 <- numeric()
y6 <- numeric()
for (i in 1:length(x5)){
for (j in 1:length(y5)){
x6[count]<-x5[i]
y6[count]<-y5[j]
count <- count+1
}
}
data4 <- data.frame(x6,y6)
names(data4) <- c("x","y")
data4$z <- predict(fit.svm,newdata=data4)
idx4 <- which(data4$z==1,arr.ind=TRUE)
plot(data4[idx4,1],data4[idx4,2],col="Gray",pch=20)
points(data[idx1b,1],data[idx1b,2],col="Blue",pch=20)
lines(x1,y1,pch=18,col="Green", lwd=2)
grid()
legend(x = 65,y=65,
legend = c("true","from RF","From SVM"),
col = c("Green","Blue","Gray"),lty = c(1,-1,-1),pch=c(-1,20,15),pt.cex=c(1,1,2.25))
এটি নিম্নলিখিত ছবিতে ফলাফল।
এটি একটি শালীন এসভিএম। ধূসর হল এসভিএম দ্বারা "1" শ্রেণীর সাথে যুক্ত ডোমেন। নীল বিন্দুগুলি আরএফ দ্বারা "1" শ্রেণীর সাথে সম্পর্কিত নমুনাগুলি। আরএফ ভিত্তিক ফিল্টার একটি সুস্পষ্টভাবে আরোপিত ভিত্তি ছাড়াই এসভিএমের সাথে তুলনামূলকভাবে সম্পাদন করে। এটি দেখা যায় যে সর্পিলটির কেন্দ্রস্থলের কাছে "আঁট তথ্য" আরএফ দ্বারা অনেকগুলি "শক্তভাবে" সমাধান করা হয়েছে। "লেজ" এর দিকেও "দ্বীপ" রয়েছে যেখানে আরএফ এসোসিয়েশন খুঁজে পায় যা এসভিএম না করে।
আমি আপ্যায়ন করছি। ব্যাকগ্রাউন্ড না রেখে, আমি ক্ষেত্রের খুব ভাল অবদানকারীর দ্বারা প্রারম্ভিক একটি কাজও করেছি। মূল লেখক "রেফারেন্স বিতরণ" ব্যবহার করেছেন ( লিঙ্ক , লিঙ্ক )।
সম্পাদনা করুন:
এই মডেলটিতে এলোমেলোভাবে
ফররেস্ট প্রয়োগ করুন: যদিও ব্যবহারকারী 777 a একটি কার্ট একটি এলোমেলো বনের উপাদান হওয়ার বিষয়ে একটি দুর্দান্ত চিন্তাভাবনা করেছে, তবে এলোমেলো বনের ভিত্তিটি হ'ল দুর্বল শিক্ষার্থীদের একত্রিতকরণ "। কার্ট হ'ল পরিচিত দুর্বল শিক্ষানবিস তবে এটি কোনও "টীকা" এর কাছাকাছি কিছু নয়। "উপহার" যদিও এলোমেলো বনাঞ্চলে "বৃহত সংখ্যার নমুনার সীমাতে" লক্ষ্যযুক্ত। ইউজার 777 of এর উত্তর, স্ক্যাটারপ্লোটে কমপক্ষে ৫০০ টি নমুনা ব্যবহার করে এবং এটি এই ক্ষেত্রে মানব পাঠযোগ্যতা এবং নমুনার আকার সম্পর্কে কিছু বলে। হিউম্যান ভিজ্যুয়াল সিস্টেম (নিজেই এটি শিখার একটি টুকরা) একটি আশ্চর্যজনক সেন্সর এবং ডেটা প্রসেসর এবং এটি আবিষ্কার করে যে প্রক্রিয়াটি সহজ করার জন্য এটির মান যথেষ্ট।
যদি আমরা কোনও এলোমেলো-বন সরঞ্জামে এমনকি ডিফল্ট সেটিংসও গ্রহণ করি তবে আমরা প্রথম কয়েকটি গাছের জন্য শ্রেণিবিন্যাস ত্রুটির বৃদ্ধির আচরণটি পর্যবেক্ষণ করতে পারি এবং প্রায় 10 টি গাছ না পাওয়া পর্যন্ত এক-গাছের স্তরে পৌঁছায় না। প্রাথমিকভাবে ত্রুটি বৃদ্ধি পায় ত্রুটির হ্রাস প্রায় 60 টি গাছ স্থিতিশীল হয়ে ওঠে। স্থির দ্বারা আমি বলতে চাই
x <- cbind(x1, x2)
plot(rf,type="b",ylim=c(0,0.06))
grid()
যদি "ন্যূনতম দুর্বল শিক্ষানবিস" না দেখার পরিবর্তে আমরা "সংক্ষিপ্ত দুর্বল জঙ্গি" তাকান তবে সরঞ্জামটির ডিফল্ট সেটিংসের জন্য খুব সংক্ষিপ্ত ধর্মতাত্ত্বিক দ্বারা প্রস্তাবিত ফলাফলগুলি কিছুটা আলাদা।
দ্রষ্টব্য, আমি অনুমানের উপরে প্রান্তটি নির্দেশ করে বৃত্তটি আঁকতে "লাইনগুলি" ব্যবহার করেছি। আপনি দেখতে পাচ্ছেন যে এটি অসম্পূর্ণ, তবে একক শিক্ষার্থীর মানের চেয়ে অনেক ভাল।
মূল নমুনাটিতে 88 "অভ্যন্তরীণ" নমুনা রয়েছে। যদি নমুনার আকারগুলি বৃদ্ধি করা হয় (গোষ্ঠীগুলির প্রয়োগের অনুমতি দেওয়া হয়) তবে অনুমানের মানটিও উন্নত হয়। 20,000 নমুনা সহ একই সংখ্যার শিখর একটি অত্যাশ্চর্যতর আরও ভাল ফিট করে।
উচ্চ মানের মানের ইনপুট তথ্য যথাযথ সংখ্যক গাছের মূল্যায়নেরও অনুমতি দেয়। রূপান্তর পরিদর্শন সুপারিশ করে যে 20 গাছ এই নির্দিষ্ট ক্ষেত্রে ন্যূনতম পর্যাপ্ত সংখ্যা, যাতে ডেটা ভালভাবে উপস্থাপন করা যায়।