Skip to content

Commit 06ffdda

Browse files
committed
Add first seminar
1 parent 8522fcc commit 06ffdda

3 files changed

Lines changed: 212 additions & 1 deletion

File tree

src/SUMMARY.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@
22

33
[О себе](./intro/about-me.md)
44

5-
# Basic
5+
# Немного теории
6+
7+
- [Введение](./overview.md)
8+
- [Метрические алгоритмы](./metric_algo.md)
9+

src/metric_algo.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# Метрические методы
2+
3+
## Основная идея
4+
5+
Метрические методы основаны на **гипотезе компактности**: объекты одного класса находятся близко, объекты разных классов — далеко.
6+
7+
---
8+
9+
## Ближайший центроид (Nearest Centroid)
10+
11+
**Алгоритм**:
12+
Для каждого класса вычисляется центроид (среднее значение признаков).
13+
Новый объект относится к классу, чей центроид ближе.
14+
15+
**Плюсы**:
16+
- Простота реализации.
17+
- Мало параметров.
18+
- Быстрая классификация.
19+
20+
**Минусы**:
21+
- Чувствителен к выбросам.
22+
- Подходит только для “колоколообразных” распределений.
23+
24+
---
25+
26+
## Метод k ближайших соседей (kNN)
27+
28+
**Алгоритм**:
29+
1. Храним всю обучающую выборку.
30+
2. Для нового объекта находим \( k \) ближайших соседей.
31+
3. Класс — наиболее частый среди соседей.
32+
33+
**Гиперпараметры**:
34+
- \( k \) — число соседей.
35+
- Метрика расстояния.
36+
- Весовая функция.
37+
38+
**Особенности**:
39+
- **Ленивое обучение**: модель не обучается заранее, все вычисления происходят при классификации.
40+
- Требует хранения всей выборки.
41+
- Медленный на больших данных.
42+
43+
---
44+
45+
## Весовые обобщения kNN
46+
47+
Можно учитывать не только количество соседей, но и их расстояние до объекта:
48+
49+
\[
50+
a(x) = \arg \max \sum_{t=1}^{k} w_t \cdot I[y(x_t) = a]
51+
\]
52+
53+
где \( w_t \) — вес, зависящий от расстояния.
54+
55+
**Примеры весовых схем**:
56+
- Обратное расстояние: \( w_t = \frac{1}{\rho(x, x_t)} \)
57+
- Ядерные веса: \( w_t = K\left(\frac{\rho(x, x_t)}{h}\right) \)
58+
59+
---
60+
61+
## Регрессия Надарая–Ватсона
62+
63+
Обобщение kNN для регрессии:
64+
65+
\[
66+
a(x) = \frac{\sum_{i=1}^{m} w_i(x) y_i}{\sum_{i=1}^{m} w_i(x)}
67+
\]
68+
69+
где \( w_i(x) \) — вес, зависящий от расстояния до объекта обучения.
70+
71+
---
72+
73+
## Проблемы метрических методов
74+
75+
1. **Зависимость от масштаба признаков**
76+
Решение: нормировка (например, StandardScaler).
77+
78+
2. **Проклятие размерности**
79+
В больших размерностях все объекты становятся “одинаково далекими”.
80+
Но на реальных данных есть **низкоразмерная структура**.
81+
82+
3. **Медленная классификация**
83+
Решение: эффективные структуры данных (KD-tree, Ball tree, HNSW).
84+
85+
---
86+
87+
## Метрики расстояния
88+
89+
- **Евклидова**: \( \sqrt{\sum (x_i - z_i)^2} \)
90+
- **Манхэттенская**: \( \sum |x_i - z_i| \)
91+
- **Минковского**: \( \left( \sum |x_i - z_i|^p \right)^{1/p} \)
92+
- **Махаланобиса**: учитывает ковариацию признаков.
93+
- **Косинусная мера**: для текстов и векторов.
94+
- **Джаккарда**: для множеств.
95+
- **DTW (Dynamic Time Warping)**: для временных рядов.
96+
- **Левенштейна**: для строк.
97+
98+
---
99+
100+
## Пример: kNN на Python (scikit-learn)
101+
102+
```python
103+
from sklearn.neighbors import KNeighborsClassifier
104+
105+
model = KNeighborsClassifier(n_neighbors=5, metric='euclidean')
106+
model.fit(X_train, y_train)
107+
predictions = model.predict(X_test)
108+
```
109+
110+
---
111+
112+
## Итог
113+
114+
Метрические методы — простые, интерпретируемые и мощные инструменты, особенно когда:
115+
- Нет явных признаковых описаний.
116+
- Данные имеют геометрическую структуру.
117+
- Нужна быстрая прототипизация.
118+
119+
**Главный недостаток** — вычислительная сложность на больших данных, но это решается выбором эффективных метрик и структур данных.

src/overview.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Введение
2+
3+
## Цели курса
4+
Этот курс станет вашим стартом в мир **Data Science** и **Machine Learning**. По его окончании вы сможете претендовать на позиции **Junior Machine Learning Engineer** или **Junior Data Scientist**.
5+
6+
### Для вас этот курс — это:
7+
* **Практическое применение** знаний из математического анализа, статистики и линейной алгебры.
8+
* Фундамент для будущего перехода на **руководящие должности** в технической сфере.
9+
10+
### Для нас этот курс — это:
11+
* Развитие профессионального сообщества.
12+
* Возможность найти будущих коллег.
13+
* Интересный и важный процесс поддержания знаний в актуальном состоянии.
14+
15+
## Основные термины
16+
Давайте договоримся о терминах, которые будут использоваться на протяжении всего курса:
17+
18+
* **Искусственный интеллект (AI)** — система, способная принимать решения на основе восприятия окружающего мира.
19+
* **Машинное обучение (ML)** — подраздел AI; система, принимающая решения на основе **накопленного опыта (данных)** и текущего состояния мира.
20+
* **Глубокое обучение (DL)** — подраздел ML, основанный на использовании глубоких **нейронных сетей (Neural Networks, NN)**.
21+
* **Data Science** — дисциплина, включающая сбор, обработку, анализ и извлечение знаний из данных.
22+
* **Big Data** — обработка и анализ данных, масштаб которых не позволяет работать с ними в стандартных инструментах (например, в Excel).
23+
24+
### Термины, связанные с данными
25+
* **Датасет / Выборка (Dataset)** — набор данных, с которым работает алгоритм.
26+
* **Признак / Фича (Feature, X)** — характеристика или измеряемый параметр объекта.
27+
* **Целевая переменная / Метка / Класс (Label, Target, y)** — значение, которое мы хотим предсказать по признакам объекта.
28+
* **Закон природы (в контексте ML)** — скрытая взаимосвязь между признаками и целевой переменной, которую стремится восстановить модель. Формально: отображение из пространства признаков `X` в пространство меток `y`.
29+
30+
## Типы задач машинного обучения
31+
Задачи ML классифицируются по наличию и типу разметки (метки `y`).
32+
33+
### 1. Обучение с учителем (Supervised Learning)
34+
Есть **размеченная** обучающая выборка, где каждому объекту сопоставлена правильная метка `y`. Цель — восстановить закон природы `X -> y`.
35+
36+
**Пример:** Классификация электронных писем (спам / не спам), где человек вручную разметил исторические данные.
37+
38+
### 2. Обучение без учителя (Unsupervised Learning)
39+
Разметки `y` нет или она не используется. Алгоритм ищет внутренние структуры, закономерности и связи в данных.
40+
41+
**Пример:** Кластеризация пользователей поисковой системы по их запросам для выявления групп интересов.
42+
43+
## Основные типы задач
44+
В рамках двух парадигм выделяют несколько ключевых типов задач.
45+
46+
### Классификация (Classification)
47+
* **Цель:** Восстановить закон природы.
48+
* **Особенность:** Множество меток `y`**конечное** (часто небольшое).
49+
* **Подвиды:** Бинарная (2 класса) и многоклассовая (>2 классов).
50+
* **Пример:** Определение болезни по симптомам (болен/здоров), распознавание цифр на изображении.
51+
52+
### Регрессия (Regression)
53+
* **Цель:** Предсказать **непрерывную числовую** величину.
54+
* **Особенность:** Метка `y` — вещественное число.
55+
* **Пример:** Прогнозирование стоимости квартиры по её характеристикам, прогноз температуры на завтра.
56+
57+
### Кластеризация (Clustering)
58+
* **Цель:** Разбить данные на группы (кластеры) так, чтобы объекты внутри одной группы были **похожи**, а объекты из разных групп — **отличались**.
59+
* **Особенность:** Отсутствие заранее известных меток (без учителя).
60+
* **Пример:** Сегментация клиентов для маркетинга, группировка новостей по темам.
61+
62+
### Снижение размерности (Dimensionality Reduction)
63+
* **Цель:** Уменьшить количество признаков, перейдя в пространство меньшей размерности, сохранив при этом важные структуры данных (близкие объекты должны остаться близкими).
64+
* **Применение:** Визуализация данных (например, 3D -> 2D), борьба с **"проклятием размерности"**, сжатие данных.
65+
66+
### Ранжирование (Ranking)
67+
* **Цель:** Упорядочить объекты (например, документы или товары) согласно их релевантности запросу или предпочтениям пользователя.
68+
* **Пример:** Выдача результатов поиска, рекомендательные системы.
69+
70+
### Генерация (Generation)
71+
* **Цель:** Создавать новые объекты (изображения, текст, музыку), похожие на объекты из обучающей выборки.
72+
* **Пример:** Генерация реалистичных лиц, написание текстов в стиле определённого автора.
73+
74+
## Типы признаков (Features)
75+
Признаки могут быть разных типов, что влияет на выбор модели и методов предобработки:
76+
* **Бинарные:** Выбор из двух вариантов (Да/Нет, Кот/Не кот).
77+
* **Номинальные (категориальные):** Конечное множество без порядка (цвета, марки машин).
78+
* **Порядковые (ординальные):** Конечное упорядоченное множество (оценки: плохо/удовлетворительно/хорошо/отлично).
79+
* **Числовые (вещественные):** Непрерывные величины (рост, цена, расстояние).
80+
81+
**Важно:** Типы признаков можно преобразовывать (например, разбить числовой на интервалы и получить порядковый).
82+
83+
## Что такое модель?
84+
**Модель машинного обучения** — это параметрическая функция (или "чёрный ящик"), которая отображает пространство признаков `X` в пространство ответов `y`: `Model: X -> y`.
85+
86+
* У модели есть **параметры** (внутренние настройки), которые настраиваются в процессе **обучения** на данных.
87+
* Обучение — это процесс подбора параметров модели таким образом, чтобы её предсказания на обучающих данных максимально соответствовали известным меткам (или выявляли скрытые структуры).
88+
* На работу модели влияют: качество данных, выбор алгоритма, его гиперпараметры и правильность процесса обучения.

0 commit comments

Comments
 (0)