08-18-2025, 09:55 AM
Нейронные сети – это математические модели, которые принимают на вход числа и выдают числа. Это значит, что любую информацию, которую мы хотим обработать с помощью нейронной сети, нужно представить в числовом виде, чаще всего – в виде векторов. Процесс преобразования данных в векторное представление называется векторизацией (vectorization) или кодированием (encoding). Правильная векторизация данных – ключевой фактор успешной работы нейронной сети. Давайте разберемся, как это делается.
Прежде всего, необходимо понимать, что выбор метода векторизации зависит от типа данных. Существуют разные методы векторизации для числовых данных, категориальных данных, текстовых данных и изображений.
Числовые данные (Numerical Data)
Числовые данные, такие как возраст, рост, вес или доход, уже представлены в числовом виде, но их часто необходимо нормализовать (normalize) или стандартизировать (standardize), чтобы улучшить производительность нейронной сети.
Нормализация – это масштабирование данных к диапазону от 0 до 1. Это можно сделать с помощью следующей формулы:
x_normalized = (x - min(x)) / (max(x) - min(x))
где x – исходное значение, min(x) – минимальное значение в наборе данных, max(x) – максимальное значение в наборе данных.
Стандартизация – это масштабирование данных таким образом, чтобы они имели нулевое среднее значение и единичное стандартное отклонение. Это можно сделать с помощью следующей формулы:
x_standardized = (x - mean(x)) / std(x)
где x – исходное значение, mean(x) – среднее значение в наборе данных, std(x) – стандартное отклонение в наборе данных.
Нормализация и стандартизация помогают нейронной сети быстрее сходиться к оптимальному решению и предотвращают ситуацию, когда признаки с большими значениями доминируют над признаками с меньшими значениями.
Категориальные данные (Categorical Data)
Категориальные данные, такие как пол, цвет или город, не являются числовыми, и их необходимо преобразовать в числовой вид, прежде чем использовать в нейронной сети.
Существует несколько способов преобразования категориальных данных в числовой вид:
- One-hot encoding: Каждый категориальный признак преобразуется в вектор, где все элементы равны 0, кроме одного, который равен 1. Например, если у нас есть признак “цвет” с возможными значениями “красный”, “зеленый” и “синий”, то мы можем преобразовать его в три вектора:
- “красный” -> [1, 0, 0]
- “зеленый” -> [0, 1, 0]
- “синий” -> [0, 0, 1]
- Label encoding: Каждый категориальный признак преобразуется в число, соответствующее его позиции в списке возможных значений. Например, если у нас есть признак “цвет” с возможными значениями “красный”, “зеленый” и “синий”, то мы можем преобразовать его в числа:
- “красный” -> 0
- “зеленый” -> 1
- “синий” -> 2
One-hot encoding обычно предпочтительнее, чем label encoding, так как label encoding может ввести нежелательный порядок между категориями.
Текстовые данные (Text Data)
Текстовые данные необходимо преобразовать в числовой вид, прежде чем использовать в нейронной сети.
Существует несколько способов преобразования текстовых данных в числовой вид:
- Bag of Words (BoW): Каждый текст преобразуется в вектор, где каждый элемент соответствует слову из словаря, а значение элемента показывает, сколько раз это слово встречается в тексте.
- TF-IDF (Term Frequency-Inverse Document Frequency): Каждый текст преобразуется в вектор, где каждый элемент соответствует слову из словаря, а значение элемента показывает, насколько важно это слово для данного текста в контексте всего набора текстов.
- Word Embeddings (Word2Vec, GloVe, FastText): Каждое слово преобразуется в вектор фиксированной длины, который отражает семантическое значение слова.
Word Embeddings обычно дают лучшие результаты, чем BoW и TF-IDF, так как они учитывают семантику слов.
Изображения (Images)
Изображения представляют собой массив пикселей. Каждый пиксель имеет числовое значение, которое соответствует его цвету.
Изображение можно представить в виде вектора, развернув массив пикселей в одномерный массив. Например, изображение размером 28x28 пикселей можно представить в виде вектора длиной 784.
В более сложных случаях можно использовать сверточные нейронные сети (CNN), которые автоматически извлекают признаки из изображений.
Важность правильной векторизации
Правильная векторизация данных – это ключевой фактор успешной работы нейронной сети. Если данные представлены в неподходящем формате, то сеть не сможет эффективно извлечь признаки и научиться решать поставленную задачу.
Например, если мы используем label encoding для категориальных данных,

