partialDependence

Вычислите частичную зависимость

Описание

пример

pd = partialDependence(Mdl,Vars) вычисляет частичную зависимость pd между переменными предикторами, перечисленными в Vars и ответы предсказаны при помощи модели Mdl регрессии, который содержит данные о предикторе.

пример

pd = partialDependence(Mdl,Vars,Labels) вычисляет частичную зависимость pd между переменными предикторами, перечисленными в Vars и музыка к классам задана в Labels при помощи модели Mdl классификации, который содержит данные о предикторе.

pd = partialDependence(___,Data) использует новые данные о предикторе в Data. Можно задать Data в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

pd = partialDependence(___,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, если вы задаете 'UseParallel','true', partialDependence функционируйте использует параллельные вычисления, чтобы выполнить частичные вычисления зависимости.

[pd,x,y] = partialDependence(___) также возвращает x и y, которые содержат точки запроса первых и вторых переменных предикторов в Vars, соответственно. Если вы задаете одну переменную в Varsто partialDependence возвращает пустую матрицу ([]) для y.

Примеры

свернуть все

Обучите наивную модель классификации Бейеса с fisheriris набор данных, и вычисляет частичные значения зависимости, которые показывают отношение между переменным предиктором и предсказанными баллами (апостериорные вероятности) для нескольких классов.

Загрузите fisheriris набор данных, который содержит разновидности (species) и измерения (meas) на длине чашелистика, ширине чашелистика, лепестковой длине и лепестковой ширине для 150 ирисовых экземпляров. Набор данных содержит 50 экземпляров от каждой из трех разновидностей: setosa, versicolor, и virginica.

load fisheriris

Обучите наивную модель классификации Бейеса с species как ответ и meas как предикторы.

Mdl = fitcnb(meas,species,'PredictorNames',["Sepal Length","Sepal Width","Petal Length","Petal Width"]);

Вычислите частичные значения зависимости на третьем переменном предикторе (лепестковая длина) баллов, предсказанных Mdl для всех трех классов species. Задайте метки класса при помощи ClassNames свойство Mdl.

[pd,x] = partialDependence(Mdl,3,Mdl.ClassNames);

фунт содержит частичные значения зависимости для точек запроса x. Можно построить вычисленные частичные значения зависимости при помощи функций построения графика, таких как plot и bar. Постройте pd против x при помощи bar функция.

bar(x,pd)
legend(Mdl.ClassNames)
xlabel("Petal Length")
ylabel("Scores")
title("Partial Dependence Plot")

Согласно этой модели, вероятности virginica увеличения с лепестковой длиной. Вероятность setosa приблизительно 0,33, от того, где лепестковая длина 0 к приблизительно 2,5, и затем вероятность спадает до почти 0.

В качестве альтернативы можно использовать plotPartialDependence функция, чтобы вычислить и построить частичные значения зависимости.

plotPartialDependence(Mdl,3,Mdl.ClassNames)

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

Загрузите census1994 набор данных, который содержит США ежегодные данные о зарплате, категоризированные как <=50K или >50K, и несколько демографических переменных.

load census1994

Извлеките подмножество переменных, чтобы анализировать из таблицы adultdata.

X = adultdata(1:500,{'age','workClass','education_num','marital_status','race', ...
   'sex','capital_gain','capital_loss','hours_per_week','salary'});

Обучите случайный лес деревьев классификации при помощи fitcensemble и определение 'Method' как 'Bag'. Для воспроизводимости используйте шаблон деревьев, созданных при помощи templateTree с 'Reproducible' опция.

rng('default')
t = templateTree('Reproducible',true);
Mdl = fitcensemble(X,'salary','Method','Bag','Learners',t);

Смотрите имена классов в Mdl.

Mdl.ClassNames
ans = 2×1 categorical
     <=50K 
     >50K 

Вычислите частичные значения зависимости баллов на предикторах age и education_num для обоих классов (<=50K и >50K). Задайте количество наблюдений к выборке как 100.

[pd,x,y] = partialDependence(Mdl,{'age','education_num'},Mdl.ClassNames,'NumObservationsToSample',100);

Создайте объемную поверхностную диаграмму частичных значений зависимости для первого класса (<=50K) при помощи surfl функция.

figure
surf(x,y,squeeze(pd(1,:,:)))
xlabel('age')
ylabel('education\_num')
zlabel('Score of class <=50K')
title('Partial Dependence Plot')
view([130 30]) % Modify the viewing angle

Создайте объемную поверхностную диаграмму частичных значений зависимости для второго класса (>50K).

figure
surf(x,y,squeeze(pd(2,:,:)))
xlabel('age')
ylabel('education\_num')
zlabel('Score of class >50K')
title('Partial Dependence Plot')
view([130 30]) % Modify the viewing angle

Два графика показывают различные частичные шаблоны зависимости в зависимости от класса.

Обучите модель регрессии машины опорных векторов (SVM) использование carsmall набор данных, и вычисляет частичную зависимость от двух переменных предикторов. Затем создайте фигуру, которая показывает частичную зависимость от этих двух переменных наряду с гистограммой на каждой переменной.

Загрузите carsmall набор данных.

load carsmall

Составьте таблицу, которая содержит Weight, Cylinders, Displacement, и Horsepower.

Tbl = table(Weight,Cylinders,Displacement,Horsepower);

Обучите модель регрессии SVM использование переменных предикторов в Tbl и переменная отклика MPG. Используйте Гауссову функцию ядра с автоматической шкалой ядра.

Mdl = fitrsvm(Tbl,MPG,'ResponseName','MPG', ...
    'CategoricalPredictors','Cylinders','Standardize',true, ...
    'KernelFunction','gaussian','KernelScale','auto');

Вычислите частичную зависимость предсказанного ответа (MPG) на переменных предикторах Weight и Horsepower. Задайте точки запроса, чтобы вычислить частичную зависимость при помощи 'QueryPoints' аргумент пары "имя-значение".

numPoints = 10;
ptX = linspace(min(Weight),max(Weight),numPoints)';
ptY = linspace(min(Horsepower),max(Horsepower),numPoints)';
[pd,x,y] = partialDependence(Mdl,{'Weight','Horsepower'},'QueryPoints',[ptX ptY]);

Создайте фигуру, которая содержит мозаичное размещение графика 5 на 5. Постройте частичную зависимость от этих двух переменных при помощи imagesc функция. Затем чертите гистограмму для каждой переменной при помощи histogram функция. Задайте ребра гистограмм так, чтобы центры панелей гистограммы выровнялись с точками запроса. Измените свойства осей выровнять оси графиков.

t = tiledlayout(5,5,'TileSpacing','compact');

ax1 = nexttile(2,[4,4]);
imagesc(x,y,pd)
title('Partial Dependence Plot')
colorbar('eastoutside')
ax1.YDir = 'normal';

ax2 = nexttile(22,[1,4]);
dX = diff(ptX(1:2));
edgeX = [ptX-dX/2;ptX(end)+dX];
histogram(Weight,edgeX);
xlabel('Weight')
xlim(ax1.XLim);

ax3 = nexttile(1,[4,1]);
dY = diff(ptY(1:2));
edgeY = [ptY-dY/2;ptY(end)+dY];
histogram(Horsepower,edgeY)
xlabel('Horsepower')
xlim(ax1.YLim);
ax3.XDir = 'reverse';
camroll(-90)

Каждый элемент pd задает цвет для одного пикселя графика изображений. Гистограммы, выровненные с осями изображения, показывают распределение предикторов.

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

свернуть все

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

Объект модели регрессии

МодельПолный или компактный объект модели регрессии
Загрузите агрегацию для ансамбля деревьев решенийTreeBagger, CompactTreeBagger
Ансамбль моделей регрессииRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemble
Гауссова модель регрессии ядра использование случайного расширения функцииRegressionKernel
Гауссова регрессия процессаRegressionGP, CompactRegressionGP
Обобщенная линейная модель смешанного эффектаGeneralizedLinearMixedModel
Обобщенная линейная модельGeneralizedLinearModel, CompactGeneralizedLinearModel
Линейная модель смешанного эффектаLinearMixedModel
Линейная регрессияLinearModel, CompactLinearModel
Линейная регрессия для высоко-размерных данныхRegressionLinear
Нелинейная регрессияNonLinearModel
Дерево регрессииRegressionTree, CompactRegressionTree
Регрессия машины опорных векторовRegressionSVM, CompactRegressionSVM

Объект модели классификации

МодельПолный или компактный объект модели классификации
Классификатор дискриминантного анализаClassificationDiscriminant, CompactClassificationDiscriminant
Модель Multiclass для машин опорных векторов или других классификаторовClassificationECOC, CompactClassificationECOC
Ансамбль учеников для классификацииClassificationEnsemble, CompactClassificationEnsemble, ClassificationBaggedEnsemble
Гауссова модель классификации ядер использование случайного расширения функцииClassificationKernel
k- соседний классификаторClassificationKNN
Линейная модель классификацииClassificationLinear
Мультикласс наивная модель BayesClassificationNaiveBayes, CompactClassificationNaiveBayes
Классификатор машины опорных векторов для и бинарной классификации одного классаClassificationSVM, CompactClassificationSVM
Дерево выбора из двух альтернатив для классификации мультиклассовClassificationTree, CompactClassificationTree
Уволенный ансамбль деревьев решенийTreeBagger, CompactTreeBagger

Если Mdl объект компактной модели, необходимо предоставить входному параметру Data.

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

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

Один переменный предиктор

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

Имя переменного предиктора. Имя должно совпадать с записью в Mdl.PredictorNames.

Два переменных предиктора

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

Имена переменных предикторов. Каждым элементом в массиве является имя переменного предиктора. Имена должны совпадать с записями в Mdl.PredictorNames.

Пример: {'x1','x3'}

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

Класс помечает в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов. Значения и типы данных в Labels должен совпадать с теми из имен классов в ClassNames свойство Mdl (Mdl.ClassNames).

Можно задать одну или несколько меток класса.

Этот аргумент допустим только когда Mdl объект модели классификации.

Пример: {'red','blue'}

Пример: Mdl.ClassNames([1 3]) задает Labels как первые и третьи классы в Mdl.

Типы данных: single | double | logical | char | cell | categorical

Данные о предикторе в виде числовой матрицы или таблицы. Каждая строка Data соответствует одному наблюдению, и каждый столбец соответствует одной переменной.

Data должно быть сопоставимо с данными о предикторе, которые обучили Mdl, сохраненный в любом Mdl.X или Mdl.Variables.

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

  • Если вы обучили Mdl с помощью таблицы (например, Tbl), затем Data должна быть таблица. Все переменные предикторы в Data должен иметь те же имена переменных и типы данных как имена и типы в Tbl. Однако порядок следования столбцов Data не должен соответствовать порядку следования столбцов Tbl.

  • partialDependence не поддерживает разреженную матрицу.

Если Mdl объект компактной модели, необходимо обеспечить Data. Если Mdl полный объект модели, который содержит данные о предикторе, и вы задаете этот аргумент, затем partialDependence не использует данные о предикторе в Mdl и использование Data только.

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: partialDependence(Mdl,Vars,Data,'NumObservationsToSample',100,'UseParallel',true) вычисляет частичные значения зависимости при помощи 100 произведенных наблюдений в Data и выполнение for- итерации цикла параллельно.

Количество наблюдений к выборке в виде разделенной запятой пары, состоящей из 'NumObservationsToSample' и положительное целое число. Значением по умолчанию является количество общих наблюдений в любом Mdl или Data. Если вы задаете значение, больше, чем количество общих наблюдений, то partialDependence использование все наблюдения.

partialDependence демонстрационные наблюдения без замены при помощи datasample функция и использование произведенные наблюдения, чтобы вычислить частичную зависимость.

Пример: 'NumObservationsToSample',100

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

Точки, чтобы вычислить частичную зависимость для числовых предикторов в виде разделенной запятой пары, состоящей из 'QueryPoints' и числовой вектор-столбец, числовая матрица 2D столбца или массив ячеек двух числовых вектор-столбцов.

  • Если вы выбираете один переменный предиктор в Vars, используйте числовой вектор-столбец.

  • Если вы выбираете два переменных предиктора в Vars:

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

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

Значением по умолчанию является числовой вектор-столбец или числовая матрица 2D столбца, в зависимости от количества выбранных переменных предикторов. Каждый столбец содержит 100 равномерно разнесенных точек между минимальными и максимальными значениями произведенных наблюдений для соответствующего переменного предиктора.

Вы не можете изменить 'QueryPoints' для категориальной переменной. partialDependence функционируйте использует все категориальные значения в выбранной переменной.

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

Пример: 'QueryPoints',{pt,[]}

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

Отметьте, чтобы запуститься параллельно в виде разделенной запятой пары, состоящей из 'UseParallel' и true или false. Если вы задаете 'UseParallel' как true, partialDependence функция выполняет for- итерации цикла параллельно при помощи parfor при предсказании ответов или музыки к каждому наблюдению и усреднении их.

Пример: 'UseParallel',true

Типы данных: логический

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

свернуть все

Частичные значения зависимости, возвращенные как numX- numY числовая матрица (для модели регрессии) или numLabels- numX- numY числовой массив (для модели классификации). numX и numY количество точек запроса первых и вторых переменных в Vars, соответственно. numLabels количество меток класса в Labels.

Значение в pd(i,j,k) частичное значение зависимости точки запроса xJ и yK для iметка класса th. xJ jточка запроса th первого переменного предиктора и yK kточка запроса th второго переменного предиктора.

Точки запроса первого переменного предиктора в Vars, возвращенный как числовой или категориальный вектор-столбец.

Если переменный предиктор является числовым, то можно задать точки запроса при помощи 'QueryPoints' аргумент пары "имя-значение".

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

Точки запроса второго переменного предиктора в Vars, возвращенный как числовой или категориальный вектор-столбец.

Если переменный предиктор является числовым, то можно задать точки запроса при помощи 'QueryPoints' аргумент пары "имя-значение".

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

Больше о

свернуть все

Частичная зависимость для моделей регрессии

Частичная зависимость [1] представляет отношения между переменными предикторами и предсказанными ответами в обученной модели регрессии. partialDependence вычисляет частичную зависимость предсказанных ответов на подмножестве переменных предикторов путем маргинализации по другим переменным.

Рассмотрите частичную зависимость от подмножества, XS целого переменного предиктора установил X = {x1, x2, …, xm}. Подмножество XS включает или одну переменную или две переменные: XS = {xS1} или XS = {xS1, xS2}. Позвольте XC быть дополнительным набором XS в X. Предсказанный ответ f (X) зависит от всех переменных в X:

f (X) = f (XS, XC).

Частичная зависимость предсказанных ответов на XS задана ожиданием предсказанных ответов относительно XC:

fS(XS)=EC[f(XS,XC)]=f(XS,XC)pC(XC)dXC,

где pC (XC) является безусловной вероятностью XC, то есть, pC(XC)p(XS,XC)dXS. Предположение, что каждое наблюдение одинаково вероятно, и зависимость между XS и XC и взаимодействиями XS и XC в ответах, не сильно, partialDependence оценивает частичную зависимость при помощи наблюдаемых данных о предикторе можно следующим образом:

fS(XS)1Ni=1Nf(XS,XiC),(1)

где N является количеством наблюдений, и Xi = (XiS, XiC) является i th наблюдение.

Когда вы вызываете partialDependence функция, можно задать обученную модель (f(·)) и выбрать переменные (XS) при помощи входных параметров Mdl и Vars, соответственно. partialDependence вычисляет частичную зависимость в 100 равномерно разнесенных точках XS или точек, что вы задаете при помощи 'QueryPoints' аргумент пары "имя-значение". Можно задать номер (N) наблюдений к выборке из данных данных о предикторе при помощи 'NumObservationsToSample' аргумент пары "имя-значение".

Частичные модели классификации зависимости

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

Взвешенный пересекающийся алгоритм

Взвешенный пересекающийся алгоритм [1] является методом, чтобы оценить частичную зависимость для основанной на дереве модели. Предполагаемая частичная зависимость является взвешенным средним ответа или значений баллов, соответствующих вершинам, которые посещают во время обхода дерева.

Позвольте XS быть подмножеством целого набора переменной X и XC быть дополнительным набором XS в X. Для каждого значения XS, чтобы вычислить частичную зависимость, алгоритм пересекает дерево от корня (начало) узел вниз к листу (терминал) узлы и находит веса вершин. Обход запускается путем присвоения значения веса одного в корневом узле. Если узел разделяет XS, пересечениями алгоритма к соответствующему дочернему узлу в зависимости от значения XS. Вес дочернего узла становится тем же значением как свой родительский узел. Если узел разделяет XC, пересечениями алгоритма к обоим дочерним узлам. Вес каждого дочернего узла становится значением своего родительского узла, умноженного на часть наблюдений, соответствующих каждому дочернему узлу. После завершения обхода дерева алгоритм вычисляет взвешенное среднее при помощи присвоенных весов.

Для ансамбля сложенных в мешок деревьев предполагаемая частичная зависимость является в среднем взвешенными средними по отдельным деревьям.

Алгоритмы

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

Объект модели регрессии

Тип моделиПолный или компактный объект модели регрессииФункция, чтобы предсказать ответы
Загрузите агрегацию для ансамбля деревьев решенийCompactTreeBaggerpredict
Загрузите агрегацию для ансамбля деревьев решенийTreeBaggerpredict
Ансамбль моделей регрессииRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemblepredict
Гауссова модель регрессии ядра использование случайного расширения функцииRegressionKernelpredict
Гауссова регрессия процессаRegressionGP, CompactRegressionGPpredict
Обобщенная линейная модель смешанного эффектаGeneralizedLinearMixedModelpredict
Обобщенная линейная модельGeneralizedLinearModel, CompactGeneralizedLinearModelpredict
Линейная модель смешанного эффектаLinearMixedModelpredict
Линейная регрессияLinearModel, CompactLinearModelpredict
Линейная регрессия для высоко-размерных данныхRegressionLinearpredict
Нелинейная регрессияNonLinearModelpredict
Дерево регрессииRegressionTree, CompactRegressionTreepredict
Регрессия машины опорных векторовRegressionSVM, CompactRegressionSVMpredict

Объект модели классификации

Тип моделиПолный или компактный объект модели классификацииФункция, чтобы предсказать метки и баллы
Классификатор дискриминантного анализаClassificationDiscriminant, CompactClassificationDiscriminantpredict
Модель Multiclass для машин опорных векторов или других классификаторовClassificationECOC, CompactClassificationECOCpredict
Ансамбль учеников для классификацииClassificationEnsemble, CompactClassificationEnsemble, ClassificationBaggedEnsemblepredict
Гауссова модель классификации ядер использование случайного расширения функцииClassificationKernelpredict
k- соседний классификаторClassificationKNNpredict
Линейная модель классификацииClassificationLinearpredict
Мультикласс наивная модель BayesClassificationNaiveBayes, CompactClassificationNaiveBayespredict
Классификатор машины опорных векторов для и бинарной классификации одного классаClassificationSVM, CompactClassificationSVMpredict
Дерево выбора из двух альтернатив для классификации мультиклассовClassificationTree, CompactClassificationTreepredict
Уволенный ансамбль деревьев решенийTreeBagger, CompactTreeBaggerpredict

Альтернативная функциональность

Ссылки

[1] Фридман, Джером. H. “Жадное Приближение функций: Машина Повышения Градиента”. Летопись Статистики 29, № 5 (2001): 1189-1232.

[2] Hastie, Тревор, Роберт Тибширэни и Джером Фридман. Элементы статистического изучения. Нью-Йорк, Нью-Йорк: Спрингер Нью-Йорк, 2009.

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

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте