Почему данные важнее алгоритма

Секрет, который не любят новички: успех 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 раз. Модель, опирающаяся на такие данные, выдаст бессмыслицу — хотя сам алгоритм исправен.

Больше данных часто полезнее, чем хитрее модель

Есть известное практическое наблюдение: простая модель на большом и качественном наборе данных нередко обходит изощрённую модель на скудных данных. Дополнительные примеры дают модели увидеть редкие случаи, сгладить шум и точнее уловить настоящую закономерность. Поэтому, когда модель работает плохо, первый вопрос опытного специалиста — не «какой алгоритм взять помощнее», а «достаточно ли у нас данных и хороши ли они».

Это не значит, что алгоритмы не важны — важны. Но отдача от улучшения данных на старте проекта обычно выше, чем от смены модели. Сначала наведите порядок в данных, затем оптимизируйте модель.

Что значит «хорошие данные»

СвойствоПочему важно
Достаточный объёмЕсть на чём уловить закономерность
РелевантностьДанные отражают реальную задачу
ЧистотаМеньше ошибок и пропусков
РепрезентативностьНет однобокого перекоса

Итог

  • Модель не бывает лучше данных: мусор на входе — мусор на выходе.
  • Качество данных решает больше, чем выбор алгоритма.
  • Опасны малый объём, ошибки, смещение и утечка целевой переменной.
  • Один испорченный пример способен сильно исказить результат.
Проверьте себя
1. Что означает принцип «garbage in, garbage out» в ML?
AЧем больше мусорных файлов на диске, тем медленнее обучение
BМодель не может быть лучше данных: на плохих данных получится плохая модель
CЛюбые данные нужно удалять перед обучением
DАлгоритм всегда исправляет ошибки в данных
2. Откуда у модели берётся смещение (bias)?
AИз выбранного языка программирования
BИз однобоко собранных данных, перекос которых модель наследует
CИз слишком быстрого процессора
DСмещения у моделей не бывает
3. На что опытные ML-специалисты тратят большую часть времени?
AНа выбор самого сложного алгоритма
BНа сбор, очистку и подготовку данных
CНа покупку более мощного компьютера
DНа написание документации
Поддержать проект