- אימון מודל למידת מכונה באמצעות ספריות Python במחברת Jupyter
- שלב מודל למידת מכונה מיומן באפליקציית אינטרנט של Streamlit
אלו הפעילויות לשיעור זה:
עבודה עם מודלים ללימוד מכונה
תכונה מרכזית נוספת של Jupyter Notebooks, Python ו-Streamlit היא היכולת לאמן מודלים של למידת מכונה ולבצע תחזיות.
אם אתה חדש בתחום הבינה המלאכותית, אולי תרצה לראות את שיעורי הבינה המלאכותית בתוכנית הלימודים הזו כדי ללמוד את היסודות לפני שקפוץ לקידוד המתקדם יותר הכרוך כאן. אתה יכול להשתמש בפלטפורמת מודל למידת מכונה ידידותית למשתמש כמו Teachable Machine כדי ליצור מודל ועדיין לשלב אותו באפליקציית אינטרנט של Python.
אם יש לך ניסיון עם בינה מלאכותית ועבודה עם מערכי נתונים באמצעות Jupyter Notebooks, זה השלב הבא טוב עבורך.
בשיעור זה תלמדו על כמה מספריות למידת מכונה של Python, וכמה מהמודלים השונים של למידת מכונה שתוכלו ליצור באמצעות Python.
לסקירה, ליצירת מודל למידת מכונה, ישנם 3 חלקים עיקריים.
ערכת נתונים
מוצא דפוסים עם אלגוריתם למידה
נְבוּאָה!
מערך הנתונים הוא הקלט שלך עבור המודל. זה יכול לכלול טקסט, תמונות, צלילים או תנוחות. עבדנו עם טקסט ונתונים מספריים ביחידה 2 באמצעות Jupyter Notebooks. נמשיך לעבוד עם נתוני טקסט בשיעור זה, בצורת גיליון אלקטרוני.
מציאת דפוסים היא בעצם בניית מודל למידת המכונה באמצעות מערך הנתונים. Python מכיל ספריות רבות שיבנו מודל AI מנתונים. בתכנית לימודים זו, נשתמש ברבות מהפונקציות מחבילת sikit-learn . בנוסף לספריות שהוא מספק, האתר מכיל המון מידע מעולה על למידת מכונה ועל תהליך בניית המודלים. זה משאב נהדר ללמוד עוד!
לאחר שיצרת את המודל שלך, ניתן להשתמש במודל כדי לחזות תוצאה על סמך מידע חדש. שוב, Python מספקת ספריות שמאפשרות זאת.
נתונים מעבדים מראש
לפני שניתן לשלוח את מערך הנתונים שלך לאלגוריתם לבניית המודל, יש לעבד אותו מראש , או "לנקות", כך שאלגוריתם בניית המודל יוכל לעבוד איתו ולהפוך את המודל המדויק ביותר האפשרי. למעשה, עיקר העבודה ליצירת מודל למידת מכונה היא בעיבוד המקדים. תצטרך להסתכל היטב על הנתונים כדי להחליט מה חשוב, מה אפשר להשאיר בחוץ ומה צריך לנקות.
מה כולל עיבוד מקדים? עם מערך נתונים מבוסס טקסט, הנה כמה דברים שצריך להתמודד איתם.
ערכים אפסים
לפעמים מערך הנתונים מכיל ערכים ריקים או ריק, במיוחד אם הנתונים הם נתוני סקר. לפעמים תבטל את כל השורות שיש להן נתונים null.
עם זאת, אם מספר הדגימות נמוך, ייתכן שלא תרצה לחסל אותן. אפשרות נוספת היא להחליף ערך null בערך אחר. זה יכול להיות אפס, או שזה יכול להיות הממוצע של כל הערכים האחרים עבור השדה הזה.
חריגים
לפעמים הנתונים מכילים דגימה אחת או שתיים השונות מאוד משאר הנתונים. זה עלול להטות את הדגם. אינך רוצה שהחריגים ישפיעו על אופן יצירת המודל, ולכן לעתים קרובות חריגים נמחקים ממערך הנתונים.
לדוגמה, ייתכן שיהיה לך מערך נתונים שבו 95% מהמדגמים הם אנשים בגילאי 10-30, אבל יש לך כמה מדגמים אקראיים שבהם האנשים הם מעל גיל 50. מכיוון שהרוב המכריע של המדגמים הוא בקבוצת הגיל 10-30, אתה יכול לשקול להסיר את הדגימות מקבוצת הגיל המבוגרת יותר.
תְקִינָה
לעתים קרובות המספרים במערך נתונים גדול משתנים, בהתאם לתכונות המיוצגות. לדוגמה, אולי יש לך גיל, שמשתנה בין 0 ל-70, אבל אז אולי יש לך משכורת, שנעה בין 0 ל-500,000! הקשקשים שונים מאוד, אז תכונה אחת עשויה להיחשב יותר בדגם.
כדי לתקן את זה, אתה יכול לתקן את הנתונים כך שיהיו בקנה מידה יחיד. scikit-learn מספק StandardScaler, אשר מעדכן כל תכונות כך שהממוצע הוא 0 וסטיית התקן היא 1.
דבר נוסף שיש לקחת בחשבון הוא מספר מאוזן של דוגמאות עבור כל מחלקה או תווית. אתה רוצה לוודא שהם בערך אותו מספר של כל מחלקה במערך הנתונים שלך.
הַצפָּנָה
AI אוהב מספרים, לאו דווקא מילים. אז זה עוזר להמיר את כל הנתונים למספרים. scikit-learn מספק פונקציות מקודד, כך שתוכל להמיר בקלות טווח של ערכי טקסט אפשריים לטווח של מספרים.
דוגמה יכולה להיות רמות פעילות, עם ערכי מדגם בישיבה, קלה, בינונית, גבוהה. ניתן לקודד את התגובות הללו לערכים 0, 1, 2 ו-3, וזה הרבה יותר קל לטיפול באלגוריתם בניית המודל.
פיצול נתונים
לאחר שעיבדת את הנתונים שלך מראש, עליך לפצל אותם לסט הדרכה ולערכת בדיקות. מערך האימונים ישמש לאימון ויצירת המודל. לאחר מכן תבדוק את הדגם שלך באמצעות ערכת הבדיקה כדי לראות כיצד הוא מתפקד.
ישנן דרכים סטנדרטיות לפצל אותו (בדרך כלל 75% לאימון ו-25% לבדיקות) אבל אתה יכול לפצל אותו איך שתרצה. שוב, פונקציות מסופקות כך שהכל אוטומטי עבורך.
יצירת הדגם
השלב הבא הוא יצירת המודל. החלטה חשובה שצריך לקבל היא באיזה אלגוריתם אני משתמש? ישנם אלגוריתמים שונים של למידה מפוקחת לבחירה, וקשה לדעת באיזה מהם להשתמש. תהליך טוב הוא לנסות כמה אלגוריתמים שונים ואז לראות איזה מהם נותן לך את הדיוק הטוב ביותר.
הצעד הראשון הוא להחליט אם אתה צריך אלגוריתם סיווג או אלגוריתם רגרסיה . זה תלוי במה שאתה מנסה לחזות.
אלגוריתמי סיווג משמשים לניבוי מטרות או מחלקות נפרדות. לדוגמה, סיווג דואר אלקטרוני כדואר זבל או לא כספאם תהיה בעיית סיווג
אלגוריתמי רגרסיה משמשים כדי לחזות משהו שנמצא בטווח רציף. דוגמה אחת תהיה חיזוי כמה משכורת ישולם לאדם. החיזוי הוא טווח של מספרים והפלט יכול להיות כל ערך לאורך הטווח הזה.
הנה רק כמה מהסוגים הפופולריים של אלגוריתמים ליצירת מודלים.
מִיוּן
- עץ החלטות
- יער אקראי
- K-השכנים הקרובים ביותר
- בייס נאיבי
- רגרסיה לוגיסטית
- תמיכה במכונת וקטור
נְסִיגָה
- רגרסיה לינארית
- רגרסיית רכס
- רגרסיה של לאסו
- רגרסיה פולינומית
- רגרסיה לינארית בייסיאנית
- תמיכה ברגרסיה וקטורית
שים לב שחלק מהאלגוריתמים נופלים תחת שני הסוגים. לדוגמה, קיים מסווג עץ החלטות וכן גורם רגרסי של עץ החלטות. ו- Support Vector Machine עובד לסיווג, ו- Support Vector Regression עובד עבור רגרסיה.
אז איך מחליטים באיזה מהם להשתמש? אתה צריך לחקור כדי לראות במה מדעני נתונים אחרים משתמשים במצבים שונים כדי לראות מה עשוי עבור המודל שלך. כדאי גם לנסות כמה אלגוריתמים שונים עם הנתונים שלך ואז למצוא איזה מהם מספק את הדיוק הטוב ביותר. אתה יכול גם לכוונן פרמטרים עבור אלגוריתם מסוים כדי לראות אם הוא מחזיר מודל מדויק יותר.
scitkit-learn מספק פונקציות עבור כל האלגוריתמים הללו, כך שזה פשוט ליצור את המודל.
הערכת הדגם
אתה רוצה שהמודל שלך יהיה הכי טוב שהוא יכול להיות, אז אתה צריך להעריך את הביצועים שלו. שני משתנים נפוצים בהערכה של מודל הם הטיה ושונות.
הטיה היא ההבדל בין הערך החזוי של המודל לבין הערך הנכון.
שונות היא עד כמה התחזיות משתנות כאשר נעשה שימוש בנתונים שונים.
אתה רוצה להשיג איזון טוב בין הטיה לשונות.
הטיה גבוהה -> תת התאמה.
תת-התאמה מתרחשת כאשר הדגם פשוט מכדי לתת את הדעת על הרעש בנתוני האימון. זה יכול לקרות אם אין מספיק נתונים או אין מספיק תכונות (עמודות), או יותר מדי רעש בנתונים. אם מודל אינו מתפקד טוב הן בנתוני האימון והן בנתוני הבדיקה, הוא מעיד על חוסר התאמה.
שונות גבוהה -> התאמה יתר.
התאמה יתר מתרחשת אם אתה מאמן מודל על סט נתונים אחד והוא מתפקד טוב מאוד, אבל אם אתה מציג אותו עם נתונים חדשים, הוא לא מתפקד טוב בכלל. זה יכול לקרות אם המודל מורכב מדי והוא מנסה להתאים יותר מדי לנתוני האימון. המודל עשוי לחזות טוב מאוד בנתוני האימון, אך לאחר מכן ביצועים גרועים בנתוני הבדיקה.
טכניקה אחת לבדיקת הביצועים של מודל היא אימות צולב.
אימות צולב פירושו אימון המודל שלך מספר פעמים, תוך שימוש בפיצולים שונים של נתוני אימון/בדיקה בכל פעם. מערך הנתונים שלך מפוצל למספר קפלים , או קבוצות משנה. לאחר מכן מוחזק קיפול אחד כמערכת האימות או הבדיקה, והקיפולים הנותרים משמשים לאימון אותו. זה מבוצע מספר פעמים, כך שבכל פעם מערכי האימון והמבחנים משתנים.
sciikit-learn מספקת גם ספריית מדדים כך שתוכל לקבל בקלות ציוני ביצועים עבור הדגמים שלך.
- ציון דיוק = תחזיות נכונות/סך כל התחזיות
- דיוק = חיוביות אמיתיות/(חיוביות אמיתיות + חיוביות שגויות)
- recall = חיוביות אמיתיות/(חיוביות אמיתיות + שליליות שגויות)
- ציון F1 = (2 x דיוק x זכירה)/(דיוק + זכירה)
- ספציפיות = שלילי אמיתי/ (חיובי אמיתי + שלילי שקר)
- מטריצת בלבול - מציגה ספירות חיוביות אמיתיות, שליליות אמיתיות, חיוביות שגויות ושליליות שגויות
על ידי בדיקת מדדים מאלגוריתמים שונים, אתה יכול לבחור את הדגם הטוב ביותר.
חיזוי!
ברגע שיש לך דגם שאתה מרוצה ממנו, אתה רוצה להשתמש בו באפליקציה שלך.
נהוג לעשות את העיבוד המקדים, היצירה וההערכה של המודל שלך באמצעות Python, בסביבה כמו Jupyter Notebooks. משם תוכל לייצא את הדגם שלך כקובץ.
לאחר מכן, בתוך אפליקציית Streamlit שלך, תוכל לטעון את המודל ולהשתמש בו כדי לבצע תחזיות.
בפעילויות של שיעור זה, תעברו את כל התהליך הזה באמצעות מערך נתונים של סיכון שבץ. תוכלו לראות כיצד לעבד מראש את הנתונים, ליצור מודלים באמצעות אלגוריתמים שונים, ולאחר מכן להשתמש במודל באפליקציית Streamlit פשוטה כדי לחזות את הסיכון לשבץ, בהינתן כמה מאפייני קלט.
פעילות 1: אימון דגם AI במחברת JUPYTER
חקור מערך נתונים של סיכון שבץ כדי לבנות מודל AI
- הורד מערך חיזוי שבץ מ-Kaggle.
- עבוד עם הנתונים במחברת Jupyter כדי:
- סקור את הנתונים
- עבד מראש את הנתונים כדי להכין אותם למודל
- צור כמה דגמים שונים
- הערך ובחר דגם עבור האפליקציה שלך
- ייצא את הדגם
אֶתגָר
נסה דגם שונה מאלה שב-Jupyter Notebook.
- חקור את אתר scikit-learn עבור אלגוריתמים אחרים של סיווג, ועיין בדוגמאות אחרות לבניית מודלים ב-Kaggle.
- בחר אלגוריתם אחד והוסף את הקוד למחברת שלך כדי ליצור את המודל.
- השתמש במדדים של scikit-learn כדי לבדוק את הדיוק.
איך הדגם שלך מתפקד? האם זה טוב יותר מכל אלגוריתמים אחרים במחברת?
פעילות 2: בניית אפליקציית חיזוי
השתמש בדגם שלך באפליקציית Streamlit
אֶתגָר
מערך הנתונים של איריס הוא מערך נתונים קלאסי שמסווג את פרחי הקשתית ל-3 מינים (setosa, versicolor ו-virginica) בהתבסס על ממדי עלי הכותרת והגביע.
- ערוך מחקר על מערך הנתונים כדי ללמוד את התכונות והיעדים שלו.
- אתה יכול להוריד את מערך הנתונים וליצור מודל משלך או להשתמש במודל זה ( קובץ חמוץ ) שנוצר באמצעות שכנים הקרובים ביותר ל-K. שים לב שלא היה צורך ב-scaler עבור מערך הנתונים הזה. קובץ החמוצים מכיל רק את הדגם.
- ייבא את המודל וצור אפליקציית Streamlit כדי לחזות את מיני הקשתית בהתבסס על ארבעת תכונות הנתונים.
השראה טכנולוגית
הנה כמה דוגמאות די מדהימות ממשתתפי Technovation שהשתמשו ב-Python וב-Streamlit כדי לבנות אפליקציות אינטרנט המשלבות מודלים של למידת מכונה.
TEDDY – גלאי מצוקה מוקדמת מבוסס טקסט לנוער , מאת צוות TEDDY מארה"ב , מסייע למורים וליועצים בזיהוי מוקדם של חששותיהם של תלמידים בבריאות הנפש. TEDDY משתמש בבינה מלאכותית כדי לזהות משפטים המבטאים סנטימנט שלילי או מציגים את דפוסי השפה הצפויים מאנשים עם דיכאון. לאחר מכן, סטודנטים עשויים להיות מופנים ליועץ לתמיכה.
הִשׁתַקְפוּת
עברת את כל התהליך של עיבוד מקדים של מערך נתונים, בניית מספר מודלים, והערכה ובחירה של אחד לשימוש באפליקציה. זה הרבה מה ללמוד בשיעור אחד!
סקירה של תנאים עיקריים
- עיבוד מקדים - לקיחת מערך נתונים ולוודא שהנתונים בו מתאימים לאימון מודל למידת מכונה איתו
- אלגוריתם סיווג - אלגוריתם המשמש לאימון מודל למידת מכונה שיסווג או יחזה ערכים בדידים
- אלגוריתם רגרסיה - אלגוריתם המשמש לאימון מודל למידת מכונה לחזות ערך בטווח רציף
- הטיה – ההבדל בין הערך החזוי של המודל לערך הנכון, עקב הנחות שגויות המפשטות את המודל
- שונות - כמות השונות בתחזיות המודל, כאשר מודל אינו מסוגל להכליל כאשר הוא מתמודד עם נתונים חדשים
- התאמת יתר - כאשר המודל מתאים מדי לנתוני האימון שהוא לא יכול לחזות היטב על נתונים חדשים, הנגרמת משונות גבוהה במודל
- תת-התאמה - כאשר מודל מפושט מדי ואינו מתפקד טוב בנתוני אימון או בדיקה, הנגרמת על ידי הטיה גבוהה או הנחות במודל
משאבים נוספים
למידת מכונה
- חנונים לחנונים לימוד מכונה - נותן מבוא וסקירה נהדרת של חלק מתהליך למידת המכונה והטרמינולוגיה
- מדריך Scikit-Learn של Simplilearn - עובר על מערך נתונים של איכות יין כדי לתרגל שימוש ב-scikit-learn במחברת Jupyter
- למידת מכונה עם sikit-learn - רשימת השמעה מלאה של YouTube מאת Data School
מואר
- בנה מאפס אפליקציית Web Learning עם פטריק לובר - דוגמה נוספת לבניית מודל ושימוש בו באפליקציית אינטרנט, מתחילתו ועד סופו
- סיווג תמונות עם Streamlit , אם הדגם שלך מיומן בתמונות