Основы машинного обучения - нормы

Норма определяется как функция, с помощью которой мы можем измерить величину вектора. Используя норму, мы можем измерить, насколько «велик» вектор. Норма отображает вектор в неотрицательное значение. Норма вектора x фактически является мерой расстояния от начала координат до точки x.

Более строго, норма - это любая функция со следующими свойствами:

  1. Нормы - это неотрицательные значения. Нормы - это на самом деле длина или расстояние. Таким образом, это не может быть отрицательное число. Но если вектор равен нулю, тогда норма может быть равна нулю.
  2. Нормы учитывают неравенство треугольника. Это просто означает, что норма суммы некоторых векторов меньше или равна сумме норм этих векторов: || x + y || ≤ || x || + || y ||
  3. || a⋅ x || = || a || ⋅ || x ||. Здесь a - скаляр, а x - вектор. Норма вектора, умноженная на скаляр, равна абсолютному значению этого скаляра, умноженному на норму вектора.

Применение норм

  1. Всякий раз, когда нам нужно вычислить функцию потерь, нам нужно знать величину расстояния между предполагаемыми и фактическими значениями.
  2. При регуляризации нам нужно знать величину весов.
  3. В машине опорных векторов мы должны найти гиперплоскость, которая имеет наибольшее перпендикулярное расстояние между гиперплоскостью и ближайшими образцами с каждой стороны. Здесь мы используем норму для вычисления этих расстояний.

Что касается машинного обучения, Нормы можно классифицировать следующим образом:

  1. Lᵖ Norm
  2. L¹ Norm (Манхэттен / расстояние такси)
  3. Евклидова норма (норма L²)
  4. Макс Норм
  5. Норма Фробениуса

Lᵖ Norm

Для p∈ℝ, p≥1, p-норма - это норма на подходящих вещественных векторных пространствах, заданная корнем p-й степени суммы (или интеграла) p-й степени абсолютных значений компонент вектора.

Используя следующий код Lᵖ Norm, можно реализовать:

# Import Numpy package and the norm function
import numpy as np
from numpy.linalg import norm


# Define a vector
v = np.array([2,3,1,0])

# Take the q-norm which p=2
p = 2
v_norm = norm(v, ord=p)

# Print values
print('The vector: ', v)
print('The vector norm: ', v_norm)

Результат будет выглядеть так:

The vector:  [2 3 1 0]
The vector norm:  3.7416573867739413

L¹ Norm

Если p = 1, у нас просто сумма абсолютных значений. Это то, что мы интуитивно использовали в начале этого урока:

Евклидова норма (норма L²)

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

Максимальная норма

L ∞ норма соответствует модулю наибольшего элемента вектора.

Это код Python Max Normal-

# max norm of a vector
from numpy import inf
from numpy import array
from numpy.linalg import norm
v = array([1, 2, 3])
print(v)
maxnorm = norm(v, inf)
print(maxnorm)

Запустив этот код, вы должны получить следующий вывод:

[1, 2, 3]
3.00

Норма Фробениуса

Это эквивалентно принятию L² нормы матрицы после выравнивания. Норма L² предназначена для векторов, а Фробениус - для матриц.

max norm of a vector
from numpy import inf
from numpy import array
from numpy.linalg import norm
v = array([1, 2, 3])
print(v)
np.linalg.norm(v)

вы должны получить следующий вывод:

8.3666002653407556

Спасибо!

На сегодня все. Не забудьте рассказать эту историю своим друзьям и подарите нам свой 👏!