Изменения

Перейти к: навигация, поиск

Вариации регрессии

890 байт добавлено, 02:59, 9 апреля 2019
Лассо-регрессия
Основное различие лассо- и ридж-регрессии заключается в том, что первая может приводить к обращению некоторых независимых переменных в ноль, тогда как вторая уменьшает их до значений, близких к нулю. Рассмотрим для простоты двумерное пространство независимых переменных. В случае лассо-регрессии органичение на коэффициенты представляет собой ромб (<tex>|\beta_1| + |\beta_2| \leq t</tex>), в случае ридж-регрессии {{---}} круг (<tex>\beta_1^2 + \beta_2^2 \leq t^2</tex>). Необходимо минимизировать функцию ошибки, но при этом соблюсти ограничения на коэффициенты. С геометрической точки зрения задача состоит в том, чтобы найти точку касания линии, отражающей функцию ошибки с фигурой, отражающей ограничения на <tex>\beta</tex>. Из рисунка 1 интуитивно понятно, что в случае лассо-регрессии эта точка с большой вероятностью будет находиться на углах ромба, то есть лежать на оси, тогда как в случае ридж-регрессии такое происходит очень редко. Если точка пересечения лежит на оси, один из коэффициентов будет равен нулю, а значит, значение соответствующей независимой переменной не будет учитываться.
===Примеры кода=======Пример кода для Scikit-learn====
<font color = green># импорт библиотек</font>
'''from''' sklearn.datasets '''import''' make_regression
Точность предсказания для данного датасета и параметров:
<font color = green>>>></font> 0.8173906804156383
 
====Пример на языке Java====
 
Пример Лассо-регрессии с применением <code>smile.regression.LASSO</code><ref>[https://haifengl.github.io/smile/api/java/smile/regression/LASSO.html/ Smile, LASSO regression]</ref>
 
<code>Maven</code> зависимость:
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>1.5.2</version>
</dependency>
 
'''import''' smile.data.NominalAttribute;
'''import''' smile.data.parser.DelimitedTextParser;
'''import''' smile.regression.LASSO;
 
'''var''' parser = new DelimitedTextParser();
parser.setDelimiter(", ");
parser.setResponseIndex(new NominalAttribute("class"), 0);
'''var''' dataset = parser.parse("dataset.csv");
'''var''' lasso = new LASSO(dataset.x(), dataset.y(), 10);
lasso.predict(testX);
==Байесовская регрессия==
Анонимный участник

Навигация