

نکاتی برای انتخاب ویژگی موثر در یادگیری ماشینی
تصویر نویسنده | ایجاد شده در Canva
هنگام آموزش یک مدل یادگیری ماشینی، ممکن است گاهی اوقات با مجموعه داده هایی با تعداد زیادی ویژگی کار کنید. با این حال، تنها یک زیرمجموعه کوچک از این ویژگیها در واقع برای مدل برای پیشبینی مهم هستند. به همین دلیل است که برای شناسایی این ویژگی های مفید به انتخاب ویژگی نیاز دارید.
این مقاله نکات مفیدی برای انتخاب ویژگی را پوشش می دهد. ما به تکنیک های انتخاب ویژگی به طور عمیق نگاه نمی کنیم. اما ما نکات ساده و در عین حال موثری را برای درک مرتبطترین ویژگیها در مجموعه داده شما پوشش خواهیم داد. ما با هیچ مجموعه داده خاصی کار نخواهیم کرد. اما میتوانید آنها را روی یک مجموعه داده نمونه انتخابی امتحان کنید.
بیایید شروع کنیم.
1. اطلاعات را درک کنید
احتمالا از خواندن این نکته خسته شده اید. اما هیچ راهی برای نزدیک شدن به هر مشکلی بهتر از درک مشکلی که سعی در حل آن دارید و داده هایی که با آنها کار می کنید وجود ندارد.
بنابراین درک داده های شما اولین و مهمترین مرحله در انتخاب ویژگی است. این شامل کاوش مجموعه داده برای درک بهتر توزیع متغیرها، درک روابط بین ویژگی ها، شناسایی ناهنجاری های بالقوه و ویژگی های مرتبط است.
وظایف کلیدی در کاوش داده ها شامل بررسی مقادیر از دست رفته، ارزیابی انواع داده ها، و تولید آمار خلاصه برای ویژگی های عددی است.
این قطعه کد مجموعه داده را بارگیری می کند، خلاصه ای از انواع داده ها و مقادیر غیر تهی را ارائه می دهد، آمار توصیفی اولیه را برای ستون های عددی تولید می کند و مقادیر از دست رفته را بررسی می کند.
پانداها را به صورت pdf وارد کنید # مجموعه داده خود را بارگذاری کنید df = pd.read_csv(‘your_dataset.csv’) # یک نمای کلی از چاپ مجموعه داده دریافت کنید(df.info()) # ایجاد آمار خلاصه برای ویژگی های عددی print(df.describe()) # مقادیر از دست رفته در هر ستون را بررسی کنید (df.isnull().sum())
واردات پانداها به عنوان پی دی # مجموعه داده خود را بارگیری کنید df = پی دی.read_csv(‘your_dataset.csv’) # یک نمای کلی از مجموعه داده دریافت کنید چاپ کنید(df.اطلاعات()) # ایجاد آمار خلاصه برای ویژگی های عددی چاپ کنید(df.توصیف کنید()) # مقادیر از دست رفته در هر ستون را بررسی کنید چاپ کنید(df.باطل است().مجموع()) |
این مراحل به شما کمک میکند تا در مورد ویژگیهای موجود در دادههای خود و مشکلات بالقوه کیفیت دادهها که باید قبل از انتخاب ویژگی به آنها رسیدگی کنید، بیشتر بدانید.
2. ویژگی های نامربوط را حذف کنید
مجموعه داده شما ممکن است دارای تعداد زیادی ویژگی باشد. اما همه آنها به قدرت پیش بینی مدل شما کمک نمی کنند.
چنین ویژگیهای نامربوطی میتوانند نویز را اضافه کنند و پیچیدگی مدل را افزایش دهند، بدون اینکه کارایی زیادی داشته باشند. حذف چنین ویژگی هایی قبل از آموزش مدل ضروری است. و اگر مجموعه داده را با جزئیات درک کرده و بررسی کرده باشید، این باید ساده باشد.
برای مثال، میتوانید زیرمجموعهای از ویژگیهای نامربوط مانند زیر را حذف کنید:
# با فرض اینکه ‘feature1’، ‘feature2’ و ‘feature3’ ویژگی های بی ربط هستند df = df.drop(columns=[‘feature1’, ‘feature2’, ‘feature3’])
# با فرض اینکه ‘feature1’، ‘feature2’ و ‘feature3’ ویژگی های نامربوط هستند df = df.رها کردن(ستون ها=[‘feature1’, ‘feature2’, ‘feature3’]) |
در کد خود، «feature1»، «feature2» و «feature3» را با نام واقعی ویژگیهای نامربوطی که میخواهید حذف کنید، جایگزین کنید.
این مرحله با حذف اطلاعات غیر ضروری، مجموعه داده را ساده می کند، که می تواند عملکرد و تفسیرپذیری مدل را بهبود بخشد.
3. از ماتریس همبستگی برای شناسایی ویژگی های اضافی استفاده کنید
گاهی اوقات شما ویژگی هایی خواهید داشت که به شدت مرتبط هستند. یک ماتریس همبستگی ضرایب همبستگی بین جفت ویژگی را نشان می دهد.
ویژگی های بسیار همبسته اغلب می توانند اضافی باشند و اطلاعات مشابهی را به مدل ارائه دهند. در چنین مواردی، میتوانید یکی از ویژگیهای مرتبط را حذف کنید.
در اینجا کد شناسایی جفت ویژگی های بسیار همبسته در مجموعه داده آمده است:
import seaborn به عنوان sns واردات matplotlib.pyplot به عنوان plt # محاسبه ماتریس همبستگی corr_matrix = df.corr() # نقشه حرارتی ماتریس همبستگی sns.heatmap(corr_matrix, annot=True, cmap=’coolwarm'(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)] > آستانه]
واردات متولد دریا به عنوان sns واردات matplotlib.pyplot به عنوان plt # ماتریس همبستگی را محاسبه کنید corr_matrix = df.تصحیح() # نقشه حرارتی ماتریس همبستگی را رسم کنید sns.نقشه حرارتی(corr_matrix، حاشیه نویسی=درست است، cmap=“سرد”) plt.نشان می دهد() # جفت های بسیار همبسته را شناسایی کنید آستانه = 0.8 corr_pairs = corr_matrix.عضلات شکم().باز کردن پشته().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)]چاپ (selected_features)
از sklearn.feature_selection واردات chi2، KBest را انتخاب کنید # فرض کنید متغیر هدف طبقه بندی شده است X = df.رها کردن(ستون ها=[‘target’]) y = df[‘target’] # تست کای دو را اعمال کنید chi_selector = KBest را انتخاب کنید(chi2، ک=10) X_kbest = chi_selector.تناسب_تغییر(X، y) # نمایش ویژگی های انتخاب شده Selected_features = X.ستون ها[chi_selector.get_support(indices=True)] چاپ کنید(Selected_features) |
انجام این کار مجموعه ویژگی را به مرتبط ترین متغیرها کاهش می دهد که می تواند عملکرد مدل را به طور قابل توجهی بهبود بخشد.
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_test, testy_train (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) X_test_rfe = rfe.transform(X_test) # نمایش ویژگی های انتخاب شده انتخاب شده_ویژگی ها = X.columns[rfe.support_]چاپ (ویژگی های انتخاب شده)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
از sklearn.ویژگی_انتخاب واردات RFE از sklearn.مدل_خطی واردات LogisticRegression از sklearn.model_selection واردات train_test_تقسیم # بگویید “X” ماتریس ویژگی و “y” هدف است # تقسیم به مجموعه های آموزشی و تست X_train، X_test، y_train، y_test = train_test_split(X، y، اندازه_تست=0.3، حالت_تصادفی=25) # یک مدل رگرسیون لجستیک ایجاد کنید مدل = LogisticRegression() # RFE را روی مجموعه آموزشی اعمال کنید تا 5 ویژگی برتر را انتخاب کنید rfe = RFE(مدل، n_features_to_select=5) X_train_rfe = rfe.تناسب_تغییر(X_train، y_train) X_test_rfe = rfe.تبدیل کنید(X_test) # نمایش ویژگی های انتخاب شده Selected_features = X.ستون ها[rfe.support_] چاپ کنید(Selected_features) |
بنابراین، میتوانید از RFE برای انتخاب مهمترین ویژگیها با حذف بازگشتی کماهمیتها استفاده کنید.
بسته بندی
انتخاب ویژگی موثر در ساخت مدلهای یادگیری ماشینی قوی مهم است. برای جمعبندی: باید دادههای خود را درک کنید، ویژگیهای نامربوط را حذف کنید، ویژگیهای اضافی را با استفاده از همبستگی شناسایی کنید، آزمایشهای آماری را اعمال کنید و در صورت نیاز از حذف ویژگیهای بازگشتی (RFE) برای عملکرد مدل خود استفاده کنید.
انتخاب ویژگی مبارک! و اگر به دنبال نکاتی در مورد مهندسی ویژگی هستید، بخوانید نکاتی برای مهندسی ویژگی موثر در یادگیری ماشین.