אלגוריתם מיקסום התוחלת

דוגמה לשימוש באלגוריתם EM כדי ליצור אשכולות (Clustering). בדוגמה זו מוצג מידע על התפרצויות גייזר [[אולד פיית'פול. ציר ה-X מבטא את משך ההתפרצות של הגייזר, וציר ה-Y מבטא את הזמן שחלף מההתפרצות הקודמת. האלגוריתם מגיע להתכנסות ולסיווג לשני סוגים של התפרצויות הגייזר אולד פיית'פול.]]
k-מרכזים ומקסום תוחלת על נתוני הדמיה. אלגוריתם מקסום תוחלת מגיע לתיאור יותר נכון של ההתפלגויות הנורמליות, בעוד k-מרכזים מפצל את הנתונים לתאי וורונוי . מרכז האשכול מסומן על ידי הסמל הבהיר והגדול יותר.]]
אלגוריתם מיקסום התוחלת (באנגלית: Expectation–maximization; ובראשי תיבות: EM) הוא שיטה איטרטיבית לאמידה של פרמטרים, במודלים סטטיסטיים שבהם משולבים משתנים מקריים סמויים שאין עבורם תצפיות. מודל איטרציה זה עובר בין שני שלבים:

# התוחלת (שלב ה-E), אשר יוצר פונקציה של הפרמטרים לאמידה - תוחלת של לוג הנראות (של כל הנתונים, כולל הסמויים) כאשר מניחים כי למשתנים הסמויים יש התפלגות שנסמכת על האומדן הנוכחי עבור הפרמטרים.
# שלב המיקסום (שלב ה-M), אשר מוצא עבור הפרמטרים את האומדנים אשר מביאים למקסימום את הפונקציה שחושבה בשלב התוחלת.

לאחר שלב המיקסום חוזרים חוזרים לשלב התוחלת עם האומדנים שנמצאו בשלב המיקסום וכן הלאה.

==היסטוריה==
אלגוריתם EM קיבל את שמו לראשונה בשנת 1977 במאמר מאת ארתור דמפסטר, נאן ליירד, ודונלד רובין.<ref></ref> במאמר זה ציינו החוקרים כי בעבר השיטה כבר הועלתה על הכתב בידי מחברים אחרים. דמפסטר-ליירד-רובין הגדירו את שיטת מיקסום התוחלת ככלי חשוב לפתרון מגוון רחב של בעיות. עם זאת, ניתוח ההתכנסות של דמפסטר-ליירד-רובין היה שגוי. ניתוח מתוקן פורסם על ידי ס.פ ג'ף וו ב-1983.<ref name=":0"></ref>

==מבוא==
אלגוריתם EM משמש תחליף לאומד נראות מקסימלית במודלים סטטיסטיים שבהם קיים קושי הנובע מקיומם של משתנים מקריים סמויים או נתונים חסרים. במודלים אלו קשה מבחינה טכנית למצוא מקסימום לפונקציית הנראות.

אלגוריתם EM מתחיל עם אומדן התחלתי לפרמטרים (אפשר לקבלו באמצעות שיטות אמידה פחות מדויקות). מתוך האומדן הראשוני מקבלים את ההתפלגות עבור הנתונים החסרים ואת <math>Q</math> תוחלת ההתפלגות של לוג הנראות עבור נתונים מלאים. זו עדיין פונקציה של הפרמטרים, כי האומדן משמש אותנו רק כדי לקבל את ההתפלגות לנתונים החסרים. עתה ניתן להשתמש ב-<math>Q</math> במקום בפונקציית לוג הנראות, <math>l</math>, שבה משתמשים בשיטה של אומד נראות מקסימלי. האומדן החדש לפרמטרים יהיה זה המביא למקסימום <math>Q</math>. בניגוד למקרה של אומד נראות מקסימלי, האומדן שקיבלנו עדיין לא אופטימלי ועלינו להציבו שוב כדי לקבל התפלגות משופרת לנתונים החסרים. כך ממשיכים עם האיטרציות עד אשר מגיעים למצב שבו איטרציות נוספות אינן משנות את האומדנים באופן שהוא משמעותי.

==תיאור מתמטי==
בהינתן מודל סטטיסטי המורכב ממדידות <math>x</math>, משתנים סמויים שאינם נראים או נתונים חסרים <math>Z</math> (משתנה מקרי), פרמטרים θ אותם מעוניינים לאמוד ופונקציית הצפיפות <math> f(\mathbf{x}, \mathbf{z};\boldsymbol\theta)</math> בהינתן הנתונים המלאים. פונקציית הצפיפות השולית של הנתונים הקיימים היא <math> f(\mathbf{x};\boldsymbol\theta)=\int f(\mathbf{x},\mathbf{z};\boldsymbol\theta) d\mathbf{z}</math> ולכן לוג הנראות בהינתן הנתונים הנראים היא <math> l(\theta)=log(f(\mathbf{x};\theta))</math>. כאשר אומדים בשיטת הנראות המקסימלית, בדרך כלל, מוצאים <math>\theta\in\Omega</math> שיביא למקסימום את <math> l(\theta)</math>. אולם בדרך כלל במקרים של נתונים חסרים בדרך כלל מדובר בבעיה טכנית קשה יחסית. 

בתנאים מסוימים, אלגוריתם EM מאפשר לעשות זאת על ידי יישום איטרטיבי של שני הצעדים הבאים:

שלב התוחלת (שלב ה-<math>E</math>): חישוב תוחלת הלוג של פונקציית הנראות לנתונים המלאים, ביחס להתפלגות של <math>Z</math> של הנתונים החסרים, בהינתן סדרת התצפיות <math>\mathbf x</math> והאומדן הנוכחי של הפרמטרים <math>\boldsymbol\theta^{(t)}</math>:
::<math>Q\left(\boldsymbol\theta;\boldsymbol\theta^{(t)}\right) =
\int\log( f(\mathbf{x}\mid\mathbf{z};\boldsymbol\theta))
f\left( \mathbf{z}; \boldsymbol\theta^{(t)}\right)\ d\mathbf{z} =
E_{Z|\theta^{(t)}}[\log f(\mathbf{x}\mid\mathbf{Z};\boldsymbol\theta)]</math>
שלב המיקסום (שלב ה-<math>M </math>): מציאת ה-<math>\boldsymbol\theta</math> אשר מביא למקסימום את הפונקציה שחושבה בצעד הראשון:

<math>\boldsymbol\theta^{(t+1)} = \underset{\boldsymbol\theta\in\Omega}{\operatorname{arg\,max}} \ Q\left(\boldsymbol\theta;\boldsymbol\theta^{(t)}\right) \, </math>.

מתחילים עם אומדן ראשוני, <math>\mathbf{\theta^{(0)}}</math> (שיכול להתקבל באמצעות שיטה אחרת, פחות מדויקת), ואז חוזרים שוב ושוב על שלב התוחלת ושלב המיקסום ומקבלים סדרה <math>\mathbf{\theta^{(0)} },\mathbf{\theta^{(1)}},...</math> של אומדנים שבתנאים מסוימים הולכים ומשתפרים.

== משפט התכנסות של האלגוריתם ==
ג'ף וו הוכיח את משפט ההתכנסות הבא:<ref name=":0" />

בהינתן שההנחות הבאות מתקיימות:

* <math>\Omega </math> הוא תת-קבוצה של המרחב האוקלידי ה-<math>r </math> ממדי <math>\Omega\subseteq\mathbb{R}^r </math>,
* הקבוצה <math> \Omega_{\theta^{(0)}}=\left\{\theta : l(\theta)\geq l\left(\theta^{(0)}\right)\right\}</math> קומפקטית לכל <math> l\left(\theta^{(0)}\right)>-\infty</math>,
* <math> l</math> רציפה על <math> \Omega</math> וגזירה בפנים של <math> \Omega</math>,
* הפונקציה <math>Q(\boldsymbol\theta';\boldsymbol\theta)</math> רציפה גם ב-<math>\boldsymbol\theta</math> וגם ב-<math>\boldsymbol\theta'</math>;

אז כל נקודות הגבול של סדרה <math>\mathbf{\theta^{(0)} },\mathbf{\theta^{(1)}},...</math> הן נקודות קריטיות של <math>l</math> (נקודה בה הנגזרת מתאפסת או לא מוגדרת) והסדרה <math>l\left(\theta^{(0)}\right),l\left(\theta^{(1)}\right),...</math> מתכנסת באופן מונוטוני ל-<math>l\left(\theta^{*}\right)</math> עבור נקודה <math>\theta^{*}</math>, שהיא אחת מהנקודות הקריטיות של <math>l</math>.

אם נניח בנוסף לכך את ההנחות הבאות:

* לפונקציה <math>l</math> יש נקודה קריטית יחידה <math>\theta^{*}</math> שבה מתקבל מקסימום גלובלי,
* וקטור הנגזרות החלקיות של <math>Q(\boldsymbol\theta';\boldsymbol\theta)</math> רציף גם ב-<math>\boldsymbol\theta</math> וגם ב-<math>\boldsymbol\theta'</math>;

אז הסדרה <math>\theta^{(0)},\theta^{(1)},...</math> מתכנסת ל-<math>\theta^{*}</math>.

==דוגמה==

=== התפלגות תערובת של שתי התפלגויות רב-נורמליות ===
<br />
נתון מדגם <math>\mathbf{x} = (\mathbf{x}_1,\mathbf{x}_2,\ldots,\mathbf{x}_n)</math> של <math>n</math> ווקטורי תצפיות בלתי תלויים מתערובת של שתי התפלגויות רב-נורמליות ממימד <math>d</math>, ונניח שקיימים משתנים מקריים סמויים <math>\mathbf{Z} = (Z_1,Z_2,\ldots,Z_n)</math> אשר קובעים מאיזה מרכיב של התערובת מגיעה כל תצפית.<ref name="hastie2001"></ref>

<math>X_i \mid Z_i = 0 \sim \mathcal{N}_d(\boldsymbol{\mu}_0,\Sigma_0)</math> ו-

<math>X_i \mid Z_i =1 \sim \mathcal{N}_d(\boldsymbol{\mu}_1,\Sigma_1)</math>,

כאשר

<math>\operatorname{P} (Z_i = 1 ) = \tau \, </math> ו-

<math>\operatorname{P} (Z_i=0) = 1-\tau</math>.

המטרה היא לאמוד את המשקלים של הצירוף הקמור בין שתי ההתפלגויות המרכיבות ואת התוחלות והשונויות של כל אחד מהם:

<math>\theta = \big( \tau,\boldsymbol{\mu}_0,\boldsymbol{\mu}_1,\Sigma_0,\Sigma_1 \big)</math>,

פונקציית הנראות עבור הנתונים המלאים הכוללים וקטור תצפיות <math>\mathbf{z}</math>:

<math> f(\mathbf{x},\mathbf{z} \mid \theta) =
\prod_{i=1}^n \ [\left((1-\tau) f(\mathbf{x}_i;\boldsymbol{\mu}_0,\Sigma_0)\right)^{1- z_i}\left(\tau f(\mathbf{x}_i;\boldsymbol{\mu}_1,\Sigma_1) \right)^{z_i}] </math>,

כאשר <math>f(\mathbf{x}_i;\boldsymbol{\mu}_j,\Sigma_j)</math> הן פונקציות צפיפות של של התפלגויות רב-נורמליות.

הלוג של פונקציית הנראות הוא:

<math>\log f(\mathbf{x},\mathbf{z};\theta) = 
\sum_{i=1}^n \ [(1- z_i)\left(\log (1-\tau)+\log f(\mathbf{x}_i;\boldsymbol{\mu}_0,\Sigma_0)\right)
+ z_i\left(\log \tau +\log f(\mathbf{x}_i;\boldsymbol{\mu}_1,\Sigma_1)\right)] </math>.

מאחר ש-<math>\mathbf{z}</math> מבטא נתונים חסרים נציב במקומו משתנים מקריים:

<math>\log f(\mathbf{x},\mathbf{Z};\theta) = 
\sum_{i=1}^n \ [(1- Z_i)\left(\log (1-\tau)+\log f(\mathbf{x}_i;\boldsymbol{\mu}_0,\Sigma_0)\right)
+ Z_i\left(\log \tau +\log f(\mathbf{x}_i;\boldsymbol{\mu}_1,\Sigma_1)\right)] </math>.

====== שלב התוחלת ======
בהינתן האומדן <math>\theta^{(t)}</math>, ההתפלגות המותנה של <math>Z_i</math> נקבעת על ידי חוק בייס:

<math>\tau_{i,1}^{(t)} := \operatorname{P}(Z_i=1 \mid \mathbf{x}_i ;\theta^{(t)}) = \frac{\tau^{(t)} \ f(\mathbf{x}_i;\boldsymbol{\mu}_1^{(t)},\Sigma_1^{(t)})}{(1-\tau^{(t)})\ f(\mathbf{x}_i;\boldsymbol{\mu}_0^{(t)},\Sigma_0^{(t)}) + \tau^{(t)} \ f(\mathbf{x}_i;\boldsymbol{\mu}_1^{(t)},\Sigma_1^{(t)})} </math>.

לכן,

<math>\operatorname{E}_{Z|\theta^{(t)}}[Z_i=1 \mid X_i=\mathbf{x}_i ;\theta^{(t)}]=\tau_{i,1}^{(t)} </math>.

נסמן גם <math>\tau_{i,0}^{(t)}=1-\tau_{i,1}^{(t)} </math>. לכן,

<math>Q(\theta\mid\theta^{(t)})
= \operatorname{E}_{Z|\theta^{(t)}}[\log f(\mathbf{x},\mathbf{Z};\theta) ]
=\sum_{i=1}^n \ [\tau_{i,0}^{(t)}\left(\log (1-\tau)+\log f(\mathbf{x}_i;\boldsymbol{\mu}_0,\Sigma_0)\right)
+ \tau_{i,1}^{(t)}\left(\log \tau +\log f(\mathbf{x}_i;\boldsymbol{\mu}_1,\Sigma_1)\right)]
</math>

====== שלב המיקסום ======
בשלב זה מקבלים אומדנים חדשים לפרמטרים, כאלה אשר מביאים את <math>Q</math> למקסימום. נעשה זאת, במקרה המסוים הזה, על ידי גזירה(חלקית) לפי הפרמטרים והשוואה ל-0,

<math>.\boldsymbol{\tau}^{(t+1)}
= \underset{\boldsymbol{\tau}} {\operatorname{arg\,max}}\ Q(\theta \mid \theta^{(t)} ) 
= \underset{\boldsymbol{\tau}} {\operatorname{arg\,max}} \ \left\{ \left[ \sum_{i=1}^n \tau_{i,0}^{(t)} \right] \log (1-\tau) + \left[ \sum_{i=1}^n \tau_{i,1}^{(t)} \right] \log \tau \right\}
</math>

מקבלים,

<math>\tau^{(t+1)} = \frac{1}{n} \sum_{i=1}^n \tau_{i,1}^{(t)}</math>.

עבור <math>j=0,1</math>, מציאת האומדנים החדשים של <math>\boldsymbol{\mu}_j</math> ו- <math>\boldsymbol{\Sigma}_j</math>,

<math>.(\boldsymbol{\mu}_j^{(t+1)}, \boldsymbol{\Sigma}_j^{(t+1)})
= \underset{\boldsymbol{\mu}_j,\Sigma_j} {\operatorname{arg\,max}}\ Q(\theta \mid \theta^{(t)} ) 
= \underset{\boldsymbol{\mu}_j,\Sigma_j} {\operatorname{arg\,max}}\ 
\sum_{i=1}^n \tau_{i,j}^{(t)} \left\{ -\tfrac{1}{2} \log |\Sigma_j| -\tfrac{1}{2}(\mathbf{x}_i-\boldsymbol{\mu}_j)^\top\Sigma_j^{-1} (\mathbf{x}_i-\boldsymbol{\mu}_j) \right\}
</math>

מקבלים,

<math>\boldsymbol{\mu}_j^{(t+1)} =\left(\sum_{i=1}^n \tau_{i,j}^{(t)} \right)^{-1}\sum_{i=1}^n \tau_{i,j}^{(t)} \mathbf{x}_i </math> וגם <math>\boldsymbol{\Sigma}_j^{(t+1)} =\left(\sum_{i=1}^n \tau_{i,j}^{(t)} \right)^{-1}
\sum_{i=1}^n \tau_{i,j}^{(t)} (\mathbf{x}_i - \boldsymbol{\mu}_j^{(t+1)}) 
(\mathbf{x}_i - \boldsymbol{\mu}_j^{(t+1)})^\top </math>.

====== הכללה ======

ניתן להכליל את האלגוריתם המודגם לעיל עבור תערובות של יותר משתי התפלגויות רב-נורמליות.

==הערות שוליים==

קטגוריה:אופטימיזציה רציפה
קטגוריה:למידת מכונה