গাউসিয়ান মিশ্রণ মডেলের এককতার বিষয়


15

প্যাটার্ন স্বীকৃতি এবং মেশিন লার্নিংয়ের বইয়ের 9 তম অধ্যায়ে, গাউসির মিশ্রণ মডেল সম্পর্কে এই অংশটি রয়েছে:

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


এটা দেখে মনে হচ্ছে খুব সহজেই, খুব নির্দিষ্ট এর reparameterize করার σk2=τ2γk এবং তারপর দণ্ডিত γk যখন নিখুঁত শূন্য খুব ঘনিষ্ঠ হওয়ার জন্য।
সম্ভাব্যতাব্লোগিক

1
@ প্রোব্যাবিলিটিস্লোগিক নিশ্চিত না যে আমি এখানে অনুসরণ করছি কিনা :(
ডাং ম্যান ট্রুং

উত্তর:


11

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

যখন বৈকল্পিকতা শূন্যে পৌঁছে যায়, গাউসীয় উপাদানগুলির সূত্রটি (সূত্র 9.15) অনন্তের দিকে যায় এবং মডেলটি অত্যধিক ফিট হয়ে যায়। ভেরিয়েন্স শূন্য হতে না পারার কারণে আমরা কেবলমাত্র একটি গাউসিয়ানকে বিভিন্ন পয়েন্টে ফিট করি যখন এটি ঘটে না। তবে এটি ঘটতে পারে যখন পিআরএমএলের একই পৃষ্ঠায় চিত্রিত হিসাবে গাউসিয়ানদের মিশ্রণ থাকে।

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

হালনাগাদ :
গ্রন্থটি এককতার সমস্যা সমাধানের জন্য দুটি পদ্ধতির পরামর্শ দেয়, যা

1) একাকীত্ব দেখা দিলে গড় এবং প্রকরণটি পুনরায় সেট করা এখানে চিত্র বর্ণনা লিখুন

2) এমএলইয়ের পরিবর্তে এমএপি ব্যবহার করে পূর্বের যোগ করে। এখানে চিত্র বর্ণনা লিখুন


একক গাউসিয়ান কেস সম্পর্কে, কেন বৈকল্পিকতা শূন্য হতে পারে না? পাঠ্যপুস্তকটি বলেছে: "মনে রাখবেন যে এই সমস্যাটি একক গাউসীয় বিতরণের ক্ষেত্রে উত্থাপিত হয়নি the পার্থক্যটি বুঝতে, মনে রাখবেন যে কোনও একক গাওসিয়ান যদি কোনও ডেটার পয়েন্টে ভেঙে যায় তবে এটি অন্য থেকে উদ্ভূত সম্ভাবনা কার্যটিতে গুণগত কারণগুলি অবদান রাখবে other ডেটা পয়েন্ট এবং এই কারণগুলি দ্রুততর শূন্যে চলে যাবে, সামগ্রিক সম্ভাবনা দেয় যা অনন্তের চেয়ে শূন্যে চলে যায়। "তবে আমি এটি খুব বেশি বুঝতে পারি না :(
ডাং ম্যান ট্রুং

@ ডাংম্যানহট্রুং এর কারণ বৈচিত্র্যের সংজ্ঞা অনুসারে, , যতক্ষণ না সমস্ত পয়েন্ট একই মানের হয়, আমাদের সর্বদা শূন্য-বহিরাগত থাকে না। var(x)=E[(xμ)2]
dontloo

আমি দেখি! ধন্যবাদ: ডি তাই বাস্তবে এড়াতে আমাদের কী করা উচিত? বইটি সে সম্পর্কে ব্যাখ্যা দেয় না।
ডাং মনঃ ট্রুং

@DangManhTruong হাই, আমি এটা উত্তর যোগ করা, দয়া করে একবার দেখে :) নেওয়া
dontloo

@ ডাং মানহ ট্রুং আপনাকে স্বাগত জানাই
অনুমান করুন

3

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

আমিও এই অংশটি দ্বারা বিভ্রান্ত, এবং আমার ব্যাখ্যা এখানে। সরলতার জন্য 1 ডি কেস নিন।

, অর্থাৎ μ = x i ডেটা পয়েন্টে যখন কোনও একক গাউসিয়ান "ভেঙে পড়ে" তখন সামগ্রিক সম্ভাবনা হয়ে যায়:এক্সআমিμ=এক্সআমি

p(x)=p(xi)p(xi)=(12πσ)(niN12πσe(xnμ)22σ2)

আপনি যত দেখতে , বাম দিকের মেয়াদ পি ( এক্স আমি ) , যা GMM এ আবেগপূর্ণ ক্ষেত্রে ভালো হয়, কিন্তু ঠিক আছে, যা অন্যান্য ডাটা পয়েন্টের সম্ভাবনা উপর শব্দ পি ( এক্সআমি )σ0p(xi)p(xi) , এখনও e - ( x n - μ ) 2 এর মতো পদ রয়েছে যা0এক্সটেনশিয়ালিσ0হিসাবে দ্রুত, তাই সম্ভাবনার উপর সামগ্রিক প্রভাব এটি শূন্যে যাওয়ার জন্য।e(xnμ)22σ20σ0

প্রধান এখানে বিন্দু যখন একটি একক গসিয়ান ঝুলানো, সমস্ত ডেটা পয়েন্ট এক সেট ভাগ করার জন্য পরামিতি আছে হয় , মিশ্রণ ক্ষেত্রে অসদৃশ যেখানে এক উপাদান যা করতে পারেন সামগ্রিক তথ্য সম্ভাবনা শাস্তি ছাড়া একটি ডেটা পয়েন্ট "ফোকাস" ।μ,σ


2

এই উত্তরটি কী ঘটছে তা একটি অন্তর্দৃষ্টি দেবে যা একটি জিএমএম-এর কোনও ডেটাসেটে ফিটিং করার সময় একক একাকী কোভারিয়েন্স ম্যাট্রিক্সের দিকে পরিচালিত করে, কেন এটি ঘটছে পাশাপাশি আমরা কী কী তা প্রতিরোধ করতে পারি।

অতএব আমরা গাউসিয়ান মিশ্রণ মডেলটিকে কোনও ডেটাসেটে ফিটিং করার সময় ধাপগুলি পুনরায় গণনা করে শুরু করি।


0. সিদ্ধান্ত নিন কত উৎস / ক্লাস্টার (গ) আপনার ডেটায় করা মাপসই চান
1. আরম্ভ পরামিতি গড় , সহভেদাংক Σ , এবং fraction_per_class π প্রতি ক্লাস্টার গ μΣπ

E-এসটিপি: _

  1. প্রতিটি ডেটাপয়েন্টের জন্য গণনা করুন সম্ভাবনা r i c যে ডেটাপয়েন্ট x আমি ক্লাস্টার সি এর সাথে যুক্ত: r i c = π c N ( x i | μ c , Σ c )এক্সআমিRআমিএক্সআমি

    যেখানেএন(x|μ,Σ)মুলিটওয়ারিয়াত গাউসির সাথে বর্ণনা করেছেন: এন(xআমি,μসি,Σসি)=1
    Rআমি=πএন(এক্সআমি | μ,Σ)Σ=1কেπএন(এক্সআমি | μ,Σ)
    N(x | μ,Σ)

    N(xi,μc,Σc) = 1(2π)n2|Σc|12exp(12(xiμc)TΣc1(xiμc))


    ricxiProbability that xi belongs to class cProbability of xi over all classesxiric

    MStep_

    প্রতিটি ক্লাস্টারের জন্য সি: মোট ওজন গণনা করুনমি (ক্লাস্টার সিতে বরাদ্দ পয়েন্টগুলির ভগ্নাংশটি আলগাভাবে বলতে) এবং আপডেট π, μ, এবং Σ ব্যবহার ric with:

    mc = Σiric

    πc = mcm

    μc = 1mcΣiricxi

    Σc = 1mcΣiric(xiμc)T(xiμc)

    Mind that you have to use the updated means in this last formula.

    Iteratively repeat the E and M step until the log-likelihood function of our model converges where the log likelihood is computed with:

    ln p(X | π,μ,Σ) = Σi=1N ln(Σk=1KπkN(xi | μk,Σk))



সুতরাং এখন আমরা গণনার সময় একক পদক্ষেপগুলি পেয়েছি আমরা ম্যাট্রিক্সকে একবচন হওয়ার অর্থ কী তা বিবেচনা করতে হবে। কোনও ম্যাট্রিক্স অবিচ্ছিন্ন না হলে একক হয়। যদি একটি ম্যাট্রিক্স থাকে তবে একটি ম্যাট্রিক্স বিপরীত হয়এক্স যেমন যে একজনএক্স=এক্সএকজন=আমি। যদি এটি না দেওয়া হয় তবে ম্যাট্রিক্সটি একবচন বলে। এটি একটি ম্যাট্রিক্সের মতো:

[0000]


অবিচ্ছিন্ন এবং একক অনুসরণ করা হয় না। এটিও প্রশংসনীয়, আমরা যদি ধরে নিই যে উপরের ম্যাট্রিক্সটি ম্যাট্রিক্সএকজন ম্যাট্রিক্স হতে পারে না এক্স যা এই ম্যাট্রিক্সের সাথে পরিচয় ম্যাট্রিক্সের সাথে ডটেড দেয় আমি(কেবল এই শূন্য ম্যাট্রিক্স এবং ডট-প্রোডাক্টটিকে এটি অন্য 2x2 ম্যাট্রিক্সের সাথে নিন এবং আপনি দেখতে পাবেন যে আপনি সর্বদা শূন্য ম্যাট্রিক্স পাবেন)। তবে কেন আমাদের এই সমস্যা? ভাল, উপরের মাল্টিভারিয়েট স্বাভাবিকের সূত্রটি বিবেচনা করুন। আপনি সেখানে পাবেনΣ-1যা কোভারিয়েন্স ম্যাট্রিক্সের অবিচ্ছিন্ন। যেহেতু একটি একক ম্যাট্রিক্স অবিচল নয়, এটি গণনার সময় আমাদের ত্রুটি ছুঁড়ে দেবে।
সুতরাং এখন আমরা জানি যে সিএমএম গণনার সময় কীভাবে একটি একক, অবিচ্ছিন্ন ম্যাট্রিক্স দেখতে ভাল লাগে এবং কেন এটি আমাদের কাছে গুরুত্বপূর্ণ, আমরা কীভাবে এই ইস্যুটিতে দৌড়াতে পারি? প্রথমত, আমরা এটি পেয়েছি0E এবং M পদক্ষেপের মধ্যবর্তী পুনরাবৃত্তির সময় মাল্টিভিয়ারেট গাউসিয়ান যদি এক বিন্দুতে পড়ে তবে উপরের কোভারিয়েন্স ম্যাট্রিক্স। এটি ঘটতে পারে যদি উদাহরণস্বরূপ আমাদের কাছে একটি ডেটাসেট থাকে যা আমরা 3 গাউসিয়ানকে ফিট করতে পারি তবে যা কেবল দুটি ক্লাস (ক্লাস্টার) এর সাথে অন্তর্ভুক্ত থাকে যেমন আলগাভাবে কথা বলতে হয়, এই তিনটি গাউসিয়ানের মধ্যে দুটি তাদের নিজস্ব ক্লাস্টার ধরেন তবে শেষ গাউসিয়ান কেবল এটি পরিচালনা করে এটি বসে যে একটি একক পয়েন্ট ধরতে। নীচের মতো দেখতে কেমন তা আমরা দেখতে পাব। তবে ধাপে ধাপ: ধরুন আপনার কাছে একটি দ্বি মাত্রিক ডেটাসেট রয়েছে যা দুটি গুচ্ছ নিয়ে গঠিত তবে আপনি এটি জানেন না এবং এটিতে তিনটি গাউসীয় মডেল ফিট করতে চান, এটি সি = ৩ You আপনি E পদক্ষেপ এবং প্লটে আপনার পরামিতি আরম্ভ করবেন আপনার ডেটা শীর্ষে গৌসিয়ানরা যা স্মথ দেখায়। যেমন (সম্ভবত আপনি নীচে বাম এবং উপরের অংশে দুটি তুলনামূলকভাবে বিক্ষিপ্ত ক্লাস্টার দেখতে পাচ্ছেন): enter image description here প্যারামিটারটি আরম্ভ করার পরে আপনি পুনরায় E, T ধাপগুলি করেন। এই প্রক্রিয়া চলাকালীন তিন গাউসিয়ান এক ধরণের ঘোরাফেরা করে এবং তাদের অনুকূল স্থান অনুসন্ধান করে। আপনি যদি মডেল পরামিতিগুলি পর্যবেক্ষণ করেন তবে তাμ এবং πআপনি পর্যবেক্ষণ করবেন যে তারা একত্রিত হয়েছে, এটি কিছু সংখ্যক পুনরাবৃত্তির পরে তারা আর পরিবর্তন করবে না এবং এর সাথে সংশ্লিষ্ট গাওসিয়ান মহাশূন্যে এটির স্থান খুঁজে পেয়েছে। যে ক্ষেত্রে আপনার একাকীত্বের ম্যাট্রিক্স রয়েছে যার মুখোমুখি আপনি। লাইক: enter image description here যেখানে আমি তৃতীয় গাউসির মডেলটি লাল রঙের সাথে প্রদত্ত করেছি। সুতরাং আপনি দেখতে পাচ্ছেন যে এই গাউসিয়ান একটি একক ডেটাপয়েন্টে বসে আছেন এবং বাকী দু'জন বাকী দাবি করছেন। এখানে আমার খেয়াল করতে হবে যে চিত্রটি আঁকতে সক্ষম হতে আমি ইতিমধ্যে কোভারিয়েন্স-নিয়মিতকরণ ব্যবহার করেছি যা এককত্বের ম্যাট্রিক্স প্রতিরোধের একটি পদ্ধতি এবং নীচে বর্ণিত হয়েছে।

ঠিক আছে, তবে আমরা এখনও জানি না কেন এবং কীভাবে আমরা একটি এককতার ম্যাট্রিক্সের মুখোমুখি হই। সুতরাং আমাদের গণনাগুলি দেখতে হবেRআমি এবং বনামই এবং এম পদক্ষেপের সময়। আপনি যদি তাকানRআমি সূত্র আবার:
Rআমি=πএন(এক্সআমি | μ,Σ)Σ=1কেπএন(এক্সআমি | μ,Σ)
আপনি সেখানে দেখতে পাবেন Rআমিযদি তারা ক্লাস্টার সি এর অধীনে খুব কম হয় এবং অন্যথায় নিম্ন মানের হয় তবে এর মানগুলি বড় হবে। এটিকে আরও প্রকট করার জন্য আমাদের দু'জন তুলনামূলকভাবে ছড়িয়ে পড়া গাউসিয়ান এবং একটি খুব টাইট গাউসিয়ান রয়েছে এবং আমরা গণনা করিRআমি প্রতিটি ডেটাপয়েন্টের জন্য এক্সআমিচিত্রটিতে যেমন চিত্রিত হয়েছে: enter image description here সুতরাং বাম থেকে ডানদিকে ডেটাপপয়েন্টগুলি দেখুন এবং কল্পনা করুন যে আপনি প্রতিটিটির সম্ভাবনা লিখে রাখবেনএক্সআমিএটি লাল, নীল এবং হলুদ গাউসের অন্তর্গত। আপনি যা দেখতে পাচ্ছেন তা হ'ল বেশিরভাগের জন্যএক্সআমিএটি হলুদ গাউসের সাথে সম্পর্কিত হওয়ার সম্ভাবনা খুব কম। উপরের ক্ষেত্রে যেখানে তৃতীয় গাউসিয়ান একটি একক ডেটাপয়েন্টে বসে আছে,Rআমি এই একটি ডেটাপয়েন্টের জন্য কেবল শূন্যের চেয়ে বড় তবে এটি অন্যের জন্য শূন্য এক্সআমি। (এই ডেটাপয়েন্টের উপর ধসে পড়ে -> এটি ঘটে যদি অন্য সমস্ত পয়েন্টগুলি সম্ভবত গাওসির এক বা দুটি অংশের বেশি হয় এবং তাই এটি কেবল পয়েন্ট যা গাউসিয়ান তিনটির জন্যই রয়ে যায় -> কেন এটি ঘটে তার কারণের মধ্যে মিথস্ক্রিয়াকে খুঁজে পাওয়া যাবে) গাউসিয়ানদের সূচনাতে ডেটাসেট নিজেই। অর্থাৎ আমরা যদি গাউসিয়ানদের জন্য অন্যান্য প্রাথমিক মানগুলি বেছে নিয়ে থাকি তবে আমরা অন্য ছবিটি দেখতে পেতাম এবং তৃতীয় গাউসিয়ান ভেঙে পড়ত না)। আপনি যদি আরও এবং আরও এই গাউসিকে স্পাইক করেন তবে এটি যথেষ্ট। দ্যRআমিটেবিলটি তখন স্মথ দেখায়। পছন্দ: enter image description here আপনি দেখতে পারেন,Rআমি of the third column, that is for the third gaussian are zero instead of this one row. If we look up which datapoint is represented here we get the datapoint: [ 23.38566343 8.07067598]. Ok, but why do we get a singularity matrix in this case? Well, and this is our last step, therefore we have to once more consider the calculation of the covariance matrix which is:
Σc = Σiric(xiμc)T(xiμc)
we have seen that all ric are zero instead for the one xi with [23.38566343 8.07067598]. Now the formula wants us to calculate (xiμc). If we look at the μc for this third gaussian we get [23.38566343 8.07067598]. Oh, but wait, that exactly the same as xi and that's what Bishop wrote with:"Suppose that one of the components of the mixture model, let us say the j th component, has its mean μj exactly equal to one of the data points so that μj=xn for some value of n" (Bishop, 2006, p.434). So what will happen? Well, this term will be zero and hence this datapoint was the only chance for the covariance-matrix not to get zero (since this datapoint was the only one where ric>0), it now gets zero and looks like:

[0000]


Consequently as said above, this is a singular matrix and will lead to an error during the calculations of the multivariate gaussian. So how can we prevent such a situation. Well, we have seen that the covariance matrix is singular if it is the 0 matrix. Hence to prevent singularity we simply have to prevent that the covariance matrix becomes a 0 matrix. This is done by adding a very little value (in sklearn's GaussianMixture this value is set to 1e-6) to the digonal of the covariance matrix. There are also other ways to prevent singularity such as noticing when a gaussian collapses and setting its mean and/or covariance matrix to a new, arbitrarily high value(s). This covariance regularization is also implemented in the code below with which you get the described results. Maybe you have to run the code several times to get a singular covariance matrix since, as said. this must not happen each time but also depends on the initial set up of the gaussians.
import matplotlib.pyplot as plt
from matplotlib import style
style.use('fivethirtyeight')
from sklearn.datasets.samples_generator import make_blobs
import numpy as np
from scipy.stats import multivariate_normal


# 0. Create dataset
X,Y = make_blobs(cluster_std=2.5,random_state=20,n_samples=500,centers=3)

# Stratch dataset to get ellipsoid data
X = np.dot(X,np.random.RandomState(0).randn(2,2))


class EMM:

    def __init__(self,X,number_of_sources,iterations):
        self.iterations = iterations
        self.number_of_sources = number_of_sources
        self.X = X
        self.mu = None
        self.pi = None
        self.cov = None
        self.XY = None



    # Define a function which runs for i iterations:
    def run(self):
        self.reg_cov = 1e-6*np.identity(len(self.X[0]))
        x,y = np.meshgrid(np.sort(self.X[:,0]),np.sort(self.X[:,1]))
        self.XY = np.array([x.flatten(),y.flatten()]).T


        # 1. Set the initial mu, covariance and pi values
        self.mu = np.random.randint(min(self.X[:,0]),max(self.X[:,0]),size=(self.number_of_sources,len(self.X[0]))) # This is a nxm matrix since we assume n sources (n Gaussians) where each has m dimensions
        self.cov = np.zeros((self.number_of_sources,len(X[0]),len(X[0]))) # We need a nxmxm covariance matrix for each source since we have m features --> We create symmetric covariance matrices with ones on the digonal
        for dim in range(len(self.cov)):
            np.fill_diagonal(self.cov[dim],5)


        self.pi = np.ones(self.number_of_sources)/self.number_of_sources # Are "Fractions"
        log_likelihoods = [] # In this list we store the log likehoods per iteration and plot them in the end to check if
                             # if we have converged

        # Plot the initial state    
        fig = plt.figure(figsize=(10,10))
        ax0 = fig.add_subplot(111)
        ax0.scatter(self.X[:,0],self.X[:,1])
        for m,c in zip(self.mu,self.cov):
            c += self.reg_cov
            multi_normal = multivariate_normal(mean=m,cov=c)
            ax0.contour(np.sort(self.X[:,0]),np.sort(self.X[:,1]),multi_normal.pdf(self.XY).reshape(len(self.X),len(self.X)),colors='black',alpha=0.3)
            ax0.scatter(m[0],m[1],c='grey',zorder=10,s=100)


        mu = []
        cov = []
        R = []


        for i in range(self.iterations):               

            mu.append(self.mu)
            cov.append(self.cov)


            # E Step
            r_ic = np.zeros((len(self.X),len(self.cov)))

            for m,co,p,r in zip(self.mu,self.cov,self.pi,range(len(r_ic[0]))):
                co+=self.reg_cov
                mn = multivariate_normal(mean=m,cov=co)
                r_ic[:,r] = p*mn.pdf(self.X)/np.sum([pi_c*multivariate_normal(mean=mu_c,cov=cov_c).pdf(X) for pi_c,mu_c,cov_c in zip(self.pi,self.mu,self.cov+self.reg_cov)],axis=0)
            R.append(r_ic)

            # M Step

            # Calculate the new mean vector and new covariance matrices, based on the probable membership of the single x_i to classes c --> r_ic
            self.mu = []
            self.cov = []
            self.pi = []
            log_likelihood = []

            for c in range(len(r_ic[0])):
                m_c = np.sum(r_ic[:,c],axis=0)
                mu_c = (1/m_c)*np.sum(self.X*r_ic[:,c].reshape(len(self.X),1),axis=0)
                self.mu.append(mu_c)

                # Calculate the covariance matrix per source based on the new mean
                self.cov.append(((1/m_c)*np.dot((np.array(r_ic[:,c]).reshape(len(self.X),1)*(self.X-mu_c)).T,(self.X-mu_c)))+self.reg_cov)
                # Calculate pi_new which is the "fraction of points" respectively the fraction of the probability assigned to each source 
                self.pi.append(m_c/np.sum(r_ic)) 



            # Log likelihood
            log_likelihoods.append(np.log(np.sum([k*multivariate_normal(self.mu[i],self.cov[j]).pdf(X) for k,i,j in zip(self.pi,range(len(self.mu)),range(len(self.cov)))])))



        fig2 = plt.figure(figsize=(10,10))
        ax1 = fig2.add_subplot(111) 
        ax1.plot(range(0,self.iterations,1),log_likelihoods)
        #plt.show()
        print(mu[-1])
        print(cov[-1])
        for r in np.array(R[-1]):
            print(r)
        print(X)

    def predict(self):
        # PLot the point onto the fittet gaussians
        fig3 = plt.figure(figsize=(10,10))
        ax2 = fig3.add_subplot(111)
        ax2.scatter(self.X[:,0],self.X[:,1])
        for m,c in zip(self.mu,self.cov):
            multi_normal = multivariate_normal(mean=m,cov=c)
            ax2.contour(np.sort(self.X[:,0]),np.sort(self.X[:,1]),multi_normal.pdf(self.XY).reshape(len(self.X),len(self.X)),colors='black',alpha=0.3)




EMM = EMM(X,3,100)     
EMM.run()
EMM.predict()

0

Imho, all the answers miss a fundamental fact. If one looks at the parameter space for a Gaussian mixture model, this space is singular along the subspace where there are less than the full number of components in the mixture. That means that derivatives are automatically zero and typically the whole subspace will show up as a mle. More philosophically, the subspace of less than full rank covariances is the boundary of the parameter space and one should always be suspicious when the mle occurs on the boundary- it usually indicates that there is a bigger parameter space lurking around in which one can find the 'real' mle. There is a book called "Algebraic Statistics" by Drton, Sturmfeld, and Sullivant. This issue is discussed in that book in some detail. If you are really curious, you should look at that.


-2

For a single Gaussian, the mean may possibly equal one of the data points (xn for example) and then there is the following term in the likelihood function:

N(xn|xn,σj11)limσjxn1(2π)1/2σjexp(1σj|xnσj|2)=1(2π)1/2σj
The limit σj0 is now clearly divergent since the argument of the exponential vanishes.

However for a data point xm different from the mean σj, we will have

N(xm|xm,σj11)=1(2π)1/2σjexp(1σj|xmσj|2)
and now the argument of the exponential diverges (and is negative) in the limit σj0. As a result the product of these two terms in the likelihood function will vanish.

This answer is incorrect as there is no reason to identify mean μj and standard deviation σj.
Xi'an
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.