Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 317новых вакансий за сутки·93 956вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 293
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 404 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 139
  • Облачные технологии14 062
  • QA вакансии3 444
  • Backend вакансии2 115
  • Инженер данных1 804
  • Продакт-менеджер1 260

Разработка

  • Android1 854
  • iOS1 693
  • Fullstack вакансии989
  • AI вакансии953
  • Frontend вакансии750
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 527
  • Node.js2 022
  • .NET1 720
  • Kotlin1 595
  • Rust1 462
  • C#708
  • PHP683
  • C++573

DevOps и инфраструктура

  • Kubernetes7 762
  • DevOps вакансии6 053
  • Linux-инфраструктура5 487
  • Terraform / IaC4 265
  • CI/CD3 238
  • Мониторинг и Observability1 789
  • SRE571
  • Кибербезопасность460

Аналитика и данные

  • Data Scientist1 139
  • Бизнес-аналитик922
  • Аналитик данных856
  • Системный аналитик152

Другие направления

  • Проджект-менеджер620
  • UI/UX дизайн144
  • Ручное тестирование14

По регионам

  • Вакансии в США44 498
  • Вакансии в Европе23 818
  • Вакансии в Канаде4 529
  • Работа в России3 898

По формату

  • Удалённые вакансии75 272
  • Релокация в США44 503
  • Гибридная работа12 389
  • Офисная работа7 082

По уровню

  • Senior вакансии42 742
  • Middle вакансии20 983
  • Junior вакансии6 731

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме scikit-learnВсе вопросы
scikit-learnMiddleТеория

В чём разница между L1 (Lasso) и L2 (Ridge) регуляризацией?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

L2 (Ridge) штрафует сумму квадратов весов — уменьшает их, но не обнуляет. L1 (Lasso) штрафует сумму модулей — обнуляет неважные веса, делая feature selection. ElasticNet объединяет оба штрафа.

Ridge Regression (L2)

import numpy as np
from sklearn.linear_model import Ridge, RidgeCV
from sklearn.datasets import make_regression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

X, y, true_coef = make_regression(
    n_samples=200, n_features=20, n_informative=5,
    noise=10, coef=True, random_state=42
)

# Pipeline с масштабированием (обязательно!)
ridge_pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("ridge", Ridge(alpha=1.0)),  # alpha = lambda (сила регуляризации)
])
ridge_pipe.fit(X, y)

coefs = ridge_pipe.named_steps["ridge"].coef_
print(f"Zero coefficients: {np.sum(np.abs(coefs) < 1e-6)}")  # 0 — ни один не обнулился
print(f"Non-zero: {np.sum(np.abs(coefs) > 1e-6)}")  # 20

# Автоматический подбор alpha
ridge_cv = RidgeCV(alphas=[0.1, 1.0, 10.0, 100.0], cv=5)
ridge_cv.fit(StandardScaler().fit_transform(X), y)
print(f"Best alpha: {ridge_cv.alpha_}")

Математическая суть регуляризации

Регуляризация добавляет штраф к функции потерь, чтобы ограничить сложность модели и уменьшить переобучение. Целевая функция принимает вид: Loss(w) + λ * Penalty(w).

  • L2 (Ridge): Penalty = Σ w_i² — сумма квадратов весов. Штраф дифференцируем везде.
  • L1 (Lasso): Penalty = Σ |w_i| — сумма модулей весов. Штраф недифференцируем в нуле.
  • ElasticNet: комбинация L1 + L2: α * L1 + (1-α) * L2.

Ключевое отличие: разреженность

L1 приводит точно к нулю некоторые веса (feature selection), L2 — только уменьшает их, но не обнуляет. Это объясняется геометрически: гиперромб L1 имеет угловые точки на осях, куда «притягивается» решение оптимизации.

Lasso Regression (L1)

from sklearn.linear_model import Lasso, LassoCV

lasso_pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("lasso", Lasso(alpha=0.1, max_iter=5000)),
])
lasso_pipe.fit(X, y)

coefs = lasso_pipe.named_steps["lasso"].coef_
print(f"Zero coefficients: {np.sum(np.abs(coefs) < 1e-6)}")  # ~15 обнулились
print(f"Selected features: {np.sum(np.abs(coefs) > 1e-6)}")  # ~5

# Кросс-валидация для alpha
lasso_cv = LassoCV(alphas=np.logspace(-3, 1, 50), cv=5, max_iter=5000)
lasso_cv.fit(StandardScaler().fit_transform(X), y)
print(f"Best alpha: {lasso_cv.alpha_:.4f}")
print(f"Non-zero features: {np.sum(lasso_cv.coef_ != 0)}")

ElasticNet — лучшее из обоих

from sklearn.linear_model import ElasticNet, ElasticNetCV

# l1_ratio=1.0 -> чистый Lasso, 0.0 -> чистый Ridge
en = ElasticNet(alpha=0.1, l1_ratio=0.5, max_iter=5000)
en.fit(StandardScaler().fit_transform(X), y)
print(f"Non-zero: {np.sum(en.coef_ != 0)}")

Когда что использовать

  • L2 (Ridge): все признаки потенциально полезны, коррелированные признаки (сохраняет оба), данных мало, нет необходимости в интерпретируемости.
  • L1 (Lasso): нужна автоматическая отбор признаков, данных мало и признаков много, нужна интерпретируемость (знать, какие признаки важны).
  • ElasticNet: много коррелированных признаков и нужен одновременно отбор и стабильность — Lasso нестабильно выбирает один из коллинеарных признаков, ElasticNet выбирает группу.

Подводные камни

  • Масштабирование обязательно: L1 и L2 штрафуют абсолютные значения весов. Без StandardScaler признаки с большим диапазоном получат несправедливо большой штраф.
  • alpha в sklearn != lambda в учебниках: в sklearn alpha — это сила регуляризации. В LogisticRegression используется обратный параметр C = 1/alpha: меньше C = сильнее регуляризация.
  • Lasso нестабилен при мультиколлинеарности: из двух коррелированных признаков Lasso произвольно обнуляет один. ElasticNet распределяет веса.
  • max_iter для Lasso: по умолчанию 1000 итераций может не хватить. При предупреждении ConvergenceWarning увеличьте до 5000-10000.
  • Ridge не делает feature selection: все признаки остаются в модели, это нужно учитывать при интерпретации.
  • Интерпретация коэффициентов: сравнивать можно только при одинаковом масштабировании признаков. Без StandardScaler коэффициенты несопоставимы.

Типичные ошибки

  • Объяснять l1 vs l2 regularization только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать l1 vs l2 regularization с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

Как вы знаете этот вопрос?

Проверить себя по теме scikit-learn →

Источники

  • https://scikit-learn.org/stable/modules/linear_model.html
←Предыдущий вопросЧем `LabelEncoder` отличается от `OneHotEncoder` — когда использовать каждый?Следующий вопрос→Представьте, pipeline на scikit-learn даёт хорошие результаты в dev, но плохо работает на новых данных. Как вы будете разбираться?

Связанные темы

scikit-learndata-aievaluationmodel-training

Вакансии с этим навыком

  • 📑 Вакансия Junior Data Scientist / ML Engineer

Частые вопросы на собеседовании

  • В чём разница между train_test_split() и кросс-валидацией (cross_val_score)? Когда применять каждый из них?
  • Как работает Pipeline в scikit-learn и какие проблемы он решает (утечка данных — data leakage)?
  • Какие метрики применять для задачи классификации с несбалансированными классами и как их вычислить в scikit-learn?
  • Как обнаружить и предотвратить утечку данных (data leakage) при построении пайплайна в scikit-learn?