Вопрос или проблема
Я изучаю концепции стандартизации и нормализации для инженерии признаков.
Стандартизация, например, осуществляется с помощью z-оценки, где на основе среднего значения и стандартного отклонения мы пересчитываем значения так, чтобы среднее было 0, а стандартное отклонение – 1. Это операция по столбцам.
В то время как нормализация выполняется по строкам (чтобы сделать всю строку нормой единицы) – таким образом, это хорошо подходит для вычисления таких вещей, как косинусное сходство. Я ищу пример того, что означает сделать строку нормой единицы.
Очень простой пример – использование относительной частоты вместо абсолютной частоты, например, в классификации текста: если признаки представляют собой сырую абсолютную частоту каждого слова, то большие документы имеют более высокие значения, чем маленькие документы. В этом случае алгоритм обучения не сможет отличить слово, использованное 10 раз в небольшом документе на 50 слов (это слово важно для документа), от того же слова, использованного 10 раз, но в большом документе на 1000 слов (не очень важно для документа).
Использование вместо этого относительной частоты (т.е. деление на размер документа) решает эту проблему. Это пример нормализации по строкам, есть много других.
Ответ или решение
Нормализация является важным этапом в обработке и анализе данных, особенно в области машинного обучения. Рассмотрим концепцию нормализации, более конкретно в контексте приведения строки к единичной норме, что особенно актуально для вычислений векторных сходств, таких как косинусная мера.
Что такое нормализация строки?
Нормализация строки — это процесс преобразования данных в строке (например, последовательности признаков, представляющих отдельный объект) так, чтобы её длина равнялась 1. Это позволяет избежать доминирования более крупных значений над меньшими и улучшает численную стабильность моделей.
Пример нормализации строки
Рассмотрим матрицу данных, представляющую набор признаков для нескольких образцов. Пусть у нас есть следующая матрица:
Образец | Признак 1 | Признак 2 | Признак 3 |
---|---|---|---|
A | 3 | 4 | 5 |
B | 1 | 2 | 2 |
C | 6 | 8 | 10 |
Для каждого образца (строки), нам необходимо привести значения к единичной норме. Это делается следующим образом:
-
Вычисляем евклидово расстояние (норму) для каждой строки:
- Для образца A:
[
|A| = \sqrt{3^2 + 4^2 + 5^2} = \sqrt{9 + 16 + 25} = \sqrt{50} \approx 7.07
] - Для образца B:
[
|B| = \sqrt{1^2 + 2^2 + 2^2} = \sqrt{1 + 4 + 4} = \sqrt{9} = 3
] - Для образца C:
[
|C| = \sqrt{6^2 + 8^2 + 10^2} = \sqrt{36 + 64 + 100} = \sqrt{200} \approx 14.14
]
- Для образца A:
-
Делим каждое значение в строке на норму этой строки:
- Образец A:
[
\left( \frac{3}{7.07}, \frac{4}{7.07}, \frac{5}{7.07} \right) \approx (0.424, 0.566, 0.707)
] - Образец B:
[
\left( \frac{1}{3}, \frac{2}{3}, \frac{2}{3} \right) \approx (0.333, 0.667, 0.667)
] - Образец C:
[
\left( \frac{6}{14.14}, \frac{8}{14.14}, \frac{10}{14.14} \right) \approx (0.424, 0.566, 0.707)
]
- Образец A:
Таким образом, после нормализации мы получаем новую матрицу:
Образец | Признак 1 | Признак 2 | Признак 3 |
---|---|---|---|
A | 0.424 | 0.566 | 0.707 |
B | 0.333 | 0.667 | 0.667 |
C | 0.424 | 0.566 | 0.707 |
Преимущества нормализации строк
-
Сравнимость: После нормализации все строки обладают одинаковой длиной, что упрощает их сравнение. В этом случае, например, косинусное расстояние может быть эффективно использовано для оценки схожести между строками.
-
Устойчивость к масштабированию: Нормализация позволяет избежать ситуаций, когда один признак с большим диапазоном значений доминирует над другими более мелкими признаками.
-
Оптимизация алгоритмов: Многие алгоритмы, такие как k-ближайших соседей (k-NN) или алгоритмы кластеризации (например, k-means), имеют лучшие результаты при использовании нормализованных данных.
Таким образом, нормализация строк является важным шагом в подготовке данных, позволяющим значительно повысить эффективность и точность моделей машинного обучения.