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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 105
  • Облачные технологии14 073
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 805
  • Продакт-менеджер1 266

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

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

  • Kubernetes7 763
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 261
  • CI/CD3 240
  • Мониторинг и Observability1 783
  • SRE566
  • Кибербезопасность453

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

  • Data Scientist1 140
  • Бизнес-аналитик930
  • Аналитик данных853
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • 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 коэффициенты несопоставимы.

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

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

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

  • Объяснять 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