یادگیری ماشین روشی برای ساخت مدل‌هایی است که از داده الگو می‌آموزند و روی نمونه‌های تازه پیش‌بینی یا دسته‌بندی انجام می‌دهند. تفاوت اصلی با یک برنامهٔ صرفاً قاعده‌محور این است که بخشی از رفتار از تجربهٔ داده‌ای استخراج می‌شود. این انعطاف مفید است، اما مسئولیت تازه‌ای هم می‌آورد: باید نشان دهید مدل روی داده‌ای که در آموزش ندیده چگونه عمل می‌کند و در چه شرایطی نباید به خروجی آن تکیه کرد.

در این راهنما، پروژهٔ دسته‌بندی گونهٔ گل بر اساس اندازه‌های عددی را با دادهٔ Iris تمرین می‌کنیم. این مجموعه کوچک و آموزشی است و کیفیت روی آن، شاهد آمادگی یک محصول واقعی نیست. با این حال، برای یادگرفتن ویژگی، برچسب، تقسیم داده، خط مبنا و Pipeline مناسب است. تمرکز بر روند درست است، نه مسابقه برای رسیدن به بالاترین عدد در یک مثال آشنا.

مسئله را به ورودی و خروجی تبدیل کنید

پیش از الگوریتم، مشخص کنید چه چیزی را پیش‌بینی می‌کنید و در لحظهٔ استفاده چه اطلاعاتی دارید. در Iris، اندازه‌های گل ورودی و گونهٔ آن خروجی است. در فروشگاه، ممکن است ورودی تاریخچهٔ خرید و خروجی احتمال بازگشت مشتری باشد. اگر ستونی فقط پس از رخداد هدف معلوم می‌شود، استفاده از آن در آموزش، مسئلهٔ واقعی را به تقلب داده‌ای تبدیل می‌کند.

واحد نمونه نیز باید روشن باشد. هر سطر یک گل، یک مشتری، یک سفارش یا یک روز است؟ اگر یک مشتری چند سطر دارد، جداسازی تصادفی ردیف‌ها ممکن است اطلاعات همان فرد را هم در آموزش و هم آزمون قرار دهد. تعریف مسئله و طراحی تقسیم داده به هم وابسته‌اند. انتخاب الگوریتم بدون این قراردادها معمولاً به مدلی می‌رسد که در دفترچه عالی و در استفادهٔ واقعی ضعیف است.

انواع یادگیری ماشین با کاربرد واقعی

در یادگیری نظارت‌شده، نمونه‌ها پاسخ شناخته‌شده دارند. رگرسیون عددی مانند قیمت را پیش‌بینی می‌کند و دسته‌بندی برچسبی مانند گونه یا وضعیت را. در یادگیری بدون نظارت، هدف‌هایی مانند یافتن گروه یا ساختار داده مطرح است و پاسخ آمادهٔ یکسانی برای همهٔ نمونه‌ها نداریم. خوشه‌بندی مشتریان با پیش‌بینی ریزش آن‌ها یک مسئله نیست و معیار ارزیابی متفاوتی می‌خواهد.

یادگیری تقویتی بر تعامل عامل با محیط و دریافت پاداش تمرکز دارد. این روش برای هر مسئلهٔ جدولی انتخاب طبیعی نیست و طراحی پاداش و ارزیابی‌اش دشواری‌های خاص دارد. برای شروع، یک مسئلهٔ نظارت‌شدهٔ محدود معمولاً مسیر روشن‌تری فراهم می‌کند. هدف یادگیری، استفاده از مد روز نیست؛ ساختن ارتباط درست میان داده، تصمیم و هزینهٔ خطاست.

ویژگی و برچسب را جدا نگه دارید

ویژگی‌ها اطلاعاتی هستند که مدل برای پیش‌بینی استفاده می‌کند و برچسب پاسخ هدف است. نام فایل، شناسه یا ترتیب سطر می‌توانند به‌طور تصادفی با برچسب رابطه پیدا کنند، بدون اینکه در آینده مفید باشند. این ستون‌ها را صرفاً چون عددی‌اند وارد مدل نکنید. برای هر ویژگی بپرسید چگونه تولید شده و آیا در زمان پیش‌بینی نیز با همین کیفیت در دسترس خواهد بود.

نوع داده هم مهم است. عدد بودن یک کد پستی به معنای فاصلهٔ عددی معنادار میان دو کد نیست. ویژگی دسته‌ای، عددی و متن هر کدام نمایش مناسب خود را می‌خواهند. آماده‌سازی باید در آموزش یاد گرفته و در استفادهٔ آینده همان‌طور اعمال شود. اگر ترتیب ستون‌ها، واحد اندازه‌گیری یا نگاشت دسته‌ها تغییر کند، مدل می‌تواند بدون خطای اجرایی خروجی نادرست تولید کند.

تقسیم آموزش و آزمون؛ مرز اعتماد

دادهٔ آموزش برای برازش مدل استفاده می‌شود. دادهٔ اعتبارسنجی برای انتخاب تنظیمات و دادهٔ آزمون برای برآورد نهایی کنار گذاشته می‌شود. در پروژهٔ کوچک می‌توان از اعتبارسنجی متقاطع در بخش آموزش استفاده کرد و آزمون را دست‌نخورده نگه داشت. اگر بارها آزمون را ببینید و بر اساس آن مدل را عوض کنید، دیگر آزمون مستقل نیست و نتیجه خوش‌بینانه خواهد شد.

روش تقسیم باید با ساختار داده هماهنگ باشد. stratify برای حفظ تقریبی نسبت کلاس‌ها در بعضی مسئله‌ها مفید است، اما استقلال ایجاد نمی‌کند. دادهٔ زمانی یا گروهی معمولاً به روش دیگری نیاز دارد. پیش از هر تبدیل وابسته به توزیع، تقسیم را انجام دهید. محاسبهٔ میانگین، انتخاب ویژگی یا جایگزینی دادهٔ خالی روی کل مجموعه نیز می‌تواند اطلاعات آزمون را وارد آموزش کند.

خط مبنا؛ آیا مدل واقعاً چیزی یاد گرفته است؟

یک دسته‌بند که همیشه کلاس پرتکرار را انتخاب می‌کند، خط مبنای ساده‌ای است. برای رگرسیون، پیش‌بینی میانگین یا میانهٔ آموزش می‌تواند شروع باشد. مدل پیشرفته باید در شرایط یکسان نسبت به این مبنا ارزش ایجاد کند. اگر تفاوت ناچیز است، شاید داده کافی نیست، هدف مبهم است یا ویژگی‌ها اطلاعات مؤثر ندارند. تغییر مداوم الگوریتم لزوماً مشکل را حل نمی‌کند.

خط مبنا را با همان تقسیم و معیار مدل اصلی بسنجید. در مسئلهٔ نامتوازن، Accuracy بالا ممکن است از پیش‌بینی همیشگی کلاس غالب به دست آید. معیارهای هر کلاس و تعداد نمونه‌ها را هم گزارش کنید. نتیجه‌ای که با مبنای ضعیف مقایسه نشده، اغلب بیشتر دربارهٔ آسانی داده می‌گوید تا ارزش مدل. ساده‌ترین راه‌حل قابل‌قبول همچنان می‌تواند بهترین انتخاب محصول باشد.

اولین مدل با scikit-learn

نمونهٔ زیر دادهٔ آمادهٔ کتابخانه را می‌خواند و یک Pipeline شامل استانداردسازی و رگرسیون لجستیک می‌سازد. با وجود نام رگرسیون، این الگوریتم در اینجا برای دسته‌بندی استفاده می‌شود. استانداردسازی داخل Pipeline قرار دارد تا فقط از دادهٔ آموزش یاد بگیرد. عدد حاصل به نسخهٔ کتابخانه و جزئیات محیط وابسته است؛ بنابراین در متن، نمرهٔ ثابت و تضمینی اعلام نمی‌کنیم.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.dummy import DummyClassifier
from sklearn.metrics import classification_report

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, random_state=42, stratify=y
)
baseline = DummyClassifier(strategy="most_frequent")
baseline.fit(X_train, y_train)
model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=500))
model.fit(X_train, y_train)
print("Baseline accuracy:", baseline.score(X_test, y_test))
print(classification_report(y_test, model.predict(X_test), zero_division=0))

پس از اجرا، تعداد نمونه‌های آزمون و پشتیبانی هر کلاس را بخوانید. چند خطای احتمالی را به ورودی مربوط وصل کنید و ببینید آیا اندازه‌ها برای تشخیص آن گونه مبهم بوده‌اند. هدف این نیست که هر اشتباه را با افزودن پیچیدگی حذف کنید. روی دادهٔ کوچک، چند نمونه می‌توانند معیار را جابه‌جا کنند؛ تفسیر باید با اندازهٔ آزمون و محدودیت نمایندگی داده سازگار باشد.

الگوریتم‌ها را بر اساس فرض و نیاز انتخاب کنید

مدل خطی برای شروع خوانا و کم‌هزینه است، اما رابطهٔ پیچیده را همیشه خوب نمایش نمی‌دهد. درخت تصمیم می‌تواند روابط غیرخطی و آستانه‌ای را یاد بگیرد، ولی بدون محدودسازی ممکن است بیش‌برازش کند. مدل‌های همسایه به فاصله و مقیاس حساس‌اند. مدل‌های ترکیبی اغلب قوی‌اند، اما نیازمند ارزیابی دقیق و کنترل تنظیمات هستند. نام بزرگ‌تر تضمین نتیجهٔ بهتر نیست.

برای هر انتخاب، سرعت آموزش، زمان پیش‌بینی، اندازهٔ داده، تفسیرپذیری و نگهداری را ببینید. اگر برنامه باید روی سخت‌افزار محدود پاسخ دهد، تأخیر مهم است. اگر تصمیم باید توضیح داده شود، گزارش فقط معیار کافی نیست. بهتر است دو یا سه گزینهٔ معقول را با فرایند ثابت مقایسه کنید، نه اینکه ده‌ها الگوریتم را بدون کنترل آزمون امتحان و بهترین عدد را منتشر کنید.

بیش‌برازش و کم‌برازش را تشخیص دهید

بیش‌برازش زمانی رخ می‌دهد که مدل جزئیات خاص آموزش را خوب دنبال کند ولی روی نمونهٔ تازه ضعیف‌تر باشد. کم‌برازش زمانی است که ظرفیت یا ویژگی‌ها برای رابطهٔ مسئله کافی نیستند. اختلاف آموزش و اعتبارسنجی، منحنی یادگیری و تحلیل خطا سرنخ می‌دهند. اما صرفاً یک شکاف عددی علت را ثابت نمی‌کند؛ دادهٔ نامناسب یا تقسیم غلط نیز می‌توانند الگوی مشابه بسازند.

برای کاهش بیش‌برازش، محدودسازی پیچیدگی، تنظیم منظم‌سازی، دادهٔ بیشترِ مرتبط یا ویژگی بهتر می‌تواند مفید باشد. افزودن دادهٔ تکراری الزاماً اطلاعات تازه ایجاد نمی‌کند. برای کم‌برازش نیز همیشه مدل بزرگ‌تر پاسخ نیست؛ شاید ویژگی ضروری ثبت نشده باشد. ابتدا فرضیه‌ای دربارهٔ علت بنویسید، یک تغییر محدود انجام دهید و اثر آن را روی اعتبارسنجی بسنجید. این روش از آزمون‌وخطای بی‌جهت بهتر است.

تحلیل خطا از تعویض مدل ارزشمندتر است

نمونه‌های اشتباه را بر اساس گروه، نوع ورودی و شرایط تولید بررسی کنید. آیا یک کلاس کم‌نمونه دائماً نادیده گرفته می‌شود؟ آیا خطا در یک بازهٔ اندازه بیشتر است؟ آیا برچسب‌ها ناسازگارند؟ تحلیل خطا باید به تصمیم مشخص برسد: جمع‌آوری دادهٔ بهتر، اصلاح تعریف، افزودن ویژگی یا تغییر آستانه. فهرست‌کردن چند اشتباه بدون اقدام، گزارش را طولانی می‌کند ولی مدل را بهتر نمی‌کند.

دادهٔ آزمون را برای اصلاح مکرر مثال‌های خاص مصرف نکنید. می‌توانید خطاهای اعتبارسنجی را برای توسعه بررسی کنید و آزمون نهایی را برای سنجش نگه دارید. اگر پس از مشاهدهٔ آزمون تغییر مهمی دادید، برای ارزیابی تازه به مجموعهٔ مستقل نیاز دارید. این صداقت روش‌شناختی از یک نمرهٔ بسیار زیبا مهم‌تر است و در کار تیمی امکان مقایسهٔ واقعی نسخه‌ها را فراهم می‌کند.

از دفترچه تا استفادهٔ واقعی

مدل تنها یک فایل وزن نیست؛ پیش‌پردازش، ترتیب ویژگی، نسخهٔ کتابخانه و تعریف خروجی هم بخشی از قراردادند. اگر استانداردساز را جداگانه فراموش کنید، پیش‌بینی محصول با آزمایش متفاوت می‌شود. ورودی نامعتبر، مقدار خارج از دامنه و دستهٔ جدید را در مرز سامانه بررسی کنید. این کنترل‌ها نباید جای آزمون عملکرد را بگیرند، اما از خطاهای سادهٔ یکپارچه‌سازی جلوگیری می‌کنند.

پس از انتشار، توزیع ورودی و کیفیت خروجی ممکن است تغییر کند. پایش باید با حفظ حریم خصوصی طراحی شود و در صورت امکان برچسب واقعی بعدی را برای سنجش دریافت کند. تغییر توزیع به‌تنهایی افت عملکرد را ثابت نمی‌کند، ولی علامت بررسی است. برای نسخهٔ قبلی و امکان بازگشت برنامه داشته باشید؛ بازآموزی خودکار بدون معیار پذیرش، راه مطمئنی برای نگهداری مدل نیست.

یک الگوی گزارش برای نخستین پروژه

گزارش را با سؤال قابل‌سنجش آغاز کنید: ورودی چیست، هدف چیست و خروجی در کدام تصمیم استفاده می‌شود؟ سپس بازهٔ داده و تعداد نمونه‌های هر کلاس را بنویسید. این توضیح کوتاه به مخاطب کمک می‌کند بفهمد مدل دقیقاً چه چیزی را آزموده است. عنوان کلی «سامانهٔ هوشمند» بدون دامنه، باعث می‌شود نتیجه بیش از اندازه تعمیم داده شود و انتظار استفاده‌کننده از توان واقعی فاصله بگیرد.

در بخش روش، تقسیم داده، تبدیل‌ها، مدل و خط مبنا را بیاورید. اگر فقط یک آزمایش انجام شده، آن را با ادعای مقایسهٔ جامع الگوریتم‌ها اشتباه نگیرید. اگر چند تنظیم امتحان شده، مسیر انتخاب را مشخص کنید. هدف ثبت همهٔ خروجی‌های موقت نیست؛ کافی است تصمیم‌های مؤثر بر نتیجه قابل‌ردیابی باشند. آزمون نهایی باید پس از تثبیت این تصمیم‌ها اجرا شود، نه در میان هر تغییر کوچک.

در بخش نتیجه، معیار را همراه تعداد نمونه و محدودیت بنویسید. چند نمونهٔ خطای نماینده اضافه کنید و اطلاعات شخصی را حذف کنید. سپس بگویید مدل برای چه استفاده‌ای مناسب نیست. یک مدل آزمایشی گل، پاسخ آمادهٔ تشخیص گونه در طبیعت نیست؛ شرایط ثبت و دامنهٔ نمونه‌ها متفاوت‌اند. محدودیت روشن از استفادهٔ نابجا جلوگیری می‌کند و به تعیین آزمایش بعدی کمک می‌کند.

گام بعدی را به یک فرضیه وصل کنید. مثلاً اگر خطا روی گروه کم‌نمونه متمرکز است، جمع‌آوری نمونهٔ مستقلِ همان گروه را پیشنهاد دهید. اگر ترتیب ویژگی مشکل دارد، قرارداد نرم‌افزار را اصلاح کنید. افزودن مدل بزرگ‌تر بدون تشخیص علت، ممکن است فقط هزینه را بالا ببرد. این الگو، یادگیری ماشین را از جست‌وجوی عدد بهتر به چرخهٔ مسئله، آزمایش و تصمیم تبدیل می‌کند.

تمرین پایانی و پرسش‌های متداول

یک مسئلهٔ کوچک را با یک خط مبنا و دو مدل حل کنید. تقسیم داده را ثابت نگه دارید و معیار را پیش از مقایسه انتخاب کنید. گزارشی شامل تعریف نمونه، ویژگی‌ها، محدودیت‌ها و سه نوع خطا بنویسید. سپس توضیح دهید کدام مدل را با توجه به هزینه و نیاز انتخاب می‌کنید. انتخاب نهایی لازم نیست بالاترین نمره را داشته باشد، اگر تفاوت کیفیت ناچیز و هزینه بسیار متفاوت است.

آیا بدون ریاضی می‌توان مدل ساخت؟

می‌توانید کتابخانه را اجرا کنید، اما برای تفسیر معیار، نمونه‌گیری و رفتار آموزش به پایهٔ ریاضی نیاز دارید. لازم نیست همهٔ مباحث پیشرفته را ابتدا تمام کنید. آمار، احتمال و جبر خطی مقدماتی را همراه پروژه تمرین کنید و هر ادعا را در حد شواهد نگه دارید. اجرای موفق کد با اعتبار علمی یا آمادگی محصول یکسان نیست.

چه زمانی سراغ یادگیری عمیق برویم؟

وقتی مسئله، داده و هزینهٔ آن توجیه داشته باشد، به‌ویژه در حوزه‌هایی مانند تصویر و متن. برای بسیاری از جدول‌های کوچک، مدل کلاسیک نقطهٔ شروع مناسبی است. پیش از رفتن به شبکهٔ عصبی، راهنمای ارزیابی مدل را بخوانید؛ اشتباه در تقسیم داده با تغییر خانوادهٔ الگوریتم برطرف نمی‌شود و حتی می‌تواند پنهان‌تر شود.

منابع و مطالعهٔ بیشتر

برای بررسی جزئیات و ادامهٔ مطالعه؛ متن این راهنما مستقلاً برای نوونتیکس نوشته شده است.