লজিস্টিক রিগ্রেশনে ডিফল্টর আরও ভাল শ্রেণিবদ্ধকরণ


12

সম্পূর্ণ প্রকাশ: এটি হোমওয়ার্ক। আমি ডেটাসেটের লিঙ্কটি অন্তর্ভুক্ত করেছি ( http://www.bertelsen.ca/R/logistic-regression.sav )

আমার লক্ষ্য এই ডেটা সেটে loanণ খেলাপিদের পূর্বাভাস সর্বাধিক করা।

আমি এখনও অবধি প্রতিটি মডেল নিয়ে এসেছি, 90% নন-খেলাপিদের পূর্বাভাস দেওয়া হয়, তবে <40% ডিফল্টরা শ্রেণিবিন্যাস দক্ষতা সামগ্রিকভাবে ~ 80% করে তোলে। সুতরাং, আমি ভাবছি যদি ভেরিয়েবলগুলির মধ্যে মিথস্ক্রিয়া প্রভাব থাকে? লজিস্টিক রিগ্রেশনের মধ্যে, প্রতিটি সম্ভাব্য সংমিশ্রণের পরীক্ষা করা ছাড়াও কি কোনও সম্ভাব্য মিথস্ক্রিয়া প্রভাব চিহ্নিত করার উপায় আছে? বা বিকল্পভাবে খেলাপিদের শ্রেণিবিন্যাসের দক্ষতা বাড়াতে একটি উপায়।

আমি আটকে আছি, কোনও প্রস্তাবনা আপনার শব্দের পছন্দ, আর-কোড বা এসপিএসএস সিনট্যাক্সে সহায়ক হবে।

আমার প্রাথমিক ভেরিয়েবলগুলি নিম্নলিখিত হিস্টোগ্রাম এবং স্ক্রেটারপ্লোটে বর্ণিত হয়েছে (দ্বিধাত্বক ভেরিয়েবল বাদে)

প্রাথমিক ভেরিয়েবলের বর্ণনা:

age: Age in years
employ: Years with current employer
address: Years at current address
income: Household income in thousands
debtinc: Debt to income ratio (x100)
creddebt: Credit card debt in thousands
othdebt: Other debt in thousands
default: Previously defaulted (dichotomous, yes/no, 0/1)
ed: Level of education (No HS, HS, Some College, College, Post-grad)

অতিরিক্ত ভেরিয়েবলগুলি উপরের কেবলমাত্র রূপান্তর। আমি অবিচ্ছিন্ন কয়েকটি ভেরিয়েবলকে শ্রেণিবদ্ধ ভেরিয়েবলগুলিতে রূপান্তরিত করে মডেলটিতে প্রয়োগ করার চেষ্টা করেছি, সেখানে কোনও ভাগ্য নেই।

আপনি যদি এটি আর-তে পপ করতে চান তবে দ্রুত, এটি এখানে:

## R Code
df <- read.spss(file="http://www.bertelsen.ca/R/logistic-regression.sav", use.value.labels=T, to.data.frame=T)

বিকল্প পাঠ বিকল্প পাঠ



খেলাপিদের কাঁচা অনুপাতটি স্পষ্টত 4 এর মধ্যে 1 কেস, তবে মনে হয় আপনারও প্রচুর ভেরিয়েবল রয়েছে। আপনি কি এগুলি সব চেষ্টা করে দেখেছেন, আপনার কাছে আগ্রহের প্রাথমিক ভেরিয়েবলগুলির কোনও সেট রয়েছে?
chl

আসল ভেরিয়েবলগুলি ফাইলের সম্মুখভাগে রয়েছে। বাকীটি হ'ল x_ (যেখানে x = লগ, এলএন, ইনভ, স্কয়ার্ট) দ্বারা চিহ্নিত একই রূপান্তরকরণ। আমি এগুলির একটি মিশ্রণ চেষ্টা করেছি। তবে ভবিষ্যদ্বাণী 0,1 যেখানে রয়েছে সেই অবশেষ প্লটগুলি কীভাবে ব্যাখ্যা করা বা তৈরি করা যায় সে সম্পর্কে আমি কিছুটা দ্বিধায় রয়েছি
ব্র্যান্ডন বার্টেলসেন

আগ্রহের ভেরিয়েবলের ক্ষেত্রে, আমি সেগুলির সমস্ত প্রাইমারী এবং রুপান্তরিত ভেরিয়েবলগুলির বিভিন্ন সংমিশ্রণের পাশাপাশি মিশ্র মডেলগুলির সাথে ইন্টারঅ্যাকশন প্রভাবগুলি অন্তর্ভুক্ত করে চেষ্টা করেছি। তবুও, সামগ্রিক দক্ষতার চেয়ে 81.7% এর বেশি কিছু নেই।
ব্র্যান্ডন বার্টেলসেন

উত্তর:


8

এর মতো ভারসাম্যহীন ডেটাসেটগুলিতে, আপনি খেলাপি এবং অ-খেলাপিদের ক্ষেত্রে শ্রেণিবদ্ধকরণের জন্য আপনার কাটপয়েন্ট হিসাবে .5 এর লাগানো সম্ভাবনা ব্যবহার থেকে দূরে সরে আপনি শ্রেণিবদ্ধকরণের কার্যকারিতা উন্নত করতে পারেন। উদাহরণস্বরূপ, আমি সমস্ত ২ য়-অর্ডার ইন্টারঅ্যাকশন সহ একটি গ্ল্যামের জন্য .4 এর একটি কাটপয়েন্ট সহ .88 এবং .58 এর সঠিক শ্রেণিবদ্ধকরণ হারগুলি পেয়েছি। (যা সম্ভবত অত্যধিক মানসিক চাপের দিকে নিয়ে যায় এবং মনে হয় কিছু র‌্যাঙ্কের সমস্যা রয়েছে তবে এটি অন্য গল্প))

কোড:

m <- glm(default ~ (age + employ + address + income + debtinc + 
                    creddebt + othdebt + ed)^2,
   family=binomial(), data=df)
p <- predict(m, newdata=df, type="response")

getMisclass <- function(cutoff, p, labels){
   pred <- factor(1*(p > cutoff), labels=c("No Default", "Default")) 
   t <- table(pred, labels)
   cat("cutoff ", cutoff, ":\n")
   print(t)
   cat("correct    :", round(sum(t[c(1,4)])/sum(t), 2),"\n")
   cat("correct No :", round(t[1]/sum(t[,1]), 2),"\n")
   cat("correct Yes:", round(t[4]/sum(t[,2]), 2),"\n\n")
   invisible(t)
}
cutoffs <- seq(.1,.9,by=.1)
sapply(cutoffs, getMisclass, p=p, labels=df$default)

আংশিক আউটপুট:

cutoff  0.3 :
            labels
pred           No  Yes
  No Default 3004  352
  Default     740  903
correct    : 0.78 
correct No : 0.8 
correct Yes: 0.72 

cutoff  0.4 :
            labels
pred           No  Yes
  No Default 3278  532
  Default     466  723
correct    : 0.8 
correct No : 0.88 
correct Yes: 0.58 

cutoff  0.5 :
        labels
pred           No  Yes
  No Default 3493  685
  Default     251  570
correct    : 0.81 
correct No : 0.93 
correct Yes: 0.45 

cutoff  0.6 :
            labels
pred           No  Yes
  No Default 3606  824
  Default     138  431
correct    : 0.81 
correct No : 0.96 
correct Yes: 0.34 

চেষ্টা করার জন্য ধন্যবাদ, আমি প্রান্তিকের সাথেও খেলেছি এবং এটি শ্রেণিবিন্যাসকে সামান্য বৃদ্ধি দিয়েছে।
ব্র্যান্ডন বার্টেলসেন

1
যদিও, এটি খেলাপিদের পূর্বাভাস দেওয়ার আরও ভাল কাজ করেছে।
ব্র্যান্ডন বার্টেলসেন

4

আমি কোনও লজিস্টিক রিগ্রেশন বিশেষজ্ঞ নই, তবে এটি কি কেবল ভারসাম্যহীন ডেটার সমস্যা নয়? সম্ভবত বৃহত্তর শ্রেণীর সাথে আরও ভাল আচরণের জন্য ভবিষ্যদ্বাণীটি বদল করতে পারে এমন খেলাপিদের চেয়ে আপনার অনেক বেশি অ-খেলাপি রয়েছে। কিছু অ-খেলাপিদের লাথি মেরে চেষ্টা করুন এবং দেখুন কী ঘটে।


আমি চেষ্টা করে দেখলাম, সামগ্রিক দক্ষতায় কোনও উল্লেখযোগ্য বৃদ্ধি বা হ্রাসের উপস্থাপনা করা হয়নি (দক্ষতা ভুয়া-পজিটিভ, ভ্রান্ত-নেতিবাচকদের অনুপস্থিতিতে
ব্র্যান্ডন বার্টেলসেন

1
@ ব্র্যান্ডন আমি আরও কয়েকটি ধারণার চেষ্টা করেছি এবং দেখে মনে হয় এটি সাহায্য করবে না। এটি সুপারিশ করে যে এই সেটটি ঘটানোর জন্য এই সেটটি যথেষ্ট শক্ত (সম্ভবত ডিফল্ট কেবল কিছু অনাকাঙ্ক্ষিত এলোমেলো কারণ দ্বারা চালিত)।

@ এমবিকিউ, সময় দেওয়ার জন্য ধন্যবাদ! অনেক প্রশংসিত.
ব্র্যান্ডন বার্টেলসেন

1
ব্যক্তিগতভাবে, আমি মনে করি এটি আমার লাইফ ডেটা যা আমার প্রোফেসর তার একটি পরামর্শমূলক কাজের জন্য মডেলকে প্রদান করা হচ্ছে ... তবে এটি পুরোপুরি অন্য একটি বিষয়
ব্র্যান্ডন বার্টেলসেন

1
ডেটা বিশ্লেষণের সমস্যার সমাধানটি কখনই "বৈধ ডেটা পয়েন্টগুলি ফেলে দেওয়া" উচিত নয় - আপনি এই প্রভাবগুলি এড়াতে সুষম প্রশিক্ষণ ডেটা সেটগুলি ব্যবহার করার চেষ্টা করতে পারেন, তবে আপনাকে এখনও সমস্ত ডেটা সম্পর্কে ভবিষ্যদ্বাণীগুলি মূল্যায়ন করতে হবে (যেমন সমস্ত বৈধতা সেট)।
অনুরাগীরা

4

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

এটি এইভাবে ভাবুন, যদি আপনার এমন কোনও ইভেন্ট হয় যেখানে 90% এটি না করে এবং 10% এটি করে, তবে আপনি যদি সবাইকে "এটি করবেন না" গ্রুপে রাখেন তবে আপনি স্বয়ংক্রিয়ভাবে 90% অধিকার পেয়ে যাবেন এবং এমনকি চেষ্টা ছাড়াই ছিল, কেবল খাঁটি সুযোগ, এটির বন্টনের অসুবিধা দ্বারা ফুলে উঠেছে।

মিথস্ক্রিয়তার বিষয়টি এই স্কিউংয়ের সাথে সম্পর্কিত নয় এবং এটি তত্ত্ব দ্বারা চালিত হওয়া উচিত। আপনি কেবলমাত্র ইন্টারঅ্যাকশন যুক্ত করে অতিরিক্ত পদ যুক্ত করে সর্বদা শ্রেণিবদ্ধকরণ উন্নত করতে পারেন, তবে আপনি প্রায়শই মডেলকে উপস্থাপনের মাধ্যমে এটি করেন। তারপরে আপনাকে ফিরে যেতে হবে এবং এটি ব্যাখ্যা করতে সক্ষম হতে হবে।

ম্যাট পি ডেটা অ্যানালিস্ট, ইলিনয় ইউনিভার্সিটি আরবানা চ্যাম্পেইন


2

আপনি কেবল ইন্টারঅ্যাকশন প্রভাবগুলির সমস্ত অন্তর্ভুক্ত করার চেষ্টা করতে পারেন। তারপরে আপনি অতিরিক্ত-ফিটিং হ্রাস করতে এবং যে কোনও সহায়ক বৈশিষ্ট্যগুলির সুবিধা নিতে L1 / L2- নিয়মিত লজিস্টিক রিগ্রেশন ব্যবহার করতে পারেন। আমি সত্যিই হাসতি / তিবশিরানীর গ্ল্যামনেট প্যাকেজটি পছন্দ করি (http://cran.r-project.org/web/packages/glmnet/index.html)।


একমাত্র সমস্যা হ'ল আমাকে এসপিএসএস আউটপুট দিয়ে এটি পুনরুত্পাদন করতে সক্ষম হতে হবে। :( আমি এখনও এটি চেষ্টা করে যাচ্ছি!
ব্র্যান্ডন বার্টেলসেন

এটি চেষ্টা করে দেখতে পাওয়া যায় না, কাজ করার জন্য ভবিষ্যদ্বাণী করা.glmnet () পাওয়া যাবে না। আপনি নিউেক্স সেট করার সময় এমন কোনও যাদু হওয়ার দরকার আছে কি?
ব্র্যান্ডন বার্টেলসেন

2

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

বেসিক ট্রি উত্পাদন করতে এখানে কিছু আর কোড রয়েছে। আমি এখানে এনপির ডেটা ফ্রেমে rpart আলগা করেছি। পূর্বের জ্ঞান এবং ক্রস বৈধকরণ পদ্ধতি ব্যতীত সেরা পন্থা নয়:

library(foreign)
df <- read.spss(file="http://www.bertelsen.ca/R/logistic-regression.sav", use.value.labels=T, to.data.frame=T) 
library(rpart) 
fit<-rpart(default~.,method="anova",data=df)
 pfit<- prune(fit, cp=   fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])

# plot the pruned tree 
 plot(pfit, uniform=TRUE, 
   main="Pruned Classification Tree for Loan Default")
text(pfit, use.n=TRUE, all=TRUE, cex=.8)

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


শ্রেণিবিন্যাস এবং রিগ্রেশন গাছ? এটি কার্যনির্বাহীকরণের দ্বিতীয় ভাগ। আমি শ্রেণিবদ্ধকরণ সর্বাধিক করে নেওয়ার পরে আমার সম্ভাব্যতার ডেস্কের উপর ভিত্তি করে শ্রেণিবদ্ধ করতে হবে।
ব্র্যান্ডন বার্টেলসেন

আসলে, কেউ এই সম্পর্কিত প্রশ্নে শ্রেণিবদ্ধকরণ টেবিল তৈরি করতে আমাকে সহায়তা করেছিলেন: stats.stackexchange.com/questions/4832/… আর এর সাথে উদাহরণের জন্য ধন্যবাদ, অনেক প্রশংসা করা, আমি দ্রুত-আর ওয়েবসাইটে অনুরূপ নির্দেশ পেয়েছি। যদিও, এই পাপ্পোজের জন্য আমি এসপিএসএস-এ CHAID প্রয়োগ করতে বাধ্য।
ব্র্যান্ডন বার্টেলসেন

predictপূর্বাভাসের table(originalClasses,predictedClasses)জন্য টেবিল নির্মাণের জন্য পদ্ধতি । আমি আরএফ চেষ্টা করেছিলাম (সাধারণত এটি ওভারফিটেড কার্টের মতো নির্ভুলতা রয়েছে তবে কোনও অতিরিক্ত পোশাক নেই) এবং ফলাফলটি এর চেয়ে বেশি ভাল ছিল না glm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.