---
title: Снижение размерности и метрическое обучение
questionDates:
  q-transfer-0026: '2026-10-01'
seo:
  description: >-
    Тема «Снижение размерности и метрическое обучение» для собеседования Data
    Scientist. Какие существуют методы сокращения размерности? Опишите метод
    главных компонент (PCA).
  title: Снижение размерности и метрическое обучение — Data Scientist
---

[Все темы Data Scientist](/prep/data-scientist)

Подтемы:

- [Сокращение размерности данных](#q-14bee738d69b81e1b1fed79c0a4df160)
- [SVD](#q-14bee738d69b81fbacb7ff14aa8c0340)
- [Триплеты](#q-14bee738d69b8199ae06d8d5c3daff00)

## <strong>Какие существуют методы сокращения размерности?</strong> [#q-14bee738d69b81e1b1fed79c0a4df160]

Существует несколько методов сокращения размерности данных&#58;

1. <strong>Метод главных компонент</strong>
   <code>&#40;Principal Component Analysis&#44; PCA&#41;</code>&#58; Это метод
   линейного преобразования, который находит новые оси (главные компоненты),
   обеспечивающие максимальную дисперсию данных. PCA используется для проекции
   данных на пространство меньшей размерности, сохраняя при этом максимальное
   количество информации.

1. <strong>Метод t-распределенного стохастического вложения соседей</strong>
   <code>
     &#40;t&#45;distributed Stochastic Neighbor Embedding&#44; t&#45;SNE&#41;
   </code>
   &#58; Это метод нелинейного снижения размерности, который стремится сохранить
   локальные структуры данных, представляя их в пространстве меньшей
   размерности. Он часто используется для визуализации данных высокой
   размерности.

1. <strong>Автоэнкодеры</strong> <code>&#40;Autoencoders&#41;</code>&#58; Это
   нейронные сети, обучаемые реконструировать входные данные в пространстве
   более низкой размерности. После обучения автоэнкодеры могут использоваться
   для сжатия и восстановления данных.

1. <strong>Снижение размерности на основе отбора признаков</strong>
   <code>&#40;Feature Selection&#41;</code>&#58; Это методы, направленные на
   выбор подмножества наиболее информативных признаков из исходных данных, таких
   как методы отбора признаков на основе важности, статистических тестов или
   регуляризации.

1. <strong>Снижение размерности на основе методов уменьшения образов</strong>
   <code>&#40;Manifold Learning&#41;</code>&#58; Это методы, которые стремятся
   найти низкоразмерное представление данных, сохраняя их внутреннюю структуру и
   связи между объектами.

:::note[Ссылки для изучения]

1. [PCA: линейное уменьшение размерности](https://deepmachinelearning.ru/docs/Machine-learning/Dimensionality-reduction/Principal-component-analysis)
1. [Нелинейное уменьшение размерности: manifold learning и t-SNE](https://scikit-learn.ru/stable/modules/manifold.html)
1. [UMAP и t-SNE. REU Data Science Club, с 0:14](https://www.youtube.com/watch?v=_BELpxkjU_0&t=14s)

:::

---

## <strong>Опишите метод главных компонент</strong> <code>&#40;PCA&#41;</code><strong>.</strong> [#q-14bee738d69b818e8cf1d9648e78deea]

Метод главных компонент <code>&#40;PCA&#41;</code> - это метод линейного преобразования данных, который находит новые базисные векторы (главные компоненты), обеспечивающие максимальную дисперсию данных. Эти главные компоненты ортогональны друг другу и представляют собой новое пространство признаков, в котором данные максимально различимы. <code>PCA</code> используется для снижения размерности данных, проецируя их на подпространство меньшей размерности, при этом сохраняя как можно больше исходной информации. Ключевая идея <code>PCA</code> заключается в том, чтобы найти такие направления в пространстве признаков, вдоль которых изменение данных наиболее значительно, и использовать их в качестве нового базиса для описания данных.

:::note[Ссылки для изучения]

1. [PCA: главные компоненты, центрирование и дисперсия](https://deepmachinelearning.ru/docs/Machine-learning/Dimensionality-reduction/Principal-component-analysis)
   :::

---

## Как по explained variance оценить потерю информации после PCA? [#q-transfer-0026]

Для PCA доля дисперсии компоненты равна ее собственному значению, деленному на сумму собственных значений. Сумма `explained_variance_ratio_` первых `k` компонент показывает сохраненную долю, а `1 - cumulative_ratio` дает потерянную. Например, 0,92 означает около 8% потерянной общей дисперсии. Это не равно потере полезной для таргета информации. Признаки обычно стандартизируют, если их масштабы несопоставимы, иначе признаки с большой дисперсией будут доминировать.

:::note[Ссылки для изучения]

1. [PCA: доля объяснённой дисперсии и её накопленная сумма](https://deepmachinelearning.ru/docs/Machine-learning/Dimensionality-reduction/Principal-component-analysis#оценка-числа-главных-компонент)
   :::

---

## <strong>Что такое SVD?</strong> [#q-14bee738d69b81fbacb7ff14aa8c0340]

SVD <code>&#40;Singular Value Decomposition&#41;</code> - это метод разложения матрицы на произведение трех матриц&#58; <InlineMath tex={"U"} />, <InlineMath tex={"\\Sigma"} />, и <InlineMath tex={"V^T"} />.

- <InlineMath tex={"U"} /> и <InlineMath tex={"V"} /> - ортогональные матрицы,
  состоящие из левых и правых сингулярных векторов соответственно.

- <InlineMath tex={"\\Sigma"} /> - диагональная матрица, содержащая сингулярные
  значения.

<code>SVD</code> используется для анализа и сжатия данных, а также для решения
систем линейных уравнений, сжатия изображений, фильтрации шума, рекомендательных
систем и других задач. Он также часто используется в алгоритмах машинного
обучения, таких как метод главных компонент <code>&#40;PCA&#41;</code>.

:::note[Ссылки для изучения]

1. [Матричная факторизация: сингулярное разложение SVD](https://contest.yandex.ru/tracks/ml/mathematical-foundations/matrix-factorization)
   :::

---

## Как обучают модель с triplet loss? [#q-14bee738d69b8199ae06d8d5c3daff00]

Обучение троек (треплетов) - это метод обучения нейронных сетей для задачи сравнения, например, в задачах ранжирования или распознавания лиц. Каждая тройка состоит из якорного изображения, положительного примера (изображения того же класса) и отрицательного примера (изображения другого класса).

Triplet loss штрафует модель, если расстояние от anchor до negative недостаточно больше расстояния до positive&#58; loss = max(d(anchor, positive) - d(anchor, negative) + margin, 0). Нулевая потеря достигается, когда negative дальше positive как минимум на margin.

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

:::note[Ссылки для изучения]

1. [Contrastive и Triplet Loss: реализация для эмбеддингов в PyTorch](https://habr.com/ru/companies/otus/articles/892462/)
   :::

---

## <strong>Разница между триплетом и контрастив лосс?</strong> [#q-14bee738d69b81b0b4ddebbd5e751ff6]

Между двумя этими лоссами, есть основная разница&#58;

- <code>Triplet Loss</code> минимизирует расстояние между "позитивными" парами
  (правильные примеры) и увеличивает расстояние между "негативными" парами
  (неправильные примеры) с использованием трёх элементов&#58; анкора,
  положительного и отрицательного примера.

- <code>Contrastive Loss</code>
  <code> </code>минимизирует расстояние между парой похожих примеров и
  увеличивает между непохожими, обычно в задачах бинарной классификации пар
  примеров.

:::note[Ссылки для изучения]

1. [Contrastive и Triplet Loss: реализация для эмбеддингов в PyTorch](https://habr.com/ru/companies/otus/articles/892462/)
   :::
