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) из штрафа за регуляризацию.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

incrementalLearnerПреобразуйте линейную регрессионую модель в инкрементальную обучающуюся
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
lossРегрессионые потери для линейных регрессионых моделей
partialDependenceВычисление частичной зависимости
plotPartialDependenceСоздайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE)
predictПредсказать ответ линейной регрессионой модели
selectModelsВыберите подобранные регуляризованные линейные регрессионые модели
shapleyЗначения Shapley
updateОбновите параметры модели для генерации кода

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

Значение. Чтобы узнать, как классы значений влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

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

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

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.1253
                    Solver: {'dual'}

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

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

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

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