RegressionLinear class

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

Описание

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.0796
                    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