Серия работ по построению и сравнению моделей машинного обучения (нейросети и градиентный бустинг) для задач регрессии и классификации на открытых датасетах (UCI, Kaggle).
Регрессия количества аренд велосипедов по часовым данным (hour.csv) — два независимых подхода:
- Keras MLP (
notebooks/bike_and_bank_mlp.ipynb) — Train MSE 2488, Val MSE 2786, Test MSE 2990. - AdaBoost / XGBoost (
notebooks/bike_sharing_boosting.ipynb) — значительно точнее: AdaBoost Test R² = 0.99 (RMSE 17.3), XGBoost Test R² = 0.9994 (RMSE 4.47).
Прямое сравнение показало: для этой задачи градиентный бустинг на порядок точнее MLP-сети сопоставимой сложности.
Бинарная классификация («подпишется ли клиент на депозит») на bank.csv — тоже два подхода:
- Keras MLP (
notebooks/bike_and_bank_mlp.ipynb) — Train Accuracy 92.9%, Val 90.7%, Test Accuracy 88.4%. - AdaBoost / XGBoost (
notebooks/bank_marketing_boosting.ipynb) — AdaBoost Test Accuracy 89.0%, XGBoost Test Accuracy 89.7%.
Датасет несбалансирован (клиентов, подписавшихся на депозит, меньшинство) — в ноутбуках приведены полный classification report и confusion matrix, а не только accuracy.
Бинарная классификация на diabetes.csv, Keras MLP (32→16→1) — notebooks/diabetes_mlp.ipynb. Train Accuracy 89.90%, Test Accuracy 80.52%, confusion matrix, ROC-кривая.
notebooks/world_happiness_mlp.ipynb — попытка предсказать индекс счастья (Happiness_Score) и бинарный класс «высокий/низкий» уровень счастья по 21 признаку синтетического датасета, с L2-регуляризацией, Dropout, EarlyStopping и балансировкой классов.
Результат честно неудачный и оставлен как диагностический кейс: регрессия почти не объясняет дисперсию (test R² ≈ −0.07), классификатор коллапсирует в предсказание одного класса (test accuracy ≈ 41%, хуже наивного бейзлайна). Вывод, сделанный в ноутбуке: признаки в этом датасете практически не коррелируют с целевой переменной (похоже на синтетически сгенерированные данные без реальной взаимосвязи) — регуляризация и подбор архитектуры здесь не помогают, если сигнала в данных нет. Показывает умение диагностировать причину неудачи модели, а не только сообщать метрики успеха.
Python, TensorFlow/Keras, scikit-learn, XGBoost, Pandas, NumPy, Matplotlib/Seaborn — StandardScaler, EarlyStopping, L2-регуляризация, Dropout, ROC/AUC, confusion matrix, classification_report.
pip install -r requirements.txtДатасеты не включены в репозиторий — скачайте их из открытых источников:
- Bike Sharing: UCI Bike Sharing Dataset (
hour.csv) - Bank Marketing: UCI Bank Marketing Dataset (
bank.csv) - Diabetes: Pima Indians Diabetes Dataset (
diabetes.csv) - World Happiness: см.
mydataset.csvв исходной работе (синтетический датасет с Kaggle)
Положите нужный CSV рядом с соответствующим ноутбуком.