Ядерное сглаживание для оценки плотности

## Идея aka Краткое содержание

Проблема: нужен непараметрический метод для оценки плотности.

Решение: метод будет основан на локальной оценке плотности в окрестности интересующей точки по известной выборке. Локальная оценка опирается на само определение плотности распределения:

p
(
x
# )

lim

h
→
0

1

2
h

P
[
x
−
h
,
x
h
]

{\displaystyle p(x) = \lim\_{h \to 0} \frac{1}{2h}P[x - h, x + h]}

, где

P
[
a
,
b
]

{\displaystyle P[a, b]}

 — вероятностная мера отрезка

[
a
,
b
]

{\displaystyle [a, b]}

.

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

Общая формула KDE (для одномерного и многомерного случая) представлена ниже.

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

Итак...

## Условные обозначения

N

{\displaystyle N}

 — количество объектов в выборке.

D

{\displaystyle D}

 — размер признакового пространства,

D
≥
1

{\displaystyle D \geq 1}

.

C

{\displaystyle C}

 — количество классов.

X

=
{
(

x
i

,

y
i

)

}

# i
1

N

{\displaystyle \mathbb{X}=\{(x\_i, y\_i)\}\_{i=1}^{N}}

 — выборка,

x
i

∈

R

D

{\displaystyle x\_i \in \mathbb{R}^D}

,

y
i

∈
{
1
,
…
,
C
}

{\displaystyle y\_i \in \{1, \dots, C\}}

.

x
∈

R

D

{\displaystyle x \in \mathbb{R}^D}

.

h

{\displaystyle h}

 — ширина окна (bandwidth),

h
≥
0

{\displaystyle h \geq 0}

.

p
^

(
x
)

{\displaystyle \hat{p}(x)}

 — оценка плотности распределения

p
(
x
)

{\displaystyle p(x)}

.

I

[

{\displaystyle \mathbb{I}[}

условие

]

{\displaystyle ]}

 — равняется 1, если условие выполнено, иначе равняется 0.

y
^

(
x
)

{\displaystyle \hat{y}(x)}

 — оценка зависимости

y
(
x
)

{\displaystyle y(x)}

.

## Гистограммы

Недостаток: необходимо фиксировать отрезки, на которые разбивается интервал. Проблема: выбор количества корзинок и ширины корзинок.

## Ядерное сглаживание

Идея: каждый

x
i

{\displaystyle x\_i }

 выборки будет центром блока.

Блок может иметь следующий вид:

1
2

⋅

I

[

x
−

x
i

h

≤
1
]
,
# D
1

{\displaystyle \tfrac{1}{2}\cdot\mathbb{I}[|\tfrac{x - x\_i}{h}| \leq 1], D = 1}

.

# D
1

{\displaystyle D=1}**

**Kernel Density Estimation** (**KDE**, локальная непараметрическая оценка Парзена-Розенблатта) —

p
^

(
x
# )

1

N
⋅
h

⋅

∑

# i
1

N

K
(

x
−

x
i

h

)

{\displaystyle \hat{p}(x)=\tfrac{1}{N\cdot h}\cdot\sum\_{i=1}^{N}K(\tfrac{x-x\_i}{h})}

,

K
(
⋅
)

{\displaystyle K(\cdot)}

 — ядро, чётная и нормированная функция:

∫

−
∞

∞

K
(
u
)
d
# u
1

{\displaystyle \int\_{-\infty}^{+\infty}K(u)du=1}

. Следствие:

p
^

(
x
)

{\displaystyle \hat{p}(x)}

 обладает той же степенью гладкости, что и ядро

K
(
⋅
)

{\displaystyle K(\cdot)}

.

#### **Виды ядер**

* Прямоугольное ядро (tophat kernel):

K
(
u
# )

1
2

⋅

I

[

u

≤
1
]

{\displaystyle K(u)=\tfrac{1}{2}\cdot\mathbb{I}[|u| \leq 1]}

 соответствует эмпирической оценке плотности (доля точек выборки, лежащих внутри отрезка

[
x
−
h
,
x
h
]

{\displaystyle [x-h, x+h]}

). Одно из простейших ядер, но не учитывает расстояние между объектами, а также итоговое распределение не будет являться непрерывным.
* Гауссово ядро:

K
(
u
# )

1

2
⋅
π

⋅
exp
⁡

−

u
2

2

{\displaystyle K(u)=\tfrac{1}{\sqrt{2\cdot\pi}}\cdot\exp{\tfrac{-u^2}{2}}}
* Ядро Епанечникова:

K
(
u
# )

3
4

⋅
max
{
1
−

u
2

,
0
}

{\displaystyle K(u)=\tfrac{3}{4}\cdot\max\{1 - u^2, 0\}}
* Треугольное ядро:

K
(
u
# )
max
{
1
−

u

,
0
}

{\displaystyle K(u)=\max\{1 - |u|, 0\}}
* Косинусное ядро:

K
(
u
# )

π
4

cos
⁡
(

π
⋅
u

2

)
⋅

I

[

u

≤
1
]

{\displaystyle K(u)=\tfrac{\pi}{4}\cos(\tfrac{\pi\cdot u}{2})\cdot\mathbb{I}[|u| \leq 1]}
* Экспоненциальное ядро:

K
(
u
# )

1
2

⋅
exp
⁡
(
−

u

)

{\displaystyle K(u)=\tfrac{1}{2}\cdot\exp(-|u|)}
* Квартическое ядро:

K
(
u
# )

15
16

⋅
(
1
−

u
2

)
2

⋅

I

[

u

≤
1
]

{\displaystyle K(u)=\tfrac{15}{16}\cdot(1 - u^2)^2\cdot\mathbb{I}[|u| \leq 1]}

#### **Состоятельность оценки

p
^

(
x
)

{\displaystyle \hat{p}(x)}**

Оценка

p
^

(
x
)

{\displaystyle \hat{p}(x)}

 состоятельна, если

∀
x

E

[
(

p
^

(
x
)
−
p
(
x
)

)
2

]

→

N
→
∞

0

{\displaystyle \forall x~ \mathbb{E}[(\hat{p}(x) - p(x))^2] \xrightarrow[]{N \rightarrow \infty} 0}

.

Достаточные условия состоятельности оценки

p
^

(
x
)

{\displaystyle \hat{p}(x)}

:

lim

N
→
∞

h
(
N
# )
0

{\displaystyle \lim\_{N \to \infty} h(N) = 0}

,

lim

N
→
∞

N
⋅
h
(
N
# )
∞

{\displaystyle \lim\_{N \to \infty} N \cdot h(N) = \infty}

∫

−
∞

∞

K
(
u
)

d
u
<
∞

{\displaystyle \int\_{-\infty}^{+\infty}|K(u)|du < \infty}

,

∫

−
∞

∞

K
(
u
)
d
# u
1

{\displaystyle \int\_{-\infty}^{+\infty}K(u)du=1}

,

sup

u
∈
R

K
(
u
)
<
∞

{\displaystyle \sup\_{u \in R} K(u) < \infty}

,

lim

u
→
∞

u
⋅
K
(
u
)

=
0

{\displaystyle \lim\_{u \to \infty} |u\cdot K(u)| = 0}

### **Многомерный случай

D
≥
2

{\displaystyle D\geq2}**

p
^

(
x
# )

1

N
⋅

h
D

⋅

∑

# i
1

N

K
(

x
−

x
i

h

)
,
x
∈

R

D

{\displaystyle \hat{p}(x)=\tfrac{1}{N\cdot h^D}\cdot\sum\_{i=1}^{N}K(\tfrac{x-x\_i}{h}), x \in \mathbb{R}^D}

#### **Виды ядер**

* Гауссово ядро:

K
(
u
# )

1

(
2
⋅
π

)

D
2

⋅
exp
⁡
(

−

u
T

⋅
u

2

)

{\displaystyle K(u)=\tfrac{1}{(2\cdot\pi)^{\tfrac{D}{2}}}\cdot\exp(\tfrac{-u^T\cdot u}{2})}
* Ядро Епанечникова:

K
(
u
# )

(
D
2
)
!
!

2

⌈

D
2

2

⌉

⋅

π

⌊

D
2

⌋

⋅
max
{
1
−

u

T

⋅
u
,
0
}

{\displaystyle K(u)={\tfrac {(D+2)!!}{2^{\left\lceil {\tfrac {D+2}{2}}\right\rceil }\cdot \pi ^{\left\lfloor {\tfrac {D}{2}}\right\rfloor }}}\cdot \max\{1-u^{T}\cdot u,0\}}
* Произведение одномерных ядер:

K
(

x
−

x
i

h

# d
1

D

K
d

(

x
d

−

x
i
d

h

)
,
# x
(

x
1

,
…
,

x
D

)
,

x
i

=
(

x
i
1

,
…
,

x
i
D

)

{\displaystyle K(\tfrac{x - x\_i}{h})=\prod\_{d=1}^{D} K\_d(\tfrac{x^d - x\_i^d}{h}), x=(x^1, \dots, x^D), x\_i=(x\_i^1, \dots, x\_i^D)}

##### **Зависящие от метрики

ρ
(
⋅
,
⋅
)

{\displaystyle \rho(\cdot, \cdot)}

 ядра**

**Примечание:** в случае метрики, отличной от евклидовой, коэффициенты перед ядрами могут быть другими.

p
^

(
x
# )

1

N
⋅

h
D

⋅

∑

# i
1

N

K
(

ρ
(
x
,

x
i

)

h

)

{\displaystyle \hat{p}(x)=\tfrac{1}{N\cdot h^D}\cdot\sum\_{i=1}^{N}K(\tfrac{\rho(x, x\_i)}{h})}

* Гауссово ядро:

K
(

ρ
(
x
,

x
i

)

h

# )

1

(
2
⋅
π

)

D
2

⋅
exp
⁡
(

−

ρ
2

(
x
,

x
i

)

2
⋅

h
2

)

{\displaystyle K(\tfrac{\rho(x, x\_i)}{h})=\tfrac{1}{(2\cdot\pi)^{\tfrac{D}{2}}}\cdot\exp(\tfrac{-\rho^2(x, x\_i)}{2\cdot h^2})}
* Ядро Епанечникова:

K
(

ρ
(
x
,

x

i

)

h

# )

(
D
2
)
!
!

2

⌈

D
2

2

⌉

⋅

π

⌊

D
2

⌋

⋅
max
{
1
−

ρ

2

(
x
,

x

i

)

h

2

,
0
}

{\displaystyle K({\tfrac {\rho (x,x\_{i})}{h}})={\tfrac {(D+2)!!}{2^{\left\lceil {\tfrac {D+2}{2}}\right\rceil }\cdot \pi ^{\left\lfloor {\tfrac {D}{2}}\right\rfloor }}}\cdot \max\{1-{\tfrac {\rho ^{2}(x,x\_{i})}{h^{2}}},0\}}

### **Выбор ширины окна (bandwidth)**

При

h
→
0

{\displaystyle h \to 0}

 плотность концентрируется вблизи точек выборки,

p
^

(
x
)

{\displaystyle \hat{p}(x)}

 претерпевает резкие скачки. При

h
→
∞

{\displaystyle h \to \infty}

 более гладкая плотность, происходит вырождение в константу. При построении KDE ширина окна

h

{\displaystyle h}

 важнее, чем функция ядра

K
(
⋅
)

{\displaystyle K(\cdot)}

, так как тип ядра влияет на гладкость, а не на точность аппроксимации.

**Стратегия выбора**: чем более плотное распределение объектов выборки, тем меньше должно быть

h

{\displaystyle h}

* **Постоянное значение h**, примеры стратегий:
	+ h
	=

	1
	N

	⋅

	∑

	i
	=
	1

	N

	d

	i
	K

	,

	d

	i
	K

	{\displaystyle h=\tfrac{1}{N}\cdot\sum\_{i=1}^{N}d\_{iK}, d\_{iK}}

	 — расстояние от

	x
	i

	{\displaystyle x\_i }

	 до

	K

	{\displaystyle K}

	-го ближайшего соседа (

	K

	{\displaystyle K}

	 можно вычислять по скользящему контролю).
	+ h

	{\displaystyle h}

	 вычисляется по скользящему контролю (Leave-one-out, например), можно найти по максимальному правдоподобию на отложенной выборке (поиск максимального значения правдоподобия производится по заданному списку значений

	h

	{\displaystyle h}

	).
* **Переменное значение

h
(
x
)

{\displaystyle h(x)}**, например:

h
(
x
)

{\displaystyle h(x)}

 — расстояние от

x

{\displaystyle x}

 до

K

{\displaystyle K}

-го ближайшего соседа (

K

{\displaystyle K}

 можно найти по скользящему контролю).

### **Метод Парзеновского окна**

**Метод Парзеновского окна** — метод байесовской классификации, основанный на непараметрическом восстановлении плотности по имеющейся выборке.

Оценка условной плотности

p
(
x

y
)

{\displaystyle p(x|y) }

 через KDE (

y
∈
{
1
,
…
,
C
}
,
D
≥
1

{\displaystyle y \in \{1, \dots, C\}, D \geq 1}

):

p
(
x

y
# )

1

N
y

⋅

h
D

⋅

∑

i
:

y
i

=
y

K
(

ρ
(
x
,

x
i

)

h

)
,

N
y

{\displaystyle p(x|y)=\tfrac{1}{N\_y\cdot h^D}\cdot\sum\_{i:y\_i=y}K(\tfrac{\rho(x, x\_i)}{h}), N\_y}

 — число объектов класса

y
,
ρ
(
⋅
,
⋅
)

{\displaystyle y, \rho(\cdot, \cdot)}

 — метрика.

Байесовское решающее правило даёт следующий классификатор:

y
^

(
x
# )
arg
⁡

max

y

p
(
y

x
# )
arg
⁡

max

y

p
(
x

y
)
⋅
p
(
y
)

p
(
x
)

=
arg
⁡

max

y

p
(
x

y
)
⋅
p
(
y
)

{\displaystyle \hat{y}(x)=\arg\max\_{y}p(y|x)=\arg\max\_{y}\tfrac{p(x|y)\cdot p(y)}{p(x)}=\arg\max\_{y}p(x|y)\cdot p(y)}

Оценим

p
(
x

y
)

{\displaystyle p(x|y) }

 с помощью KDE,

p
(
y
)

{\displaystyle p(y) }

 как

N
y

N

{\displaystyle \tfrac{N\_y}{N}}

:

y
^

(
x
# )
arg
⁡

max

y

1

N
y

⋅

h
D

⋅

∑

i
:

y
i

=
y

K
(

ρ
(
x
,

x
i

)

h

)
⋅

N
y

N

=
arg
⁡

max

y

∑

i
:

y
i

=
y

K
(

ρ
(
x
,

x
i

)

h

)

{\displaystyle \hat{y}(x)=\arg\max\_{y}\tfrac{1}{N\_y\cdot h^D}\cdot\sum\_{i:y\_i=y}K(\tfrac{\rho(x, x\_i)}{h})\cdot\tfrac{N\_y}{N}=\arg\max\_{y}\sum\_{i:y\_i=y}K(\tfrac{\rho(x, x\_i)}{h})}

#### **Преобразование метода Парзеновского окна в метод ближайших соседей**

Обозначим

h
(
x
# )
ρ
(
x
,

x

i
(
K
)

)
,
i
(
K
)

{\displaystyle h(x)=\rho(x, x\_{i(K)}), i(K)}

 — индекс

K

{\displaystyle K}

-го ближайшего соседа для

x

{\displaystyle x}

,

K
(
u
# )

I

[

u

≤
1
]

{\displaystyle K(u)=\mathbb{I}[|u| \leq 1]}

. Тогда:

y
^

(
x
# )
arg
⁡

max

y

∑

j
:

y
j

=
y

I

[
ρ
(
x
,

x
j

)
≤
ρ
(
x
,

x

i
(
K
)

)
# ]
arg
⁡

max

y

∑

j
:
ρ
(
x
,

x
j

)
≤
ρ
(
x
,

x

i
(
K
)

)

I

[

y
j

=
y
# ]

{\displaystyle \hat{y}(x)=\arg\max\_{y}\sum\_{j:y\_j=y}\mathbb{I}[\rho(x, x\_j) \leq \rho(x, x\_{i(K)})]=\arg\max\_{y}\sum\_{j:\rho(x, x\_j) \leq \rho(x, x\_{i(K)})}\mathbb{I}[y\_j=y]=}

=
arg
⁡

max

y

∑

# j
1

K

I

[

y

i
(
j
)

=
y
]

{\displaystyle =\arg\max\_{y}\sum\_{j=1}^{K}\mathbb{I}[y\_{i(j)}=y]}

## Ссылки

* лекция Виктора Китова по ядерной оценке плотности
* К. В. Воронцов Математические методы обучения по прецедентам