Data Science | Machinelearning [ru]
Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM. Личный блог автора - @just_genych По вопросам рекламы или разработки - @g_abashkin РКН: https://vk.cc/cJPGXD
显示更多📈 Telegram 频道 Data Science | Machinelearning [ru] 的分析概览
频道 Data Science | Machinelearning [ru] (@devsp) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 19 779 名订阅者,在 技术与应用 类别中位列第 6 507,并在 俄罗斯 地区排名第 33 309 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 19 779 名订阅者。
根据 29 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -146,过去 24 小时变化为 -2,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 8.07%。内容发布后 24 小时内通常能获得 4.83% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 597 次浏览,首日通常累积 955 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 6。
- 主题关注点: 内容集中在 llm, nvidia, контекст, openai, архитектура 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM.
Личный блог автора - @just_genych
По вопросам рекламы или разработки - @g_abashkin
РКН: https://vk.cc/cJPGXD”
凭借高频更新(最新数据采集于 30 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
residuals = |y_pred - y_true| + 1e-8. Затем на тех же признаках учите модель для log(residuals). На выходе получаете sigma = exp(model_var.predict(X)).
residuals = np.abs(y_train - model_mean.predict(X_train)) + 1e-8
model_var = LGBMRegressor(n_estimators=80)
model_var.fit(X_train, np.log(residuals))
def predict_with_uncertainty(X):
y = model_mean.predict(X)
sigma = np.exp(model_var.predict(X))
return y, sigma
Почему это затащило в production
Первое — интерпретируемость без SHAP. Модель остатков сразу показывает, где основная модель ошибается: "на товарах с высокой ценой разброс выше". Это даёт инженерный контекст для валидации.
Второе — простота деплоя. Два predict и один exp — всё. Никаких байесовских сеток или сложных loss-функций. Надёжно и быстро.
Третье — калибровка под данные. Модель остатков учится на реальных ошибках первой, а не на теоретическом распределении. Это даёт адекватные оценки uncertainty для конкретного датасета.
Типичные грабли и trade-offs
Вторая модель легко переобучается. Я режу num_leaves, увеличиваю min_data_in_leaf и обязательно валидирую отдельный холдаут. Если дисперсия меняется скачками, лучше предсказывать log((y - y_pred)^2), но тогда больше выбросов.
Метод не учитывает асимметрию распределения остатков. Если модель системно ошибается в одну сторону, sigma будет завышена. На малых выборках вторая модель может просто выучить шум — тут помогает кросс-валидация на уровне остатков.
Для медицины или финансов я бы добавил конформное предсказание поверх — как контрольный выстрел. Это повышает надёжность, но добавляет latency.
Вывод: Двухуровневая модель GBDT — простой кирпичик для production, который даёт не только answer, но и confidence, без байеса и лишней магии.def differentiable_gain(x, y, t, alpha=10):
weights = torch.sigmoid(alpha * (x - t))
left_weight = weights.mean()
right_weight = 1 - left_weight
left_var = (y * weights).sum() / (weights.sum() + 1e-8)
right_var = (y * (1 - weights)).sum() / ((1 - weights).sum() + 1e-8)
gain = left_weight * left_var + right_weight * right_var
return gain
t = nn.Parameter(torch.tensor(0.5))
optimizer = torch.optim.SGD([t], lr=0.01)
for _ in range(100):
loss = -differentiable_gain(x_data, y_data, t)
loss.backward()
optimizer.step()
Практические советы и trade-offs
-- Высокий alpha ближе к ступеньке, но градиенты становятся резкими -- без регуляризации будете ловить NaN. Рекомендую добавлять L2 на t или использовать gradient clipping.
-- Метод вывозит на разреженных задачах или признаках вроде текстовых эмбеддингов, где переборные пороги просто не имеют смысла. Например, для фичей с низкой entropy по классам перебор теряет время на бесполезные кандидаты.
-- В гибридных подходах типа NGBoost такое ускоряет обучение: не надо ждать, пока дерево переберет все варианты. Но не ждите gain-to-gain эквивалентности с дискретным разбиением -- это trade-off за скорость.
Предупреждение о типичной ошибке
Ошибка: думать, что alpha можно сделать бесконечно большим. Это приводит к взрыву градиентов и потере дифференцируемости. Держите alpha в диапазоне 5-20, и всегда проверяйте стабильность loss. При малом alpha аппроксимация грубая -- проигрываете в точности. Компромисс обычно есть, и он оправдывает себя по скорости.
Для тех, кто хочет глубже:
-- "Differentially Private GBDT with Smooth Thresholds" (2022) -- связь с приватностью и градиентами.
-- "XGBoost with Continuous Gradient" -- модификации от сообщества.
Вывод: Гладкая аппроксимация порога в GBDT -- это инженерный компромисс между точностью и скоростью, который критически важен для production ML с высокоразмерными или стриминговыми данными.def online_update(model, X_new, y_new):
leaf_indices = model.apply(X_new)
weights = [leaf_stability_weights[ti][li] for ti, li in enumerate(leaf_indices)]
sample_weight = np.mean(weights)
gradient = loss_gradient(y_new, model.predict(X_new))
model.update(gradient * sample_weight, learning_rate=0.01)
Обратите внимание: никакого ручного тюнинга порогов. Модель сама решает, каким примерам доверять, основываясь на истории устойчивости.
Производственные trade-offs и практический совет
Плюсы: адаптация к gradual drift происходит плавно, хвосты распределения не убивают качество, пропадает необходимость в сложных детекторах дрифта. Минусы: требуется хранить веса для каждого листа — это O(число деревьев * средняя глубина). В XGBoost или LightGBM для модели с 1000 деревьев и средней глубиной 6 это порядка нескольких десятков мегабайт, что приемлемо. Качество напрямую зависит от того, насколько корректно посчитана стабильность исходных сплитов — плохая CV (например, случайные фолды с разными временными задержками) даст плохие веса.
Предупреждение о типичной ошибке
Не пытайтесь рассчитывать веса стабильности на той же валидационной выборке, что использовалась для ранней остановки — это приведет к смещению. Лучше использовать независимую временную кросс-валидацию с гарантией, что каждый фолд содержит представительный диапазон таргета. Иначе веса станут бесполезными.
Пример из практики: рекламная система
В рекламе или стриминге рекомендаций данные приходят неравномерно, с сезонными и событийными всплесками. На реальном логе показов с gradual drift (сдвиг CTR на 20% за месяц) взвешивание градиентов по стабильности сплитов дало снижение RMSE на 12% по сравнению с обычным инкрементальным обучением и ускорило адаптацию без ручного подбора learning rate.
Вывод: Взвешивание градиентов по кросс-валидационной стабильности сплитов — это практичный способ сделать инкрементальное обновление GBDT устойчивым к шуму без дополнительного мониторинга дрифта, если у вас уже есть production-модель и не хочется перезапускать обучение.