Псевдообратная матрица для одного примера
Проект с пингвинами
Проект использует 342 записи Palmer с нужными измерениями: 240 для обучения, 102 для проверки. Выбранные примеры для обучения определяют масштабирование и параметры модели. Исходный CSV
Этот проект обучает веса с помощью softmax, в отличие от лаборатории на главной странице, где используются ближайшие средние по видам. Те же измерения пингвинов, но разные методы классификации. Предсказания могут различаться.
Векторы и матрицы · Описывают операции над векторами и матрицами.
Векторы проекта имеют два признака; обучающая матрица содержит n строк и два столбца. Инструменты применимы, когда выполнены их предположения.
Рассмотрите понятие рядом с проектом: предположения источника могут отличаться. Эти наблюдения не доказывают теорему.
Вход: 12 × 2; Проверка на новых данных: 102 · #58 · 40.6 мм, 193 мм. Известный ответ: Адели; Прогноз: Адели · [≈0,7383; ≈0,2444; ≈0,01737].
Используется в разделах источника: 2.4 Двойной спуск
Для одного примера с d координатами ±1 квадрат нормы равен d. Источник явно задаёт псевдообратную матрицу его внешнего произведения.
Учебный пример — X=(1,−1), поэтому d=2.
Псевдообратная матрица появляется в вычислении дисперсии источника.
Пример формулы источника
Точное вычисление · Результат точен для этих конечных учебных входов с учётом обычного компьютерного округления.
Обозначения
- Псевдообратная матрица Мура—Пенроуза для Σ.
- Один двоичный вектор в {−1,1}ᵈ.
Пример формулы источника
Этот пример использует свои входные данные и предположения. Его изменение не меняет проект.
Измените значение или код и запустите пример. Это конечная иллюстрация, а не доказательство теоремы.
Поток данных в этом примере
Код изменён. Сбросьте его, чтобы вернуть схему примера.
Вы выбираете
input.second= -1
Вычисляется здесь
Выражение результата: { x, normSquared, outer, pseudoinverse, projection }
x=[1, input.second]Использует:input.secondnormSquared=x.reduce((sum, value) => sum + value * value, 0)Использует:xouter=x.map((a) => x.map((b) => a * b))Использует:xpseudoinverse=outer.map((row) => row.map((value) => value / normSquared ** 2))Использует:outer,normSquaredprojection=outer.map((row, i) => row.map( (_, j) => (i === j ? 1 : 0) - pseudoinverse[i].reduce((sum, value, k) => sum + value * outer[k][j], 0), ), )Использует:outer,pseudoinverse
Возвращает
x- массив (2 элементов): [1, -1]
normSquared- 2
outer- массив (2 элементов): [массив (2 элементов): [1, -1], массив (2 элементов): [-1, 1]]
pseudoinverse- массив (2 элементов): [массив (2 элементов): [0,25, -0,25], массив (2 элементов): [-0,25, 0,25]]
projection- массив (2 элементов): [массив (2 элементов): [0,5, 0,5], массив (2 элементов): [0,5, 0,5]]
Прочитайте числа из input и верните результат. Основы JavaScript.
Результат
Техническая формулировка
Для ненулевого вектора x псевдообратная к xxᵀ равна xxᵀ/‖x‖⁴. Двоичные координаты дают ‖x‖²=d, откуда получается второе выражение. Код использует d=2 и также вычисляет P=I−Σ⁺Σ, ортогональную проекцию на ядро Σ.
Источник: Псевдообратная матрица одного примера