Машинное обучение на PHP: обзор библиотек для реализации ML-алгоритмов
Хотя Python традиционно считается основным языком для машинного обучения, PHP также имеет несколько мощных библиотек, позволяющих внедрять ML-модели непосредственно в веб-приложения. В этой статье мы рассмотрим основные инструменты для машинного обучения на PHP, их возможности и примеры использования.
Почему PHP для машинного обучения?
PHP остаётся одним из самых популярных языков для веб-разработки. Использование ML-библиотек на PHP позволяет:
- Интегрировать модели непосредственно в существующие Laravel/Symfony проекты
- Избежать переключения между языками в рамках одного проекта
- Использовать знакомую экосистему Composer и автозагрузку
- Быстро разворачивать прототипы на дешёвом хостинге
1. PHP-ML — стандарт машинного обучения на PHP
PHP-ML (Machine Learning library for PHP) — самая популярная библиотека для ML на PHP. Она предоставляет широкий спектр алгоритмов без внешних зависимостей.
Установка
composer require php-ai/php-ml
Пример: классификация текстов
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Phpml\Classification\KNearestNeighbors;
use Phpml\FeatureExtraction\TfIdfTransformer;
use Phpml\Tokenization\WhitespaceTokenizer;
use Phpml\FeatureExtraction\TokenCountVectorizer;
// Обучающие данные
$samples = [
'отличный товар быстрая доставка',
'ужасное качество брак',
'рекомендую всем друзьям',
'не работает сломалось через день'
];
$labels = ['positive', 'negative', 'positive', 'negative'];
// Преобразование текста в векторы
$vectorizer = new TokenCountVectorizer(new WhitespaceTokenizer());
$vectorizer->fit($samples);
$vectorizer->transform($samples);
$transformer = new TfIdfTransformer();
$transformer->fit($samples);
$transformer->transform($samples);
// Обучение модели
$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);
// Предсказание
$testSample = ['прекрасный продукт качество'];
$vectorizer->transform($testSample);
$transformer->transform($testSample);
$predicted = $classifier->predict($testSample[0]);
echo "Тональность: $predicted"; // positive
?>
Возможности PHP-ML
- Классификация: KNearestNeighbors, NaiveBayes, SVC, DecisionTree
- Регрессия: LeastSquares, Ridge, LogisticRegression
- Кластеризация: KMeans, DBSCAN, FuzzyCMeans
- Обработка текста: TF-IDF, стемминг, токенизация
- Метрики: accuracy, precision, recall, confusion matrix
2. Rubix ML — современный фреймворк для машинного обучения
Rubix ML — более новая и производительная библиотека с поддержкой нейронных сетей, GPU-ускорения и конвейеров обработки данных.
Установка
composer require rubix/ml
Пример: нейронная сеть для классификации
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\NeuralNet\Layers\Dense;
use Rubix\ML\NeuralNet\Layers\Activation;
use Rubix\ML\NeuralNet\ActivationFunctions\ReLU;
use Rubix\ML\NeuralNet\ActivationFunctions\Softmax;
use Rubix\ML\NeuralNet\Optimizers\Adam;
use Rubix\ML\Classifiers\MultilayerPerceptron;
use Rubix\ML\CrossValidation\Reports\MulticlassBreakdown;
// Создание датасета
$samples = [[2.5, 1.2], [1.0, 0.8], [3.5, 4.2], [2.0, 0.5]];
$labels = ['cat', 'dog', 'cat', 'dog'];
$dataset = new Labeled($samples, $labels);
// Создание MLP (многослойный перцептрон)
$mlp = new MultilayerPerceptron([
new Dense(10),
new Activation(new ReLU()),
new Dense(5),
new Activation(new ReLU()),
new Dense(2),
new Activation(new Softmax())
], new Adam(0.001));
$mlp->train($dataset);
// Предсказание
$newSample = [[2.8, 1.5]];
$predictions = $mlp->predict($newSample);
echo "Предсказанный класс: " . $predictions[0]; // cat
?>