Блок "Линейная модель. Регрессия"
Блок доступен начиная с версии 1.0
Назначение блока
Блок предназначен для построения линейных регрессионных моделей. Поддерживаются следующие методы:
- Линейная регрессия;
- Регрессия гребня (Ridge);
- Лассо-регрессия (Lasso);
- Эластическая сеть (Elastic Net);
- Регрессия Хубера (Huber);
- RANSAC-регрессия;
- Регрессия Тейла — Сена (Theil-Sen).
Чтобы начать работать с блоком, необходимо выбрать его в библиотеке и переместить в область графа.
Настройки блока
Работа с настройками блока осуществляется через локальное меню (пункт Настройки):
Модальное окно настроек представлено ниже:
Общие настройки блоков описаны в отдельном разделе.
Раздел "Специфические настройки блока"
Так как блок реализован для большого количества моделей, настройки каждой модели выделены в отдельную таблицу.
Общие настройки
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Режим моделирования | Выпадающий список | Да | По умолчанию "Создать новую модель". Поле поддерживает единичную отметку. Содержит следующие элементы: - Создать новую модель; - Использовать заданную модель; - Переобучить заданную модель |
|
| Тип модели | model_type | Выпадающий список | Да | По умолчанию "Линейная регрессия". Поле поддерживает единичную отметку. Содержит следующие элементы: - Линейная регрессия ("LinearRegression") - Регрессия гребня ("Ridge") - Лассо регрессия ("Lasso") - Эластическая сеть ("ElasticNet") - Регрессия Хубера ("HuberRegressor") - Регрессия RANSAC ("RANSACRegressor") - Регрессия Тейла–Сена ("TheilSenRegressor") |
Настройки модели "Линейная регрессия" (LinearRegression)
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Константа | linear_fit_inter | Флаг | Нет | По умолчанию True |
Настройки модели "Регрессия гребня" (Ridge)
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Константа | ridge_fit_inter | Флаг | Нет | По умолчанию True |
| Коэффициент регуляризации | ridge_alpha | Вещественное число | Нет | По умолчанию 1.0. Значение должно быть больше или равно 0 |
| Максимальное число итераций | ridge_max_iter | Целое число | Нет | По умолчанию 1000. Значение должно быть больше 0 |
| Точность | ridge_tol | Целое число | Нет | По умолчанию 0.0001. Значение должно быть больше 0 |
| Метод решения | ridge_solver | Выпадающий список | Нет | По умолчанию "Авто". Поле поддерживает единичную отметку. Содержит следующие элементы: - Авто ("auto"); - SVD ("svd"); - Холецкий ("cholesky"); - LSQR ("lsqr"); - SAGA ("saga") |
| Начальное положение системы | ridge_random_state | Целое число | Нет | По умолчанию 123. Значение должно быть больше или равно 0 |
Настройки модели "Лассо регрессия" (Lasso)
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Константа | lasso_fit_inter | Флаг | Нет | По умолчанию True |
| Коэффициент регуляризации | lasso_alpha | Вещественное число | Нет | По умолчанию 1.0. Значение должно быть больше или равно 0 |
| Максимальное число итераций | lasso_max_iter | Целое число | Нет | По умолчанию 1000. Значение должно быть больше 0 |
| Точность | lasso_tol | Целое число | Нет | По умолчанию 0.0001. Значение должно быть больше 0 |
| Стратегия обновления коэффициентов | lasso_selection | Выпадающий список | Нет | По умолчанию "Цикличная". Поле поддерживает единичную отметку. Содержит следующие элементы: - Цикличная ("cyclic") - Случайная ("random") |
| Начальное положение системы | lasso_random_state | Целое число | Нет | По умолчанию 123. Значение должно быть больше или равно 0 |
Настройки модели "Эластическая сеть" (ElasticNet)
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Константа | elastic_fit_inter | Флаг | Нет | По умолчанию True |
| Коэффициент регуляризации | elastic_alpha | Вещественное число | Нет | По умолчанию 1.0. Значение должно быть больше или равно 0 |
| Коэффициент баланса L1/L2 | elastic_l1_ratio | Вещественное число | Нет | По умолчанию 0.5. Значение должно быть в промежутке [0,1] |
| Максимальное число итераций | elastic_max_iter | Целое число | Нет | По умолчанию 1000. Значение должно быть больше 0 |
| Точность | elastic_tol | Целое число | Нет | По умолчанию 0.0001. Значение должно быть больше 0 |
| Стратегия обновления коэффициентов | elastic_selection | Выпадающий список | Нет | По умолчанию "Цикличная". Поле поддерживает единичную отметку. Содержит следующие элементы: - Цикличная ("cyclic") - Случайная ("random") |
| Начальное положение системы | elastic_random_state | Целое число | Нет | По умолчанию 123. Значение должно быть больше или равно 0 |
Настройки модели "Регрессия Хубера" (HuberRegressor)
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Константа | huber_fit_inter | Флаг | Нет | По умолчанию True |
| Чувствительность к выбросам | huber_epsilon | Вещественное число | Нет | По умолчанию 1.35. Значение должно быть больше или равно 1 |
| Максимальное число итераций | huber_max_iter | Целое число | Нет | По умолчанию 100. Значение должно быть больше 0 |
| Коэффициент регуляризации | huber_alpha | Вещественное число | Нет | По умолчанию 0.0001. Значение должно быть больше или равно 0 |
| Точность | huber_tol | Целое число | Нет | По умолчанию 0.0001. Значение должно быть больше 0 |
Настройки модели "Регрессия RANSAC" (RANSACRegressor)
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Базовая модель | ransac_estimator | Выпадающий список | Нет | По умолчанию "Линейная регрессия". Поле поддерживает единичную отметку. Содержит следующие элементы: - Линейная регрессия ("LinearRegression") - Регрессия гребня ("Ridge") - Лассо регрессия ("Lasso") - Эластическая сеть ("ElasticNet") |
| Доля наблюдений для подвыборки | ransac_min_samples | Вещественное число | Нет | По умолчанию 0.5. Значение должно быть в промежутке [0,1] |
| Порог ошибки | ransac_residual_threshold | Выпадающий список | Нет | По умолчанию "Автоматически". Поле поддерживает единичную отметку. Содержит следующие элементы: - Автоматически ("auto") - Проценты от диапазона ("percent") |
| Максимальное число итераций | ransac_max_trials | Целое число | Нет | По умолчанию 100. Значение должно быть больше 0 |
| Начальное положение системы | ransac_random_state | Целое число | Нет | По умолчанию 123. Значение должно быть больше или равно 0 |
Настройки модели "Регрессия Тейла–Сена" (TheilSenRegressor)
| Наименование | id настройки | Тип | Обязательное | Описание |
|---|---|---|---|---|
| Константа | theilsen_fit_inter | Флаг | Нет | По умолчанию True |
| Максимальное число итераций | theilsen_max_iter | Целое число | Нет | По умолчанию 1000. Значение должно быть больше 0 |
| Точность | theilsen_tol | Целое число | Нет | По умолчанию 0.0001. Значение должно быть больше 0 |
| Начальное положение системы | theilsen_random_state | Целое число | Нет | По умолчанию 123. Значение должно быть больше или равно 0 |
Входы блока
| Наименование выхода | Тип | Описание |
|---|---|---|
| Обучающая выборка. Зависимая переменная | DataFrame | DataFrame с одним рядом |
| Обучающая выборка. Независимые переменные | DataFrame | DataFrame с набором признаков |
| Тестовая выборка. Зависимая переменная | DataFrame | DataFrame с одним рядом |
| Тестовая выборка. Независимые переменные | DataFrame | DataFrame с набором признаков |
| Прогнозная выборка. Независимые переменные | DataFrame | DataFrame с набором признаков |
| Модель | Модель | Объект типа LinearRegression, Ridge, Lasso, ElasticNet, HuberRegressor, RANSACRegressor, TheilSenRegressor |
| Настройки блока | JSON | См. описание ниже |
Вход "Настройки блока"
Если настройки передаются на вход блока, его внутренние настройки игнорируются. Для корректной передачи настроек необходимо:
-
Передать их в формате JSON.
-
Обязательно указать тип модели, которую требуется рассчитать, используя параметр "model_type" (например, "model_type": "TheilSenRegressor"). Это обязательный параметр. Если модель не указана, расчет произведен не будет.
-
Указать все необходимые параметры выбранной модели по принципу "id_настройки": значение. Идентификаторы настроек и перечислений приведены в таблицах выше. Если параметр указан неверно или отсутствует, будет использовано значение по умолчанию.
Выходы блока
| Наименование выхода | Тип | Описание |
|---|---|---|
| Обучающая выборка. Зависимая переменная | DataFrame | |
| Обучающая выборка. Модельный ряд | DataFrame | |
| Обучающая выборка. Ряд остатков | DataFrame | |
| Тестовая выборка. Зависимая переменная | DataFrame | |
| Тестовая выборка. Модельный ряд | DataFrame | |
| Тестовая выборка. Ряд остатков | DataFrame | |
| Прогнозная выборка. Прогнозный ряд | DataFrame | |
| Значимость факторов | DataFrame | |
| Описательные статистики | html | Статистический отчет о работе метода |
| Модель | Модель | Результирующая модель. Объект типа LinearRegression, Ridge, Lasso, ElasticNet, HuberRegressor, RANSACRegressor, TheilSenRegressor |
События блока
В блоке нет событий.
Описание работы блока
Блок строит регрессионную модель с использованием линейных методов.
Требования к данным:
- входные данные — таблицы в формате DataFrame;
- поддерживаются только числовые данные.
Процесс работы:
- Обучение — модель обучается на обучающей выборке.
- Применение — обученная модель применяется к тестовой и прогнозной выборкам.
Результаты работы блока:
- Ряды, полученные в ходе моделирования и прогнозирования.
- HTML-отчет о модели для обучающей и тестовой выборки (если предоставлена).
- Обученная модель в виде объекта, который может быть передан на вход следующим блокам.
Настройки блока можно задать через графический интерфейс или передать их на соответствующий вход.
Режим моделирования
Для моделирования доступны три режима:
-
Режим "Создать новую модель" - используются гиперпараметры, заданные в настройках блока, и входные данные. На их основе строится новая модель.
-
Режим "Использовать заданную модель" - на вход блока подается уже обученная модель. В этом режиме модель не пересчитывается. Блок использует ее внутренние параметры (коэффициенты) и на основе заданных независимых переменных рассчитывает только модельные (прогнозные) ряды.
-
Режим "Переобучить заданную модель" - из переданной модели извлекаются только ее гиперпараметры. Затем на основе входных данных строится новая модель.
Краткое описание моделей блока
| Имя методологии (модели) | Описание |
|---|---|
| Линейная регрессия (LinearRegression) | Классическая линейная регрессия по МНК, без регуляризации |
| Регрессия гребня (Ridge) | Линейная регрессия с L2-регуляризацией (устойчивее при мультиколлинеарности) |
| Лассо регрессия (Lasso) | Линейная регрессия с L1-регуляризацией (фичер селекшн за счёт зануления коэффициентов) |
| Эластическая сеть (ElasticNet) | Комбинация L1 и L2 регуляризаций (более гибкая модель) |
| Регрессия Хубера (HuberRegressor) | Робастная линейная модель, устойчивая к выбросам |
| Регрессия RANSAC (RANSACRegressor) | Непараметрическая линейная регрессия, устойчива к выбросам |
| Регрессия Тейла – Сена (TheilSenRegressor) | Поиск устойчивой линейной модели через случайные подвыборки. Подходит, если есть сильные выбросы |
Ограничения блока
- Метод работает только с объектами pandas.DataFrame
- Обучающая выборка не должна содержать полностью пустых столбцов.
- Тестовая и прогнозная выборки должны иметь тот же набор признаков, что и обучающая выборка.
- Зависимая переменная должна состоять только из одного столбца.
- Зависимая и независимые переменные должны иметь одинаковое количество наблюдений.
- Все входные данные должны быть числовыми и не содержать пропусков и бесконечных значений.
- Индексы строк зависимой и независимых переменных должны совпадать. Это работает как на обучающую, так и на тестовую выборки.


