Трансформация kde2d

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

Двумерная ядерная оценка плотности (Kernel Density Estimation, KDE) строится на предположении, что каждая точка данных вносит вклад в окрестное пространство согласно выбранному ядру сглаживания. В результате получается непрерывная функция плотности:

  • каждая точка влияет не только на своё положение, но и на соседние области;
  • вклад точки уменьшается по мере удаления от её координат;
  • итоговая поверхность представляет собой сумму всех локальных вкладов.

Формально в 2D KDE используется функция вида:

(x,y)=_{i=1}^{n}K(,)

где параметры сглаживания (h_x, h_y) определяют «размытие» распределения по осям.

Трансформация kde2d в Vega

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

Базовая структура спецификации включает:

  • входные поля координат;
  • параметры сглаживания;
  • размер сетки вычисления;
  • выходные поля плотности.

Типовая конфигурация трансформации:

{
  "transform": [
    {
      "type": "kde2d",
      "x": "x",
      "y": "y",
      "bandwidth": [20, 20],
      "size": [200, 200]
    }
  ]
}

Поля x и y

Поля x и y задают координаты исходных наблюдений. Они должны быть числовыми и представлять непрерывное пространство, в котором вычисляется плотность.

Особенности:

  • допускаются любые числовые шкалы;
  • значения автоматически нормализуются в пределах вычислительной сетки;
  • пропущенные значения исключаются из расчёта.

Параметр bandwidth

bandwidth управляет степенью сглаживания. Это ключевой параметр, определяющий характер результата:

  • малые значения приводят к «шумной» поверхности с локальными пиками;
  • большие значения формируют более гладкое распределение;
  • обычно задаётся массивом из двух значений для осей X и Y.

h_x, h_y

Размер сетки size

Параметр size определяет разрешение итоговой сетки, на которой вычисляется плотность:

  • первое значение задаёт количество шагов по оси X;
  • второе — по оси Y;
  • чем выше разрешение, тем точнее поверхность, но выше вычислительная стоимость.

Выходные данные трансформации

Результатом работы kde2d является набор объектов, содержащих:

  • координаты узла сетки;
  • значение плотности в данной точке;
  • нормализованные вспомогательные метрики (в зависимости от реализации).

Типичная структура выходного объекта:

{
  "x": 34.2,
  "y": 18.7,
  "value": 0.0034
}

Поле value представляет оценку плотности в узле сетки.

Использование в Vega спецификациях

После вычисления kde2d данные обычно визуализируются через:

  • контурные карты (contour plot);
  • heatmap;
  • псевдо-3D поверхности;
  • изолинии плотности.

Пример визуализации через heatmap:

{
  "data": {
    "url": "data.csv"
  },
  "transform": [
    {
      "type": "kde2d",
      "x": "x",
      "y": "y",
      "bandwidth": [30, 30],
      "size": [100, 100]
    }
  ],
  "mark": "rect",
  "encoding": {
    "x": { "field": "x", "type": "quantitative" },
    "y": { "field": "y", "type": "quantitative" },
    "color": { "field": "value", "type": "quantitative" }
  }
}

Связь с Vega-Lite

В Vega-Lite прямой доступ к низкоуровневой трансформации kde2d ограничен, однако аналогичная функциональность реализуется через трансформацию плотности density.

В типичном сценарии Vega-Lite:

  • исходные данные группируются по полям;
  • применяется оценка плотности;
  • результат используется для построения heatmap или contour.

Пример структуры:

{
  "data": { "url": "data.csv" },
  "mark": "rect",
  "transform": [
    {
      "density": "value",
      "groupby": ["category"]
    }
  ],
  "encoding": {
    "x": { "field": "value", "bin": true },
    "y": { "field": "value", "bin": true },
    "color": { "field": "density", "type": "quantitative" }
  }
}

Хотя данный механизм отличается от классического kde2d, принцип остаётся тем же — переход от дискретных наблюдений к непрерывной оценке распределения.

Влияние параметров на форму распределения

Поведение kde2d определяется балансом между детализацией и сглаживанием:

  • увеличение bandwidth устраняет локальные флуктуации;
  • уменьшение size усиливает пиксельную структуру;
  • изменение соотношения осей bandwidth позволяет учитывать анизотропию данных.

K(x,y)=(--)

Такая гауссова форма ядра обеспечивает плавное затухание вклада точки во всех направлениях.

Особенности вычислительной реализации

В Vega kde2d оптимизируется через дискретизацию пространства:

  • пространство разбивается на регулярную сетку;
  • вклад каждой точки распространяется на соседние узлы;
  • вычисления выполняются векторизованно.

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

Практические аспекты интерпретации

Результирующая поверхность плотности используется для выявления:

  • кластеров высокой концентрации;
  • областей разреженности;
  • многомодальных распределений;
  • скрытых структур в данных.

Контурные уровни, построенные на основе kde2d, позволяют интерпретировать вероятность присутствия наблюдений в заданных областях пространства без привязки к отдельным точкам.