Data Science: SQL и Аналитика данных

@pizdatascience
Фото Редкий и реально продвинутый SQL-совет: используй логарифмы для произведения вероятностей. В SQL удобно считать SUM, AVG, COUNT, но почти никто не думает про PRODUCT. А в аналитике он часто нужен: вероятность цепочки событий, retention funnel, скоринговые модели, reliability, ML-фичи. Проблема: если перемножать много маленьких чисел, например 0.97 * 0.91 * 0.88 * ..., быстро получишь underflow или потерю точности. Математический трюк: a * b * c = exp(ln(a) + ln(b) + ln(c)) То есть вместо прямого произведения считаем сумму логарифмов. SELECT user_id, EXP(SUM(LN(probability))) AS total_probability FROM events WHERE probability > 0 GROUP BY user_id; Где это полезно: SELECT user_id, EXP(SUM(LN(conversion_rate))) AS funnel_survival_rate FROM funnel_steps GROUP BY user_id; Это стандартный численный прием из математики, который делает расчет стабильнее. Особенно полезно, когда у тебя много шагов в воронке, вероятностная модель, риск-скоринг или аналитика событий. Главное правило: LN(x) работает только для x > 0, поэтому нули нужно обрабатывать отдельно. Например, если хотя бы одна вероятность равна нулю, итоговое произведение тоже будет ноль.
Если у вас установлено приложение,
вы можете сразу перейти в канал