predict

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

Описание

пример

label = predict(Mdl,X) возвращает предсказанные ответы или маркирует label из наблюдений в данных о предикторе X из модели Mdl пошагового обучения.

пример

label = predict(Mdl,X,'ObservationsIn',dimension) задает размерность наблюдения данных о предикторе, любого 'rows' (значение по умолчанию) или 'columns'. Например, задайте 'ObservationsIn','columns' указать, что наблюдения в данных о предикторе ориентированы вдоль столбцов X.

пример

[label,score] = predict(___) также возвращает классификационные оценки для всех классов когда Mdl модель пошагового обучения для классификации, с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Загрузите набор данных деятельности человека.

load humanactivity

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

Ответы могут быть одним из пяти классов: Нахождение, Положение, Обход, Выполнение или Танец. Разделите пополам ответ путем идентификации, перемещается ли предмет (actid > 2).

Y = actid > 2;

Подбирайте линейную модель классификации к целому набору данных.

TTMdl = fitclinear(feat,Y)
TTMdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [60×1 double]
              Bias: -0.2005
            Lambda: 4.1537e-05
           Learner: 'svm'


  Properties, Methods

TTMdl ClassificationLinear объект модели, представляющий традиционно обученную линейную модель классификации.

Преобразуйте традиционно обученную линейную модель классификации в бинарную классификацию линейная модель для пошагового обучения.

IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = 
  incrementalClassificationLinear

            IsWarm: 1
           Metrics: [1×2 table]
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [60×1 double]
              Bias: -0.2005
           Learner: 'svm'


  Properties, Methods

IncrementalMdl incrementalClassificationLinear объект модели, подготовленный к пошаговому обучению с помощью SVM.

  • incrementalLearner функция инициализирует инкрементного ученика путем передачи изученных коэффициентов ему, наряду с другой информацией TTMdl усвоенный из обучающих данных.

  • IncrementalMdl является теплым (IsWarm 1), что означает, что функции пошагового обучения могут начать отслеживать показатели производительности.

  • incrementalLearner конфигурирует модель, которая будет обучена с помощью адаптивного инвариантного к масштабу решателя, тогда как fitclinear обученный TTMdl использование решателя BFGS

Инкрементный ученик, созданный из преобразования традиционно обученной модели, может сгенерировать предсказания без последующей обработки.

Предскажите метки класса для всех наблюдений с помощью обеих моделей.

ttlabels = predict(TTMdl,feat);
illables = predict(IncrementalMdl,feat);
sameLabels = sum(ttlabels ~= illables) == 0
sameLabels = logical
   1

Обе модели предсказывают те же метки для каждого наблюдения.

Если вы ориентируете наблюдения вдоль столбцов матрицы данных предиктора, можно испытать повышение КПД во время пошагового обучения.

Загрузите и переставьте 2 015 наборов данных корпуса Нью-Йорк Сити. Для получения дополнительной информации о данных смотрите, что Нью-Йорк Сити Открывает Данные.

load NYCHousing2015

rng(1) % For reproducibility
n = size(NYCHousing2015,1);
shuffidx = randsample(n,n);
NYCHousing2015 = NYCHousing2015(shuffidx,:);

Извлеките переменную отклика SALEPRICE из таблицы. Применяйте логарифмическое преобразование к SALEPRICE.

Y = log(NYCHousing2015.SALEPRICE + 1); % Add 1 to avoid log of 0
NYCHousing2015.SALEPRICE = [];

Создайте фиктивные переменные матрицы из категориальных предикторов.

catvars = ["BOROUGH" "BUILDINGCLASSCATEGORY" "NEIGHBORHOOD"];
dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,...
    'InputVariables',catvars);
dumvarmat = table2array(dumvarstbl);
NYCHousing2015(:,catvars) = [];

Обработайте все другие числовые переменные в таблице как линейные предикторы продажной цены. Конкатенируйте матрицу фиктивных переменных к остальной части данных о предикторе и транспонируйте данные, чтобы ускорить расчеты.

idxnum = varfun(@isnumeric,NYCHousing2015,'OutputFormat','uniform');
X = [dumvarmat NYCHousing2015{:,idxnum}]';

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

Mdl = incrementalRegressionLinear('Learner','leastsquares','EstimationPeriod',0);

Mdl incrementalRegressionLinear объект модели.

Выполните пошаговое обучение и предсказание путем выполнения этой процедуры для каждой итерации:

  • Симулируйте поток данных путем обработки фрагмента 100 наблюдений за один раз.

  • Подбирайте модель к входящему фрагменту данных. Укажите, что наблюдения ориентированы вдоль столбцов данных. Перезапишите предыдущую инкрементную модель с новой моделью.

  • Предскажите ответы с помощью подобранной модели и входящего фрагмента данных. Укажите, что наблюдения ориентированы вдоль столбцов данных.

% Preallocation
numObsPerChunk = 100;
n = numel(Y);
nchunk = floor(n/numObsPerChunk);
r = nan(n,1);

figure
h = plot(r);
h.YDataSource = 'r'; 
ylabel('Residuals')
xlabel('Iteration')

% Incremental fitting
for j = 2:nchunk
    ibegin = min(n,numObsPerChunk*(j-1) + 1);
    iend   = min(n,numObsPerChunk*j);
    idx = ibegin:iend;
    Mdl = fit(Mdl,X(:,idx),Y(idx),'ObservationsIn','columns');
    yhat = predict(Mdl,X(:,idx),'ObservationsIn','columns');
    r(idx) = Y(idx) - yhat;
    refreshdata
    drawnow
end

Figure contains an axes. The axes contains an object of type line.

Mdl incrementalRegressionLinear объект модели, обученный на всех данных в потоке.

Остаточные значения появляются симметрично распространение приблизительно 0 в течение пошагового обучения.

Чтобы вычислить следующие вероятности класса, задайте логистическую регрессию инкрементный ученик.

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

load humanactivity
n = numel(actid);
rng(10); % For reproducibility
idx = randsample(n,n);
X = feat(idx,:);
Y = actid(idx);

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

Ответы могут быть одним из пяти классов: Нахождение, Положение, Обход, Выполнение или Танец. Разделите пополам ответ путем идентификации, перемещается ли предмет (actid > 2).

Y = Y > 2;

Создайте инкрементную модель логистической регрессии для бинарной классификации. Подготовьте его к predict путем определения имен классов и произвольного коэффициента и значений смещения.

p = size(X,2);
Beta = randn(p,1);
Bias = randn(1);
Mdl = incrementalClassificationLinear('Learner','logistic','Beta',Beta,...
    'Bias',Bias,'ClassNames',unique(Y));

Mdl incrementalClassificationLinear модель. Все его свойства только для чтения. Вместо того, чтобы задать произвольные значения, можно принять любые из этих мер, чтобы подготовить модель:

  • Обучите модель логистической регрессии бинарной классификации с помощью fitclinear на подмножестве данных (при наличии), и затем преобразуют модель в инкрементного ученика при помощи incrementalLearner.

  • Инкрементно подходящий Mdl к данным при помощи fit.

Симулируйте поток данных и выполните следующие действия с каждым входящим фрагментом 50 наблюдений.

  1. Вызовите predict предсказать классификационные оценки для наблюдений во входящем фрагменте данных. Классификационные оценки являются следующими вероятностями класса для учеников логистической регрессии.

  2. Вызовите perfcurve вычислить область под кривой ROC (AUC) с помощью входящего фрагмента данных и сохранить результат.

  3. Вызовите fit подбирать модель к входящему фрагменту. Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.

numObsPerChunk = 50;
nchunk = floor(n/numObsPerChunk);
auc = zeros(nchunk,1);

% Incremental learning
for j = 1:nchunk
    ibegin = min(n,numObsPerChunk*(j-1) + 1);
    iend   = min(n,numObsPerChunk*j);
    idx = ibegin:iend;    
    [~,posteriorProb] = predict(Mdl,X(idx,:));  
    [~,~,~,auc(j)] = perfcurve(Y(idx),posteriorProb(:,2),Mdl.ClassNames(2));
    Mdl = fit(Mdl,X(idx,:),Y(idx));
end

Mdl incrementalClassificationLinear объект модели, обученный на всех данных в потоке.

Постройте AUC на входящих фрагментах данных.

plot(auc)
ylabel('AUC')
xlabel('Iteration')

Figure contains an axes. The axes contains an object of type line.

AUC предполагает, что классификатор правильно предсказывает движущиеся предметы хорошо.

Входные параметры

свернуть все

Модель пошагового обучения в виде incrementalClassificationLinear или incrementalRegressionLinear объект модели. Можно создать Mdl непосредственно или путем преобразования поддерживаемой, традиционно обученной модели машинного обучения использование incrementalLearner функция. Для получения дополнительной информации смотрите соответствующую страницу с описанием.

Необходимо сконфигурировать Mdl предсказать метки для пакета наблюдений.

  • Если Mdl конвертированная, традиционно обученная модель, можно предсказать метки без любых модификаций.

  • В противном случае, Mdl должен удовлетворить следующим критериям, которые можно задать непосредственно или путем подбора кривой Mdl к использованию данных fit или updateMetricsAndFit.

    • Если Mdl incrementalRegressionLinear модель, ее коэффициенты модели Mdl.Beta и сместите Mdl.Bias должны быть непустые массивы.

    • Если Mdl incrementalClassificationLinear модель, ее коэффициенты модели Mdl.Beta и сместите Mdl.Bias должны быть непустые массивы и имена классов в Mdl.ClassNames должен содержать два класса.

    • Независимо от типа объекта, если вы конфигурируете модель так, чтобы функции стандартизировали данные о предикторе, предиктор означает Mdl.Mu и стандартные отклонения Mdl.Sigma должны быть непустые массивы.

Пакет данных о предикторе, для которых можно предсказать метки в виде матрицы с плавающей точкой наблюдений n и Mdl.NumPredictors переменные предикторы. Значение dimension определяет ориентацию переменных и наблюдения.

Продолжительность наблюдения маркирует Y и количество наблюдений в X должно быть равным; Y (j) метка наблюдения j (строка или столбец) в X.

Примечание

predict поддержки только входные данные о предикторе с плавающей точкой. Если входная модель Mdl представляет конвертированное, традиционно обучил подгонку модели к категориальным данным, использовать dummyvar преобразовывать каждую категориальную переменную в числовую матрицу фиктивных переменных и конкатенировать все фиктивные переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации смотрите Фиктивные Переменные.

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

Размерность наблюдения данных о предикторе в виде 'columns' или 'rows'.

Пример: 'ObservationsIn','columns'

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

Выходные аргументы

свернуть все

Предсказанные ответы (или метки), возвращенный как категориальное или символьный массив; с плавающей точкой, логический, или вектор строки; или массив ячеек из символьных векторов со строками n. n является количеством наблюдений в X, и метка (j) предсказанный ответ для наблюдения j.

  • Для проблем классификации, label имеет совпадающий тип данных как имена классов, сохраненные в Mdl.ClassNames. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)

  • Для проблем регрессии, label вектор с плавающей точкой.

Классификационные оценки, возвращенные как n-by-2 матрица с плавающей точкой, когда Mdl incrementalClassificationLinear модель. n является количеством наблюдений в X. счет (jK) счет к классификации наблюдения j в класс k. Mdl.ClassNames задает порядок классов.

Если Mdl.Learner 'svm', predict возвращает необработанные классификационные оценки. Если Mdl.Learner 'logistic', классификационные оценки являются апостериорными вероятностями.

Больше о

свернуть все

Классификационная оценка

Для линейных моделей пошагового обучения для бинарной классификации, необработанного classification score для классификации наблюдения x, вектор-строка, в положительный класс

f(x)=β0+xβ,

где

  • β 0 является скалярным смещением Mdl.Bias.

  • β является вектор-столбцом коэффициентов Mdl.Beta.

Необработанная классификационная оценка для классификации x в отрицательный класс является –f (x). Программное обеспечение классифицирует наблюдения в класс, который дает к положительному счету.

Если линейная модель классификации состоит из учеников логистической регрессии, то программное обеспечение применяет 'logit' выиграйте преобразование к необработанным классификационным оценкам.

Расширенные возможности

Введенный в R2020b