Skip to content

Commit c1fd3cd

Browse files
committed
deploy: 6bf8324
1 parent 9b4e6ce commit c1fd3cd

4 files changed

Lines changed: 147 additions & 185 deletions

File tree

metric-algo.html

Lines changed: 72 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -178,110 +178,91 @@ <h1 class="menu-title">Базовые методы искусственного
178178

179179
<div id="content" class="content">
180180
<main>
181-
<h1 id="Метрические-методы"><a class="header" href="#Метрические-методы">Метрические методы</a></h1>
182-
<h2 id="Основная-идея"><a class="header" href="#Основная-идея">Основная идея</a></h2>
183-
<p>Метрические методы основаны на <strong>гипотезе компактности</strong>: объекты одного класса находятся близко, объекты разных классов — далеко.</p>
184-
<hr />
185-
<h2 id="Ближайший-центроид-nearest-centroid"><a class="header" href="#Ближайший-центроид-nearest-centroid">Ближайший центроид (Nearest Centroid)</a></h2>
186-
<p><strong>Алгоритм</strong>:<br />
187-
Для каждого класса вычисляется центроид (среднее значение признаков).<br />
188-
Новый объект относится к классу, чей центроид ближе.</p>
189-
<p><strong>Плюсы</strong>:</p>
190-
<ul>
191-
<li>Простота реализации.</li>
192-
<li>Мало параметров.</li>
193-
<li>Быстрая классификация.</li>
194-
</ul>
195-
<p><strong>Минусы</strong>:</p>
181+
<h1 id="Метод-k-ближайших-соседей-knn"><a class="header" href="#Метод-k-ближайших-соседей-knn">Метод k-ближайших соседей (KNN)</a></h1>
182+
<h2 id="Постановка-задачи"><a class="header" href="#Постановка-задачи">Постановка задачи</a></h2>
183+
<p>Рассмотрим задачу классификации животных по двум признакам:</p>
196184
<ul>
197-
<li>Чувствителен к выбросам.</li>
198-
<li>Подходит только для “колоколообразных” распределений.</li>
185+
<li>Длина усов</li>
186+
<li>Длина хвоста</li>
199187
</ul>
200-
<hr />
201-
<h2 id="Метод-k-ближайших-соседей-knn"><a class="header" href="#Метод-k-ближайших-соседей-knn">Метод k ближайших соседей (kNN)</a></h2>
202-
<p><strong>Алгоритм</strong>:</p>
188+
<p>Для каждого объекта в обучающей выборке известна метка: <em>кот</em> или <em>пёс</em>. Цель — построить модель, которая по новым измерениям определит класс животного.</p>
189+
<p>При визуализации данных наблюдается, что объекты одного класса группируются в определённых областях пространства признаков.</p>
190+
<h2 id="Гипотеза-о-компактности"><a class="header" href="#Гипотеза-о-компактности">Гипотеза о компактности</a></h2>
191+
<p>Основа метода KNN — <strong>гипотеза о компактности</strong>:</p>
192+
<blockquote>
193+
<p>Объекты одного класса расположены «близко» друг к другу в пространстве признаков, а объекты разных классов — «далеко».</p>
194+
</blockquote>
195+
<p>Эта гипотеза позволяет решать задачу классификации через поиск похожих (близких) объектов в обучающей выборке.</p>
196+
<h2 id="Алгоритм-knn"><a class="header" href="#Алгоритм-knn">Алгоритм KNN</a></h2>
197+
<p><strong>Определение:</strong><br />
198+
K-ближайших соседей (K Nearest Neighbors, KNN) — один из самых простых и интуитивно понятных алгоритмов классификации.</p>
199+
<p><strong>Алгоритм предсказания:</strong></p>
203200
<ol>
204-
<li>Храним всю обучающую выборку.</li>
205-
<li>Для нового объекта находим ( k ) ближайших соседей.</li>
206-
<li>Класс — наиболее частый среди соседей.</li>
201+
<li>Для нового объекта вычислить расстояние до всех объектов обучающей выборки</li>
202+
<li>Выбрать $K$ объектов с наименьшим расстоянием</li>
203+
<li>Присвоить объекту класс, который чаще всего встречается среди $K$ соседей (голосование большинства)</li>
207204
</ol>
208-
<p><strong>Гиперпараметры</strong>:</p>
205+
<p><strong>Гиперпараметр:</strong><br />
206+
$K$ — количество соседей, участвующих в голосовании. Выбор $K$ влияет на качество модели:</p>
209207
<ul>
210-
<li>( k ) — число соседей.</li>
211-
<li>Метрика расстояния.</li>
212-
<li>Весовая функция.</li>
208+
<li>Малое $K$: модель чувствительна к шуму и выбросам</li>
209+
<li>Большое $K$: граница решений становится более гладкой, но может потерять локальные особенности</li>
213210
</ul>
214-
<p><strong>Особенности</strong>:</p>
211+
<h2 id="Метрики-расстояния"><a class="header" href="#Метрики-расстояния">Метрики расстояния</a></h2>
212+
<p>Для определения «близости» объектов используются различные метрики:</p>
213+
<h3 id="Манхэттенское-расстояние"><a class="header" href="#Манхэттенское-расстояние">Манхэттенское расстояние</a></h3>
214+
<p>$$d(\mathbf{x}, \mathbf{\hat{x}}) = \sum_{i=1}^{N} |x_i - \hat{x}_i|$$</p>
215+
<h3 id="Евклидово-расстояние"><a class="header" href="#Евклидово-расстояние">Евклидово расстояние</a></h3>
216+
<p>$$d(\mathbf{x}, \mathbf{\hat{x}}) = \sqrt{\sum_{i=1}^{N} (x_i - \hat{x}_i)^2}$$</p>
217+
<h3 id="Косинусное-расстояние"><a class="header" href="#Косинусное-расстояние">Косинусное расстояние</a></h3>
218+
<p>$$d(\mathbf{x}, \mathbf{\hat{x}}) = 1 - \frac{\sum_{i=1}^{N} x_i \hat{x}<em>i}{\sqrt{\sum</em>{i=1}^{N} x_i^2} \cdot \sqrt{\sum_{i=1}^{N} \hat{x}_i^2}}$$</p>
219+
<p><strong>Преимущество косинусного расстояния:</strong> измеряет угол между векторами, а не абсолютную разницу значений. Полезно, когда важна ориентация вектора признаков, а не его длина.</p>
220+
<h2 id="Проблемы-и-решения"><a class="header" href="#Проблемы-и-решения">Проблемы и решения</a></h2>
221+
<h3 id="1-Зависимость-от-масштаба-признаков"><a class="header" href="#1-Зависимость-от-масштаба-признаков">1. Зависимость от масштаба признаков</a></h3>
222+
<p><strong>Проблема:</strong><br />
223+
Если признаки имеют разные масштабы (например, 29 признаков ∈ [0, 1], а один ∈ [0, 1000]), то расстояние будет доминироваться признаком с большим масштабом.</p>
224+
<p><strong>Решение — нормализация признаков:</strong></p>
215225
<ul>
216-
<li><strong>Ленивое обучение</strong>: модель не обучается заранее, все вычисления происходят при классификации.</li>
217-
<li>Требует хранения всей выборки.</li>
218-
<li>Медленный на больших данных.</li>
226+
<li>Минимакс-нормализация: приведение всех значений к диапазону [0, 1]</li>
227+
<li>Стандартизация: приведение к нулевому математическому ожиданию и единичной дисперсии ($\mu = 0, \sigma = 1$)</li>
219228
</ul>
220-
<hr />
221-
<h2 id="Весовые-обобщения-knn"><a class="header" href="#Весовые-обобщения-knn">Весовые обобщения kNN</a></h2>
222-
<p>Можно учитывать не только количество соседей, но и их расстояние до объекта:</p>
223-
<p>[
224-
a(x) = \arg \max \sum_{t=1}^{k} w_t \cdot I[y(x_t) = a]
225-
]</p>
226-
<p>где ( w_t ) — вес, зависящий от расстояния.</p>
227-
<p><strong>Примеры весовых схем</strong>:</p>
229+
<h3 id="2-Вычислительная-сложность"><a class="header" href="#2-Вычислительная-сложность">2. Вычислительная сложность</a></h3>
230+
<p><strong>Проблема:</strong><br />
231+
При большом объёме обучающей выборки ($N$ объектов) поиск ближайших соседей требует $O(N)$ операций сравнения для каждого нового объекта.</p>
232+
<p><strong>Решение — структуры данных для ускорения поиска:</strong></p>
228233
<ul>
229-
<li>Обратное расстояние: ( w_t = \frac{1}{\rho(x, x_t)} )</li>
230-
<li>Ядерные веса: ( w_t = K\left(\frac{\rho(x, x_t)}{h}\right) )</li>
234+
<li><strong>kD-tree</strong> (k-dimensional tree): дерево разбиения пространства, на каждом уровне разделяющее данные по одному признаку</li>
235+
<li><strong>Ball tree</strong>: иерархическая структура на основе гиперсфер</li>
236+
<li><strong>HNSW</strong> (Hierarchical Navigable Small World): графовая структура для приближённого поиска ближайших соседей</li>
237+
<li><strong>FRiS-Stolp</strong>: метод отбора эталонных объектов для сокращения размера выборки</li>
231238
</ul>
232-
<hr />
233-
<h2 id="Регрессия-НадараяВатсона"><a class="header" href="#Регрессия-НадараяВатсона">Регрессия Надарая–Ватсона</a></h2>
234-
<p>Обобщение kNN для регрессии:</p>
235-
<p>[
236-
a(x) = \frac{\sum_{i=1}^{m} w_i(x) y_i}{\sum_{i=1}^{m} w_i(x)}
237-
]</p>
238-
<p>где ( w_i(x) ) — вес, зависящий от расстояния до объекта обучения.</p>
239-
<hr />
240-
<h2 id="Проблемы-метрических-методов"><a class="header" href="#Проблемы-метрических-методов">Проблемы метрических методов</a></h2>
241-
<ol>
242-
<li>
243-
<p><strong>Зависимость от масштаба признаков</strong><br />
244-
Решение: нормировка (например, StandardScaler).</p>
245-
</li>
246-
<li>
247-
<p><strong>Проклятие размерности</strong><br />
248-
В больших размерностях все объекты становятся “одинаково далекими”.<br />
249-
Но на реальных данных есть <strong>низкоразмерная структура</strong>.</p>
250-
</li>
251-
<li>
252-
<p><strong>Медленная классификация</strong><br />
253-
Решение: эффективные структуры данных (KD-tree, Ball tree, HNSW).</p>
254-
</li>
255-
</ol>
256-
<hr />
257-
<h2 id="Метрики-расстояния"><a class="header" href="#Метрики-расстояния">Метрики расстояния</a></h2>
239+
<h3 id="3-Улучшение-голосования"><a class="header" href="#3-Улучшение-голосования">3. Улучшение голосования</a></h3>
240+
<p>Вместо простого подсчёта количества соседей каждого класса можно использовать <strong>взвешенное голосование</strong>, где вес соседа обратно пропорционален расстоянию до него:</p>
241+
<p>$$\text{вес}_i = \frac{1}{d(\mathbf{x}, \mathbf{x}_i)} \quad \text{или} \quad \text{вес}_i = e^{-d(\mathbf{x}, \mathbf{x}_i)}$$</p>
242+
<h2 id="Свойства-модели-knn"><a class="header" href="#Свойства-модели-knn">Свойства модели KNN</a></h2>
243+
<div class="table-wrapper"><table><thead><tr><th>Аспект</th><th>Описание</th></tr></thead><tbody>
244+
<tr><td><strong>Обучение</strong></td><td>Отсутствует в классическом смысле. Модель «запоминает» всю обучающую выборку</td></tr>
245+
<tr><td><strong>Предсказание</strong></td><td>Вычислительно затратно: требуется рассчитать расстояния до всех объектов выборки</td></tr>
246+
<tr><td><strong>Параметры</strong></td><td>Отсутствуют (модель не имеет обучаемых параметров)</td></tr>
247+
<tr><td><strong>Гиперпараметры</strong></td><td>$K$ (количество соседей), тип метрики расстояния, стратегия взвешивания</td></tr>
248+
<tr><td><strong>Интерпретируемость</strong></td><td>Высокая: решение принимается на основе конкретных похожих объектов</td></tr>
249+
</tbody></table>
250+
</div>
251+
<h2 id="Метод-fris-stolp-для-отбора-эталонов"><a class="header" href="#Метод-fris-stolp-для-отбора-эталонов">Метод FRiS-Stolp для отбора эталонов</a></h2>
252+
<p>Для сокращения вычислительной сложности можно отобрать подмножество наиболее информативных объектов — <strong>эталонов</strong> (столпов).</p>
253+
<p><strong>Критерий качества эталона:</strong><br />
254+
Объект является хорошим эталоном своего класса, если:</p>
258255
<ul>
259-
<li><strong>Евклидова</strong>: ( \sqrt{\sum (x_i - z_i)^2} )</li>
260-
<li><strong>Манхэттенская</strong>: ( \sum |x_i - z_i| )</li>
261-
<li><strong>Минковского</strong>: ( \left( \sum |x_i - z_i|^p \right)^{1/p} )</li>
262-
<li><strong>Махаланобиса</strong>: учитывает ковариацию признаков.</li>
263-
<li><strong>Косинусная мера</strong>: для текстов и векторов.</li>
264-
<li><strong>Джаккарда</strong>: для множеств.</li>
265-
<li><strong>DTW (Dynamic Time Warping)</strong>: для временных рядов.</li>
266-
<li><strong>Левенштейна</strong>: для строк.</li>
256+
<li>Объекты его класса расположены максимально близко к нему</li>
257+
<li>Объекты других классов расположены максимально далеко</li>
267258
</ul>
259+
<p><strong>Функция FRiS:</strong>
260+
$$\text{FRiS}(z, a_i, b_i) = \frac{r_2 - r_1}{r_2 + r_1}$$</p>
261+
<p>где $r_1$ — расстояние до ближайшего объекта своего класса, $r_2$ — до ближайшего объекта чужого класса.</p>
268262
<hr />
269-
<h2 id="Пример-knn-на-python-scikit-learn"><a class="header" href="#Пример-knn-на-python-scikit-learn">Пример: kNN на Python (scikit-learn)</a></h2>
270-
<pre><code class="language-python">from sklearn.neighbors import KNeighborsClassifier
271-
272-
model = KNeighborsClassifier(n_neighbors=5, metric='euclidean')
273-
model.fit(X_train, y_train)
274-
predictions = model.predict(X_test)
275-
</code></pre>
276-
<hr />
277-
<h2 id="Итог"><a class="header" href="#Итог">Итог</a></h2>
278-
<p>Метрические методы — простые, интерпретируемые и мощные инструменты, особенно когда:</p>
279-
<ul>
280-
<li>Нет явных признаковых описаний.</li>
281-
<li>Данные имеют геометрическую структуру.</li>
282-
<li>Нужна быстрая прототипизация.</li>
283-
</ul>
284-
<p><strong>Главный недостаток</strong> — вычислительная сложность на больших данных, но это решается выбором эффективных метрик и структур данных.</p>
263+
<blockquote>
264+
<p>В следующих главах: метрики качества моделей машинного обучения, линейная регрессия.</p>
265+
</blockquote>
285266

286267
</main>
287268

0 commit comments

Comments
 (0)