Skip to content
Урок 2. Сырьё, признаки, решение

Урок 2. Сырьё, признаки, решение

Урок 2. От сырых данных к решению: три линии на графике

Паспорт урока

ПараметрЗначение
Место в модулеRFCurtain, урок 2 из 5
Длительность45 мин
Возраст13–16
ОборудованиеПлаты TX/RX, компьютер с rf_curtain.py
Предварительные знанияУрок 1; FoxHunter урок 3 (усреднение)
ПредметСтатистика, информатика (обработка данных)

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

ЦельБлумМиллерЧем доказывается
2.1Различать сырые данные, признаки и решениеанализироватьзнает какУказание на графике трёх слоёв
2.2Объяснять роль двух окон разной длительностипониматьзнает какРазбор быстрой медианы и базы
2.3Обосновывать детектирование отклонения вместо абсолютного порогаоцениватьзнает какОтвет про дрейф фона
2.4Строить лестницу «задача → признаки → решение»создаватьпоказывает какСвоя лестница для новой задачи

Сценарий занятия (45 минут)

ВремяБлокЧто делает педагогЧто делают ученики
0–5RetrievalМини-квиз по уроку 1Пишут, разбор
5–13Наивная идея«Тревога, если RSSI ниже X»Находят контрпример
13–25Теория: два окнаБыстрая медиана и медленная базаРазбирают на графике
25–33Живой экранТри линии сглаживанияНаблюдают, комментируют
33–42ЛестницаОт задачи к решениюСтроят полную схему
42–45Итог и ДЗФиксацияЗаписывают

Блок 1. Наивная идея и её провал (5–13 мин)

Первое предложение класса

«Мы видим, что при проходе человека RSSI проседает. Как сделать детектор?»

Обычный ответ: поставить порог. Тревога, если RSSI ниже, скажем, −75 дБм.

Проверка идеи

Запустить систему и показать реальный поток данных на пустой трассе:

DATA,12340,45,-68,9
DATA,12406,46,-71,8
DATA,12472,47,-67,9
DATA,12538,48,-70,9

«Смотрите: сигнал гуляет на 3–4 дБ, даже когда никого нет. Это шум измерения — мы разбирали его в охоте на лис. Где ставить порог?»

Вторая проблема — дрейф

«А теперь представьте, что занавес работает сутки. Утром прохладно, днём жарко, вечером пошёл дождь, рядом припарковалась машина. База сигнала уползёт на несколько децибел. Порог, выставленный утром, к вечеру окажется либо слишком высоким, либо слишком низким.»

Постановка проблемы

На доску:

Абсолютный порог не работает: сигнал шумит и медленно дрейфует. Нужно детектировать не «ниже числа X», а «резко отклонилось от того, что было только что».


Блок 2. Теория: два окна (13–25 мин)

2.1. Базовый уровень (13–14 лет)

Через температуру в комнате.

Если спросить «в комнате холодно?», ответ зависит от того, с чем сравнивать. Двадцать градусов — это холодно или тепло? Смотря что было раньше.

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

Перенос:

Наш детектор хранит две величины:

  • быстрая — что происходит прямо сейчас (последние полсекунды);
  • медленная база — что было в среднем за последнюю минуту.

Тревога — когда быстрая резко ушла вниз от базы.

2.2. Углублённый уровень (14–16 лет)

Шаг 1. Три слоя данных.

СлойЧто этоПример
Атомарные данныеRSSI одного пакета, 15 раз в секунду−68, −71, −67, −70…
Признакивеличины, вычисленные из окнамедиана 0,5 с; база EMA 60 с; σ окна
Решениевывод классификаторанорма / тревога / обрыв

Ученик должен уверенно различать эти три уровня — это универсальная структура любой детекторной задачи.

Шаг 2. Быстрое окно — медиана.

Медиана последних значений за 0,5 секунды (примерно 7 пакетов при 15 Гц).

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

Сравнение с FoxHunter, урок 3. Там охотник использовал среднее — потому что шум был преимущественно гауссовым, а сигнал менялся плавно. Здесь используется медиана — потому что есть одиночные выбросы и нужны резкие ступеньки.

Выбор фильтра определяется характером шума и характером полезного сигнала, а не «качеством» фильтра вообще.

Шаг 3. Медленное окно — база (EMA).

База — экспоненциальное скользящее среднее с постоянной времени около 60 секунд. Она отслеживает медленный дрейф фона (температура, влажность, обстановка) и практически не реагирует на быстрые события.

basek=αxk+(1α)basek1base_k = \alpha \cdot x_k + (1 - \alpha) \cdot base_{k-1}

где α мало — база «тяжёлая» и меняется медленно.

Шаг 4. Признак номер один — отклонение.

отклонение=медианабаза\text{отклонение} = \text{медиана} - \text{база}

Это относительная величина: она не зависит от того, какой абсолютный уровень сигнала сегодня. Дрейф фона база съедает автоматически.

Шаг 5. Почему два окна разной длительности.

ОкноДлительностьЗадача
Быстрое (медиана)0,5 споймать событие, которое длится секунду
Медленное (база)60 сзапомнить «норму», игнорируя события

«Если бы оба окна были одинаковыми, разность всегда равнялась бы нулю. Смысл — именно в разной инерции: быстрое реагирует, медленное помнит.»


Блок 3. Живой экран (25–33 мин)

Запуск: python3 rf_curtain.py --port /dev/ttyUSB0

Что показать

  1. Верхний график — три линии одновременно:
ЧтоКак выглядитЧто означает
Серые точки«дышат», разброс несколько дБсырые атомарные данные
Бирюзовая линияспокойнее точекбыстрая медиана (признак)
Жёлтый пунктирпочти неподвиженмедленная база

«Вот три уровня из нашей таблицы — прямо на экране. Точки это сырьё, бирюзовая линия — признак, жёлтая — память о норме.»

  1. Проход через луч: бирюзовая линия ныряет вниз, жёлтая почти не двигается. Разность растёт — это и есть срабатывание.

  2. Средний график — сам признак «медиана минус база» с красной линией порога. Пересечение видно глазом.

Методический приём. Показать сырьё и обработку вместе — принципиальное решение проекта. Доверие к выводу рождается тогда, когда видно, из чего он сделан. Дашборд, показывающий только итог («ТРЕВОГА»), не позволяет проверить, обоснован ли он.

Этот принцип переносится на любую визуализацию данных.


Блок 4. Лестница классификации (33–42 мин)

Центральный методический стержень модуля. Построить на доске вместе с классом.

ХОТИМ:     «узнавать, что кто-то пересёк периметр»          ← задача
             ↓ переформулируем измеримо
КЛАССЫ:    норма / нарушитель / обрыв линка                  ← классификация
             ↓ что физически меняется между классами
ЯВЛЕНИЕ:   тень в зоне Френеля + перемешанная многолучёвка   ← физика (урок 1)
             ↓ чем это измерить
АТОМ:      RSSI одного пакета, 15 раз в секунду              ← атомарные данные
             ↓ сырое значение шумит — сжимаем окнами
ПРИЗНАКИ:  медиана 0,5 с; база EMA 60 с; отклонение; σ       ← feature engineering
             ↓ правило решения
ДЕТЕКТОР:  тревога, если отклонение ≤ −3 дБ ИЛИ σ ≥ 2,5 дБ   ← классификатор
             ↓ насколько он хорош
КАЧЕСТВО:  попадания, пропуски, ложные → компромисс порогов  ← ROC (урок 4)

Универсальность лестницы. Эта схема применима к любой детекторной задаче — от медицинской диагностики до антиспама. Ученики уже проходили её части: BeaconRadio, урок 6 (признаки падения) и урок 7 (ROC). Здесь она собирается целиком.

Без громких слов это и есть введение в машинное обучение, сделанное ногами по школьному двору.


Блок 5. Практические задачи

Уровень A (13–14 лет)

A1. Почему нельзя просто поставить порог «тревога, если RSSI ниже −75 дБм»?

Ответ

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

A2. Что означают три линии на верхнем графике?

Ответ

Серые точки — сырые измерения RSSI каждого пакета. Бирюзовая линия — быстрая медиана (сглаженное текущее значение). Жёлтый пунктир — медленная база, то есть «норма», запомненная за последнюю минуту.

A3. Почему база почти не двигается, когда человек проходит через луч?

Ответ

Потому что она усредняет данные за очень долгое время (около минуты). Событие длительностью секунду почти не влияет на такое усреднение — база «не замечает» коротких изменений, для того она и нужна.

Уровень B (14–15 лет)

B1. Почему детектируют разность «медиана минус база», а не саму медиану?

Ответ

Потому что разность — относительная величина, не зависящая от абсолютного уровня сигнала. Если фон уполз на 3 дБ из-за погоды, база уползёт вместе с ним, и разность останется около нуля. Абсолютный порог пришлось бы перенастраивать, относительный работает сам.

B2. Почему в этом проекте используют медиану, а в охоте на лис — среднее?

Решение
FoxHunterRFCurtain
Характер шумамелкое гауссово дрожаниеодиночные выбросы от отражений
Полезный сигналплавно меняется при ходьберезкая ступенька при проходе
Лучший фильтрсреднее (эффективнее гасит гауссов шум)медиана (устойчива к выбросам, сохраняет ступеньку)

Вывод: выбор фильтра определяется характером шума и характером сигнала, а не абстрактным «качеством» метода.

B3. Что произойдёт, если сделать оба окна одинаковой длительности?

Ответ

Разность между ними всегда будет близка к нулю: они станут реагировать на события одинаково и одновременно. Детектор перестанет работать.

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

Уровень C (15–16 лет)

C1. Постройте лестницу «задача → классы → признаки → решение» для новой задачи: определить, открыта ли дверь в комнате, по данным того же радиоканала.

Разбор
ХОТИМ:     узнавать, открыта дверь или закрыта
КЛАССЫ:    закрыта / открыта / (обрыв линка)
ЯВЛЕНИЕ:   дверь меняет картину отражений в комнате
           → устойчиво меняется средний уровень и характер многолучёвки
АТОМ:      RSSI пакета
ПРИЗНАКИ:  средний уровень за 10 с; σ за 10 с
           (окно длиннее, чем у занавеса: событие не мгновенное, а состояние)
ДЕТЕКТОР:  сравнение с двумя эталонами, снятыми при калибровке
КАЧЕСТВО:  доля верных определений на размеченной выборке

Ключевое отличие от занавеса: здесь классифицируется состояние, а не событие. Поэтому окна длиннее, база не нужна (нет дрейфа относительно чего), зато нужна калибровка эталонов.

Хороший ответ должен заметить это различие: событие и состояние требуют разных архитектур детектора.

C2. Постоянная времени базы — 60 секунд. Что произойдёт при 5 секундах? При 10 минутах?

Разбор

5 секунд: база станет «быстрой» и начнёт частично отслеживать само событие. Медленно идущий человек будет постепенно принят за новую норму — тревога снимется сама, хотя он ещё в луче. Это ошибка адаптивных систем (разберём на уроке 3).

10 минут: база станет очень инертной. Плюс — событие точно не съест. Минус — реальный дрейф фона (солнце, дождь) она отследит с большим запозданием, и в течение этого времени отклонение будет отличным от нуля, что даст ложные тревоги.

Вывод: постоянная времени базы выбирается из соотношения длительность события ≪ постоянная базы ≪ характерное время дрейфа фона. Для нашей задачи: событие ~1 с, дрейф ~часы, база 60 с — попадает в середину диапазона.

C3. Предложите третий признак, который улучшил бы детектор. Обоснуйте.

Разбор

Кандидаты:

  1. Скорость изменения (производная). Человек даёт быстрый спад, погодный дрейф — медленный. Признак различает их даже без базы.
  2. Длительность отклонения. Проход длится 0,5–2 с; более длительное отклонение — вероятно, изменение обстановки (поставили предмет).
  3. SNR отдельно от RSSI. RSSI отвечает на вопрос «как громко», SNR — «как чисто». Помеха меняет SNR, а поглощение телом — преимущественно RSSI.
  4. Форма провала. Симметричный провал — проход поперёк; асимметричный — движение вдоль луча.

Лучший ответ: SNR как независимая физическая величина — он даёт информацию, которой нет в RSSI, тогда как производная и длительность вычисляются из уже имеющегося сигнала.

Общий принцип: новый признак ценен тогда, когда несёт независимую информацию, а не пересчитывает старую.


Ответы на вопросы, которые прозвучат

Вопрос ученикаКак отвечать
«Зачем показывать сырые точки — они же шумят?»Чтобы было видно, из чего сделан вывод. Доверие к детектору рождается, когда виден весь путь от данных к решению
«Почему база жёлтая, а медиана бирюзовая?»Цвет — способ различать слои. Важно, что их видно одновременно: это позволяет проверить работу алгоритма глазом
«Можно ли обойтись без базы, просто помня одно значение?»Одно значение слишком шумное. База — усреднение за минуту, она устойчива и отражает именно норму, а не случайный отсчёт
«А если человек встанет в луч и будет стоять?»Отличный вопрос — это и есть тема следующего урока. Пока скажу: без специальной меры тревога снимется сама
«Это уже искусственный интеллект?»Это классификатор с ручными признаками — прямой предшественник ML. Отличие лишь в том, что признаки и пороги выбрали мы, а не алгоритм обучения

Раздаточный лист (для печати)

Урок 2. Сырьё, признаки, решение

Три слоя данных — заполните:

СлойЧто этоВ нашем проекте
Атомарные данные
Признаки
Решение

Два окна:

ОкноДлительностьЧто вычисляетЗадача
Быстроемедиана
Медленное (база)EMA

Признак номер один: отклонение = __________ − __________

Почему не абсолютный порог? Две причины:

  1. _________________________________________
  2. _________________________________________

Наблюдение на живом экране:

Что делаюСерые точкиБирюзовая медианаЖёлтая база
Стою в стороне
Прохожу через луч
Стою в луче 10 с

ЛЕСТНИЦА КЛАССИФИКАЦИИ — заполните:

ХОТИМ:     ______________________________
             ↓
КЛАССЫ:    ______________________________
             ↓
ЯВЛЕНИЕ:   ______________________________
             ↓
АТОМ:      ______________________________
             ↓
ПРИЗНАКИ:  ______________________________
             ↓
ДЕТЕКТОР:  ______________________________
             ↓
КАЧЕСТВО:  ______________________________

Домашнее задание

Обязательная часть

Врайтап по рубрике А. Обязательный пункт: объясните своими словами, зачем нужны два окна разной длительности.

Уровень A

Найти три примера, где важно сравнение «сейчас против обычного», а не абсолютное значение (пробки на дорогах, температура тела, цена товара).

Уровень B

Построить лестницу классификации для задачи «определить, что в комнате кто-то есть» по данным датчика освещённости.

Уровень C

Предложить, как детектор мог бы отличить человека от крупной собаки. Какие признаки и почему? Возможно ли это в принципе с одним лучом?

Ориентир для педагога

Возможные признаки: глубина просадки (человек выше и объёмнее — перекрывает большую долю зоны); высота относительно луча (собака проходит под антеннами, установленными на метре); длительность (скорость движения); форма профиля.

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

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


Итог урока: что записать в журнал

Вывод урока 2

  1. Три слоя: атомарные данные (RSSI пакета) → признаки (вычисленные из окон) → решение (класс).
  2. Абсолютный порог не работает: сигнал шумит и медленно дрейфует.
  3. Быстрое окно (медиана 0,5 с) ловит событие, медленная база (EMA 60 с) помнит норму.
  4. Детектируют отклонение «медиана минус база» — относительную величину, независимую от дрейфа фона.
  5. Смысл конструкции — в разной инерции окон; при одинаковых окнах разность всегда нулевая.
  6. Медиана против среднего: выбор фильтра определяется характером шума и сигнала.
  7. Лестница классификации (задача → классы → явление → атом → признаки → детектор → качество) универсальна для любой детекторной задачи.

Связь с курсом

Что родилось на этом урокеГде станет инструментом
Лестница классификацииУроки 3–4, выпускной проект
Два окна разной инерцииWarWalk (медиана по ячейке против общего профиля)
Отклонение вместо абсолютного порогаЛюбая работа с дрейфующими данными
«Показывай сырьё и обработку вместе»Все визуализации курса

Чек-лист педагога перед уроком

  • Платы разнесены на рабочую дистанцию (6–15 м), линк устойчив
  • rf_curtain.py запускается, три графика отрисовываются
  • Проверено накануне: проход через луч даёт видимую просадку на среднем графике
  • На доске заготовлено место для лестницы классификации
  • Раздаточный лист распечатан