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