Почему данные важнее алгоритма
Секрет, который не любят новички: успех ML на 80% решают данные, а не модель.
Garbage in, garbage out — «мусор на входе — мусор на выходе»: модель не может быть лучше данных, на которых училась.
Алгоритм важен меньше, чем кажется
Новичкам кажется, что главное — выбрать «самый умный» алгоритм. На практике опытные специалисты тратят основную часть времени не на модели, а на данные: их сбор, очистку и подготовку. Хорошие данные с простой моделью почти всегда бьют плохие данные со сложной. Причина проста: модель умеет только повторять закономерности из данных — если их там нет или они искажены, никакой алгоритм это не починит.
Чем «плохие» данные портят модель
- Мало данных. На десятке примеров модель не уловит закономерность и будет угадывать.
- Ошибки и пропуски. Опечатки, перепутанные единицы, пустые поля — модель примет их за правду.
- Смещение (bias). Если данные собраны однобоко, модель унаследует перекос. Классический пример: систему найма обучили на резюме, где исторически нанимали в основном мужчин, — и она стала занижать женские резюме. Алгоритм не «решил так» — он скопировал перекос данных.
- Утечка целевой переменной. Иногда в признаки случайно попадает информация, напрямую связанная с ответом. На обучении метрики прекрасны, в реальности — провал.
Простая иллюстрация смещения
Посмотрим, как один аномальный пример (выброс или ошибка ввода) сдвигает среднее — а на средних держатся многие модели. Код запускается:
# "Чистые" зарплаты в тысячах
salaries = [50, 55, 60, 58, 52]
avg = sum(salaries) / len(salaries)
print("Среднее без ошибки:", round(avg, 1))
# Добавили одну запись с ошибкой (опечатка: лишний ноль)
salaries_bad = salaries + [5800] # вместо 580 ввели 5800
avg_bad = sum(salaries_bad) / len(salaries_bad)
print("Среднее с ошибкой:", round(avg_bad, 1))
Вывод:
Среднее без ошибки: 55.0 Среднее с ошибкой: 1012.5
Один испорченный пример сместил среднее в 18 раз. Модель, опирающаяся на такие данные, выдаст бессмыслицу — хотя сам алгоритм исправен.
Больше данных часто полезнее, чем хитрее модель
Есть известное практическое наблюдение: простая модель на большом и качественном наборе данных нередко обходит изощрённую модель на скудных данных. Дополнительные примеры дают модели увидеть редкие случаи, сгладить шум и точнее уловить настоящую закономерность. Поэтому, когда модель работает плохо, первый вопрос опытного специалиста — не «какой алгоритм взять помощнее», а «достаточно ли у нас данных и хороши ли они».
Это не значит, что алгоритмы не важны — важны. Но отдача от улучшения данных на старте проекта обычно выше, чем от смены модели. Сначала наведите порядок в данных, затем оптимизируйте модель.
Что значит «хорошие данные»
| Свойство | Почему важно |
| Достаточный объём | Есть на чём уловить закономерность |
| Релевантность | Данные отражают реальную задачу |
| Чистота | Меньше ошибок и пропусков |
| Репрезентативность | Нет однобокого перекоса |
Итог
- Модель не бывает лучше данных: мусор на входе — мусор на выходе.
- Качество данных решает больше, чем выбор алгоритма.
- Опасны малый объём, ошибки, смещение и утечка целевой переменной.
- Один испорченный пример способен сильно исказить результат.