مهندسی ویژگی (Feature Engineering)

ساخت ویژگی‌های جدید از داده موجود، انتخاب ویژگی‌های مهم و اثر آن بر کیفیت مدل

مهندسی ویژگی چیست؟

مهندسی ویژگی یعنی ساخت ویژگی‌های جدید و مفید از داده‌های موجود، یا انتخاب بهترین زیرمجموعه ویژگی‌ها. گفته می‌شود «مدل بد با ویژگی خوب، بهتر از مدل خوب با ویژگی بد است!»

۱. ساخت ویژگی جدید

از ترکیب ویژگی‌های موجود، ویژگی معنادارتر بسازید:

# از تاریخ تولد و تاریخ امروز → سن
df["age"] = 1404 - df["birth_year"]

# از قیمت و متراژ → قیمت هر متر
df["price_per_meter"] = df["price"] / df["meter"]

# از تاریخ → روز هفته، ماه، تعطیلات
df["month"] = pd.to_datetime(df["date"]).dt.month

۲. تبدیل‌های ریاضی

گاهی رابطه واقعی داده، خطی نیست:

۳. ویژگی‌های متقابل (Interaction)

# ضرب دو ویژگی که با هم معنا دارند
df["meter_x_rooms"] = df["meter"] * df["rooms"]

۴. انتخاب ویژگی (Feature Selection)

همه ویژگی‌ها مفید نیستند؛ بعضی نویز هستند. روش‌ها:

# اهمیت ویژگی با جنگل تصادفی
model = RandomForestClassifier().fit(X, y)
print(model.feature_importances_)

۵. دانش دامنه (Domain Knowledge)

بهترین ویژگی‌ها از شناخت مسئله می‌آیند. در پیش‌بینی قیمت خانه، ویژگی «فاصله تا مترو» شاید مهم‌تر از «تعداد پنجره» باشد!

قبل از ساخت ویژگی پیچیده، همیشه با نمودار scatter رابطه ویژگی با برچسب را ببینید.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.

ابزارهای مرتبط