exponenta event banner

Класс RegingLinear

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

Описание

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

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

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

Строительство

Создать RegressionLinear объект с помощью fitrlinear.

Свойства

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

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

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

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

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

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

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

Тип модели линейной регрессии, указанный как 'leastsquares' или 'svm'.

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

  • β - вектор p-коэффициентов.

  • x - это наблюдение из переменных p-предиктора.

  • b - скалярное смещение.

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

Оценки линейных коэффициентов, определяемые как числовой вектор с длиной, равной числу предикторов.

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

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

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

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

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

Тип штрафа по сложности, указанный как 'lasso (L1)' или 'ridge (L2)'.

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

СтоимостьОписание
'lasso (L1)'Лассо (L1) пенальти: λ∑j=1p'βj|
'ridge (L2)'Штраф по Риджу (L2): λ2∑j=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Преобразование линейной регрессионной модели в инкрементную
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
lossПотери регрессии для моделей линейной регрессии
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
predictПрогнозирование отклика модели линейной регрессии
selectModelsВыбор подогнанных регуляризованных моделей линейной регрессии
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