Вопрос или проблема
Итак, я выполняю практическое задание для собеседования в компании, и один из вопросов заключается в том, чтобы вычислить CTR для алгоритма сортировки.
Мой вопрос: следует ли мне исключить операции, в которых не было показано никаких продуктов (хотя в некоторых из них были клики по продуктам)? Пример (следует ли исключать эти строки?):
Количество показов | Количество кликов
0 | 1
0 | 3
0 | 0
CTR = #продуктов кликнуто/#продуктов показано
Мой другой вопрос состоит в том: следует ли мне суммировать клики и показанные продукты, а затем делить одно на другое ИЛИ я должен вычислять CTR для каждой операции:
Псевдокод на Python (представьте, что у меня есть dataframe с несколькими операциями в виде строк):
CTR = pd_df["no_clicks"].sum() / pd_df["no_impressions"].sum()
ИЛИ
pd_df["CTR"] = pd_df["no_clicks"] / pd_df["no_impressions"]
CTR = pd_df["CTR"].mean()
У меня нет никакого опыта в такого рода проблемах, но логически я бы сказал:
Следует ли мне исключить операции, в которых не было показано никаких продуктов (хотя в некоторых из них были клики по продуктам)? Пример (следует ли исключать эти строки?):
Да, потому что в противном случае теоретически вы можете получить коэффициент выше 1, что было бы нелогично. Однако это вызывает вопрос о том, что именно представлено: поскольку некоторые клики могут быть учтены, когда продукта нет, похоже, что количество кликов переоценено в данных, так как клики предполагаются на продуктах.
Также обратите внимание, что следует удалять строки в этом случае, а не столбцы.
Мой другой вопрос состоит в том следует ли мне суммировать клики и показанные продукты, а затем делить одно на другое ИЛИ я должен вычислять CTR для каждой операции:
Эта проблема означает, что данные либо не имеют надлежащего формата для применения определения (строго говоря, данные должны иметь одну строку на каждый показ продукта, и количество кликов должно быть либо 0, либо 1), либо инструкции по применению формулы CTR к этим конкретным данным не полностью определены. Я бы сказал, что первый вариант ближе к оригинальной формуле, так как он не требует вычисления среднего по индивидуальным коэффициентам.
.
Ответ или решение
Определение верного подхода к решению проблемы расчета Click Through Rate (CTR) в рамках задачи на собеседовании является важным шагом для определения корректности и значимости результата. Рассмотрим теоретические аспекты, практический пример и применение.
Теория
CTR, или коэффициент кликов к показам, рассчитывается как отношение количества кликов на количество показов. Формула CTR определяет, насколько эффективно предлагаемый контент побуждает пользователей кликать на него. В среднем высказывается как:
[ \text{CTR} = \frac{\text{Количество кликов}}{\text{Количество показов}} ]
Что касается вашей проблемы, важно понимать смысл данных: когда количество показов равно нулю (например, в строках с “Number of impressions | Number of clicks: 0 | 1”), включение таких строк в расчет CTR может привести к бессмысленным или даже невозможным значениям (больше 1). Поэтому такие строки следует исключать из анализа, так как они нарушают логику расчета.
Пример
Допустим, у вас есть следующие данные:
Количество показов | Количество кликов
10 | 5
0 | 3
15 | 2
Из этих строк, строку с 0 показами следует исключить из расчета, так как она приведет к незаконному значению CTR.
Применение
Для реализации правильного расчета в Python можно использовать pandas:
import pandas as pd
# Пример данных
data = {'no_impressions': [10, 0, 15],
'no_clicks': [5, 3, 2]}
df = pd.DataFrame(data)
# Исключаем строки с 0 показами
df_filtered = df[df['no_impressions'] > 0]
# Расчет CTR
CTR = df_filtered['no_clicks'].sum() / df_filtered['no_impressions'].sum()
Таким образом, рекомендуется суммировать клики и показы после удаления неподходящих строк и затем делить общее количество кликов на общее количество показов, что будет более близко к оригинальной формуле и предоставит более значимый результат.
В итоге, избегая строк с нулевыми показами, вы добиваетесь корректных результатов расчета CTR, что важно для представления реальной эффективности вашего алгоритма сортировки.