שְׁאֵלָה:
בחירת תכונות למודל "סופי" בעת ביצוע אימות צולב בלימוד מכונה
danielsbrewer
2010-09-02 15:25:42 UTC
view on stackexchange narkive permalink

אני קצת מתבלבל בנוגע לבחירת תכונות ולמידת מכונה ותהיתי אם תוכל לעזור לי. יש לי מערך מיקרו-מערך המסווג לשתי קבוצות ויש לו 1000 תכונות. המטרה שלי היא להשיג מספר קטן של גנים (התכונות שלי) (10-20) בחתימה שלתיאוריה אוכל להחיל מערכי נתונים אחרים כדי לסווג את הדגימות בצורה אופטימלית. מכיוון שאין לי כל כך הרבה דוגמאות (<100), אני לא משתמש במבחן ובמערך אימונים אלא משתמש באימות צולב של Leave-one-out כדי לעזור לקבוע את החוסן. קראתי שצריך לבצע בחירת תכונות לכל פיצול של הדוגמאות כלומר

  1. בחר דוגמא אחת כסט הבדיקה
  2. בדגימות הנותרות בצע בחירת תכונות
  3. החל אלגוריתם של למידת מכונה על דוגמאות שנותרו באמצעות התכונות שנבחרו
  4. בדוק אם מערך הבדיקה מסווג כהלכה
  5. עבור אל 1.

אם תעשה זאת, אתה עלול לקבל גנים שונים בכל פעם, אז איך אתה מקבל את הסיווג הגן האופטימלי "הסופי" שלך? כלומר מהו שלב 6.

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

עלי לומר לגילוי מלא שכבר פרסמתי זאת לרשימת מוליכים הביו
אנא סיכום תוצאות מוליכים ביולוגיים כאן?
שֵׁשׁ תשובות:
#1
+43
Dikran Marsupial
2010-09-02 22:53:16 UTC
view on stackexchange narkive permalink

באופן עקרוני:

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

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

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

מאמרים טובים לקרוא הם:

כריסטוף אמברוז, ג'פרי ג'יי מקלכלן, "הטיה של בחירה במיצוי גנים על בסיס נתוני ביטוי גנים של מיקרו מערך", PNAS http://www.pnas.org/content/99/10/ 6562. מופשט

שהוא מאוד רלוונטי ל- OP ול

Gavin C. Cawley, Nicola LC Talbot, "על התאמת יתר בבחירת המודל והטיית הבחירה לאחר מכן בהערכת ביצועים", JMLR 11 (Jul): 2079−2107, 2010 http://jmlr.csail.mit.edu/papers/v11/cawley10a.html

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

בפועל:

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

ספרו של אלן מילרס על בחירת קבוצות משנה ברגרסיה (מונוגרפיות של צ'פמן והול על סטטיסטיקה והסתברות יישומית, כרך 95) נותנות את העצה הטובה (עמוד 221) שאם ביצועי חיזוי הם הדבר החשוב ביותר, אז אל תעשה שום תכונה בחירה, פשוט השתמש במקום זאת ברגרסיה של הרכס. וזה בספר על בחירת תת קבוצות !!! ; o)

#2
+41
chl
2010-09-02 15:46:12 UTC
view on stackexchange narkive permalink

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

בין אם אתה משתמש ב- LOO או ב- K-fold CV, בסופו של דבר יהיו לך תכונות שונות שכן איטרציה צולבת חייבת להיות הלולאה החיצונית ביותר, כמו שאמרת. אתה יכול לחשוב על איזושהי ערכת הצבעה שתדרג את הווקטורים של התכונות שקיבלת מה- LOO-CV שלך (לא זוכר את העיתון, אבל כדאי לבדוק את העבודה של Harald Binder או אנטואן קורנוג'ולס). בהיעדר מדגם בדיקה חדש, מה שבדרך כלל נעשה הוא להחיל מחדש את אלגוריתם ה- ML על המדגם כולו לאחר שמצאת את הפרמטרים האופטימליים שלו. אך אם תמשיך בדרך זו, אינך יכול להבטיח כי אין התאמת יתר (מכיוון שהמדגם כבר שימש לאופטימיזציה של המודל).

לחלופין, תוכל להשתמש בשיטות מוטבעות המספקות לך דירוג תכונות באמצעות מדד. בעלי חשיבות משתנה, למשל כמו ב יערות אקראיים (RF). מכיוון שאימות צולב כלול ב- RFs, אינך צריך לדאוג למקרה $ n \ ll p $ או לקללת המימד. להלן מאמרים נאים על יישומיהם במחקרי ביטוי גנים:

  1. קוטלר, א ', קוטלר, ד"ר, וסטיבנס, ג'יי אר (2009). שיטות מבוססות עצים, ב ניתוח נתונים ממדים גבוהים בחקר הסרטן , Li, X. ו- Xu, R. (עורכים), עמ '83-101, ספרינגר.
  2. ביואינפורמטיקה , 23 (19) : 2507-2517.
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006). בחירת גנים וסיווג נתוני מיקרו מערך באמצעות יער אקראי. BMC ביואינפורמטיקה , 7 :3.
  4. Diaz-Uriarte, R. (2007). GeneSrF ו- varSelRF: כלי מבוסס אינטרנט וחבילת R לבחירת וסיווג גנים באמצעות יער אקראי. BMC ביואינפורמטיקה , 8 : 328

מכיוון שאתה מדבר על SVM, אתה יכול לחפש SVM שנענש .

תודה על זה. אני לא נמכר במיוחד ב- SVM, רק משתמש בזה כדוגמה. אז אם השתמשת בעצים אקראיים, אינך צריך לבצע אימות צולב? האם זה נכון.
כן, RFs כוללים דגימה אקראית של משתנים (בדרך כלל $ \ sqrt {p} $) בעת גידול עץ וכל עץ מבוסס על מדגם מוגדל של האנשים; חשיבות משתנה מחושבת על מה שמכונה דגימות מחוץ לשקית (כאלה שלא משמשות לבניית עץ ההחלטה) תוך שימוש בטכניקת תמורה. האלגוריתם חוזר על עצמו עבור m עצים (ברירת מחדל של m = 500) והתוצאות ממוצעות כדי לפצות על אי וודאות ברמת העץ (הגברה).
חשוב שזה נקרא יער אקראי ולא עצים אקראיים; ייתכן שיש לך בעיות עם Google.
+1, תשובה טובה ומרצה בשבילי - תודה רבה על הפניות לנייר, במיוחד הסקירה.
עם מספיק נתונים, לא יהיה הכי טוב להחזיק מערך מבחנים, לבצע loocv על מערך האימונים כדי לייעל את פרמטרי המודל, להתאים את מערך הרכבות כולו (ולקרוא לזה המסווג "הסופי") ואז להעריך את המודל הסופיעל ערכת המבחן?
אני חושב שזה סוג "מקונן" של אימות צולב, אבל עדיין זה בסדר.לפחות זו הדרך של קורס למידה מכונה של אנדרו נגס.
#3
+17
Joris Meys
2010-09-02 16:29:48 UTC
view on stackexchange narkive permalink

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

הפרסום המקורי: Zou and Hastie (2005): רגולציה ובחירה משתנה. דרך הרשת האלסטית. ג'יי אר סטטיסט. B, 67-2, עמ '301-320

רשת אלסטית עבור SVM: Zhu & Zou (2007): בחירה משתנה עבור מכונת התמיכה וקטור: מגמות בחישוב עצבי, פרק 2 (עורכים: חן וונג)

שיפורים ברשת האלסטית Jun-Tao and Ying-Min (2010): רשת אלסטית משופרת לסיווג סרטן ולבחירת גנים: Acta Automatica Sinica, 36-7, עמ '976-981

#4
+10
Aniko
2010-09-02 20:56:38 UTC
view on stackexchange narkive permalink

כשלב 6 (או 0) אתה מפעיל את אלגוריתם זיהוי התכונות על כל מערך הנתונים.

ההיגיון הוא הבא: עליך לחשוב על אימות צולב כשיטה לגלות את מאפייני ההליך בו אתה משתמש לבחירת התכונות. היא עונה על השאלה: "אם יש לי כמה נתונים ואבצע הליך זה, אז מה שיעור השגיאות בסיווג מדגם חדש?". לאחר שתדע את התשובה, תוכל להשתמש בהליך (בחירת תכונות + פיתוח כלל סיווג) על מערך הנתונים כולו. אנשים אוהבים השארת אחד מחוץ כי המאפיינים המנבאים תלויים בדרך כלל בגודל המדגם, ו $ n-1 $ בדרך כלל קרוב מספיק ל- $ n $ כדי שלא יהיה חשוב הרבה.

אני חושב שיש עדיין בעיית הכללה בעת שימוש באותו מדגם (1) כדי להעריך את ביצועי הסיווג / חיזוי המסווג תוך כוונון הפרמטרים שלו (בסופו של דבר, עם בחירת תכונות) ו- (2) להשתמש בתורו בחיזויים שלו על מערך הנתונים כולו. למעשה, אתה שובר את השליטה המופעלת על התאמת יתר אשר פורטה באמצעות אימות צולב. האסטי ואח '. לספק המחשה יפה של מלכודות קורות חיים, במיוחד. wrt. בחירת תכונות, בספר ESL שלהם, סעיף 7.10.2 במהדורה השנייה.
@chl: מי אמר משהו על כוונון פרמטרים? אם מבצעים דברים נוספים, יש לחזור עליהם גם במהלך אימות צולב. ברור ששינוי האלגוריתם שלך עד שתקבל שיעורי שגיאה מאומתים טובים הוא "רמאות". BTW, אני מסכים כי אימות צולב, במיוחד השארת אחד-מחוץ, אינו כל כך נהדר.
לא זה לא רמאות, מכיוון שקורות חיים מראים לך את הקירוב כיצד אלגוריתם יבצע נתונים חדשים. אתה רק צריך להיות בטוח שלא הסתפקת במשהו המבוסס על כל הסט (זו דליפה של מידע על מבנה הסט המלא, כך שהוא יכול מיד להטות את כל חלקי הרכבת).
@mbq - Ankino נכון, כוונון המודל שלך כדי למזער סטטיסטיקה של קורות חיים הוא "רמאות" ונתון קורות החיים של המודל הסופי יקנה הטיה אופטימית משמעותית. הסיבה לכך היא שלנתון קורות החיים יש שונות לא מבוטלת (כפי שהיא מוערכת על פי נתונים סופיים) ולכן אם אתה מייעל את נתון קורות החיים באופן ישיר תוכל להתאים אותו יתר על המידה ותוכל בסופו של דבר עם מודל שמכליל פחות טוב ממה שהתחלת איתו. להדגמה של זה, בהקשר של למידת מכונה, ראה http: //jmlr.csail.mit.edu/papers/v11/cawley10a.html פתרון: השתמש ב- XVAL מקונן
#5
+1
FMZ
2012-02-02 08:49:28 UTC
view on stackexchange narkive permalink

כך אני בוחר בתכונות. נניח שמבוססים על ידע מסוים, יש להשוות שני מודלים. דגם A משתמש בתכונות מס '1 עד לא. 10. דגם B משתמש במספר 11 עד לא. 20. אחיל LOO CV על מודל A כדי להשיג את הביצועים שלו מחוץ לדגימה. בצע את אותו הדבר למודל B ואז השווה אותם.

#6
-1
shabbychef
2010-09-03 04:05:56 UTC
view on stackexchange narkive permalink

אני לא בטוח לגבי בעיות סיווג, אך במקרה של בחירת תכונות לבעיות רגרסיה, ג'ון שאו הראה ש- CV-One-Out קורות חיים אינם עקביים באופן סימפטומי, כלומר ההסתברות לבחור את תת קבוצה נכונה של תכונות אינה מתכנסת ל -1 ככל שמספר הדוגמאות גדל. מנקודת מבט מעשית, שאו ממליץ על הליך אימות צולב של מונטה-קרלו, או הליך של הרבה-החוצה.

אה שלי, שוב; האם קראת את כותרת המאמר הזה?
בסדר, שיהיה ברור - אני לא אומר ש- LOOCV הוא רעיון טוב למספר גדול של אובייקטים; ברור שזה לא, אבל שאו אינו ישים כאן. ואכן ברוב המקרים כללים עבור LMs אינם מתקיימים עבור ML.
כמו כן, ניתן לשאול אם תוצאות אסימפטוטיות מועילות כשמסתכלים על מערכי נתונים עם מספר רב של תכונות ודפוסים מעטים יחסית. במקרה זה, השונות של ההליך עשויה להיות בעלת חשיבות מעשית גדולה יותר מהטיה או עקביות. הערך העיקרי של LOOCV הוא שעבור מודלים רבים ניתן ליישם אותו בהוצאות חישוביות זניחות, כך שלמרות שיש לו שונות גבוהה יותר מזו שאנו אומרים, זה יכול להיות הגישה האפשרית היחידה במסגרת התקציב החישובי הקיים. לכן אני משתמש בו, אבל אני משתמש במשהו אחר להערכת ביצועים!


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 2.0 עליו הוא מופץ.
Loading...