یادگیری ماشین چیست؟ راهنمای کامل Machine Learning با مثال عملی

یادگیری ماشین یا Machine Learning یکی از مهم‌ترین شاخه‌های هوش مصنوعی است که به سیستم‌ها امکان می‌دهد با تحلیل داده‌ها، الگوها را یاد بگیرند و روی داده‌های جدید پیش‌بینی انجام دهند.

Share
یادگیری ماشین چیست و چگونه با تحلیل داده‌ها پیش‌بینی انجام می‌دهد

یادگیری ماشین یا Machine Learning روشی برای ساخت سیستم‌هایی است که به‌جای دریافت تمام قوانین به‌صورت دستی، الگوها را از داده‌ها یاد می‌گیرند.

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

امروزه از یادگیری ماشین در موتورهای جست‌وجو، فروشگاه‌های اینترنتی، سیستم‌های پیشنهاد محصول، تحلیل فروش، تشخیص تصویر، پیش‌بینی تقاضا، پردازش زبان، مدل‌های مولد و بسیاری از نرم‌افزارهای هوشمند استفاده می‌شود.

در این مقاله علاوه بر مفاهیم اصلی Machine Learning، یک مدل پیش‌بینی ریزش مشتری را با پایتون می‌سازیم و سپس نشان می‌دهیم چگونه می‌توان یادگیری ماشین سنتی را با مدل‌های هوش مصنوعی در دسترس از طریق API درواره ترکیب کرد.

یادگیری ماشین چیست؟

یادگیری ماشین زیرمجموعه‌ای از هوش مصنوعی است که روی الگوریتم‌های قادر به یادگیری الگوهای داده و تعمیم آن‌ها به داده‌های جدید تمرکز دارد.

در برنامه‌نویسی سنتی، توسعه‌دهنده قوانین را مستقیماً در کد می‌نویسد:

داده + قوانین نوشته‌شده توسط برنامه‌نویس → نتیجه

در یادگیری ماشین، نمونه‌های گذشته در اختیار الگوریتم قرار می‌گیرند تا مدل بتواند رابطه میان ورودی و نتیجه را پیدا کند:

داده‌های گذشته + پاسخ‌های صحیح → آموزش مدل
مدل آموزش‌دیده + داده جدید → پیش‌بینی

هدف اصلی فقط یاد گرفتن داده‌های آموزشی نیست. مدل باید بتواند روی نمونه‌هایی که قبلاً ندیده است نیز نتیجه قابل‌قبولی تولید کند. به این توانایی «تعمیم» یا Generalization گفته می‌شود.

IBM یادگیری ماشین را بخشی از هوش مصنوعی تعریف می‌کند که الگوریتم‌های آن الگوهای داده آموزشی را یاد می‌گیرند و روی داده‌های جدید استنتاج انجام می‌دهند. IBM: What is Machine Learning?

یک مثال ساده از یادگیری ماشین

فرض کنید می‌خواهیم قیمت یک خانه را تخمین بزنیم. اطلاعات تاریخی زیر را داریم:

متراژتعداد اتاقسن بنامنطقهقیمت
۸۰ متر۲۱۰ سالمنطقه A۶ میلیارد
۱۲۰ متر۳۵ سالمنطقه A۹ میلیارد
۹۰ متر۲۱۵ سالمنطقه B۵ میلیارد
۱۵۰ متر۴۲ سالمنطقه A۱۳ میلیارد

در برنامه‌نویسی سنتی باید فرمول دقیقی برای تأثیر متراژ، تعداد اتاق، سن بنا و منطقه بنویسیم. در یادگیری ماشین، الگوریتم با مشاهده معاملات قبلی تلاش می‌کند ارتباط این ویژگی‌ها با قیمت را یاد بگیرد.

پس از آموزش، می‌توان مشخصات خانه‌ای جدید را به مدل داد و قیمت تقریبی آن را دریافت کرد.

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

تفاوت هوش مصنوعی، یادگیری ماشین و یادگیری عمیق

این اصطلاحات به هم مرتبط‌اند، اما مترادف نیستند.

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

رابطه این مفاهیم را می‌توان این‌گونه نمایش داد:

هوش مصنوعی
└── یادگیری ماشین
    └── یادگیری عمیق
        └── بسیاری از مدل‌های هوش مصنوعی مولد

همه سیستم‌های یادگیری ماشین در حوزه هوش مصنوعی قرار می‌گیرند؛ اما هر سیستم هوش مصنوعی الزاماً از یادگیری ماشین استفاده نمی‌کند. یک سامانه مبتنی بر مجموعه‌ای از قواعد ثابت نیز می‌تواند نوعی سیستم هوشمند محسوب شود.

یادگیری ماشین چگونه کار می‌کند؟

یک پروژه Machine Learning معمولاً از مراحل زیر تشکیل می‌شود.

۱. تعریف مسئله

قبل از انتخاب الگوریتم باید مشخص کنیم مدل قرار است چه مسئله‌ای را حل کند.

نمونه هدف‌های روشن عبارت‌اند از:

  • پیش‌بینی میزان فروش هفته آینده
  • تشخیص احتمال ریزش مشتری
  • دسته‌بندی پیام‌های پشتیبانی
  • شناسایی تراکنش‌های غیرعادی
  • پیشنهاد محصول مرتبط
  • پیش‌بینی مدت تحویل سفارش

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

۲. جمع‌آوری داده

مدل از نمونه‌هایی که در اختیار آن قرار می‌گیرند یاد می‌گیرد. داده‌ها ممکن است از منابع زیر جمع‌آوری شوند:

  • پایگاه داده محصول
  • نرم‌افزار CRM
  • سامانه فروش
  • حسگرها
  • فایل‌های CSV و Excel
  • رخدادهای اپلیکیشن
  • تصاویر
  • پیام‌های کاربران
  • اسناد و گزارش‌ها
  • سرویس‌های خارجی

داده بیشتر همیشه به معنای مدل بهتر نیست. مرتبط بودن، صحت و پوشش داده اهمیت بیشتری دارد.

۳. پاک‌سازی داده

داده‌های واقعی معمولاً آماده آموزش نیستند. مشکلات متداول عبارت‌اند از:

  • مقادیر خالی
  • رکوردهای تکراری
  • قالب‌های متفاوت تاریخ
  • خطاهای تایپی
  • داده‌های خارج از محدوده
  • واحدهای اندازه‌گیری متفاوت
  • برچسب‌های ناسازگار
  • ستون‌های غیرضروری

در بسیاری از پروژه‌ها، آماده‌سازی داده بیشتر از آموزش مدل زمان می‌برد.

۴. انتخاب ویژگی‌ها

ویژگی یا Feature اطلاعاتی است که مدل برای پیش‌بینی استفاده می‌کند.

برای پیش‌بینی ریزش مشتری می‌توان از این ویژگی‌ها استفاده کرد:

  • تعداد روزهای عضویت
  • تعداد خریدها
  • مبلغ کل خرید
  • فاصله از آخرین خرید
  • تعداد تماس با پشتیبانی
  • نوع اشتراک
  • میزان استفاده از محصول

نام و شماره تلفن مشتری معمولاً ویژگی مناسبی نیستند؛ زیرا رابطه معناداری با رفتار آینده ندارند و ممکن است باعث یادگیری الگوهای اشتباه شوند.

۵. تقسیم داده

معمولاً داده به دو یا سه بخش تقسیم می‌شود:

  • داده آموزش یا Training Data
  • داده اعتبارسنجی یا Validation Data
  • داده آزمون یا Test Data

مدل با داده آموزش یاد می‌گیرد و با داده‌ای که در فرایند آموزش ندیده است ارزیابی می‌شود.

اگر مدل را با همان داده آموزشی ارزیابی کنیم، ممکن است نتیجه بسیار خوبی نشان دهد؛ درحالی‌که روی کاربران یا داده‌های جدید عملکرد ضعیفی دارد.

۶. انتخاب و آموزش الگوریتم

الگوریتم با بررسی نمونه‌ها، پارامترهای مدل را تنظیم می‌کند تا خطای پیش‌بینی کاهش یابد.

الگوریتم مناسب به این عوامل بستگی دارد:

  • نوع مسئله
  • تعداد نمونه‌ها
  • تعداد ویژگی‌ها
  • ساختار داده
  • نیاز به توضیح‌پذیری
  • محدودیت پردازشی
  • سرعت موردنیاز
  • معیار ارزیابی

۷. ارزیابی مدل

ارزیابی باید روی داده‌ای انجام شود که مدل در زمان آموزش ندیده است.

معیار ارزیابی برای همه پروژه‌ها یکسان نیست. برای مثال، دقت ۹۵ درصد ممکن است خوب به نظر برسد، اما اگر فقط یک درصد تراکنش‌ها غیرعادی باشند، مدلی که همیشه پاسخ «عادی» می‌دهد نیز به دقت ۹۹ درصد می‌رسد و عملاً بی‌فایده است.

۸. استقرار مدل

پس از ارزیابی، مدل می‌تواند در یک API، اپلیکیشن، سامانه گزارش‌گیری یا فرایند خودکار قرار بگیرد.

۹. پایش و آموزش مجدد

رفتار کاربران، قیمت‌ها، بازار و نوع داده‌ها در طول زمان تغییر می‌کنند. مدلی که امروز خوب کار می‌کند ممکن است چند ماه بعد افت کیفیت داشته باشد.

به همین دلیل باید موارد زیر پایش شوند:

  • کیفیت پیش‌بینی
  • تغییر توزیع داده
  • زمان پاسخ
  • میزان خطا
  • نرخ استفاده
  • تأثیر تجاری
  • نیاز به آموزش مجدد

انواع یادگیری ماشین

یادگیری نظارت‌شده

در یادگیری نظارت‌شده یا Supervised Learning، داده آموزشی دارای پاسخ صحیح است.

برای مثال، در کنار مشخصات هر مشتری مشخص شده است که آیا اشتراک خود را لغو کرده یا خیر.

دو مسئله اصلی یادگیری نظارت‌شده عبارت‌اند از:

دسته‌بندی

در دسته‌بندی، خروجی یکی از چند گروه مشخص است.

مثال‌ها:

  • پیام تبلیغاتی یا عادی
  • مشتری در معرض ریزش یا فعال
  • درخواست فروش، پشتیبانی یا مالی
  • تصویر گربه، سگ یا پرنده
  • تراکنش عادی یا غیرعادی

رگرسیون

در رگرسیون، خروجی یک مقدار عددی پیوسته است.

مثال‌ها:

  • قیمت خانه
  • میزان فروش
  • مدت تحویل
  • مصرف انرژی
  • تعداد سفارش آینده

یادگیری بدون نظارت

در یادگیری بدون نظارت یا Unsupervised Learning، پاسخ صحیح از قبل در داده وجود ندارد. الگوریتم تلاش می‌کند ساختارها و الگوهای پنهان را پیدا کند.

خوشه‌بندی

در خوشه‌بندی، نمونه‌های مشابه در گروه‌های مختلف قرار می‌گیرند.

برای مثال، مشتریان یک فروشگاه ممکن است بر اساس دفعات خرید، مبلغ خرید و نوع محصول به گروه‌های زیر تقسیم شوند:

  • مشتریان وفادار
  • مشتریان کم‌فعالیت
  • خریداران مناسبتی
  • مشتریان حساس به تخفیف
  • مشتریان با ارزش بالا

کاهش ابعاد

بعضی مجموعه‌داده‌ها صدها یا هزاران ویژگی دارند. الگوریتم‌های کاهش ابعاد تلاش می‌کنند اطلاعات مهم را با تعداد کمتری متغیر نمایش دهند.

این روش‌ها برای مصورسازی، کاهش حجم داده و آماده‌سازی ورودی مدل استفاده می‌شوند.

کشف ناهنجاری

در کشف ناهنجاری، الگوریتم نمونه‌هایی را پیدا می‌کند که رفتار آن‌ها با الگوی عمومی داده متفاوت است.

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

یادگیری نیمه‌نظارت‌شده

در بسیاری از پروژه‌ها، مقدار زیادی داده بدون برچسب و مقدار کمی داده برچسب‌گذاری‌شده وجود دارد.

یادگیری نیمه‌نظارت‌شده از هر دو گروه استفاده می‌کند. این روش زمانی مفید است که جمع‌آوری داده آسان اما برچسب‌گذاری آن گران یا زمان‌بر باشد.

یادگیری خودنظارت‌شده

در Self-Supervised Learning، سیگنال آموزشی از خود داده ساخته می‌شود.

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

یادگیری تقویتی

در Reinforcement Learning، یک عامل در محیط عمل می‌کند و بر اساس نتیجه اقدام خود پاداش یا جریمه می‌گیرد.

مثال‌ها:

  • کنترل ربات
  • بازی‌های رایانه‌ای
  • بهینه‌سازی تصمیم‌های متوالی
  • مدیریت منابع
  • انتخاب اقدام بعدی در یک فرایند

عامل با آزمون‌وخطا تلاش می‌کند سیاستی پیدا کند که مجموع پاداش بلندمدت را افزایش دهد.

الگوریتم‌های پرکاربرد یادگیری ماشین

رگرسیون خطی

برای پیش‌بینی مقادیر عددی و بررسی رابطه میان متغیرها استفاده می‌شود. سادگی و توضیح‌پذیری از مزایای آن است.

رگرسیون لجستیک

با وجود نام آن، بیشتر برای دسته‌بندی استفاده می‌شود. برای مثال، احتمال ریزش مشتری را بین صفر و یک تخمین می‌زند.

درخت تصمیم

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

جنگل تصادفی

Random Forest خروجی چندین درخت تصمیم را ترکیب می‌کند و معمولاً نسبت به یک درخت منفرد عملکرد پایدار‌تری دارد.

XGBoost و LightGBM

این الگوریتم‌ها برای بسیاری از مسائل داده‌های جدولی عملکرد قدرتمندی دارند و در پیش‌بینی فروش، امتیازدهی مشتری و طبقه‌بندی استفاده می‌شوند.

ماشین بردار پشتیبان

SVM تلاش می‌کند مرز مناسبی میان گروه‌های مختلف پیدا کند. این الگوریتم برای بعضی مجموعه‌داده‌های کوچک و متوسط مناسب است.

K نزدیک‌ترین همسایه

KNN خروجی نمونه جدید را بر اساس نزدیک‌ترین نمونه‌های قبلی تعیین می‌کند. این روش ساده است، اما روی داده‌های بزرگ می‌تواند کند شود.

K-Means

یکی از الگوریتم‌های معروف خوشه‌بندی است که داده‌ها را به تعداد مشخصی خوشه تقسیم می‌کند.

شبکه عصبی

شبکه‌های عصبی از لایه‌هایی شامل واحدهای محاسباتی تشکیل می‌شوند. شبکه‌های بزرگ و چندلایه پایه بسیاری از سامانه‌های یادگیری عمیق، پردازش تصویر، صوت و مدل‌های زبانی هستند.

تفاوت پارامتر و هایپرپارامتر

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

هایپرپارامترها پیش از آموزش یا در فرایند تنظیم مدل انتخاب می‌شوند. برای مثال:

  • عمق درخت
  • تعداد درخت‌ها
  • نرخ یادگیری
  • تعداد خوشه‌ها
  • اندازه Batch
  • تعداد دوره‌های آموزش

انتخاب نادرست هایپرپارامترها می‌تواند باعث ضعف مدل یا بیش‌برازش شود.

بیش‌برازش و کم‌برازش چیست؟

بیش‌برازش

Overfitting زمانی رخ می‌دهد که مدل داده آموزشی را بسیار خوب یاد می‌گیرد، اما روی داده‌های جدید ضعیف عمل می‌کند.

نشانه معمول آن:

عملکرد بسیار خوب روی داده آموزش
عملکرد ضعیف روی داده آزمون

راهکارهای کاهش بیش‌برازش عبارت‌اند از:

  • جمع‌آوری داده بیشتر
  • ساده‌تر کردن مدل
  • انتخاب ویژگی‌های بهتر
  • استفاده از Regularization
  • اعتبارسنجی متقابل
  • توقف زودهنگام
  • کاهش عمق درخت

کم‌برازش

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

در این حالت ممکن است به ویژگی‌های بهتر، الگوریتم مناسب‌تر یا ظرفیت بیشتر مدل نیاز داشته باشیم.

معیارهای ارزیابی مدل

Accuracy

نسبت پیش‌بینی‌های صحیح به کل پیش‌بینی‌ها است.

Accuracy = پیش‌بینی‌های صحیح ÷ کل نمونه‌ها

Accuracy برای داده‌های نامتوازن همیشه معیار مناسبی نیست.

Precision

نشان می‌دهد از میان نمونه‌هایی که مدل مثبت تشخیص داده، چه تعداد واقعاً مثبت بوده‌اند.

این معیار زمانی مهم است که هشدار اشتباه هزینه بالایی داشته باشد.

Recall

نشان می‌دهد مدل چه سهمی از نمونه‌های مثبت واقعی را پیدا کرده است.

Recall زمانی اهمیت بیشتری دارد که از دست دادن یک نمونه مثبت پرهزینه باشد.

F1 Score

میانگین هارمونیک Precision و Recall است و برای ایجاد تعادل میان این دو معیار استفاده می‌شود.

MAE و RMSE

این معیارها برای مسائل رگرسیون استفاده می‌شوند و میزان فاصله پیش‌بینی مدل از مقدار واقعی را نشان می‌دهند.

ROC-AUC

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

معیار مناسب باید بر اساس هدف کسب‌وکار انتخاب شود، نه صرفاً عددی که نتیجه بهتری نشان می‌دهد.

آموزش عملی یادگیری ماشین با پایتون

در این مثال، مدلی می‌سازیم که احتمال ریزش مشتری را پیش‌بینی کند.

فرض کنید فایل customers.csv دارای ستون‌های زیر است:

ستونتوضیح
tenure_daysمدت عضویت مشتری
orders_countتعداد سفارش‌ها
total_spendمجموع مبلغ خرید
days_since_last_orderفاصله از آخرین خرید
support_ticketsتعداد درخواست‌های پشتیبانی
plan_typeنوع اشتراک
churnedآیا مشتری ریزش کرده است؟

مقدار ستون churned باید صفر یا یک باشد.

نصب کتابخانه‌ها

pip install pandas scikit-learn joblib

Scikit-learn یک کتابخانه متن‌باز برای یادگیری نظارت‌شده، یادگیری بدون نظارت، پیش‌پردازش، انتخاب مدل و ارزیابی است. راهنمای رسمی Scikit-learn

خواندن و تقسیم داده

import pandas as pd

from sklearn.model_selection import train_test_split


data = pd.read_csv("customers.csv")

features = [
    "tenure_days",
    "orders_count",
    "total_spend",
    "days_since_last_order",
    "support_tickets",
    "plan_type",
]

X = data[features]
y = data["churned"]

X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.2,
    random_state=42,
    stratify=y,
)

گزینه stratify=y کمک می‌کند نسبت مشتریان ریزش‌کرده و فعال در داده آموزش و آزمون مشابه باقی بماند.

ساخت فرایند پیش‌پردازش

ستون‌های عددی و دسته‌ای باید به شکل متفاوتی پردازش شوند.

from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler


numeric_features = [
    "tenure_days",
    "orders_count",
    "total_spend",
    "days_since_last_order",
    "support_tickets",
]

categorical_features = ["plan_type"]

numeric_pipeline = Pipeline(
    steps=[
        ("imputer", SimpleImputer(strategy="median")),
        ("scaler", StandardScaler()),
    ]
)

categorical_pipeline = Pipeline(
    steps=[
        (
            "imputer",
            SimpleImputer(strategy="most_frequent"),
        ),
        (
            "encoder",
            OneHotEncoder(handle_unknown="ignore"),
        ),
    ]
)

preprocessor = ColumnTransformer(
    transformers=[
        ("numeric", numeric_pipeline, numeric_features),
        (
            "categorical",
            categorical_pipeline,
            categorical_features,
        ),
    ]
)

استفاده از Pipeline احتمال اجرای متفاوت پیش‌پردازش در آموزش و پیش‌بینی را کاهش می‌دهد. مستندات Scikit-learn نیز استفاده از Pipeline را برای جلوگیری از نشت اطلاعات میان داده آموزش و آزمون توصیه می‌کند.

آموزش مدل

from sklearn.linear_model import LogisticRegression


model = Pipeline(
    steps=[
        ("preprocessor", preprocessor),
        (
            "classifier",
            LogisticRegression(
                max_iter=1000,
                class_weight="balanced",
            ),
        ),
    ]
)

model.fit(X_train, y_train)

گزینه class_weight="balanced" می‌تواند در شرایطی که تعداد مشتریان ریزش‌کرده کمتر از مشتریان فعال است مفید باشد؛ اما اثر آن باید با ارزیابی واقعی بررسی شود.

ارزیابی مدل

from sklearn.metrics import (
    classification_report,
    confusion_matrix,
    roc_auc_score,
)


predictions = model.predict(X_test)
probabilities = model.predict_proba(X_test)[:, 1]

print(confusion_matrix(y_test, predictions))
print(classification_report(y_test, predictions))
print(
    "ROC-AUC:",
    roc_auc_score(y_test, probabilities),
)

گزارش طبقه‌بندی شامل Precision، Recall و F1 Score است.

اگر هدف تیم فروش شناسایی بیشترین تعداد مشتری در معرض ریزش باشد، Recall اهمیت زیادی پیدا می‌کند. اگر تماس غیرضروری با مشتریان هزینه بالایی داشته باشد، Precision نیز مهم خواهد بود.

پیش‌بینی برای مشتری جدید

new_customer = pd.DataFrame(
    [
        {
            "tenure_days": 210,
            "orders_count": 4,
            "total_spend": 3_800_000,
            "days_since_last_order": 75,
            "support_tickets": 3,
            "plan_type": "basic",
        }
    ]
)

churn_probability = model.predict_proba(
    new_customer
)[0, 1]

print(
    f"احتمال ریزش: {churn_probability:.2%}"
)

این احتمال باید همراه با سیاست تجاری استفاده شود. برای مثال، تیم می‌تواند مشتریانی با احتمال بیشتر از ۷۰ درصد را برای بررسی انسانی انتخاب کند.

ذخیره مدل

import joblib


joblib.dump(
    model,
    "customer_churn_model.joblib",
)

برای بارگذاری دوباره مدل:

loaded_model = joblib.load(
    "customer_churn_model.joblib"
)

prediction = loaded_model.predict_proba(
    new_customer
)[0, 1]

هنگام بارگذاری فایل مدل فقط از فایل‌های معتبر استفاده کنید؛ زیرا فایل‌های سریال‌شده ناشناس می‌توانند خطرناک باشند.

استفاده از مدل در یک API

برای استفاده از مدل در وب‌سایت یا CRM می‌توان آن را پشت یک API سمت سرور قرار داد.

نمونه ساده با FastAPI:

pip install fastapi uvicorn pandas joblib
import joblib
import pandas as pd

from fastapi import FastAPI
from pydantic import BaseModel


app = FastAPI()
model = joblib.load(
    "customer_churn_model.joblib"
)


class CustomerInput(BaseModel):
    tenure_days: int
    orders_count: int
    total_spend: float
    days_since_last_order: int
    support_tickets: int
    plan_type: str


@app.post("/predict-churn")
def predict_churn(customer: CustomerInput):
    frame = pd.DataFrame(
        [customer.model_dump()]
    )

    probability = model.predict_proba(
        frame
    )[0, 1]

    return {
        "churn_probability": round(
            float(probability),
            4,
        ),
        "needs_review": probability >= 0.7,
    }

اجرای API:

uvicorn main:app --reload

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

تفاوت ساخت مدل یادگیری ماشین با استفاده از API هوش مصنوعی

برای هر قابلیت هوشمند لازم نیست مدلی را از ابتدا آموزش دهید.

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

برای مثال، یک فروشگاه می‌تواند:

  1. با مدل اختصاصی احتمال ریزش مشتری را محاسبه کند.
  2. سوابق خرید و نتیجه مدل را به یک مدل زبانی بدهد.
  3. از مدل زبانی بخواهد دلایل را برای کارشناس خلاصه کند.
  4. یک پیشنهاد ارتباط با مشتری آماده کند.
  5. اقدام نهایی را پس از بررسی کارشناس انجام دهد.

در این معماری، مدل یادگیری ماشین مسئول پیش‌بینی عددی و مدل زبانی مسئول تحلیل و تولید متن است.

ترکیب Machine Learning با API درواره

درواره امکان دسترسی به مدل‌های مختلف هوش مصنوعی را از طریق یک API سازگار با OpenAI فراهم می‌کند.

آدرس پایه API عبارت است از:

https://api.darvareh.ir/v1

ابتدا کتابخانه را نصب کنید:

pip install openai

متغیرهای محیطی را تنظیم کنید:

export DARVAREH_API_KEY="YOUR_API_KEY"
export DARVAREH_MODEL="YOUR_MODEL_ID"

سپس نتیجه مدل ریزش را برای تهیه پیشنهاد به مدل زبانی ارسال کنید:

import json
import os

from openai import OpenAI


client = OpenAI(
    api_key=os.environ["DARVAREH_API_KEY"],
    base_url="https://api.darvareh.ir/v1",
)

MODEL_ID = os.environ["DARVAREH_MODEL"]


def create_retention_suggestion(
    customer: dict,
    churn_probability: float,
) -> dict:
    prompt = f"""
برای کارشناس ارتباط با مشتری یک تحلیل کوتاه بساز.

اطلاعات مشتری:
{json.dumps(customer, ensure_ascii=False)}

احتمال ریزش محاسبه‌شده توسط مدل:
{churn_probability:.2%}

قواعد:
- احتمال ریزش را یک واقعیت قطعی معرفی نکن.
- فقط از اطلاعات ارائه‌شده استفاده کن.
- درباره دلیل ریزش ادعای قطعی نساز.
- یک اقدام پیشنهادی کم‌ریسک ارائه کن.
- یک پیش‌نویس پیام محترمانه فارسی بنویس.
- خروجی فقط JSON معتبر باشد.

ساختار خروجی:
{{
  "risk_level": "low | medium | high",
  "summary": "خلاصه وضعیت",
  "possible_factors": ["عامل احتمالی"],
  "suggested_action": "اقدام پیشنهادی",
  "message_draft": "پیش‌نویس پیام"
}}
"""

    response = client.chat.completions.create(
        model=MODEL_ID,
        temperature=0.2,
        messages=[
            {
                "role": "system",
                "content": (
                    "شما دستیار تحلیل ارتباط با "
                    "مشتری هستید و فقط JSON معتبر "
                    "تولید می‌کنید."
                ),
            },
            {
                "role": "user",
                "content": prompt,
            },
        ],
    )

    content = response.choices[0].message.content

    if not content:
        raise ValueError(
            "پاسخی از مدل دریافت نشد."
        )

    return json.loads(content)

فراخوانی تابع:

customer_data = {
    "tenure_days": 210,
    "orders_count": 4,
    "total_spend": 3_800_000,
    "days_since_last_order": 75,
    "support_tickets": 3,
    "plan_type": "basic",
}

suggestion = create_retention_suggestion(
    customer=customer_data,
    churn_probability=0.78,
)

print(
    json.dumps(
        suggestion,
        ensure_ascii=False,
        indent=2,
    )
)

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

چه زمانی مدل اختصاصی بسازیم؟

ساخت مدل اختصاصی زمانی منطقی است که:

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

نمونه مناسب، پیش‌بینی تقاضا بر اساس تاریخچه فروش همان شرکت است.

چه زمانی از مدل آماده و API استفاده کنیم؟

استفاده از مدل آماده معمولاً زمانی بهتر است که:

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

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

برای شروع می‌توانید مستندات API درواره را بررسی کنید.

ابزارهای پرکاربرد یادگیری ماشین

Python

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

NumPy

برای آرایه‌های عددی و محاسبات برداری استفاده می‌شود.

Pandas

برای خواندن، پاک‌سازی، ترکیب و تحلیل داده‌های جدولی کاربرد دارد.

Scikit-learn

برای الگوریتم‌های کلاسیک، پیش‌پردازش، Pipeline، ارزیابی و انتخاب مدل مناسب است.

XGBoost، LightGBM و CatBoost

برای مسائل مبتنی بر داده جدولی و الگوریتم‌های تقویتی درختی استفاده می‌شوند.

TensorFlow و Keras

برای ساخت و آموزش شبکه‌های عصبی و پروژه‌های یادگیری عمیق کاربرد دارند.

PyTorch

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

Jupyter Notebook

برای اجرای مرحله‌ای کد، تحلیل داده و مستندسازی آزمایش‌ها استفاده می‌شود.

MLflow

برای ثبت آزمایش‌ها، پارامترها، معیارها و نسخه مدل‌ها کاربرد دارد.

FastAPI

برای قراردادن مدل پشت یک API پایتون سریع و ساختاریافته مناسب است.

کاربردهای یادگیری ماشین در کسب‌وکار

فروشگاه اینترنتی

  • پیشنهاد محصول
  • پیش‌بینی تقاضا
  • دسته‌بندی کالا
  • پیش‌بینی ریزش مشتری
  • تحلیل رفتار خرید
  • بهینه‌سازی موجودی

فروش و بازاریابی

  • امتیازدهی سرنخ‌ها
  • بخش‌بندی مشتریان
  • پیش‌بینی احتمال خرید
  • انتخاب زمان مناسب ارتباط
  • تحلیل عملکرد کمپین

پشتیبانی مشتری

  • دسته‌بندی تیکت
  • پیش‌بینی اولویت درخواست
  • مسیریابی پیام
  • تحلیل رضایت
  • پیشنهاد پاسخ

تولید و نگهداری

  • پیش‌بینی خرابی
  • کنترل کیفیت
  • تشخیص ناهنجاری حسگرها
  • بهینه‌سازی مصرف انرژی
  • برنامه‌ریزی تعمیرات

نرم‌افزارهای سازمانی

  • پیش‌بینی تأخیر پروژه
  • تحلیل عملکرد فرایند
  • پیشنهاد اقدام بعدی
  • اولویت‌بندی وظایف
  • استخراج الگو از داده‌های عملیاتی

چالش‌های یادگیری ماشین

کیفیت پایین داده

مدل نمی‌تواند ضعف جدی داده را جبران کند. داده ناقص، اشتباه یا جانبدارانه خروجی نامطمئن ایجاد می‌کند.

نبود معیار موفقیت

ممکن است مدل از نظر فنی دقیق باشد، اما هیچ ارزش تجاری ایجاد نکند.

نشت داده

Data Leakage زمانی رخ می‌دهد که اطلاعاتی از داده آزمون یا آینده به فرایند آموزش وارد شود. نتیجه ارزیابی در این حالت بیش‌ازحد خوش‌بینانه خواهد بود.

تغییر رفتار داده

ارتباطی که مدل در گذشته یاد گرفته ممکن است در آینده تغییر کند. به این وضعیت Data Drift یا Concept Drift گفته می‌شود.

توضیح‌پذیری

در بعضی کاربردها باید مشخص باشد چرا مدل به یک نتیجه رسیده است. الگوریتم ساده‌تر با عملکرد کمی پایین‌تر ممکن است برای چنین کاربردی انتخاب مناسب‌تری باشد.

هزینه نگهداری

مدل پس از استقرار به پایش، نسخه‌بندی، آموزش مجدد و کنترل کیفیت نیاز دارد.

مسیر پیشنهادی یادگیری Machine Learning

مرحله اول: پایتون

مفاهیم پایه پایتون، توابع، ساختار داده، فایل و مدیریت محیط مجازی را یاد بگیرید.

مرحله دوم: تحلیل داده

با NumPy، Pandas و مصورسازی داده آشنا شوید.

مرحله سوم: آمار و ریاضی پایه

موضوعات مهم عبارت‌اند از:

  • میانگین و واریانس
  • احتمال
  • توزیع‌ها
  • همبستگی
  • بردار و ماتریس
  • مشتق
  • تابع هزینه

برای شروع لازم نیست تمام ریاضیات پیشرفته را از ابتدا کامل یاد بگیرید؛ اما باید مفهوم محاسبات مدل را به‌تدریج درک کنید.

مرحله چهارم: Scikit-learn

مسائل رگرسیون، دسته‌بندی، خوشه‌بندی، پیش‌پردازش و ارزیابی را با پروژه‌های کوچک تمرین کنید.

مرحله پنجم: پروژه واقعی

یک مسئله محدود با داده واقعی انتخاب کنید و تمام مسیر جمع‌آوری داده تا استقرار مدل را انجام دهید.

مرحله ششم: یادگیری عمیق

پس از تسلط بر مفاهیم پایه می‌توانید وارد شبکه‌های عصبی، PyTorch یا TensorFlow شوید.

مرحله هفتم: استقرار و MLOps

مدل را به API تبدیل کنید و نسخه‌بندی، پایش و آموزش مجدد را یاد بگیرید.

اشتباهات رایج در پروژه‌های Machine Learning

شروع با الگوریتم قبل از تعریف مسئله

ابتدا باید تصمیم مشخصی وجود داشته باشد که خروجی مدل قرار است آن را بهتر کند.

تمرکز فقط روی Accuracy

معیار فنی باید با هزینه خطا و هدف کسب‌وکار هماهنگ باشد.

استفاده از تمام ستون‌ها

وجود یک ستون در دیتابیس به معنای مناسب بودن آن برای آموزش نیست.

ارزیابی روی داده آموزش

این کار توانایی مدل روی داده‌های جدید را نشان نمی‌دهد.

نادیده گرفتن مدل ساده

یک رگرسیون لجستیک توضیح‌پذیر ممکن است از یک مدل پیچیده برای کاربرد واقعی مناسب‌تر باشد.

استفاده مستقیم از پیش‌بینی برای تصمیم حساس

بهتر است مدل ابتدا به‌عنوان ابزار کمکی استفاده شود و قواعد قطعی برنامه و کنترل انسانی بر آن اولویت داشته باشند.

نداشتن خط مبنا

قبل از ساخت مدل پیچیده باید نتیجه یک روش ساده را اندازه‌گیری کنید. مدل جدید باید نسبت به این خط مبنا بهبود معناداری ایجاد کند.

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

یادگیری ماشین به زبان ساده چیست؟

یادگیری ماشین روشی است که در آن کامپیوتر با مشاهده نمونه‌ها و داده‌های گذشته، الگوها را یاد می‌گیرد و از آن‌ها برای پیش‌بینی یا دسته‌بندی داده‌های جدید استفاده می‌کند.

آیا یادگیری ماشین همان هوش مصنوعی است؟

خیر. یادگیری ماشین یکی از زیرشاخه‌های هوش مصنوعی است. هوش مصنوعی مفهوم گسترده‌تری دارد.

تفاوت یادگیری ماشین و دیپ لرنینگ چیست؟

یادگیری عمیق زیرمجموعه یادگیری ماشین است و عمدتاً از شبکه‌های عصبی چندلایه استفاده می‌کند. روش‌های کلاسیک یادگیری ماشین معمولاً روی داده‌های جدولی کوچک‌تر و متوسط نیز عملکرد مناسبی دارند.

آیا برای یادگیری ماشین باید ریاضی قوی داشته باشیم؟

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

بهترین زبان برنامه‌نویسی برای Machine Learning چیست؟

پایتون به دلیل کتابخانه‌های گسترده و منابع آموزشی فراوان، انتخاب رایج و مناسبی است. زبان‌های R، Julia، Java و C++ نیز در بعضی پروژه‌ها استفاده می‌شوند.

آیا بدون برنامه‌نویسی می‌توان از یادگیری ماشین استفاده کرد؟

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

آیا برای هر پروژه باید مدل را از ابتدا آموزش دهیم؟

خیر. برای بسیاری از کاربردهای متن، تصویر، صوت و ویدیو می‌توان از مدل‌های آماده از طریق API استفاده کرد. مدل اختصاصی بیشتر برای مسائل وابسته به داده‌های خاص کسب‌وکار ساخته می‌شود.

آیا مدل‌های زبانی نوعی یادگیری ماشین هستند؟

بله. مدل‌های زبانی بزرگ معمولاً بر پایه یادگیری عمیق و معماری Transformer ساخته می‌شوند و در چند مرحله روی حجم زیادی از داده آموزش می‌بینند.

API درواره چه ارتباطی با Machine Learning دارد؟

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

جمع‌بندی

یادگیری ماشین روشی برای یادگیری الگوها از داده و استفاده از آن‌ها برای پیش‌بینی، دسته‌بندی یا تصمیم‌گیری روی نمونه‌های جدید است.

برای اجرای موفق یک پروژه Machine Learning باید:

  1. مسئله قابل‌اندازه‌گیری تعریف کنید.
  2. داده مرتبط و باکیفیت جمع‌آوری کنید.
  3. داده آموزش و آزمون را جدا نگه دارید.
  4. یک خط مبنای ساده بسازید.
  5. الگوریتم را متناسب با مسئله انتخاب کنید.
  6. معیار ارزیابی را با هدف تجاری هماهنگ کنید.
  7. مدل را روی داده جدید آزمایش کنید.
  8. عملکرد آن را پس از استقرار پایش کنید.
  9. بین ساخت مدل اختصاصی و استفاده از API آگاهانه انتخاب کنید.

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

اگر می‌خواهید قابلیت‌های هوش مصنوعی را بدون مدیریت زیرساخت اجرای مدل به نرم‌افزار خود اضافه کنید، می‌توانید از مستندات API درواره شروع کنید.

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

مقالات مرتبط

منابع

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

Read more

بازنویسی و پارافریز متن فارسی با هوش مصنوعی

بازنویسی متن با هوش مصنوعی؛ آموزش پارافریز متن فارسی با مثال عملی

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

بینایی ماشین و تشخیص اشیا در تصویر با هوش مصنوعی

بینایی ماشین چیست؟ راهنمای کامل Computer Vision با مثال عملی

بینایی ماشین یا Computer Vision شاخه‌ای از هوش مصنوعی است که به کامپیوترها امکان می‌دهد تصاویر و ویدیوها را تحلیل و تفسیر کنند. در این راهنمای جامع با پردازش تصویر، تشخیص اشیا، تقسیم‌بندی، OCR، ابزارهای متن‌باز و ساخت یک برنامه تحلیل تصویر با پایتون و API درواره آشنا می‌شوید.