RegressionLinear class

Модель линейной регрессии для высоко-размерных данных

Описание

RegressionLinear обученный линейный объект модели для регрессии; линейная модель является регрессией машины опорных векторов моделью линейной регрессии или (SVM). fitrlinear соответствует RegressionLinear модель путем минимизации целевой функции с помощью методов, которые уменьшают время вычисления для высоко-размерных наборов данных (e.g., стохастический градиентный спуск). Потеря регрессии плюс срок регуляризации составляет целевую функцию.

В отличие от других моделей регрессии, и для экономичного использования памяти, RegressionLinear объекты модели не хранят обучающие данные. Однако они действительно хранят, например, предполагаемые линейные коэффициенты модели, оцененные коэффициенты и силу регуляризации.

Можно использовать, обучил RegressionLinear модели, чтобы предсказать ответы для новых данных. Для получения дополнительной информации смотрите predict.

Конструкция

Создайте RegressionLinear объект при помощи fitrlinear.

Свойства

развернуть все

Свойства линейной регрессии

Половина ширины нечувствительной полосы эпсилона в виде неотрицательного скаляра.

Если Learner не 'svm', затем Epsilon пустой массив ([]).

Типы данных: single | double

Сила срока регуляризации в виде неотрицательного скаляра или вектора из неотрицательных значений.

Типы данных: double | single

Тип модели линейной регрессии в виде 'leastsquares' или 'svm'.

В этой таблице, f(x)=xβ+b.

  • β является вектором из коэффициентов p.

  • x является наблюдением от переменных предикторов p.

  • b является скалярным смещением.

ЗначениеАлгоритмФункция потерьFittedLoss Значение
'leastsquares'Линейная регрессия через обычные наименьшие квадратыСреднеквадратическая ошибка (MSE): [y,f(x)]=12[yf(x)]2'mse'
'svm'Регрессия машины опорных векторовНечувствительный эпсилон: [y,f(x)]=max[0,|yf(x)|ε]'epsiloninsensitive'

Линейный коэффициент оценивает в виде числового вектора с длиной, равной количеству предикторов.

Типы данных: double

Предполагаемый срок смещения или прерывание модели в виде числового скаляра.

Типы данных: double

Функция потерь раньше подбирала модель в виде 'epsiloninsensitive' или 'mse'.

ЗначениеАлгоритмФункция потерьLearner Значение
'epsiloninsensitive'Регрессия машины опорных векторовНечувствительный эпсилон: [y,f(x)]=max[0,|yf(x)|ε]'svm'
'mse'Линейная регрессия через обычные наименьшие квадратыСреднеквадратическая ошибка (MSE): [y,f(x)]=12[yf(x)]2'leastsquares'

Штраф сложности вводит в виде 'lasso (L1)' или 'ridge (L2)'.

Программное обеспечение составляет целевую функцию для минимизации от суммы средней функции потерь (см. FittedLoss) и значение регуляризации из этой таблицы.

ЗначениеОписание
'lasso (L1)'Лассо (L 1) штраф: λj=1p|βj|
'ridge (L2)'Гребень (L 2) штраф: λ2j=1pβj2

λ задает силу срока регуляризации (см. Lambda).

Программное обеспечение исключает срок смещения (β 0) от штрафа регуляризации.

Другие свойства регрессии

Категориальные индексы предиктора в виде вектора из положительных целых чисел. Предположение, что данные о предикторе содержат наблюдения в строках, CategoricalPredictors содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

Типы данных: single | double

Параметры использовали для обучения RegressionLinear модель в виде структуры.

Доступ к полям ModelParameters использование записи через точку. Например, получите доступ к относительной погрешности на линейных коэффициентах и сроке смещения при помощи Mdl.ModelParameters.BetaTolerance.

Типы данных: struct

Предиктор называет в порядке их внешнего вида в данных о предикторе в виде массива ячеек из символьных векторов. Длина PredictorNames равно количеству переменных в обучающих данных X или Tbl используемый в качестве переменных предикторов.

Типы данных: cell

Расширенный предиктор называет в виде массива ячеек из символьных векторов.

Если кодирование использования модели для категориальных переменных, то ExpandedPredictorNames включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames совпадает с PredictorNames.

Типы данных: cell

Имя переменной отклика в виде вектора символов.

Типы данных: char

Преобразование ответа функционирует в виде 'none' или указатель на функцию. ResponseTransform описывает, как программное обеспечение преобразовывает необработанные значения отклика.

Для функции MATLAB® или функции, которую вы задаете, вводят ее указатель на функцию. Например, можно ввести Mdl.ResponseTransform = @function, где function принимает числовой вектор из исходных ответов и возвращает числовой вектор, одного размера содержащий преобразованные ответы.

Типы данных: char | function_handle

Функции объекта

incrementalLearnerПреобразуйте модель линейной регрессии в инкрементного ученика
lossПотеря регрессии для моделей линейной регрессии
partialDependenceВычислите частичную зависимость
plotPartialDependenceСоздайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)
predictПредскажите ответ модели линейной регрессии
selectModelsВыберите подбиравшие упорядоченные модели линейной регрессии
updateОбновите параметры модели для генерации кода

Примеры

свернуть все

Обучите модель линейной регрессии, использующую SVM, двойной SGD и гребенчатую регуляризацию.

Симулируйте 10 000 наблюдений из этой модели

y=x100+2x200+e.

  • X=x1,...,x1000 10000 1000 разреженная матрица с 10%-ми ненулевыми стандартными нормальными элементами.

  • e является случайной нормальной ошибкой со средним значением 0 и стандартным отклонением 0.3.

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

Обучите модель линейной регрессии. По умолчанию, fitrlinear машины опорных векторов использования с гребенчатым штрафом, и оптимизируют использующий двойной SGD для SVM. Определите, как хорошо алгоритм оптимизации подбирает модель к данным путем извлечения подходящих сводных данных.

[Mdl,FitInfo] = fitrlinear(X,Y)
Mdl = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x1 double]
                 Bias: -0.0056
               Lambda: 1.0000e-04
              Learner: 'svm'


  Properties, Methods

FitInfo = struct with fields:
                    Lambda: 1.0000e-04
                 Objective: 0.2725
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 100000
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.4907
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.5816
    DeltaGradientTolerance: 0.1000
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [10000x1 double]
                   History: []
                   FitTime: 0.0458
                    Solver: {'dual'}

Mdl RegressionLinear модель. Можно передать Mdl и учебные или новые данные к loss смотреть среднеквадратическую ошибку в выборке. Или, можно передать Mdl и новые данные о предикторе к predict предсказать ответы для новых наблюдений.

FitInfo массив структур, содержащий, среди прочего, состояние завершения (TerminationStatus) и сколько времени решатель взял, чтобы подбирать модель к данным (FitTime). Это - хорошая практика, чтобы использовать FitInfo определить, являются ли измерения завершения оптимизации удовлетворительными. В этом случае, fitrlinear достигнутый максимальное количество итераций. Поскольку учебное время быстро, можно переобучить модель, но увеличить количество проходов через данные. Или, попробуйте другой решатель, такой как LBFGS.

Симулируйте 10 000 наблюдений из этой модели

y=x100+2x200+e.

  • X={x1,...,x1000} 10000 1000 разреженная матрица с 10%-ми ненулевыми стандартными нормальными элементами.

  • e является случайной нормальной ошибкой со средним значением 0 и стандартным отклонением 0.3.

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

Протяните 5% данных.

rng(1); % For reproducibility
cvp = cvpartition(n,'Holdout',0.05)
cvp = 
Hold-out cross validation partition
   NumObservations: 10000
       NumTestSets: 1
         TrainSize: 9500
          TestSize: 500

cvp CVPartition объект, который задает случайный раздел n данных в наборы обучающих данных и наборы тестов.

Обучите модель линейной регрессии использование набора обучающих данных. В течение более быстрого учебного времени ориентируйте матрицу данных предиктора так, чтобы наблюдения были в столбцах.

idxTrain = training(cvp); % Extract training set indices
X = X';
Mdl = fitrlinear(X(:,idxTrain),Y(idxTrain),'ObservationsIn','columns');

Предскажите наблюдения и среднеквадратическую ошибку (MSE) для хранения выборка.

idxTest = test(cvp); % Extract test set indices
yHat = predict(Mdl,X(:,idxTest),'ObservationsIn','columns');
L = loss(Mdl,X(:,idxTest),Y(idxTest),'ObservationsIn','columns')
L = 0.1851

Выборка затяжки MSE 0.1852.

Расширенные возможности

Смотрите также

| |

Введенный в R2016a