هنگام آموزش یک مدل یادگیری ماشینی، ممکن است گاهی اوقات با مجموعه داده هایی کار کنید که تعداد زیادی ویژگی دارند. با این حال، تنها یک زیرمجموعه کوچک از این ویژگیها در واقع برای مدل برای پیشبینی مهم هستند. به همین دلیل است که برای شناسایی آن ویژگیهای مفید، باید ویژگیها را نمایش دهید.
در این مقاله نکات مفیدی برای انتخاب ویژگی ارائه شده است. ما تکنیک های انتخاب ویژگی را به طور عمیق بررسی نخواهیم کرد. با این حال، ما نکات ساده اما موثری را برای درک مرتبطترین ویژگیهای مجموعه داده شما پوشش خواهیم داد. ما با مجموعه داده خاصی کار نخواهیم کرد. اما میتوانید آنها را روی یک مجموعه داده نمونه به انتخاب خود امتحان کنید.
بیایید شروع کنیم.
1. اطلاعات را درک کنید
احتمالا از خواندن این نکته خسته شده اید. اما هیچ راهی بهتر از درک مشکلی که میخواهید حل کنید و دادههایی که با آنها کار میکنید، برای نزدیک شدن به یک مشکل وجود ندارد.
بنابراین درک داده های شما اولین و مهمترین مرحله در انتخاب ویژگی است. این شامل کاوش مجموعه داده برای درک بهتر توزیع متغیرها، درک روابط بین ویژگی ها، شناسایی ناهنجاری های بالقوه و ویژگی های مرتبط است.
وظایف کلیدی در داده کاوی شامل بررسی مقادیر از دست رفته، ارزیابی انواع داده ها و تولید آمار خلاصه برای ویژگی های عددی است.
این قطعه کد مجموعه داده را بارگیری می کند، خلاصه ای از انواع داده ها و مقادیر غیر صفر را ارائه می دهد، آمار توصیفی اولیه را برای ستون های عددی تولید می کند و مقادیر از دست رفته را بررسی می کند.
پانداها را به صورت pdf وارد کنید # مجموعه داده خود را بارگذاری کنید df = pd.read_csv(‘your_dataset.csv’) # پیش نمایشی از چاپ مجموعه داده دریافت کنید(df.info()) # ایجاد آمار خلاصه برای ویژگی های چاپ عددی(df.describe()) # مقادیر از دست رفته در چاپ هر ستون را بررسی کنید (df.isnull().sum())
واردات پانداها به عنوان p.d. # مجموعه داده خود را بارگیری کنید df = p.d..read_csv(‘your_dataset.csv’) # یک نمای کلی از مجموعه داده دریافت کنید چاپ کنید(df.اطلاعات()) # آمار خلاصه ای را برای ویژگی های دیجیتال ایجاد کنید چاپ کنید(df.توصیف کنید()) # مقادیر گم شده را در هر ستون بررسی کنید چاپ کنید(df.صفر است().مجموع()) |
این مراحل به شما کمک میکند تا ویژگیهای دادههای خود و مشکلات بالقوه کیفیت دادهها را که باید قبل از انتخاب ویژگی بررسی شوند، بهتر درک کنید.
2. ویژگی های نامربوط را حذف کنید
مجموعه داده شما ممکن است دارای تعداد زیادی ویژگی باشد. اما همه آنها به قدرت پیش بینی مدل شما کمک نمی کنند.
چنین ویژگیهای نامربوطی میتوانند نویز اضافه کنند و پیچیدگی مدل را افزایش دهند بدون اینکه آن را بسیار کارآمد کنند. حذف این ویژگی ها قبل از آموزش مدل ضروری است. و اگر مجموعه داده را با جزئیات درک کرده باشید و کاوش کرده باشید، باید ساده باشد.
برای مثال، میتوانید زیرمجموعهای از ویژگیهای نامربوط را به صورت زیر حذف کنید:
# با فرض اینکه “feature1″، “feature2” و “feature3” ویژگی های نامربوط هستند df = df.drop(columns=[‘feature1’, ‘feature2’, ‘feature3’])
# با فرض اینکه “ویژگی 1″، “ویژگی2” و “ویژگی3” ویژگی های نامربوط هستند df = df.رها کردن(ستون ها=[‘feature1’, ‘feature2’, ‘feature3’]) |
در کد خود، «feature1»، «feature2» و «feature3» را با نام واقعی ویژگیهای نامربوطی که میخواهید حذف کنید، جایگزین کنید.
این مرحله با حذف اطلاعات غیر ضروری، مجموعه داده را ساده می کند، که می تواند عملکرد و تفسیرپذیری مدل را بهبود بخشد.
3. از ماتریس همبستگی برای شناسایی ویژگی های اضافی استفاده کنید
گاهی اوقات برخی از ویژگی ها به شدت با هم مرتبط هستند. یک ماتریس همبستگی ضرایب همبستگی بین جفت ویژگی را نشان می دهد.
ویژگی های بسیار همبسته اغلب می توانند زائد باشند و اطلاعات مشابهی را به مدل ارائه دهند. در چنین مواردی، می توانید هر یک از ویژگی های مرتبط را حذف کنید.
در اینجا کدی برای شناسایی جفت ویژگی های بسیار همبسته در مجموعه داده آمده است:
وارد کردن seaborn به عنوان sns واردات matplotlib.pyplot به عنوان plt # محاسبه ماتریس همبستگی corr_matrix = df.corr() # نقشه حرارتی ماتریس همبستگی را رسم کنید sns.heatmap(corr_matrix, annot=True, cmap=’coolwarm.how p. () # شناسایی آستانه جفت های بسیار همبسته = 0.8 corr_pairs = corr_matrix.abs().unstack().sort_values(kind=”quicksort”, ascending=False) high_corr = [(a, b) for a, b in corr_pairs.index if a != b and corr_pairs[(a, b)] > آستانه]
واردات در دریا متولد شد به عنوان شبکه های اجتماعی واردات matplotlib.pyplot به عنوان plt # ماتریس همبستگی را محاسبه کنید matrix_corr = df.همبستگی() # نقشه حرارتی ماتریس همبستگی را رسم کنید شبکه های اجتماعی.نقشه حرارتی(matrix_corr، حاشیه نویسی=درست است، نقشه cmap=“سرد و گرم”) plt.برای نشان دادن() # جفت های بسیار همبسته را شناسایی کنید آستانه = 0.8 corr_pairs = matrix_corr.عضلات شکم().اپیلاسیون().sort_values(مهربان=“مرتب سازی سریع”، صعودی=جعلی) high_corr = [(a, b) for a, b in corr_pairs.index if a != b and corr_pairs[(a, b)] > آستانه] |
اساساً، هدف کد بالا شناسایی جفتهای ویژگی با همبستگی بالا (آنهایی که مقدار همبستگی مطلق آنها بیشتر از 0.8 است)، به استثنای همبستگیهای خودکار است. این جفتهای ویژگی بسیار مرتبط برای تجزیه و تحلیل بیشتر در فهرستی ذخیره میشوند. سپس میتوانید ویژگیهایی را که میخواهید برای مراحل بعدی حفظ کنید، بررسی و انتخاب کنید.
4. از آزمون های آماری استفاده کنید
می توانید از آزمون های آماری برای کمک به تعیین اهمیت ویژگی ها نسبت به متغیر هدف استفاده کنید. و برای انجام این کار می توانید از قابلیت scikit-learn استفاده کنید feature_selection ماژول
قطعه زیر از آزمون خی دو برای ارزیابی اهمیت هر ویژگی برای متغیر هدف استفاده می کند. KBest را انتخاب کنید این روش برای انتخاب ویژگی های اصلی با بالاترین امتیاز استفاده می شود.
از sklearn.feature_selection import chi2, SelectKBest # فرض کنید متغیر هدف طبقه بندی شده است X = df.drop(columns=[‘target’]) y = df[‘target’]# اعمال آزمون chi-square chi_selector = SelectKBest(chi2, k=10) X_kbest = chi_selector.fit_transform(X, y) # نمایش ویژگی های انتخاب شده Selected_features = X.columns[chi_selector.get_support(indices=True)]چاپ (ویژگی های انتخاب شده)
از آنجایی که یاد بگیرید.feature_selection واردات chi2، KBest را انتخاب کنید # فرض کنید متغیر هدف طبقه بندی شده است X = df.رها کردن(ستون ها=[‘target’]) و = df[‘target’] # تست کای دو را اعمال کنید chi_selector = KBest را انتخاب کنید(chi2، ک=10) X_kbest = chi_selector.تنظیم_ترانسفورماتور(X، و) # نمایش ویژگی های انتخاب شده ویژگی های انتخاب شده = X.ستون ها[chi_selector.get_support(indices=True)] چاپ کنید(ویژگی های انتخاب شده) |
این امر مجموعه ویژگی را به مرتبط ترین متغیرها کاهش می دهد که می تواند عملکرد مدل را به طور قابل توجهی بهبود بخشد.
5. از حذف ویژگی بازگشتی (RFE) استفاده کنید
حذف ویژگی بازگشتی (RFE) این یک تکنیک انتخاب ویژگی است که به صورت بازگشتی کم اهمیت ترین ویژگی ها را حذف می کند و مدل را با ویژگی های باقی مانده می سازد. این کار تا رسیدن به تعداد مشخص شده ادامه می یابد.
در اینجا نحوه استفاده از RFE برای یافتن پنج ویژگی مرتبط هنگام ساخت یک مدل رگرسیون لجستیک آورده شده است.
from sklearn.feature_selection import RFE from sklearn.linear_model import LogisticRegression از sklearn.model_selection import train_test_split # فرض کنید “X” ماتریس ویژگی و “y” هدف است # تقسیم به مجموعه های آموزشی و تست X_train, X__traintest,testy . (X, y, test_size=0.3, random_state=25) # یک مدل مدل رگرسیون لجستیک ایجاد کنید = LogisticRegression() # RFE را روی مجموعه آموزشی اعمال کنید تا 5 ویژگی برتر را انتخاب کنید rfe = RFE (model, n_features_to_select=5) X_train_rfe = rfe fit_transform (X_train، y_train)[rfe.support_]چاپ (ویژگی های انتخاب شده)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | از آنجایی که یاد بگیرید.feature_selection واردات RFE از آنجایی که یاد بگیرید.مدل_خطی واردات رگرسیون لجستیک از آنجایی که یاد بگیرید.model_selection واردات train_test_تقسیم کنید # فرض کنید “X” ماتریس ویژگی و “y” هدف است # به مجموعه های آموزشی و آزمایشی تقسیم می شود X_train، X_test، y_train، y_test = train_test_split(X، و، اندازه_تست=0.3، حالت_تصادفی=25) # یک مدل رگرسیون لجستیک ایجاد کنید مدل = رگرسیون لجستیک() # RFE را روی مجموعه آموزشی اعمال کنید تا 5 ویژگی برتر را انتخاب کنید rfe = RFE(مدل، n_features_to_select=5) X_train_rfe = rfe.تنظیم_ترانسفورماتور(X_train، y_train) X_test_rfe = rfe.تبدیل کنید(X_test) # نمایش ویژگی های انتخاب شده ویژگی های انتخاب شده = X.ستون ها[rfe.support_] چاپ کنید(ویژگی های انتخاب شده) |
بنابراین میتوانید از RFE برای انتخاب مهمترین ویژگیها با حذف بازگشتی موارد کمتر مهم استفاده کنید.
برای نتیجه گیری
انتخاب ویژگی موثر برای ساخت مدلهای یادگیری ماشینی قوی مهم است. به طور خلاصه: باید دادههای خود را درک کنید، ویژگیهای نامربوط را حذف کنید، ویژگیهای اضافی را با استفاده از همبستگی شناسایی کنید، آزمایشهای آماری را اعمال کنید و در صورت نیاز برای عملکرد مدل خود از حذف ویژگی بازگشتی (RFE) استفاده کنید.
انتخاب خوبی از ویژگی ها! و اگر به دنبال نکاتی در مورد مهندسی ویژگی هستید، بخوانید نکاتی برای مهندسی ویژگی موثر در یادگیری ماشین.