לימוד חוקיות אסוציאטיבי

לימוד חוקיות אסוציאטיבי הוא כלל המבוסס על למידה חישובית למטרת גילוי יחסים מעניינים בין משתנים במאגרי מידע גדולים. תפקידו לזהות חוקיות חזקה במאגרי המידע תוך שימוש במדידות ענייניות . בהתבסס על רעיונות החוקיות החזקה של ראקש ארגוואל, תומאס למילנסקי וארון סוואמי מוצגים חוקים אסוציאטיביים לגילוי תדירויות בין מוצרים המופיעים בנתוני עסקאות הנאספות בנקודות המכירה (Point Of Sale - POS) בסופרמרקטים. למשל, החוק <math> {\displaystyle \{\mathrm {onions,potatoes} \}\Rightarrow \{\mathrm {burger} \}}</math> כפי שמוצאים בנתוני המכירות בסופרמרקטים יצביעו על כך שאם לקוח ירכוש בצל ותפוח אדמה יחד, רוב הסיכויים שירצה לרכוש גם בשר טחון. מידע כזה יכול לשמש בסיס לקבלת החלטות לגבי פעילויות שיווקיות כגון, קידום מכירות, תמחור או מיקום מוצרים. בנוסף לדוגמה הנ"ל מתחום ניתוח סל מכירות, חוקיות אסוציאטיבית מיושמת כיום בהרבה ענפים כגון ייצור רציף וביואינפורמטיקה. בניגוד לרצף כרייה, חוקיות אסוציאטיבית בדרך כלל אינה מחשיבה את הסדר של פריטים בתוך העסקה או בעסקאות המעבר.

== הגדרה ==
{| class="wikitable" style="margin-bottom: 34px; margin-left: 1em; float: right;"
|+ דוגמה: מאגר נתונים עם 5 עסקאות ו-5 פריטים
! תעודת זהות עסקית
! חלב
! לחם
! חמאה
! בירה
! חיתולים
|-
| 1
| 1
| 1
| 0
| 0
| 0
|-
| 2
| 0
| 0
| 1
| 0
| 0
|-
| 3
| 0
| 0
| 0
| 1
| 1
|-
| 4
| 1
| 1
| 1
| 0
| 0
|-
| 5
| 0
| 1 
| 0
| 0
| 0
|}
בהתאם להגדרה המקורית של אגראוול אט-אל, בעיית כריית החוקיות האסוציאטיבית מוגדרת באופן הבא:

נגדיר <math> {\displaystyle I=\{i_{1},i_{2},\ldots ,i_{n}\}}</math> קבוצה של תכונות בינאריות הנקראות פריטים.

נגדיר <math> {\displaystyle D=\{t_{1},t_{2},\ldots ,t_{m}\}}</math> קבוצה של עסקאות הנקראות מאגר הנתונים.

לכל עסקה בתוך D יש תעודת זיהוי עסקית ייחודית המכילה קבוצת משנה של פריטים בתוך I.

כל חוק מורכב על ידי שני סטים של פריטים, הידועים גם בשם סט פריטים (itemsets).

<math> X\Rightarrow Y, where {\displaystyle X,Y\subseteq I} X,Y\subseteq I.</math>

כדי להמחיש את המושגים, נשתמש בדוגמה קטנה מתחום הסופרמרקטים. סט הפריטים הם {חיתולים, בירה, חמאה, לחם, חלב}<math>I=</math> ובטבלה מוצג מאגר נתונים קטן המכיל את הפריטים, כאשר בכל תא הערך 1 מציין את נוכחותו של הפריט בעסקה, והערך 0 מייצג את העדר הפריט בעסקה.

דוגמה לחוק עבור סופרמרקט יכול להיות {חמאה, לחם}<math> \Leftarrow</math>{חלב} ופירושו: אם הלקוח רכש חמאה ולחם אזי הוא ירכוש גם חלב.

דוגמה זו היא קטנה מאוד. ביישומים מעשיים, חוק צריך להתבסס על כמה מאות עסקאות כדי שייחשב כערך סטטיסטי, ומאגרי נתונים לעיתים קרובות מכילים אלפי או מיליוני עסקאות.

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

נגדיר <math>X</math> להיות סט פריטים, <math>X\Rightarrow Y</math> כחוק אסוציאטיבי ו-<math>T</math> כסט של עסקאות של מאגר נתונים נתון.

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

<math>

{\displaystyle \mathrm {supp} (X)={\frac {|\{t\in T;X\subseteq t\}|}{|T|}}} </math>

בדוגמה של מאגר הנתונים, ל- itemset {חיתולים, בירה}=X יש תמיכה של <math></math>0.2 מאחר שהיא מתרחשת ב-20% מהעסקאות (1 מתוך 5 עסקאות). הארגומנט הוא קבוצה של תנאים מוקדמים, ובכך הופך להיות מגביל יותר ככל שהוא גדל.

=== ביטחון ===
ביטחון הוא אינדיקציה לכמות הפעמים שהחוק אומת.

ערך הביטחון של החוק, <math>, {\displaystyle X\Rightarrow Y} </math> ביחס לסט העסקאות <math>T</math>, הוא היחס של העסקאות שמכיל X ושמכיל גם Y.

ביטחון מוגדר כ:

<math>

{\displaystyle \mathrm {conf} (X\Rightarrow Y)=\mathrm {supp} (X\cap Y)/\mathrm {supp} (X)}</math>.

למשל, לחוק <math> {\displaystyle \{\mathrm {butter,bread} \}\Rightarrow \{\mathrm {milk} \}}</math> יש ביטחון של <math>0.2/0.2=1.0</math> בתוך מאגר הנתונים, שפירושו כי על 100% של עסקאות המכילות חמאה ולחם הכלל הוא נכון (100% מהפעמים בו הלקוח קונה חמאה, לחם, הוא קונה גם חלב).

שים לב כי <math>{\displaystyle \mathrm {supp} (X\cap Y)}</math> משמעו התמיכה של חיתוך הפריטים ב-X ו-Y. ניסוח כזה קצת מקשה מכיוון שאנחנו בדרך כלל חושבים במונחים של הסתברויות של אירועים ולא של סט פריטים. אנחנו יכולים להתייחס למינוח <math>{\displaystyle \mathrm {supp} (X\cap Y)}</math> כהסתברות משותפת כאשר <math>{\displaystyle P(E_{X}\wedge E_{Y})}</math>, ו -<math> {\displaystyle E_{X}}</math> ו-<math>E_{Y}</math> מציינים אירועי עסקאות המכיל סט פריטים <math>X</math> או <math>Y</math>, בהתאמה.

לפיכך ביטחון יכול להתפרש כ - " הערכה של ההסתברות המותנית <math>P(E_Y | E_X)</math>, מה ההסתברות למצוא את RHS של כלל בעסקאות בתנאי עסקאות אלה מכילים גם את LHS.

=== הרמה ===
הרמה של חוק מוגדרת כ:

<math>

{\displaystyle \mathrm {lift} (X\Rightarrow Y)={\frac {\mathrm {supp} (X\cap Y)}{\mathrm {supp} (X)\times \mathrm {supp} (Y)}}}</math>

או היחס בין התמיכה בפועל לבין המשוערת אם X ו-Y היו בלתי תלויים.

למשל, לחוק {חלב, לחם}<math> \Leftarrow</math>{חמאה} יש הרמה של <math> {\displaystyle {\frac {0.2}{0.4\times 0.4}}=1.25}</math>

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

אם ההרמה > 1, הדבר מאפשר לנו לדעת באיזו מידה שני המאורעות תלויים אחד בשני, והופך חוקים אלה להיות פוטנציאלים לשימוש עבור חיזוי הסוגר בעתיד.

התועלת של ההרמה היא בכך שהיא מביאה בחשבון את ביטחון החוק ואת סט המידע הכולל.

=== הרשעה ===
הרשעה של חוק מוגדרת כ:

<math> {\mathrm {conv}}(X\Rightarrow Y)={\frac {1-{\mathrm {supp}}(Y)}{1-{\mathrm {conf}}(X\Rightarrow Y)}}</math>.

למשל, לחוק <math>{\displaystyle \{\mathrm {milk,bread} \}\Rightarrow \{\mathrm {butter} \}}</math> יש הרשעה של <math>\frac{1 - 0.4}{1 - 0.5} = 1.2 </math>, ויכולה להתפרש כיחס בין התדירות הצפויה ש-X יתרחש ללא Y (ובמילים אחרות, התדירות שהחוק יוצר תחזית שגויה) אם X ו-Y היו מחולקים באופן בלתי תלוי על ידי התדירות הנצפית של התחזיות השגויות. בדוגמה זו, ערך ההרשעה 1.2 מראה כי החוק <math>{\displaystyle \{\mathrm {milk,bread} \}\Rightarrow \{\mathrm {butter} \}}</math> יהיה שגוי ביותר מ-20%  (1.2 פעמים) אם הקשר בין X ו-Y יהיה לגמרי מקרי.

== תהליך ==
סריג itemset תדיר, כאשר צבע התיבה מציין את כמות העסקאות המכילות שילוב של פריטים. שים לב כי רמות נמוכות יותר של הסריג יכולות להכיל לכל היותר את המספר המינימלי של פריטים מהם מורכבים; למשל {ac} יכול לקבל לכל היותר <math>min(a,c)</math> פריטים. ידוע בשם downward-closure property.
חוקיות אסוציאטיבית בדרך כלל נדרשת לספק למשתמש  מינימום תמיכה ומינימום ביטחון בו-זמנית. יצירת חוק אסוציאטיבי בדרך כלל מתחלקת לשני שלבים נפרדים:
# שימוש במינימום תמיכה כדי למצוא את כל הסטים של הפריטים התכופים במאגר הנתונים.
# שימוש במינימום ביטחון המגבלה  הסטים של הפריטים התכופים הללו על מנת ליצור חוקים.
בעוד שהשלב השני הוא יחסית פשוט, הצעד הראשון מצריך תשומת לב רבה יותר.

קיים קושי במציאת כל הסטים של הפריטים התכופים במאגר הנתונים מאחר שהדבר כרוך בחיפוש כל הסטים של הפריטים האפשרי<span style="background-color: rgb(254, 252, 224);">י</span>ם (שילובים של פריטים). סט הפריטים האפשריים הוא קבוצת החזקה של <math>I</math> וגודלו <math> {\displaystyle 2^{n}-1}</math> (לא כולל קבוצה ריקה). אף על פי שערכו גדל באופן אקספוננציאלי, חיפוש יעיל יהיה אפשרי באמצעות downward-closure property עבור התמיכה, אשר מבטיח כי עבור סט פריטים תדיר, כל תתי הקבוצות שלו יהיו גם כן בתדירות גבוהה ולכן, לא יוצר מצב של סט פריטים שאינו תדיר יהיה תת-קבוצה עם תדירות גבוהה. 

== היסטוריה ==
רעיון החוקיות האסוציאטיבית הפך לפופולרי בעיקר בשל פרסום המאמר אגראוול, בשנת 1993, ונחשב לאחר המאמרים המצוטטים ביותר בתחום כריית הנתונים. עם זאת, קיימת אפשרות כי מה שמכונה כיום "חוקים אסוציאטיביים", דומה לערך שפורסם בשנת 1966 בדבר שיטת כריית הנתונים הכללית שפותחה על ידי פטר האג'ק.

שימוש מוקדם (circa 1989) של מינימום תמיכה וביטחון למציאת כל חוקי האסוציאציות היא תכונה מבוססת מודלי מסגרת, שמוצאת את כל החוקים עם <math> {\displaystyle \mathrm {supp} (X)}</math> ו <math> {\displaystyle \mathrm {conf} (X\Rightarrow Y)} </math> יותר גבוהים מהאילוצים שהגדיר המשתמש.

== אמצעים חלופיים של ענייניות ==
בנוסף ביטחון, הוצעו גם מדדים אחרים של ענייניות עבור החוקים שהוצעו. המפורסמים שבהם הם:
* כל-אמון
* כוח קולקטיבי 
* הרשעה
* מינוף
* הרמה 
מספר מדדים נוספים הוצגו והשוו על ידי טאן. והאסלר. החיפוש אחר טכניקות המסוגלות למדל את מה שידוע למשתמש נמצא כיום בשלבי מחקר ומכונה "ענייניות סובייקטיבי."

== אסוציאציות צליל סטטיסטיות ==
אחת מהמגבלות של הגישה הסטנדרטית לגילוי אסוציאציות זה על ידי חיפוש מספר גדול של אסוציאציות אפשריות לחיפוש אוספים של פריטים הנראים מקושרים, קיימת סכנה למציאת מספר רב של אסוציאציות מזויפות. קיימים אוספים של פריטים המתרחשים בתדירות בלתי צפויה בנתונים באופן מקרי. לדוגמה, נניח שאנו שוקלים אוסף של 10,000 פריטים ומחפשים כללים המכילים שני פריטים בצד שמאל, ופריט אחד בצד ימין. אם ניישם מבחן סטטיסטי לעצמאות עם רמת מובהקות של 0.05 זה אומר שיש רק סיכוי של 5% לקבלת החוק אם אין אסוציאציות. אם נניח שאין אסוציאציות אנחנו צריכים לצפות למצוא 50,000,000,00 חוקים. גילוי אסוציאציות צליל סטטיסטיות שולטות בסיכון. ברוב המקרים מורידות את הסיכון למציאת אסוציאציות משונות לקביעת רמת מובהקות עבור משתמש מסוים.

== אלגוריתמים ==
הרבה אלגוריתמים ליצירת חוקים אסוציאטיביים הוצגה לאורך זמן.

חלק מהאלגוריתמים הידועים הם  Apriori, Eclat ו- FP-Growth, אבל הם עושים רק חצי מהעבודה, מאחר שהם אלגוריתמים לכריית תדירות סט פריטים. צעד נוסף צריך להתבצע לאחר מכן, ליצור חוקים מתדירות סט פריטים שנמצאו בבסיס הנתונים.

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

=== אלגוריתם Eclat ===
Eclat (ECLAT,, מסמלת טרנספורמציה מחלקת שקילות) הוא אלגוריתם חיפוש לרוחב המשתמש בסט הצטלבויות. זה הוא אלגוריתם אלגנטי באופן טבעי המתאים לשתי רציפויות כמו ביצוע מקבילי עם מאפייני שיפור מקומיים. הוא הוצג לראשונה על ידי Zaki,, Parthasarathy Li ו- Ogihara בסדרה של ניירות כתובים בשנת 1997.

מוחמד Javeed זכי, Srinivasan Parthasarathy, M. Ogihara, ווי לי:
אלגוריתמים חדשים עבור מהירות הגילוי של איגוד כללי. KDD 1997.

מוחמד Javeed זכי, Srinivasan Parthasarathy, Mitsunori Ogihara, ווי לי:
במקביל אלגוריתמים עבור גילוי של איגוד כללי. נתונים דקות. ידוע. וגילתה. 1(4): 343-373 (1997)

=== אלגוריתם צמיחה FP ===
FP מייצג דפוס תדירות.

בשלב הראשון, התרחשות אלגוריתמי הספירה של פריטים (צמדי תכונה-ערך) בתוך בבסיס הנתונים, ואחסנו אותם ל 'טבלה ראשית'. בשלב השני, הוא בונה את FP-מבנה העץ על ידי הכנסת מופעים. פריטים בכל מופע צריכים להיות ממוינים על ידי ירידת סדר התדירות שלהם בבסיס הנתונים, כך שהעץ יכול לעבור עיבוד בזריזות. פריטים בכל מופע שלא פוגשים מינימום כיסוי סף נזרקים. אם הרבה מופעים חולקים הרבה תדירויות פריטים, עץ FP מספק דחיסת סגירה מקסימלית לשורשי העץ.

עיבוד רקורסיבי של גרסת הדחיסה הזו של גדילת נתוני סט ראשיים בסט נתונים גדול באופן ישיר, במקום יצירת פריטים מועמדים ובחינתם לעומת שאר בסיס הנתונים. הגדילה מתחילה מתחתית הטבלה הראשית (המכילה את הענפים הארוכים ביותר), על ידי מציאת כל המופעים המתאימים בהינתן תנאים. עץ חדש נוצר, עם ספירות חזויות מהעץ המקורי התואמות לסט המופעים שהם מותנים לתכונה, עם כל תנודה לוקח סכום של ספירות ילדו. צמיחה רקורסיבית מסתיימת כאשר אין פריט אינדיבידואלי מותנה לתכונה הפוגש מינימום תמיכת סף, והעיבוד ממשיך על יתרת הפרטים הראשיים של העץ FP המקורי.

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

=== אחרים ===
==== AprioriDP ====
AprioriDP מנצל תכנות דינמי בתדירות כריית סט פריטים. עקרון העבודה היא להסיר את הדור המועמד כמו בעץ FP, אבל הוא מאחסן ספירת תמיכה במבנה נתונים מיוחד במקום העץ.

==== אלגוריתם הקשר המבוסס כריית חוק אסוציאטיבי ====
האלגוריתם הקשר המבוסס כריית חוק אסוציאטיבי (CBPNARM), פותח בשנת 2013 על מנת ליצור חוקיי אסוציאציות על בסיס הקשר. זה משמש משתנה הקשר על בסיס תמיכה של סט פריטים משתנה לפי החוקים המאוכלסים בסט הפריטים.

==== אלגוריתמים המבוססים על צומת סטים ====
FIN ,PrePost ו-PPV הם שלושה אלגוריתמים המבוססים על צומת סטים. הם משתמשים בצמתים לקידוד עץ FP לייצג סט פריטים, ומעסיקים אסטרטגיית חיפוש ראשוני עמוק לגילוי תדירות השימוש בסט פריטים בצומת סטים.

== הפולקלור ==
סיפור מפורסם על איגוד חוק כרייה הוא "הבירה והחיתול". מדובר כביכול בסקר התנהגות לקוחות בסופרמרקט שגילה כי לקוחות (ככל הנראה גברים צעירים) הקונים חיתולים נוטים גם לקנות בירה. אנקדוטה זו הפך פופולרי בתור דוגמה כיצד חוקיי אסוציאציות בלתי צפויים עשויים להימצא בנתוני חיי היום יום. יש דעות שונות לגבי אמינות הסיפור.

== ראו גם==
* למידת מכונה

== קישורים חיצוניים ==
;ביבליוגרפיות
* [http://www.uco.es/grupos/kdis/ARMBibliography נרחב ביבליוגרפיה על כללי התאגדות] על ידי J. M. לונה
* [http://michael.hahsler.net/research/bib/association_rules/ מבואר ביבליוגרפיה על כללי התאגדות] על ידי מ Hahsler
* [http://www.statsoft.com/textbook/association-rules/ Statsoft אלקטרוני סטטיסטיקה לימוד: כללי התאגדות] על ידי Dell תוכנה

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

קטגוריה:כריית מידע