Класс RegressionLinear

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

Описание

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

В отличие от других моделей регрессии, и для экономичного использования памяти, объекты модели 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) от штрафа регуляризации.

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

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

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

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

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

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

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

Поскольку модель RegressionLinear не поддерживает категориальные предикторы, ExpandedPredictorNames и PredictorNames равны.

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

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

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

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

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

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

Методы

потеряПотеря регрессии для моделей линейной регрессии
предсказатьПредскажите ответ модели линейной регрессии
selectModelsВыберите адаптированные упорядоченные модели линейной регрессии

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Обучите модель линейной регрессии, использующую 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.1155
                    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