در نوشتههای قبلی، دیدیم که یادگیری ماشین، چطور کمک میکند تا از روی دما، تعداد فروش بستنی را پیشبینی کنیم. بعد از مدتی، تصمیم میگیریم مدلمان را بهبود دهیم.
فرض کنید با بررسی دقیق، متوجه میشویم که یک عامل مهم دیگر در میزان فروش، تعطیلات آخر هفته است. همچنین، در روزهایی که هوا شرجی میشود، فروش به شکل قابلتوجهی کاهش مییابد.
بنابراین، باید مدلی را که تعریف کرده بودیم، به گونهای تغییر دهیم که این دو متغیر اضافی را هم بپذیرد:
y = f(x)
قبلا، متغیر x فقط دمای هوا را نمایندگی میکرد. اما حالا، باید نماینده «روزهای هفته» و «رطوبت هوا» هم باشد. بنابراین، x را تبدیل به یک بردار ریاضی میکنیم:
x = [x1,x2,x3]
در بسیاری از مسائل واقعی، تعداد متغیرها بسیار زیاد است. این باعث میشود نتوانیم مثل قبل، با نمودارهای دو بعدی دادهها را به نمایش در بیاوریم.
مهندسی ویژگی
اینکه مدل براساس چه متغیرها یا ویژگیهایی ساخته شود، یکی از موضوعات مهم است که روی خروجی کار بسیار اثر میگذارد. مثلا میشود به جای رطوبت، از ویژگی دیگری مثل «فصلهای سال» استفاده کنیم.
این موضوع به قدری مهم است که برای آن یک عنوان اختصاصی داریم: Feature Engineering یا «مهندسی ویژگی». برای ساخت هر مدل، باید تصمیم بگیریم که چه ویژگیهایی را دخیل کنیم و این دقیقا معنای مهندسی ویژگی است.
انتخاب ویژگیها، کار آسانی نیست. مثلا اگر بخواهیم مدلی برای پیشبینی وضع آبوهوا بسازیم، انتخاب ویژگیهای موثر در مدل، یکی از سختترین بخشهای کار است.
اعداد و بردارها
فرقی نمیکند که ویژگیهای منتخب ما چه باشند. برای اینکه بتوانیم آنها را به خورد یک تابع بدهیم، باید آنها را تبدیل به عدد کنیم. مثلا میتوانیم اعداد ۱ تا ۷ را به عنوان نماینده هر یک از روزهای هفته در نظر بگیریم.
اگر قرار باشد از فصول سال هم استفاده کنیم، باید چهار فصل بهار، تابستان، پاییز و زمستان را هم با اعداد نشان دهیم. به این کار، رمزگذاری ویژگیها یا Feature Encoding میگویند.
رمزگذاری ویژگیها، میتواند فرایند بسیار پیچیدهای باشد؛ مثلا به مدلهای زبانی فکر کنید. این مدلها با متن سر و کار دارند. بنابراین باید راهی برای تبدیل «واژهها به اعداد» داشته باشیم. یک بردار باید «سیب» را نمایندگی کند و بردار دیگر «یاتاقان» را. این بردارها باید به گونهای انتخاب شوند که نسبت معناداری با یکدیگر داشته باشند. تکنیکها و روشهای متنوعی برای تبدیل واژهها به بردارها وجود دارد. به این فرایند، Text Encoding یا رمزگذاری متن میگویند.
به طور مشابه، مدلها باید بتوانند عکسها و صداها را هم پردازش کنند. بنابراین در هر زمینهای، ما نیازمند مترجمی هستیم که ضمن حفظ روابط و پیچیدگی داده ورودی، آن را برای ماشین قابلهضم کند. این کار پیچیدهتر از چیزی است که به نظر میرسد. برخی از روشهای رمزگذاری، طی چندین سال و با مشارکت تعداد زیادی از دانشمندان خلق شدهاند.
عصارهگیری از دادهها
یک چالش دیگر در استفاده از دادهها، حجم زیاد و تعدد ویژگیهای آنهاست. میشود مدلها را به مسافرانی تشبیه کرد که ترجیح میدهند حین سفر، فقط وسایل ضروری را به همراه داشته باشند. هر چقدر که چمدان مدل سبکتر باشد، آموزش آن پردازش کمتری لازم دارد.
موضوع البته فقط به پردازش کمتر محدود نمیشود. در واقعیت، خیلی از وسایل غیرضروری در سفر، بلااستفاده میمانند. در واقع، ما میخواهیم ابعادی از داده را نگه داریم که واقعا مهم هستند.
اینجاست که دست به دامن روشهای کاهش ابعاد داده یا Dimensionality Reduction میشویم. کاهش ابعاد، یعنی عصارهگیری از دادهها. برای عصارهگیری، ممکن است صرفا ویژگیهای خاصی از دادهها را نگه داریم و بقیه را دور بریزیم. انگار که داریم ماست چکیده درست میکنیم!
در عصارهگیری، همچنین ممکن است دادهها تغییر شکل دهند. به عنوان یک استعاره، میتوانید به فرایند درست کردن اسپرسو فکر کنید؛ شکل نهایی داده (اسپرسو)، ممکن است شباهت زیادی به دادههای اولیه نداشته باشد (قهوه آسیاب شده). چیزی که مهم است، عصارهگیری دقیق و حفظ ویژگیهای مهم است.
در نوشته بعدی بیشتر در این باره صحبت خواهم کرد.
کلیدواژههای مهم
بعد از خواندن این مطلب، سعی کنید این کلیدواژهها/مفاهیم را به خاطر بسپارید:
- مهندسی ویژگی | Feature Engineering
- رمزگذاری ویژگیها | Feature Encoding
- کاهش ابعاد دادهها | Dimensionality Reduction
آنچه خواندید، بخشی از سلسله مطالبی درباره یادگیری ماشین است. این نوشتهها مخصوص مدیران و افراد غیرفنی است که میخواهند، بدون ورود به جزئیات، از هوش مصنوعی و یادگیری ماشین سر در بیاورند.
میتوانید به نوشته قبلی برگردید و نوشته «یادگیری با نظارت» را بخوانید. در نوشتههای بعدی، این مباحث را ادامه خواهم داد.
نوشتههای روزانه من را درباره محصول، فناوری و کسبوکار در تلگرام دنبال کنید!

دیدگاهتان را بنویسید