Як зробити AI систему рекомендацій для е-комерсу: покроковий гайд
Середній інтернет-магазин втрачає до 30% потенційного доходу через те, що показує клієнтам нерелевантні товари — або не показує нічого взагалі. AI система рекомендацій вирішує це: вона аналізує поведінку користувачів і підбирає товари, які вони реально хочуть купити. На реалізацію базової версії піде 4–6 годин, а для старту потрібні Python, доступ до даних вашого магазину та безкоштовний акаунт у кількох сервісах.
🛠️ Що знадобиться
- Python 3.11+ — основна мова розробки; безкоштовний, встановлюється з python.org
- Google Colab або VS Code — середовище для написання коду; Colab безкоштовний і не потребує встановлення
- Бібліотека Surprise або LightFM — готові алгоритми колаборативної фільтрації; безкоштовні, ставляться через pip
- Pandas + NumPy — обробка даних про покупки та перегляди; безкоштовні
- FastAPI — для розгортання рекомендацій як API-ендпоінту; безкоштовний
- Railway або Render — хостинг для вашого API; є безкоштовний план до 500 годин на місяць
- Дані магазину — CSV-файл з історією покупок або переглядів (мінімум 500–1000 записів)
📋 Покрокова інструкція
Крок 1: Підготовка та очищення даних
Відкрийте Google Colab (colab.research.google.com) і створіть новий ноутбук. Завантажте ваш CSV-файл з даними через іконку папки зліва → кнопка “Завантажити файл”. Файл повинен містити мінімум три колонки: user_id, product_id та або rating (якщо є явні оцінки), або event_type (перегляд, додавання в кошик, покупка). Виконайте в комірці такий код для базового очищення: import pandas as pd; df = pd.read_csv('your_data.csv'); df.dropna(inplace=True); df = df[df.duplicated(subset=['user_id','product_id'], keep='first') == False]. Підводний камінь: якщо у вас немає явних рейтингів — призначте їх вручну: перегляд = 1, кошик = 3, покупка = 5.

Крок 2: Встановлення бібліотек та вибір алгоритму
У новій комірці Colab введіть і запустіть: !pip install scikit-surprise lightfm pandas numpy fastapi uvicorn. Після встановлення оберіть алгоритм: якщо у вас менше 10 000 користувачів — використовуйте SVD із бібліотеки Surprise, він простіший; якщо більше — беріть LightFM із підтримкою гібридних рекомендацій. Для старту підключіть SVD: from surprise import SVD, Dataset, Reader; reader = Reader(rating_scale=(1, 5)); data = Dataset.load_from_df(df[['user_id','product_id','rating']], reader). Одразу перевірте, чи завантажились дані командою print(data) — має вивестися об’єкт Dataset без помилок.
Крок 3: Тренування моделі та оцінка якості
Розбийте дані на тренувальну та тестову вибірки і навчіть модель. Введіть у комірку: from surprise.model_selection import train_test_split, cross_validate; trainset, testset = train_test_split(data, test_size=0.2, random_state=42); algo = SVD(n_factors=100, n_epochs=20, lr_all=0.005, reg_all=0.02); algo.fit(trainset). Потім запустіть оцінку якості: from surprise import accuracy; predictions = algo.test(testset); print(accuracy.rmse(predictions)). Нормальний показник RMSE для рекомендацій — від 0.8 до 1.2; якщо вище 1.5 — збільште n_epochs до 50 або додайте більше даних. Збережіть модель командою: import pickle; pickle.dump(algo, open('model.pkl', 'wb')).
Крок 4: Створення API з FastAPI
Завантажте збережений файл model.pkl на свій комп’ютер через іконку папки в Colab → три крапки біля файлу → “Завантажити”. Відкрийте VS Code, створіть нову папку проекту та файл main.py. Вставте в нього такий код:
from fastapi import FastAPI; import pickle, pandas as pd; app = FastAPI(); model = pickle.load(open('model.pkl','rb')); all_products = [101, 102, 103] — замість чисел вставте реальні ID ваших товарів. Далі додайте ендпоінт: @app.get("/recommend/{user_id}") def recommend(user_id: int, top_n: int = 5): predictions = [model.predict(user_id, pid) for pid in all_products]; predictions.sort(key=lambda x: x.est, reverse=True); return {"recommendations": [p.iid for p in predictions[:top_n]]}. Запустіть локально командою в терміналі: uvicorn main:app --reload і перевірте у браузері: http://localhost:8000/recommend/42 — має повернутися JSON зі списком товарів.
Крок 5: Розгортання на хостингу та підключення до магазину
Зайдіть на render.com, зареєструйтесь і натисніть кнопку “New +” → оберіть “Web Service”. Підключіть GitHub-репозиторій з вашим проектом (попередньо завантажте туди main.py, model.pkl і файл requirements.txt зі списком залежностей). У полі “Start Command” введіть: uvicorn main:app --host 0.0.0.0 --port $PORT. Натисніть “Create Web Service” і зачекайте 3–5 хвилин — Render сам встановить залежності та запустить сервер. Ви отримаєте публічне посилання типу https://your-app.onrender.com. На стороні магазину (наприклад, Shopify або WooCommerce) додайте JavaScript-виклик до цього URL у секції “Схожі товари” — і рекомендації будуть підтягуватись в реальному часі для кожного авторизованого користувача.
⚠️ Типові помилки та як їх уникнути
- Холодний старт для нових користувачів — алгоритм не знає нічого про тих, хто щойно зайшов на сайт. Вирішення: для нових юзерів показуйте топ-20 найпопулярніших товарів за останні 30 днів як фолбек, поки не накопиться хоча б 5 взаємодій.
- Занадто мало унікальних користувачів у даних — якщо менше 200 унікальних user_id, SVD видаватиме сміттєві результати. Вирішення: зберіть більше даних або використовуйте content-based підхід на основі атрибутів товарів.
- Модель не оновлюється і застаріває — через тиждень рекомендації стають неактуальними. Вирішення: налаштуйте автоматичний ретренінг раз на тиждень — додайте GitHub Action або cron-задачу на сервері, яка перезапускає навчання з новими даними.
- Файл model.pkl занадто великий для хостингу — при великій кількості товарів файл може перевищити 100 МБ. Вирішення: зменшіть параметр
n_factorsдо 50 або збережіть модель черезjoblib— він стискає краще за pickle.
💡 Поради для кращого результату
Зважуйте події по-різному: покупка важить у 5 разів більше за простий перегляд. Замість рейтингу 1–5 призначте: перегляд → 1, перегляд більше 30 секунд → 2, кошик → 3, покупка → 5. Це дає модель набагато кращу точність без додаткових даних.
Додайте фільтр за наявністю на складі: перед поверненням рекомендацій перевіряйте через API магазину, чи є товар в наявності. Нічого не дратує клієнта більше, ніж рекомендація товару “немає в наявності”.
A/B тестуйте з першого дня: розділіть трафік 50/50 — половина бачить AI-рекомендації, половина — статичний блок “Популярне”. Через 2 тижні порівняйте конверсію. Без тесту ви ніколи не дізнаєтесь реальний вплив на продажі.

Кешуйте результати: не робіть запит до моделі при кожному завантаженні сторінки. Зберігайте рекомендації для кожного user_id у Redis або навіть у простому словнику Python на 1–6 годин — це зменшить навантаження на сервер у 10–20 разів.
❓ Часті запитання (FAQ)
1. Скільки даних потрібно для нормальної роботи системи?
Мінімальний поріг — 1 000 унікальних взаємодій (перегляди + покупки) від щонайменше 200 різних користувачів. При менших обсягах алгоритм колаборативної фільтрації не матиме достатньо патернів і рекомендуватиме погано. Якщо даних мало — почніть із content-based підходу на основі категорій та атрибутів товарів.
2. Чи потрібні навички машинного навчання для реалізації?
Базові знання Python достатні для проходження цього туторіалу. Бібліотека Surprise приховує математику всередині — вам не потрібно розуміти матричну факторизацію, щоб отримати робочий результат. Головне — правильно підготувати дані на першому кроці.
3. Як підключити систему до Shopify або WooCommerce?
Для Shopify додайте кастомний Liquid-блок у шаблон продукту з fetch-запитом до вашого API. Для WooCommerce створіть простий PHP-плагін або використайте хук woocommerce_after_single_product, який підтягує JSON з рекомендаціями та рендерить картки товарів. В обох випадках передавайте поточний user_id через cookies або сесію.
4. Як часто потрібно перенавчати модель?
Для більшості е-комерс магазинів достатньо ретренінгу раз на тиждень. Якщо асортимент змінюється щодня або сезонність сильно впливає на попит — налаштуйте щоденний ретренінг вночі (наприклад, о 3:00), коли трафік мінімальний.
5. Яка різниця між колаборативною фільтрацією та content-based підходом?
Колаборативна фільтрація (SVD, LightFM) рекомендує на основі того, що купували схожі на вас користувачі — не знаючи нічого про самі товари. Content-based підхід аналізує характеристики товарів (категорія, бренд, ціна) і пропонує схожі. Найкращий результат дає гібрид обох — він же використовується в Amazon та Netflix.
🏁 Підсумок
Ви навчились будувати повноцінну AI систему рекомендацій: від підготовки даних та тренування SVD-моделі — до розгортання робочого API та підключення до реального магазину. Результат — персоналізований блок рекомендацій, який адаптується під кожного користувача і може підвищити середній чек на 15–25%.
Почніть прямо зараз: відкрийте Google Colab, завантажте ваш перший CSV з даними про покупки і запустіть кроки 1–2. Перші результати побачите вже за годину, а повністю розгорнутий сервіс матимете до кінця дня.
РОЗСИЛКА
📬 Щотижневий AI-дайджест
Найкращі статті про ШІ та автоматизацію — без спаму, лише суть
Без спаму · Відписатись будь-коли

