Я пытаюсь выяснить, как работать с PHP-ML когда я хочу порекомендовать некоторые предметы для текущего клиента.
Мой набор данных (нумерация — это только номер строки):
Как покупатель, я покупал в прошлом Продукт 1. Поэтому обычно я ожидал, что в моей коробке с рекомендациями будет продукт 2, потому что 3 человека купили его вместе с продуктом 1.
Я думаю, что мне нужен здесь некоторый алгоритм регрессии, который дает мне некоторое значение корреляции между продуктом X и продуктом Y.
Я думал о линейном алгоритме SVR, но я не знаю, как его тренировать?
// Step 1: Load the Dataset
// Step 2: Prepare the Dataset
// Step 3: Generate the training/testing Dataset
$samples = [[1,2], [1,2], [1,3], [1,2], [2,4], [X,Y..]];
$targets = [?, ?, ? , ? , ? , ?];
$regression = new LeastSquares();
// Step 4: Train the classifier
$regression->train($samples, $targets);
echo $regression->predict([1,2]);
По моему мнению, я должен получить какую-то ценность, например, 0,25 -> 25% процентов покупателей, которые купили продукт 1, также купили продукт 2. Тогда я мог бы заказать свои прогнозы и сделать заказ в окне с рекомендациями.
Мой главный вопрос, что я должен использовать для поезда? Я понимаю, что-то совершенно не так?
Спасибо
Прежде всего вам не нужна линейная регрессия здесь, и если вам это нужно ты бы
должны преобразовать категориальные данные, чтобы сделать числовой прогноз.
Обычно вы используете фиктивные переменные, это означает, что ваша таблица будет преобразована из:
| Product A | Product B |
|-----------|-----------|
| 1 | 2 |
| 1 | 2 |
| 1 | 3 |
| 1 | 2 |
| 2 | 4 |
что-то вроде:
| Product 1 | Product 2 | Product 3 | Product 4 |
|------------|-----------|-----------|-----------|
| 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 0 | 1 | 0 | 1 |
Увидеть https://datascience.stackexchange.com/questions/28306/transform-categorical-variables-into-numerical для получения дополнительной информации.
К сожалению, я думаю, что PHP-ML в настоящее время не поддерживает категориальную кодировку данных. Если вы не конвертируете
категориальные данные, которые вы могли бы получить, вероятно, в качестве прогноза 1,6, при этом ничего бы не значило.
Но в PHP-ML есть более простой способ сделать это. Вы можете использовать Apriori Associator. Это может
узнать, какие ассоциации встречаются чаще, и предсказать их. В следующем вы можете увидеть это в действии.
use Phpml\Association\Apriori;
$samples = [[1,2], [1,2], [1,3], [1,2], [2,4]];
$labels = [];
$associator = new Apriori($support = 0.5, $confidence = 0.5);
$associator->train($samples, $labels);
var_export($associator->predict([1]));
// outputs [[ 2 ]]; The right prediction!
Кроме того, при работе в машинном обучении полезно разделить ваши данные на то, что называется обучением
и тестовый набор. Таким образом, вы можете напрямую проверить свою модель ML. Это также реализовано в PHP-ML
Других решений пока нет …