惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Archives - TechRepublic
Security Archives - TechRepublic
Project Zero
Project Zero
K
Kaspersky official blog
G
Google Developers Blog
T
Threat Research - Cisco Blogs
T
The Blog of Author Tim Ferriss
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Recorded Future
Recorded Future
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
S
Schneier on Security
P
Palo Alto Networks Blog
H
Hacker News: Front Page
N
News and Events Feed by Topic
N
Netflix TechBlog - Medium
博客园 - Franky
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
SecWiki News
SecWiki News
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Hacker News
The Hacker News
C
Check Point Blog
L
LangChain Blog
腾讯CDC
小众软件
小众软件
T
Tenable Blog
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
L
LINUX DO - 最新话题
A
About on SuperTechFans
Google Online Security Blog
Google Online Security Blog
C
Cisco Blogs
Recent Announcements
Recent Announcements
Hacker News: Ask HN
Hacker News: Ask HN
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
雷峰网
雷峰网
美团技术团队
D
DataBreaches.Net
Martin Fowler
Martin Fowler
Help Net Security
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
博客园_首页

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Геоаналитика: какие метрики использовать для оценки эффективности наружной рекламы
Nina_Feshche · 2026-05-20 · via Все публикации подряд на Хабре

Геоаналитика: какие метрики использовать для оценки эффективности наружной рекламы

Время на прочтение9 мин

Охват и читатели3

Компании заинтересованы в эффективном использовании своих ресурсов, в том числе и на рекламу. Поэтому на передний план встает не масштаб рекламной кампании, а ее динамические показатели. И здесь возникают вопросы:

  • Как оценить, сколько человек увидело рекламу?

  • Сколько из них увидело ее в первый раз, а сколько повторно?

  • Как понять, промелькнула ли реклама незаметно для аудитории или намозолила и вызывала раздражение? В какой момент это произошло?

Для решения этих вопросов можно использовать геоаналитику — это комплексный анализ данных, связанных с географическим положением объектов. Он позволяет выявлять взаимосвязи между объектами и принимать решения на основе пространственной информации.

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

Меня зовут Нина Фещенко, я аналитик больших данных в команде Геоаналитики «Билайн Big Data & AI». Наша команда ежедневно оценивает потенциал локаций и туристические потоки, строит матрицы корреспонденций, моделирует транспортные потоки и анализирует маркетинговые метрики в наружной рекламе на стационарных и подвижных носителях. 

Сегодня расскажу о такой типовой задаче — оценке эффективности наружной рекламы с использованием геоаналитики. Мы рассмотрим пример решения от обработки технического задания до построения итогового геоаналитического отчета.

Постановка задачи

Компания размещает рекламу продукта на наружных носителях: всего 255 различных конструкций в центре Москвы. Срок рекламной кампании — 5 месяцев, с августа по декабрь 2025 г. Задача — оценить, была ли эффективна прошедшая кампания. Это важно для оптимизации затрат в текущий момент и принятия управленческих решений в будущем. 

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

Какие бывают виды рекламных носителей в наружной рекламе

Наружные рекламные носители делятся на классы:

  • Билборд — большой рекламный щит на оживленных улицах и трассах. Его задача — быстро и ярко донести информацию о товаре или бренде.

  • Медиафасад — светодиодный экран, установленный на фасадах зданий. В данном варианте целый фасад здания превращается в экран, на котором транслируется не просто реклама, а цифровое искусство, обеспечивая максимальное зрительское воздействие.

  • Остановка — рекламная конструкция на остановках общественного транспорта. Такая реклама ориентирована на пассажиров в ожидании.

  • Сити‑формат — стандартизированный формат рекламной конструкции, устанавливается на пешеходных улицах, вблизи метро, торговых центров.

По форматам:

  • Статика — неподвижная реклама, картинка или текст. 

  • Динамика — реклама с анимацией или движущимися элементами (скроллинг, мигание, переходы). 

  • Диджитал — реклама на экранах, где контент может меняться в реальном времени.

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

Какие метрики считаем, чтобы оценить рекламную кампанию

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

  • OTS (Opportunity To See) — это общее количество контактов аудитории с рекламным сообщением за временной промежуток. Считаются все контакты одного и того же человека. 

  • Частота (Frequency), рассчитывается как отношение OTS к Охвату. Это среднее количество контактов аудитории с рекламой. 

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

Чем выше частота, тем больше было в среднем повторных контактов. Хорошо это или плохо зависит от целей кампании. Бывают имиджевые кампании, направленные на быстрое узнавание бренда, и для них актуальнее широкий охват. А бывают кампании, направленные на стимулирование продаж — тогда высокая частота рассматривается как плюс. 

OTS, охват и частоту мы анализируем как суммарно, так и в динамике: по дням, месяцам или неделям, в зависимости от задачи.

Как будем решать задачу

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

Минусы:

  • наличие зон недоступности (например, в сельской местности);

  • возможные ошибки данных. 

Плюсы:

  • повсеместность (сигнал есть в зданиях, на улице, в метро, на трассах);

  • независимость от устройства (работает для любого телефона с SIM‑картой);

  • высокое пространственно‑временное разрешение данных. 

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

Рассмотрим решение задачи поэтапно.

Исходные данные от заказчика — это перечень координат конструкций с указанием параметров в Excel. Для его обработки я использую PySpark: нужно прочитать файл, переименовать поля и скорректировать при необходимости их формат, сохранить полученный датасет как таблицу в DMP. 

Следующий этап — расчеты. Здесь мой основной стек — это Spark и Apache Sedona, фреймворк для масштабной обработки геопространственных данных. Sedona расширяет возможности Spark, позволяя обрабатывать геообъекты (точки, полигоны, линии) с использованием пространственных функций. 

На каждую точку с координатами конструкции накидываем буфер — радиус, внутри которого считаем количество засветившихся абонентов. Величина этого радиуса будет отличаться в зависимости от размеров конструкции: чем больше конструкция, тем больше радиус. 

Для данного примера рассмотрим простой вариант, при котором мы не высчитываем область видимости конструкции, а предполагаем, что конструкция одинаково просматривается со всех сторон. Дальше получаем пространственную выборку — пересекаем координаты абонентов с полигоном внутри радиуса.

На рисунке изображены рекламные конструкции (точки) и для каждой построен буфер (окружность) в зависимости от ее класса и формата

На рисунке изображены рекламные конструкции (точки) и для каждой построен буфер (окружность) в зависимости от ее класса и формата

Данные о перемещениях абонентов хранятся в готовой витрине данных, гранулярность событий в таблице менее одной минуты. Для работы с такими объемами применение основных правил по обработке больших данных — абсолютная необходимость. Я говорю о таких вещах, как оптимизация параметров Spark‑сессии и самого запроса, применение разных типов джойнов, циклы, партиционирование и бакетирование.

Еще одно правило: сначала проверяем работоспособность кода на небольшом сэмпле и только потом запускаем расчет на всем объеме. 

По итогу получаем агрегированные данные для каждой конструкции: количество уникальных абонентов, которые просмотрели рекламу в единицу времени (Охват), количество всех просмотров с учетом повторов (OTS). 

Сохраняем итоговые значения и переходим к следующему этапу.

Визуализируем результаты

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

Flexgis отлично умеет визуализировать данные, в том числе в 3D. С его помощью можно наглядно отобразить любые геообъекты: точки, полигоны, линии. С точки зрения визуализации готовые отчеты выглядят не только удобно и информативно, но также эффектно и высокотехнологично. 

Но вот с точки зрения отображения результатов расчетов Flexgis имеет ограничения: с цифрами он работает не так мастерски, как с геоданными. Например, не умеет производить вычисления «на лету», как BI‑платформы. Исходя из этого, наша задача будет складываться из трех составляющих:

  • сделать геоаналитический отчет максимально информативным, удобным и гибким;

  • соблюсти баланс и не перегрузить деталями;

  • обойти все ограничения с минимальными потерями в удобстве использования.

Для этого на основе полученных результатов сформируем два слоя с данными — по опыту решения таких задач это самая оптимальная стратегия, хотя внешне может выглядеть как излишество. 

Один слой — это итоговая плоская таблица с данными в разрезе конструкций по месяцам. Просто к полученным итоговым данным добавляем столбец с частотой (как отношение OTS, поле OTS к охвату, поле Reach).

sdf_metrics = (
    sdf
    .withColumn('time_key', F.col('time_key').cast('string'))
    .withColumn('frequency', F.round(F.col('ots') / F.col('reach'),2))
)

На этом слое мы строим динамику OTS и охвата, считаем суммарные значения OTS и охвата и среднюю частоту. 

Второй слой формируется как сводная таблица: группируем данные по конструкциям (id, класс, формат, координаты), месяцы кампании превращаем в столбцы, а OTS, охват и частота — это значения.

sdf_pivot = (
    sdf
    .withColumn('frequency', F.round(F.col('ots') / F.col('reach'), 2))
    .groupBy('class', 'format_type', 'constr_id', 'lat', 'lon')
    .pivot('month_num')
    .agg(F.sum('ots').alias('ots'), F.sum('reach').alias('reach'), F.avg('frequency').alias('freauency'))
)

Добавляем расчетные поля с суммарными значениями OTS и jхвата по каждой конструкции.

from functools import reduce
from operations import add

def get_total(sdf, netric_name):

    summarize_cols = [col_name for col-name in sdf.columns if metric_name in col_name]
    sum_exprs = [F.col(col_name) for col_name in summarize_cols]
    total_sum = reduce(add, sum_exprs)

    sdf_total = sdf.withColumn(metric_name, total_sum)
    return sdf_total
for metric in ['ots', 'reach']:
    sdf_pivot = get_total(sdf_pivot, metric)

Наносим все это на карту, и вот какой отчет получается в итоге.

Конструкции на карте различаются по цвету – это указание на класс и виду значка – это различие по формату. Размер значка указывает на величину охвата – от 10 тыс. до 150 тыс. для конкретной конструкции

Конструкции на карте различаются по цвету — это указание на класс и виду значка — это различие по формату. Размер значка указывает на величину охвата — от 10 тыс. до 150 тыс. для конкретной конструкции

Слева на панели расположены фильтры, с помощью которых можно оценить итоговые метрики по конкретным выбранным показателям. 

На дашбордах на панели справа построены следующие визуализации:

Общее количество конструкций по классам (слева). Суммарные показатели OTS и охвата, средняя частота (справа)

Общее количество конструкций по классам (слева). Суммарные показатели OTS и охвата, средняя частота (справа)

Общее количество конструкций по классам (слева). Суммарные показатели OTS и охвата, средняя частота (справа)

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

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

В инфоокно можно добавлять разные данные: таблицу, дэшборд, изображение, кнопку с переходом по ссылке.

Я решила добавить самые ключевые — суммарные OTS и охват, динамику OTS, охвата и частоты по месяцам кампании. Если в настройках расположить инфоокно на карте, дашборды — в правой панели, то удобно анализировать вклад каждой конструкции в общие показатели

Я решила добавить самые ключевые — суммарные OTS и охват, динамику OTS, охвата и частоты по месяцам кампании. Если в настройках расположить инфоокно на карте, дашборды — в правой панели, то удобно анализировать вклад каждой конструкции в общие показатели

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

График охвата — это убывающая функция. Как правило, большая часть контактов происходит в первые 1–2 месяца, а в следующие месяцы новых контактов все меньше, в основном повторы. На линейном графике (на правой панели дашбордов) это хорошо видно: в первый месяц охват составляет более 50% от OTS, а в последний — примерно 33%. 

Частота, наоборот, возрастающая функция, причем возрастающая нелинейно. В первые месяцы заметен интенсивный рост, а последние — постепенное снижение. Бывает, что несколько последних месяцев частота вообще почти не меняется. Это означает, что реклама практически не достигает новых людей, а только снова и снова демонстрируется уже давно охваченным. Это может быть сигналом для сокращения сроков рекламной кампании и, следовательно, оптимизации затрат. 

Также для оценки OTS и охвата в подобных задачах применяются гексагоны. В частности, для этого примера я построила сетку из гексагонов с использованием библиотеки h3 размера (resolution) 7.

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

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

Заключение

Мы рассмотрели простейший пример задачи по оценке наружной рекламной кампании. Даже в таком упрощенном варианте очевидно, какие возможности для анализа открываются благодаря геоаналитике. А в реальных кейсах мы рассматриваем метрики не только по дням или месяцам, но и в разрезе типов дня (будни/выходные) и времени суток. Целевую аудиторию анализируем в разрезе групп по полу и возрасту (соц‑дем характеристики абонента определяются с помощью ML‑модели, которая анализирует трафик). При этом гибкость и удобство такого геоаналитического отчета делают его эффективным инструментом, который позволяет принимать обоснованные решения по оптимизации процессов и затрат.