مهندسی ویژگی (Feature Engineering) فرآیند انتخاب، ایجاد یا اصلاح ویژگیها مانند متغیرهای ورودی یا دادهها است تا به مدلهای یادگیری ماشین کمک کند الگوها را به شکل موثرتری یاد بگیرند. در این مطلب از بخش آموزش هوش مصنوعی، بررسی میکنیم که چگونه این فرآیند شامل تبدیل دادههای خام به ورودیهای معناداری میشود که دقت و عملکرد مدل را بهبود میبخشند.
مهندسی ویژگی ممکن است شامل مدیریت مقادیر گمشده، کدگذاری دستهها، مقیاسگذاری اعداد، ایجاد ویژگیهای جدید یا ترکیب ویژگیهای موجود باشد. این کار به تبدیل دادههای نامنظم دنیای واقعی به شکلی که مدلها بتوانند آنها را درک کنند و برای پیشبینیهای بهتر استفاده کنند، کمک میکند.
اهمیت مهندسی ویژگی
- بهبود دقت: انتخاب ویژگیهای مناسب به یادگیری بهتر مدل کمک میکند و منجر به پیشبینیهای دقیقتر میشود.
- کاهش بیشبرازش (Overfitting): استفاده از ویژگیهای کمتر اما مهمتر به مدل کمک میکند تا از حفظ کردن دادهها خودداری کرده و روی دادههای جدید عملکرد بهتری داشته باشد.
- افزایش تفسیرپذیری: ویژگیهای بهخوبی انتخابشده، درک نحوه تصمیمگیری و پیشبینی مدل را آسانتر میکنند.
- افزایش کارایی: تمرکز روی ویژگیهای کلیدی، فرآیند آموزش و پیشبینی مدل را سرعت میبخشد و در زمان و منابع صرفهجویی میکند.

درک ساده مهندسی ویژگی؛ چرا مدلهای هوش مصنوعی به این فرآیند نیاز دارند؟
اگر دادههای خام را به عنوان مواد اولیه آشپزی در نظر بگیریم، مهندسی ویژگی فرآیند شستوشو، خرد کردن و آمادهسازی این مواد است تا غذای نهایی (یعنی مدل یادگیری ماشین) به بهترین و خوشطعمترین شکل ممکن آماده شود. بدون این مرحله، مدلها در انبوهی از دادههای نامنظم و نامفهوم گم میشوند و نمیتوانند الگوهای مفید را به درستی شناسایی کنند.
در واقع، مهندسی ویژگی با سادهسازی، فشردهسازی و ترجمه دادههای پیچیده به زبان قابلفهم برای الگوریتمها، کیفیت آموزش مدل را تضمین میکند. این کار به مدلهای هوش مصنوعی اجازه میدهد تا تصمیمات بسیار دقیقتر و هوشمندانهتری اتخاذ کنند.
فرآیندهای درگیر در مهندسی ویژگی
بیایید فرآیندهای مختلف درگیر در مهندسی ویژگی را با هم ببینیم:

۱. ایجاد ویژگی (Feature Creation)
ایجاد ویژگی شامل تولید ویژگیهای جدید از دانش دامنه یا با مشاهده الگوها در دادهها است. این کار میتواند به اشکال زیر باشد:
- مختص دامنه (Domain-specific): بر اساس دانش صنعت مانند قوانین کسبوکار ایجاد میشود.
- دادهمحور (Data-driven): با شناسایی الگوها در دادهها به دست میآید.
- مصنوعی (Synthetic): با ترکیب ویژگیهای موجود شکل میگیرد.
۲. تبدیل ویژگی (Feature Transformation)
تبدیل، ویژگیها را برای بهبود یادگیری مدل تنظیم میکند:
- نرمالسازی و مقیاسگذاری (Normalization & Scaling): محدوده ویژگیها را برای سازگاری بیشتر تنظیم میکند.
- کدگذاری (Encoding): دادههای دستهای را به شکل عددی تبدیل میکند، مانند code-one-hot encoding.
- تبدیلهای ریاضی (Mathematical transformations): مانند تبدیلهای لگاریتمی برای دادههای چوله (skewed).
۳. استخراج ویژگی (Feature Extraction)
تبدیل ویژگیهای موجود به یک بازنمایی با ابعاد کمتر یا با اطلاعات مفیدتر (مانند PCA).
- کاهش ابعاد (Dimensionality reduction): تکنیکهایی مانند PCA ابعاد ویژگیها را کاهش میدهند در حالی که اطلاعات مهم را حفظ میکنند.
- تجمیع و ترکیب (Aggregation & Combination): جمع زدن یا میانگینگیری از ویژگیها برای سادهسازی مدل.
۴. انتخاب ویژگی (Feature Selection)
انتخاب ویژگی شامل برگزیدن زیرمجموعهای از ویژگیهای مرتبط برای استفاده است:
- روشهای فیلتر (Filter methods): بر اساس معیارهای آماری مانند همبستگی (correlation).
- روشهای بستهبندی (Wrapper methods): انتخاب بر اساس عملکرد مدل.
- روشهای ادغامشده (Embedded methods): انتخاب ویژگی که با آموزش مدل ادغام شده است.
۵. مقیاسگذاری ویژگی (Feature Scaling)
مقیاسگذاری تضمین میکند که همه ویژگیها به یک اندازه در مدل سهم داشته باشند:
- مقیاسگذاری کمینه-بیشینه (Min-Max scaling): مقادیر را به یک محدوده ثابت مانند ۰ تا ۱ تغییر مقیاس میدهد.
- مقیاسگذاری استاندارد (Standard scaling): ویژگیها را استاندارد میکند تا میانگین ۰ و واریانس ۱ داشته باشند.
مراحل مهندسی ویژگی
مهندسی ویژگی بسته به مسئله خاص میتواند متفاوت باشد، اما مراحل عمومی آن عبارتند از:
- پاکسازی دادهها (Data Cleaning): شناسایی و اصلاح خطاها یا ناهمخوانیها در مجموعه داده برای اطمینان از کیفیت و اعتبار دادهها.
- تبدیل دادهها (Data Transformation): تبدیل دادههای خام به قالبی مناسب برای مدلسازی، شامل مقیاسگذاری، نرمالسازی و کدگذاری.
- استخراج ویژگی (Feature Extraction): ایجاد ویژگیهای جدید با ترکیب یا مشتق کردن اطلاعات از ویژگیهای موجود برای ارائه ورودی معنادارتر به مدل.
- انتخاب ویژگی (Feature Selection): انتخاب مرتبطترین ویژگیها برای مدل با استفاده از تکنیکهایی مانند تحلیل همبستگی، اطلاعات متقابل و رگرسیون گامبهگام.
- تکرار ویژگی (Feature Iteration): بهبود مستمر ویژگیها بر اساس عملکرد مدل با افزودن، حذف یا اصلاح ویژگیها جهت ارتقای نتایج.
تکنیکهای رایج در مهندسی ویژگی
۱. کدگذاری وانهات (One-Hot Encoding): کدگذاری وانهات متغیرهای دستهای را به نشانگرهای دودویی تبدیل میکند و اجازه میدهد توسط مدلهای یادگیری ماشین مورد استفاده قرار گیرند.
import pandas as pd
data = {'Color': ['Red', 'Blue', 'Green', 'Blue']}
df = pd.DataFrame(data)
df_encoded = pd.get_dummies(df, columns=['Color'], prefix='Color')
print(df_encoded)
خروجی:

۲. دستهبندی (Binning): دستهبندی متغیرهای پیوسته را به دستههای گسسته تبدیل میکند و آنها را برای تحلیل آسانتر، دستهای (Categorical) میسازد.
import pandas as pd
data = {'Age': [23, 45, 18, 34, 67, 50, 21]}
df = pd.DataFrame(data)
bins = [0, 20, 40, 60, 100]
labels = ['0-20', '21-40', '41-60', '61+']
df['Age_Group'] = pd.cut(df['Age'], bins=bins, labels=labels, right=False)
print(df)
خروجی:

۳. پیشپردازش دادههای متنی در پردازش زبان طبیعی: شامل حذف کلمات توقف (stop-words)، ریشهیابی (stemming) و برداریسازی (vectorizing) دادههای متنی برای آمادهسازی آنها جهت مدلهای یادگیری ماشین است.
import nltk
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
from sklearn.feature_extraction.text import CountVectorizer
texts = ["This is a sample sentence.", "Text data preprocessing is important."]
stop_words = set(stopwords.words('english'))
stemmer = PorterStemmer()
vectorizer = CountVectorizer()
def preprocess_text(text):
words = text.split()
words = [stemmer.stem(word)
for word in words if word.lower() not in stop_words]
return " ".join(words)
cleaned_texts = [preprocess_text(text) for text in texts]
X = vectorizer.fit_transform(cleaned_texts)
print("Cleaned Texts:", cleaned_texts)
print("Vectorized Text:", X.toarray())
خروجی:

۴. تقسیم ویژگی (Feature Splitting): یک ویژگی واحد را به چند زیرویژگی تقسیم میکند که این کار باعث کشف بینشهای ارزشمند و بهبود عملکرد مدل میشود.
import pandas as pd
data = {'Full_Address': [
'123 Elm St, Springfield, 12345', '456 Oak Rd, Shelbyville, 67890']}
df = pd.DataFrame(data)
df[['Street', 'City', 'Zipcode']] = df['Full_Address'].str.extract(
r'([0-9]+\s[\w\s]+),\s([\w\s]+),\s(\d+)')
print(df)
خروجی:

ابزارهای مهندسی ویژگی
- Featuretools: ایجاد ویژگی را از دادههای ساختاریافته با یکپارچهسازی آسان کتابخانه خودکارسازی میکند.
- TPOT: از الگوریتمهای ژنتیک برای بهینهسازی خطوط لوله و انتخاب ویژگی استفاده میکند.
- DataRobot: گردشهای کاری یادگیری ماشین را با پشتیبانی از انواع مختلف دادهها و کار تیمی خودکارسازی میکند.
- Alteryx: یک رابط کشیدن و رها کردن برای آمادهسازی دادهها و مهندسی ویژگی ارائه میدهد.
- H2O.ai: ابزارهایی برای مهندسی ویژگی، مقیاسگذاری، کدگذاری و تصویرسازی ارائه میدهد.پ
سوالات متداول
مهندسی ویژگی (Feature Engineering) چیست و چرا اهمیت دارد؟
فرآیندی در یادگیری ماشین است که در آن دادههای خام ویرایش، تغییر یا ترکیب میشوند تا متغیرهای ورودی بهینهتری برای آموزش دقیقتر مدلها ایجاد شوند. اهمیت آن در این است که دقت مدل را افزایش و احتمال خطای آن را کاهش میدهد.
تفاوت اصلی میان انتخاب ویژگی (Feature Selection) و استخراج ویژگی (Feature Extraction) چیست؟
در انتخاب ویژگی، ما مرتبطترین ویژگیهای موجود را بدون تغییر گلچین میکنیم. اما در استخراج ویژگی، دادههای قبلی را ترکیب یا فشرده میکنیم تا متغیرهای جدید و کارآمدتری بسازیم.
محبوبترین ابزارها برای خودکارسازی مهندسی ویژگی کدامند؟
ابزارهایی نظیر Featuretools برای خودکارسازی ایجاد ویژگیها و TPOT که بر پایه الگوریتمهای ژنتیک بهینهسازی خطوط لوله را انجام میدهد، از محبوبترین گزینهها هستند.
چرا مقیاسگذاری ویژگیها (Feature Scaling) اهمیت دارد؟
زیرا مقیاسگذاری باعث میشود تمام متغیرها در یک بازه عددی مشابه قرار گیرند و مدل به اشتباه وزن بیشتری به متغیرهایی با مقادیر عددی بزرگتر اختصاص ندهد.
از مهندسی ویژگی تا خلق هوش مصنوعی: مسیر حرفهای شدن در علم داده
همانطور که خواندید، مهندسی ویژگیها هنرِ تبدیل دادههای خام و نامنظم به فرمولی طلایی برای مدلهای یادگیری ماشین است. اما تسلط بر این تکنیکها، تنها تکهای از پازل بزرگ دنیای هوش مصنوعی است. برای اینکه بتوانید یک پروژه واقعی دادهمحور را از مرحله جمعآوری داده تا آموزش و استقرار نهایی مدل مدیریت کنید، نیاز به یک نقشه راه منسجم و مهارتهای مکمل دارید.
اگر میخواهید فراتر از تئوریهای ساده حرکت کنید و به یک متخصص همهفنحریف در بازار کار امروز تبدیل شوید، شرکت در دوره جامع آموزش یادگیری ماشین و علم داده به شما کمک میکند تا این مسیر را به صورت پروژهمحور، از صفر مطلق تا پیشرفتهترین سطوح یادگیری ماشین و تحلیل داده طی کنید.
- آموزش عملی پیشپردازش، پاکسازی و مهندسی دادهها بر روی سناریوهای واقعی دنیای کسبوکار
- تسلط بر پایتون، کتابخانههای کلیدی یادگیری ماشین و ابزارهای استخراج ویژگیهای کلیدی
- درک عمیق مفاهیم آمار و ریاضیات کاربردی جهت اتخاذ بهترین تصمیمها در انتخاب ویژگیها
- آمادهسازی همهجانبه برای ورود به بازار کار با پیادهسازی پروژههای واقعی و کاربردی

