تکنیکهای رایج کاهش ابعاد در scikit-learn: راهنمای جامع
مقدمه
در حوزه یادگیری ماشین، کاهش ابعاد فرآیندی حیاتی برای تبدیل مجموعه دادههای با ابعاد بالا به فضای با ابعاد پایینتر است. این امر به طور قابل توجهی حجم محاسبات و پیچیدگی مدلهای یادگیری ماشین را کاهش میدهد و ضمن حفظ اطلاعات کلیدی، به ارتقای کارایی و دقت مدلها کمک میکند. کتابخانه scikit-learn طیف وسیعی از تکنیکهای قدرتمند کاهش ابعاد را ارائه میدهد که در این نوشتار به بررسی و تشریح آنها میپردازیم.
انواع تکنیکهای کاهش ابعاد:
-
انتخاب ویژگی (Feature Selection): در این روش، زیرمجموعهای از ویژگیهای اصلی انتخاب میشوند که اطلاعات مفیدتر و مرتبطتر با هدف یادگیری را حفظ میکنند. روشهای مختلفی مانند فیلتر کردن مبتنی بر واریانس (Variance Based Filtering) و روشهای مبتنی بر رکورسی (Recursive Feature Elimination) در این دسته قرار میگیرند.
-
استخراج ویژگی (Feature Extraction): در این روش، ویژگیهای جدیدی از ویژگیهای اصلی استخراج میشوند که اطلاعات کلی و فشردهتر را از دادهها ارائه میدهند. روشهای مختلفی مانند تجزیه و تحلیل مولفههای اصلی (Principal Component Analysis – PCA) و تجزیه و تحلیل ارزش منفرد (Singular Value Decomposition – SVD) در این دسته قرار میگیرند.
انتخاب تکنیک مناسب:
انتخاب تکنیک مناسب برای کاهش ابعاد به عوامل مختلفی مانند نوع داده، هدف یادگیری، حجم داده و توزیع ویژگیها بستگی دارد.
ابزارهای scikit-learn:
کتابخانه scikit-learn کلاسهای مختلفی برای پیادهسازی تکنیکهای کاهش ابعاد ارائه میدهد، از جمله:
-
SelectKBest
برای انتخاب k ویژگی برتر بر اساس واریانس یا آمارههای دیگر -
PCA
برای تجزیه و تحلیل مولفههای اصلی -
TruncatedSVD
برای تجزیه و تحلیل ارزش منفرد -
LinearDiscriminantAnalysis
برای جداسازی کلاسها
نحوه استفاده از ابزارها:
from sklearn.feature_selection import SelectKBest, PCA, TruncatedSVD, LinearDiscriminantAnalysis
# بارگذاری و آماده سازی داده ها
X = ... # مقادیر ویژگی ها
# انتخاب k ویژگی برتر
selector = SelectKBest(k=۱۰) # انتخاب ۱۰ ویژگی برتر
selector.fit(X, y) # آموزش انتخاب کننده ویژگی
selected_features = selector.transform(X) # انتخاب ویژگی ها
# تجزیه و تحلیل مولفه های اصلی
pca = PCA(n_components=۲) # کاهش ابعاد به ۲ بعد
pca.fit(X) # آموزش PCA
transformed_features = pca.transform(X) # تبدیل داده ها به فضای PCA
# تجزیه و تحلیل ارزش منفرد
svd = TruncatedSVD(n_components=۵) # کاهش ابعاد به ۵ بعد
svd.fit(X) # آموزش SVD
reduced_features = svd.transform(X) # تبدیل داده ها به فضای SVD
# جداسازی کلاس ها
lda = LinearDiscriminantAnalysis() # جداسازی کلاس ها
lda.fit(X, y) # آموزش LDA
projected_features = lda.transform(X) # تبدیل داده ها به فضای LDA
نکات کلیدی:
-
پیش از کاهش ابعاد، ضروری است که دادهها به طور مناسب پیش پردازش شوند تا از نویز و مقادیر گمشده پاک شوند.
-
انتخاب تعداد ابعاد مناسب برای کاهش ابعاد به نوع داده، هدف یادگیری و حجم داده بستگی دارد.
-
کتابخانه scikit-learn ابزارهایی برای ارزیابی کیفیت کاهش ابعاد مانند
metrics.explained_variance_ratio
وmetrics.normalized_mutual_information
ارائه میدهد.
منابع:
- مستندات scikit-learn: کاهش ابعاد https://scikit-learn.org/stable/modules/feature_extraction.html
- آموزش کاهش ابعاد با scikit-learn https://realpython.com/