مهندسی ویژگی
جواب کوتاه
مهندسی ویژگی یعنی از دادهی خام، ستونهای پرمعنیتر بسازیم که مدل راحتتر یاد بگیره. مثل نونوای محله که میدونه جمعهها صف بلندتره؛ ولی مدل اگه فقط تاریخ خام رو ببینه، اینو نمیفهمه. پس از تاریخ، «روز هفته» و «تعطیله؟» رو درمیاریم. گاهی هم دو ستون رو یکی میکنیم، مثل قیمت هر متر از متراژ و قیمت. این کار کسی رو میخواد که کار رو بلده، و وقتگیره. ویژگی زیادی هم بده، چون مدل رو به حفظ کردن میکشونه. یادگیری عمیق خیلی از این کار رو خودش میکنه، ولی دادهی تمیز هنوز لازمه.
نونوایی محله
نونوای محله رو در نظر بگیرید. هیچ مدلی نداره، ولی میدونه جمعهها و روزهای تعطیل صف بلندتره، و صبح زودتر خمیر میگیره.
حالا فرض کنید یه مدل بسازیم که حدس بزنه فردا چقدر نون فروش میره. اگه فقط بهش بگیم «۱۴۰۵/۰۷/۱۸»، این یه عدد بزرگ و بیمعنیه؛ مدل نمیفهمه این روز جمعهست. ولی اگه یه ستون «روز هفته» و یه ستون «تعطیله؟» بهش بدیم، همون چیزی رو که نونوا میدونه، اونم یاد میگیره.
به ساختن ستونهای پرمعنیتر از دادهی خام میگن مهندسی ویژگی. با دادن اطلاعات مرتبط به مدل، دقتش رو خیلی بهتر میکنه.
یه ستون، چند ستون
گاهی یه ستون خام رو باز میکنیم:
از یه تاریخ، سه تا ستون تازه درمیاد که هر کدوم یه چیز به درد بخور میگه. نمونههای دیگه:
- از تاریخ تولد، سن.
- از ساعت خرید، «صبح، ظهر، شب».
- از نشونی، محله.
دو ستون، یه ستون
گاهی برعکس، دو تا ستون رو یکی میکنیم:
«قیمت هر متر» برای مقایسهی دو خونه خیلی بهتر از متراژ یا قیمت تنهاست. همینطور «مصرف برق هر نفر» از «مصرف برق» و «تعداد آدمهای خونه»؛ یا «تعداد خرید در ماه» از فهرست همهی خریدها.
کار کسی که کار رو بلده
اینکه «جمعه مهمه» رو نونوا میدونه، نه برنامهنویس. مهندسی ویژگی کسی رو میخواد که خود اون کار رو بلده: نونوا برای نونوایی، دکتر برای پزشکی، بنگاهی برای خونه. برای همین بهترین مدلها معمولا از گپ زدن با آدمهای همون کار شروع میشن.
و کار سادهای هم نیست: وقتگیره، اشتباه توش زیاده، و آزمون و خطا میخواد. یه ویژگی رو میسازید، میبینید مدل بهتر شد یا نه، و دوباره. یادتون باشه ستون تقلب نسازید؛ مثلا «فروش امروز» برای حدس «فروش امروز». درس ستون تقلب.
زیادش هم بده
آیا هر چی ستون بیشتر، بهتر؟ نه. اگه ستونها خیلی زیاد بشن، مدل سختتر یاد میگیره و ممکنه به جای یاد گرفتن، دادهی آموزش رو حفظ کنه؛ یعنی روی دادهی تازه خراب کنه. بیشبرازش.
برای همین بعد از ساختن، انتخاب هم میکنیم: ستونهایی که کمکی نمیکنن رو کنار میذاریم. مثل نونوا که میدونه رنگ لباس مشتریها ربطی به فروش نون نداره.
یادگیری عمیق چی؟
توی درس عروسکهای روسی دیدیم یادگیری عمیق ویژگیها رو خودش پیدا میکنه. پس مهندسی ویژگی دیگه لازم نیست؟ برای عکس و صدا و متن، خیلی کمتر. ولی حتی اونجا هم داده باید با دقت آماده و پاک بشه. و برای جدولهای معمولی، مثل فروش نونوایی، هنوز یه ستون خوب از سر تجربه، خیلی کار میکنه.
این درس، ایستگاه «داده» رو تموم میکنه. ایستگاه بعد، ریاضی لازمه، از صفر و با تصویر؛ اولش اینکه یه ردیف از جدول چطور یه بردار میشه.
جمعبندی. آنچه از این درس با خودتان میبرید.
- ستون پرمعنیتر از دادهی خام.
- یه ستون رو باز کن: تاریخ به روز هفته.
- دو ستون رو یکی کن: قیمت هر متر.
- کار کسیه که کار رو بلده.
- زیادش هم بده؛ انتخاب کن.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.