← К неделе 15

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

15.1 · Preprocessing / Feature Engineering

Модель видит не мир. Она видит наши признаки.

Допустим, мы предсказываем аренду квартиры. Прежде чем спорить, что лучше — регрессия или лес, откроем таблицу. Там может обнаружиться настоящий противник: «?» рядом с нулём, ошибочные даты и признаки разных масштабов.

❔ Пропуск ≠ 0

«Не знаем, сколько минут до метро» и «0 минут до метро» — разные наблюдения. Заменить все «?» на нули — придумать факты.

⚖ Масштаб

В kNN разница в 30 м² может заглушить разницу в одну комнату. Дерево обычно не требует нормализации; для регрессии её роль зависит от метода.

✨ Новые признаки

area_per_room = area_m2 / rooms; building_age = 2026 − year_built. Признак должен отражать смысл, а не просто множить колонки.

Самая опасная ловушка — leakage. Медиану для заполнения пропусков и параметры масштабирования вычисляем только на train; в кросс-валидации — внутри каждого обучающего фолда. Не превращайте test в подсказку.
Отделить test
→
Подогнать preprocessing на train
→
Применить к test
→
Сравнить честно

Очень красивый, но запрещённый признак

Если мы предсказываем rent_ils, нельзя использовать rent_ils / area_m2: это выражение уже содержит ответ! Проверка любого нового признака: смысл → доступность до прогноза → польза на новых данных.

На train время до метро: 3, 6, 9 минут. Чем заполнить пропуск на test?

Один простой вариант — медианой 6, вычисленной только на train. Это не универсальный закон: сначала разбираемся в природе пропуска.

Можно ли использовать цену за м² для предсказания самой цены?

Нет, если цену за м² вычисляют из неизвестной целевой цены: это утечка ответа. Прогноз получится «гениальным» по нечестной причине.
💬 Доктор Игорь: «Подготовить данные» — не значит подрисовать цифры до нужной красоты. Даже стиральная машина не должна стирать тестовую выборку вместе с тренировочной.
Лист 1 / 6 · Финальная неделя · доктор Игорь

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

15.2 · Random Forest

Одно дерево легко уговорить. Лес попросит второе мнение.

Дерево решений задаёт цепочку вопросов («площадь больше 70 м²?»). Проблема: чуть изменились строки — и первый вопрос уже другой. Random Forest объединяет много разных деревьев, чтобы часть случайных ошибок компенсировалась.

🌱 Bootstrap

Каждому дереву достаётся случайная выборка строк с возвращением. Например, из A, B, C, D получаем C, A, C, D: C повторилась, B не попала.

🌳 Случайные признаки

На разбиении дерево рассматривает случайное подмножество признаков-кандидатов. Так соседние деревья меньше похожи друг на друга.

Разные строки
+
Разные признаки
→
Много деревьев
→
Общий прогноз
КлассификацияДеревья голосуют либо объединяют вероятности классов.
РегрессияВ типичном Random Forest усредняем числовые прогнозы: (5400 + 5900 + 6100) / 3 = 5800 ₪.
Сто одинаковых деревьев — не мудрость толпы. Важна не просто численность, а разнообразие ошибок. Лес часто устойчивее, зато объяснять его сложнее, чем одно дерево.

🍊 Что сравниваем в Orange?

Соедините Tree и Random Forest с Test & Score. Настройки: количество деревьев (Trees), глубина (Depth), генератор случайности (Random seed). Для аренды сравнивайте RMSE/MAE в одинаковой схеме CV. В слайдах нет подтверждённого численного выигрыша леса: результат узнаем после эксперимента.

Почему нельзя просто скопировать одно дерево сто раз?

Копии повторят одинаковые ошибки. Разнообразие bootstrap-выборок и наборов признаков позволяет усреднять шум.

Всегда ли 1000 деревьев лучше, чем 100?

Нет. Сравниваем качество на CV, время расчёта и устойчивость; добавление деревьев не гарантирует полезного выигрыша.
🌲 У леса хорошая репутация. Но если все деревья синхронно ошибаются, у нас не ансамбль — у нас организованный хор.
Лист 2 / 6 · Финальная неделя · доктор Игорь

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

15.3 · ИИ расширяет Orange

Нужного виджета нет? Опишем задачу и построим.

Курс начинался с перетаскивания готовых блоков в Orange. Теперь мы можем добавить собственную операцию. Главное — не спросить у ИИ «сделай красиво», а дать проверяемую спецификацию: вход, действие, выход и контроль.

in_data
→
Python Script
→
out_data
→
Data Table

1. Быстрый путь

Python Script — стандартный виджет: получаем таблицу, рассчитываем area_per_room и building_age, отдаём Orange новую Table. Код остаётся внутри workflow.

2. Долгий путь

Собственный Widget — класс на базе OWWidget, Inputs/Outputs, интерфейс настроек, структура add-on и установка. Здесь уже нужен небольшой программный продукт.

Пример хорошего промпта

«Напиши Python Script для Orange 3. Вход in_data с area_m2, rooms, year_built. Создай out_data, сохрани исходные колонки и целевую rent_ils. Добавь area_per_room и building_age на 2026 год. При rooms ≤ 0 или пропуске верни missing. Не обращайся к сети и не меняй исходник».
Проверяем не только отсутствие ошибки! 72 м² / 3 комнаты = 24. При rooms=0 результат должен быть missing, а не деление на ноль. Если исчезла rent_ils — скрипт пока неверный, хотя запускается.

Аналитик

Формулирует, что считать и как проверить.

ИИ

Пишет черновик кода и объясняет его.

Orange

Запускает workflow и показывает реальные данные.

В каком имени Orange ждёт выходную таблицу из Python Script?

out_data — объект типа Orange.data.Table.

ИИ сгенерировал пакет виджета. Что проверить до установки?

Код, imports, обращение к файлам/сети, входные и выходные сигналы, регистрацию add-on, тестовые данные и поведение интерфейса.
🤖 ИИ говорит: «Всё готово». Аналитик отвечает: «Покажи на трёх строках — одна обычная, одна с нулём и одна с пропуском». Вот теперь можно дружить.
Лист 3 / 6 · Финальная неделя · доктор Игорь

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

15.4 · Этика данных и ИИ

Точность — не индульгенция. За строкой человек.

Алгоритм может помогать решить, кому дать кредит, кого пригласить на дополнительное обследование или рекомендовать для обучения. Здесь мы отвечаем не только за метрику, но и за данные, последствия и право человека оспорить решение.

Данные

Откуда они? Кто дал разрешение? Все ли группы представлены?

Модель

Для кого ошибается? Как распределяются ложные решения?

Решение

Кого затрагивает? Кто несёт ответственность и проверяет спорный случай?

«95% accuracy» — это ещё не вся история. В условном примере из слайдов общая точность 95%, но для группы A — 98%, а для B — 78%. Эти проценты учебные, не научные результаты. Вопрос: кому достались ошибки?

🔓 Удалили имя ≠ обезличили

Возраст + почтовый индекс + редкая профессия + дата могут позволить узнать человека. Перед отправкой в чат нужны разрешение, минимизация и защита данных.

📉 Нарисовали один масштаб — получили драму

50 и 52 на оси 0–100 и на оси 48–54 выглядят совершенно по-разному. Цифры не изменились — впечатление изменилось.

Петля обратной связи: исторические решения влияют на обучающие данные, новая модель меняет новые решения, а те формируют будущую выборку. Так старые перекосы могут воспроизводиться.

Научная ссылка от ИИ — гипотеза, а не гарантия

ИИ может придумать автора, журнал или DOI. Прежде чем цитировать, откройте первоисточник и проверьте не только существование работы, но и то, утверждает ли она нужное.

Можно ли считать данные анонимными, удалив колонку «Имя»?

Нет. Другие признаки могут идентифицировать человека по сочетанию значений.

На тесте высокое accuracy. Что ещё спрашиваем?

Качество по группам, типы и цену ошибок, происхождение данных, возможные перекосы и процедуру человеческого пересмотра.
⚖ Даже самая уверенная нейросеть не может подписать за вас акт: «Никто не пострадал». Проверять придётся людям.
Лист 4 / 6 · Финальная неделя · доктор Игорь

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

15.5 · После курса

Не коллекционируйте кнопки. Закончите проект.

После пятнадцати занятий хочется либо выучить всё на свете, либо сразу запустить нейросеть размером с галактику. Начнём скромнее: один законченный исследовательский проект с проверяемым выводом полезнее десяти бесконечных курсов.

🍊 Практика

Orange / KNIME: визуальные процессы, графики, быстрые эксперименты без большого количества кода.

🐍 Код

Python + ИИ: основы языка, pandas, matplotlib, scikit-learn, автоматизация и свои инструменты.

📐 Теория

Вероятность, статистика, ML: неопределённость, проверка гипотез, выборки, причинность и границы выводов.

План на следующие 30 дней

Неделя 1
вопрос + данные
→
Неделя 2
EDA + baseline
→
Неделя 3
CV + ошибки
→
Неделя 4
отчёт + ограничения
Финальный проект из презентации — на 2 месяца. Выберите реальные данные (открытые или законно полученные), сформулируйте 2–3 содержательных вопроса и доведите исследование до воспроизводимых выводов. Никаких обещаний сенсации.

Этапы 1–4 недели

1–2: источник данных + вопросы. 3–4: EDA, пропуски, новые признаки. Запишите, какие решения приняли и почему.

Этапы 5–8 недели

5–6: модели, тесты, границы выводов. 7–8: отчёт, код/workflow, сдача. Финальная версия должна открываться у другого человека.

Что отправить преподавателю: CSV или ссылку на источник (без чужих личных данных), файл Orange .ows, графики и ответы на 2–3 вопроса, выводы и ограничения, код и пояснение роли ИИ, если использовали.

Первый шаг проекта: искать самый модный алгоритм?

Нет. Сначала вопрос и доступные данные. Модель выбирается под задачу — не наоборот.

Гипотеза не подтвердилась. Работа провалилась?

Нет. Проверяемое и честное «убедительной связи не нашли» — тоже научный результат.
🎓 Коллекционер сертификатов спрашивает: «Какой следующий курс?» Исследователь спрашивает: «Что я теперь могу узнать сам?» Второй вопрос ведёт дальше.
Лист 5 / 6 · Финальная неделя · доктор Игорь

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

15.6 · Большой финал

Последний слайд? Нет. Первый проект.

Мы начинали с вопроса «Какой график построить?». Заканчиваем вопросом гораздо взрослее: что из этих данных действительно следует? Программа и ИИ полезны, но последняя проверка остаётся за аналитиком.

Вопрос
→
Данные и EDA
→
Baseline + модель
→
Честная проверка
→
Вывод

Числа и классы

Регрессия, kNN, деревья, случайный лес и метрики ошибок.

Структура данных

Кластеризация, тексты, изображения, признаки и эмбеддинги.

Время и проверка

Тренды, сезонность, лаги, CV, утечки, неопределённость, этика и ИИ.

Новый уровень: «Аналитик, который проверяет». Он умеет сказать «не знаю» — и составить план, как это выяснить. Это лучше уверенного, но выдуманного ответа.

Перед тем как верить результату

Не заглянули ли в test? Нет ли целевой переменной среди признаков? Понятно ли происхождение данных? Можно ли повторить расчёт?

Перед тем как рассказывать людям

Кого касается решение? Где модель может ошибаться? Какие ограничения следует показать честно, а не прятать?

Модель показала невероятно хорошую метрику. Ваша первая реакция?

Проверить эксперимент: утечки, разбиение, пересечения train/test, корректность цели и метрики.

Что делать после курса уже сегодня?

Выбрать реальный вопрос, найти данные, исследовать и проверить честный вывод. Разговор о результатах важнее названий кнопок.
🍊 Мы учили не виджеты. Мы учились задавать вопросы. У кнопки «СТОП, ПРОВЕРЯЕМ!» нет сочетания клавиш — зато теперь оно есть у вас в голове.

Основано на «Lesson16_v01_dsall_ru.pdf», слайды 1–150, © 2026 доктор Игорь Клейнер. Финальный проект и благодарность — слайды 137–150.

Лист 6 / 6 · Финальная неделя · доктор Игорь