1. Функции и их свойства: фундамент описания данных
Функции и их свойства: фундамент описания данных
В машинном обучении мы постоянно слышим фразу: «модель выучила закономерность в данных». Но что именно она выучила? Если отбросить магию нейросетей и сложных алгоритмов, любая модель машинного обучения — от простейшей регрессии до ChatGPT — это просто математическая функция. Она принимает на вход числа (например, площадь квартиры и расстояние до метро) и выдает другое число (прогнозируемую цену). Чтобы понимать Data Science, нужно перестать видеть в алгоритмах «черные ящики» и начать видеть в них функции, свойства которых мы можем анализировать и менять.
Функция как строгий контракт
В программировании мы привыкли, что функция — это блок кода, который что-то делает. В математике определение жестче.
> Функция — это правило, по которому каждому элементу из одного множества (входов) ставится в соответствие строго один элемент из другого множества (выходов).
На языке математики это записывается так: . Здесь — это область определения (все возможные входные данные), — область значений (все возможные результаты), а — само правило преобразования.
Если мы передаем конкретное значение из множества , мы получаем результат , что записывается привычным уравнением . Здесь называется аргументом (или независимой переменной), а — значением функции.
В контексте Data Science множество — это наши признаки (фичи, features), а — целевая переменная (таргет, target). Математическая строгость «одному входу — строго один выход» означает, что наша модель детерминирована: подав одни и те же данные о квартире, мы всегда получим одну и ту же предсказанную цену.
!Отображение признаков в целевую переменную
Ключевое свойство для оптимизации: Монотонность
Когда мы обучаем модель, мы постоянно измеряем её ошибку с помощью специальной функции потерь (Loss function). Наша цель — свести эту ошибку к минимуму. И здесь критически важным становится свойство монотонности.
Функция называется строго возрастающей, если для любых двух точек выполняется правило: если , то . В этой формуле и — два разных значения на оси входов, а и — соответствующие им значения функции. Увеличение аргумента гарантированно приводит к увеличению результата.
Аналогично, функция строго убывает, если из условия следует, что .
Почему это важно? Представьте, что — это количество итераций обучения, а — ошибка модели. Если мы математически докажем, что наша функция ошибки монотонно убывает в процессе настройки параметров, мы можем быть уверены: каждый новый шаг делает нашу модель лучше. Если же функция скачет вверх-вниз (не монотонна), процесс обучения может застрять.
Зоопарк функций в Data Science
В анализе данных мы редко работаем с абстрактными . Мы используем конкретные семейства функций, каждое из которых решает свою задачу. Сравним три самых частых типа.
| Тип функции | Формула | Роль в Data Science | | :--- | :--- | :--- | | Линейная | | Базовый блок. Умножает признак на вес и добавляет смещение . Легко интерпретируется: «каждый лишний метр площади увеличивает цену на рублей». | | Логарифмическая | | Сжимает огромные числа. Если доходы людей варьируются от десятков тысяч до миллиардов, логарифм превратит эту пропасть в аккуратную шкалу, удобную для алгоритма. | | Сигмоидальная | | Сжимает любое число от до в диапазон от до . Идеально подходит для предсказания вероятностей (например, вероятности клика по рекламе). |
Примечание к формулам: и — константы (параметры), — основание натурального логарифма (примерно 2.718), а — входной признак.
Давайте подробнее посмотрим на сигмоиду. В реальных задачах (например, в логистической регрессии) мы часто добавляем параметр, который управляет формой этой функции: . Параметр определяет, насколько резко функция переходит от 0 к 1.
!Влияние параметра на крутизну сигмоиды
Изменяя параметр , модель настраивает свою «уверенность». При плавном переходе модель дает осторожные вероятности (например, 0.6 или 0.4). При резком переходе она становится категоричной, выдавая значения, очень близкие к 1 или 0, превращаясь по сути в жесткий переключатель (ступеньку).
От математики к коду на Python
Одно из главных преимуществ Data Science — математические концепции напрямую и очень лаконично перекладываются в код. Для этого используется библиотека numpy, которая умеет применять математические функции не к одному числу, а сразу к массивам данных (векторам).
Часто нам нужно применить несколько функций последовательно: сначала линейно преобразовать данные, а затем пропустить их через сигмоиду. В математике это называется композицией функций и записывается как .
Посмотрим, как это выглядит на практике:
Обратите внимание: мы передали в функцию массив из четырех чисел, и numpy вернул массив из четырех вероятностей. Математическое правило сработало для каждого элемента.
Понимание того, как ведут себя базовые функции, — это первый шаг. В следующих главах мы столкнемся с главной проблемой машинного обучения: как алгоритму автоматически подобрать идеальные параметры (вроде и ), чтобы функция выдавала правильные ответы. Для этого нам потребуется научиться измерять скорость изменения функций.