সুপ্ত ডিরিচলেট বরাদ্দ ব্যবহারের জন্য ইনপুট পরামিতি


17

টপিক মডেলিং (ল্যাটেন্ট ডিরিচলেট অ্যালোকেশন) ব্যবহার করার সময়, বিষয়গুলির সংখ্যাটি একটি ইনপুট প্যারামিটার যা ব্যবহারকারীর নির্দিষ্ট করতে হবে।

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

উত্তর:


21

যতদূর আমি জানি আপনার কেবল কয়েকটি বিষয় এবং কর্পাস সরবরাহ করতে হবে। প্রার্থী টপিক সেটটি নির্দিষ্ট করার দরকার নেই, যদিও এটি ব্যবহার করা যেতে পারে, যেমন আপনি গ্রুন অ্যান্ড হর্নিক (২০১১) এর 15 পৃষ্ঠার নীচে শুরু হওয়া উদাহরণটিতে দেখতে পাচ্ছেন ।

28 জানুয়ারী 14 আপডেট হয়েছে। আমি এখন নীচের পদ্ধতিতে কিছুটা আলাদাভাবে করি। আমার বর্তমান পদ্ধতির জন্য এখানে দেখুন: /programming//a/21394092/1036500

প্রশিক্ষণ ডেটা ছাড়াই বিষয়গুলির সর্বোত্তম সংখ্যার সন্ধানের অপেক্ষাকৃত সহজ উপায় হ'ল ডেটা দেওয়া সর্বাধিক লগের সম্ভাবনা সহ বিষয়ের সংখ্যা নির্ধারণের জন্য বিভিন্ন সংখ্যক বিষয়যুক্ত মডেলগুলির মধ্য দিয়ে লুপিং। সঙ্গে এই উদাহরণ বিবেচনা করুনR

# download and install one of the two R packages for LDA, see a discussion
# of them here: http://stats.stackexchange.com/questions/24441
#
install.packages("topicmodels")
library(topicmodels)
#
# get some of the example data that's bundled with the package
#
data("AssociatedPress", package = "topicmodels")

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

best.model <- lapply(seq(2,100, by=1), function(k){LDA(AssociatedPress[21:30,], k)})

এখন আমরা তৈরি হওয়া প্রতিটি মডেলের লগের লাইকিনিটি মানগুলি বের করতে পারি এবং এটি প্লট করার জন্য প্রস্তুত করতে পারি:

best.model.logLik <- as.data.frame(as.matrix(lapply(best.model, logLik)))

best.model.logLik.df <- data.frame(topics=c(2:100), LL=as.numeric(as.matrix(best.model.logLik)))

এবং এখন সর্বাধিক লগ হওয়ার সম্ভাবনা কতগুলি বিষয় প্রদর্শিত হবে তা দেখার জন্য একটি চক্রান্ত করুন:

library(ggplot2)
ggplot(best.model.logLik.df, aes(x=topics, y=LL)) + 
  xlab("Number of topics") + ylab("Log likelihood of the model") + 
  geom_line() + 
  theme_bw()  + 
  opts(axis.title.x = theme_text(vjust = -0.25, size = 14)) + 
  opts(axis.title.y = theme_text(size = 14, angle=90))

এখানে চিত্র বর্ণনা লিখুন

দেখে মনে হচ্ছে এটি 10 ​​থেকে 20 টি বিষয়ের মধ্যে। আমরা সর্বোচ্চ লগ লাইকুনিটির মতো বিষয়গুলির সঠিক সংখ্যাটি সনাক্ত করতে ডেটা পরিদর্শন করতে পারি:

best.model.logLik.df[which.max(best.model.logLik.df$LL),]
# which returns
       topics        LL
12     13           -8525.234

সুতরাং ফলাফলটি হ'ল 13 টি বিষয় এই ডেটার জন্য সেরা ফিট করে। এখন আমরা ১৩ টি বিষয় নিয়ে এলডিএ মডেল তৈরি এবং মডেলটি তদন্ত করে এগিয়ে যেতে পারি:

lda_AP <- LDA(AssociatedPress[21:30,], 13)   # generate the model with 13 topics 
get_terms(lda_AP, 5)                         # gets 5 keywords for each topic, just for a quick look
get_topics(lda_AP, 5)                        # gets 5 topic numbers per document

এবং তাই মডেল এর বৈশিষ্ট্য নির্ধারণ করতে।

এই পদ্ধতির উপর ভিত্তি করে:

গ্রিফিথস, টিএল, এবং এম স্টিভার্স 2004. বৈজ্ঞানিক বিষয়গুলি সন্ধান করা। আমেরিকা যুক্তরাষ্ট্রের জাতীয় বিজ্ঞান একাডেমির কার্যক্রম 101 (সাফল্য 1): 5228 –5235।


আমি এর জন্য কোড আপডেট করেছি এবং একটি সংক্ষিপ্ত রূপে সংরক্ষণ করেছি। প্লট পদ্ধতি রয়েছে যা ডিফল্টরূপে মুদ্রণ করে। devtools::source_url("https://gist.githubusercontent.com/trinker/9aba07ddb07ad5a0c411/raw/c44f31042fc0bae2551452ce1f191d70796a75f9/optimal_k") +1 সুন্দর উত্তর।
টাইলার রিঙ্কার

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

হাই @ বেন, সত্যই দরকারী উত্তর। আমি এটা সম্পর্কে একটা প্রশ্ন আছে, যখন আপনি 2-100 বিষয় সঙ্গে মডেল মূল্যায়ন করা হয়: best.model <- lapply(seq(2,100, by=1), function(k){LDA(AssociatedPress[21:30,], k)})। আপনি কেবলমাত্র 21:30 ডেটা বেছে নেবেন?
অর্থনীতিবিদ_আয়াহুয়াসকা

যেহেতু কয়েক বছর আগে আমি উত্তরটি পোস্ট করেছি তাই আমি ঠিক মনে করতে পারি না। তবে সম্ভবত গণনার সময় কম রাখতে!
বেন

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