predict

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

Описание

пример

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

пример

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

пример

[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: [60x1 double]
              Bias: -0.2005
            Lambda: 4.1537e-05
           Learner: 'svm'


  Properties, Methods

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

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

IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = 
  incrementalClassificationLinear

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


  Properties, Methods

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

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

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

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

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

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

[~,ttscores] = predict(TTMdl,feat);
[~,ilscores] = predict(IncrementalMdl,feat);
compareScores = norm(ttscores(:,1) - ilscores(:,1))
compareScores = 0

Различие между баллами, сгенерированными моделями, 0.

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

Загрузите и переставьте 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}]';

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

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

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')

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

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

свернуть все

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

Вы должны главный 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 переменные предикторы. Значение 'ObservationsIn' аргумент пары "имя-значение" определяет ориентацию переменных и наблюдения.

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

Примечание

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

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

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

свернуть все

Предсказанные ответы или метки, возвращенные как n-D категориальный или символьный массив; с плавающей точкой, логический, или вектор строки; или массив ячеек из символьных векторов. 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