مقدمه

مجتبی پاکزاد PHP-ML 0.6.2 در حال تکمیل رایگان

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

برای اجرای PHP-ML باید حداقل ورژن php در حال اجرای روی سرور 7.1 باشد.

یک مثال ساده از طبقه‌بندی:

require_once __DIR__ . '/vendor/autoload.php';

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);

$classifier->predict([3, 2]);
// return 'b'

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

اصطلاحات فنی

یادگیری ماشین (Machine Learning) در واقع زیر شاخه‌ای از هوش مصنوعی (Artificial intelligence) است که با طراحی الگوریتم‌ها و روش‌های یادگیری و با کمک داده‌ها به سیستم‌های کامپیوتری توانایی یادگیری می‌دهد.

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

کراس ولیدیشن (Cross-validation) تکنیکی برای ارزیابی مدل‌های پیش‌بینی کننده به وسیله تقسیم نمونه اصلی به یک مجموعه‌ آموزشی (Training Set) برای آموزش مدل و یک مجموعه آزمایشی (Test Set) برای تست آن است.

مدل‌های پیش‌بینی کننده (Predictive Models) فرآیندی است که از داده کاوی و احتمال برای پیش‌بینی نتایج استفاده می‌کند.

داده‌کاوی (Data Mining) عمل بررسی مجموعه داده‌های کلان از پیش موجود، به منظور تولید اطلاعات جدید، کشف الگوریتم و رابطه بین داده‌ها با کمک یادگیری ماشین، علم آمار و دیتابیس‌ها است.

شبکه عصبی (Neural Network) سیستم‌های محاسباتی هستند که طراحی آن‌ها الهام گرفته از مغز است. اصطلاح شبکه عصبی در یادگیری ماشین، به شبکه‌های عصبی مصنوعی که برای حل مسائل هوش مصنوعی استفاده می‌شوند، اشاره دارد.

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

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