plotPartialDependence

Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)

Синтаксис

plotPartialDependence(Mdl,Vars)
plotPartialDependence(Mdl,Vars,X)
plotPartialDependence(___,Name,Value)
ax = plotPartialDependence(___)

Описание

пример

plotPartialDependence(Mdl,Vars) создает PDP между функциями, перечисленными в Vars и ответах, предсказанных при помощи данных о предикторе и обученной модели регрессии в Mdl.

пример

plotPartialDependence(Mdl,Vars,X) создает PDP при помощи новых данных о предикторе в X.

пример

plotPartialDependence(___,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение" в дополнение к любому из аргументов в предыдущих синтаксисах. Например, если вы задаете 'Conditional','absolute', функция plotPartialDependence создает фигуру включая PDP, график рассеивания выбранной функции и предсказанных ответов и графика ICE для каждого наблюдения.

пример

ax = plotPartialDependence(___) возвращает оси графика с помощью любой из комбинаций входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

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

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

load carsmall

Задайте Weight, Cylinders и Horsepower как переменные прогноза (X) и MPG как переменная отклика (Y).

X = [Weight,Cylinders,Horsepower];
Y = MPG;

Создайте дерево регрессии использование X и Y.

Mdl = fitrtree(X,Y);

Просмотрите графический дисплей обученного дерева регрессии.

view(Mdl,'Mode','graph')

Создайте PDP первой переменной прогноза, Weight.

plotPartialDependence(Mdl,1)

Синяя строка представляет усредненные частичные отношения между Weight (маркированный как x1) и MPG (маркированный как Y) в обученном дереве регрессии Mdl.

Средство просмотра дерева регрессии показывает, что первое решение состоит в том, меньше ли x1, чем 3 085,5. PDP также показывает большое изменение около x1 = 3085.5. Древовидное средство просмотра визуализирует каждое решение в каждом узле на основе переменных прогноза. Можно найти несколько разделений узлов на основе значений x1, но не легко выяснить зависимость Y на x1. Однако графики PDP составили в среднем предсказанные ответы против x1, таким образом, можно ясно видеть частичную зависимость Y на x1.

Маркирует x1, и Y значения по умолчанию имен предиктора и имени ответа. Можно изменить эти имена путем определения аргументов пары "имя-значение" 'PredictorNames' и 'ResponseName', когда вы обучаете Mdl с помощью fitrtree. Можно также изменить подписи по осям при помощи функций ylabel и xlabel.

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

Сгенерируйте демонстрационные данные о предикторе x1 и x2.

rng('default') % For reproducibility
n = 200;
x1 = rand(n,1)*2-1;
x2 = rand(n,1)*2-1;

Сгенерируйте значения ответа, которые включают взаимодействия между x1 и x2.

Y = x1-2*x1.*(x2>0)+0.1*rand(n,1);

Создайте Гауссову модель регрессии процесса использование [x1 x2] и Y.

Mdl = fitrgp([x1 x2],Y);

Создайте фигуру включая PDP (красная линия) для первого предиктора x1, график рассеивания (черные круговые маркеры) x1 и предсказанных ответов и набора графиков ICE (серые строки) путем определения 'Conditional' как 'centered'.

plotPartialDependence(Mdl,1,'Conditional','centered')

Когда 'Conditional' является 'centered', графики смещений plotPartialDependence так, чтобы все графики начали с нуля, который полезен в исследовании совокупного эффекта выбранной функции.

PDP находит усредненные отношения, таким образом, он не показывает скрытые зависимости особенно, когда ответы включают взаимодействия между функциями. Однако графики ICE ясно показывают две различных зависимости ответов на x1.

Обучите ансамбль регрессии, использующий набор данных carsmall, и создайте график PDP и графики ICE для каждой переменной прогноза с помощью нового набора данных, carbig. Затем сравните фигуры, чтобы анализировать важность переменных прогноза. Кроме того, сравните результаты с оценками важности предиктора, возвращенной функцией predictorImportance.

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

load carsmall

Задайте Weight, Cylinders, Horsepower и Model_Year как переменные прогноза (X) и MPG как переменная отклика (Y).

X = [Weight,Cylinders,Horsepower,Model_Year];
Y = MPG;

Обучите ансамбль регрессии, использующий X и Y.

Mdl = fitrensemble(X,Y, ...
    'PredictorNames',{'Weight','Cylinders','Horsepower','Model Year'}, ...
    'ResponseName','MPG');

Сравните важность переменных прогноза при помощи функций predictorImportance и plotPartialDependence. Функция plotPartialDependence визуализирует отношения между выбранным предиктором и предсказанными ответами. predictorImportance обобщает важность предиктора с одним значением.

Создайте фигуру включая график PDP (красная линия) и графики ICE (серые строки) для каждого предиктора при помощи plotPartialDependence и определения 'Conditional','absolute'. Каждая фигура также включает график рассеивания (черные круговые маркеры) выбранного предиктора и предсказанных ответов. Кроме того, загрузите набор данных carbig и используйте его в качестве новых данных о предикторе, Xnew. Когда вы обеспечиваете Xnew, функция plotPartialDependence использует Xnew вместо данных о предикторе в Mdl.

load carbig
Xnew = [Weight,Cylinders,Horsepower,Model_Year];

f = figure;
f.Position = [100 100 1.75*f.Position(3:4)]; % Enlarge figure for visibility.
for i = 1 : 4
    subplot(2,2,i)
    plotPartialDependence(Mdl,i,Xnew,'Conditional','absolute')
end

Вычислите оценки важности предиктора при помощи predictorImportance. Эта функция изменения сумм в среднеквадратической ошибке (MSE) из-за разделений на каждом предикторе, и затем делит сумму на количество узлов ответвления.

imp = predictorImportance(Mdl);
figure;
bar(imp);
title('Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
ax = gca;
ax.XTickLabel = Mdl.PredictorNames;

Переменная Weight оказывает большую часть влияния на MPG согласно важности предиктора. PDP Weight также показывает, что MPG имеет высокую частичную зависимость от Weight. Переменная Cylinders оказывает наименьшее количество влияния на MPG согласно важности предиктора. PDP Cylinders также показывает, что MPG не изменяется очень в зависимости от Cylinders.

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

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

load carsmall

Задайте Weight, Cylinders и Horsepower как переменные прогноза (Tbl).

Tbl = table(Weight,Cylinders,Horsepower);

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

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

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

pt1 = linspace(min(Weight),max(Weight),50)';
pt2 = linspace(min(Horsepower),max(Horsepower),50)';
ax = plotPartialDependence(Mdl,{'Weight','Horsepower'},'QueryPoints',[pt1 pt2]);
view(140,30) % Modify the viewing angle

PDP показывает эффект взаимодействия между Weight и Horsepower.

Извлеките предполагаемую частичную зависимость MPG на Weight и Horsepower. XData, YData и значения ZData ax.Children являются значениями оси X (первые выбранные значения предиктора), значения оси Y (вторые выбранные значения предиктора) и значения оси z (соответствующие частичные значения зависимости), соответственно.

xval = ax.Children.XData;
yval = ax.Children.YData;
zval = ax.Children.ZData;

Если вы задаете 'Conditional' как 'absolute', plotPartialDependence создает фигуру включая PDP, график рассеивания и набор графиков ICE. ax.Children(1) и ax.Children(2) соответствуют PDP и графику рассеивания, соответственно. Остающиеся элементы ax.Children соответствуют графикам ICE. XData и значения YData ax.Children(i) являются значениями оси X (выбранные значения предиктора) и значения оси Y (соответствующие частичные значения зависимости), соответственно.

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

свернуть все

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

Обученный тип моделиОбъект модели регрессииВозвращенный
Загрузите агрегацию для ансамбля деревьев решенийTreeBagger, CompactTreeBaggerTreeBagger, compact
Ансамбль моделей регрессииRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemblefitrensemble, compact
Гауссова регрессия процессаRegressionGP, CompactRegressionGPfitrgp, compact
Обобщенная линейная модель смешанного эффектаGeneralizedLinearMixedModelfitglme
Обобщенная линейная модельGeneralizedLinearModel, CompactGeneralizedLinearModelfitglm, stepwiseglm, compact
Линейная модель смешанного эффектаLinearMixedModelfitlme, fitlmematrix
Линейная регрессияLinearModel, CompactLinearModelfitlm, stepwiselm, compact
Линейная регрессия для высоко-размерных данныхRegressionLinearfitrlinear
Нелинейная регрессияNonLinearModelfitnlm
Дерево регрессииRegressionTree, CompactRegressionTreefitrtree, compact
Поддержите векторную регрессию машиныRegressionSVM, CompactRegressionSVMfitrsvm, compact

Если Mdl является компактным объектом модели регрессии, необходимо обеспечить X.

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

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

Одна функция

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

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

Две функции

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

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

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

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

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

  • Если Mdl является полным объектом модели регрессии, plotPartialDependence использует данные о предикторе в Mdl. Если вы обеспечиваете X, то plotPartialDependence не использует данные о предикторе в Mdl и использует X только.

  • Если Mdl является компактным объектом модели регрессии, необходимо обеспечить X.

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

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

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

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

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

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

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

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

Постройте тип, заданный как пара, разделенная запятой, состоящая из 'Conditional' и 'none', 'absolute' или 'centered'.

ЗначениеОписание
'none'

plotPartialDependence создает PDP.

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

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

  • Если вы выбираете две функции в Vars, plotPartialDependence создает объемную поверхностную диаграмму.

'absolute'

plotPartialDependence создает фигуру включая следующие три типа графиков:

  • PDP с твердой красной линией

  • График поля точек выбранной функции и предсказанных ответов с черными круговыми маркерами

  • График ICE для каждого наблюдения с чисто серой строкой

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

'centered'

plotPartialDependence создает фигуру включая те же три типа графиков как 'absolute'. plotPartialDependence смещает графики так, чтобы все графики начали с нуля.

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

Для получения дополнительной информации см. Частичный График Зависимости и Отдельные Условные Графики Ожидания.

Пример: 'Conditional','absolute'

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

Демонстрационные наблюдения plotPartialDependence без замены при помощи функционального datasample и использования выбранные наблюдения, чтобы вычислить частичную зависимость. Если вы задаете 'Conditional' или как 'absolute' или как 'centered', plotPartialDependence создает фигуру включая график ICE для каждого выбранного наблюдения.

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

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

Оси, в которых можно построить, заданный как пара, разделенная запятой, состоящая из 'ParentAxisHandle' и объекта осей. Если вы не задаете оси и если текущая система координат является Декартовой, то plotPartialDependence использует текущую систему координат (gca). Если оси не существуют, графики plotPartialDependence в новой фигуре.

Пример: 'ParentAxisHandle',ax

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

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

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

  • Если вы выбираете две функции в Vars:

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

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

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

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

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

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

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

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

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

свернуть все

Оси графика, возвращенного как объект осей. Для получения дополнительной информации о том, как изменить внешний вид осей и данных об извлечении из графиков, см. Внешний вид осей (MATLAB) и Извлечение Частичные Оценки Зависимости из Графиков.

Больше о

свернуть все

Частичный график зависимости

Частичный график зависимости [1] (PDP) визуализирует отношения между функциями и предсказанными ответами в обученной модели регрессии. plotPartialDependence построил или график или объемную поверхностную диаграмму предсказанных ответов против одной функции или пары функций, соответственно, путем маргинализации по другим переменным.

Считайте PDP для подмножества 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 в ответах, не сильно, plotPartialDependence оценивает частичную зависимость при помощи наблюдаемых данных о предикторе можно следующим образом:

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

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

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

Отдельные условные графики ожидания

График отдельного условного ожидания (ICE) [2], как расширение PDP, визуализирует отношение между функцией и предсказанными ответами для каждого наблюдения. В то время как PDP визуализирует усредненное отношение между функциями и предсказанными ответами, набор графиков ICE дезагрегирует усредненную информацию и визуализирует отдельную зависимость для каждого наблюдения.

plotPartialDependence создает график ICE для каждого наблюдения. Набор графиков ICE полезен, чтобы исследовать неоднородности частичной зависимости, происходящей из различных наблюдений. plotPartialDependence может также создать графики ICE с любыми данными о предикторе, обеспеченными через входной параметр X. Можно использовать эту функцию, чтобы исследовать предсказанный пробел ответа.

Считайте график ICE для выбранной функции xS с данным наблюдением XiC, где XS = {xS}, XC является дополнительным набором XS в целом наборе функций X, и Xi = (XiS, XiC) является i th наблюдение. График ICE соответствует слагаемому суммирования в уравнении 1:

fSi(XS)=f(XS,XiC).

Графики plotPartialDependence fSi(XS) для каждого наблюдения i, когда вы задаете 'Conditional' как 'absolute'. Если вы задаете 'Conditional' как 'centered', plotPartialDependence строит все графики после удаления эффектов уровня из-за различных наблюдений:

fSi,в центре(XS)=f(XS,XiC)f(min(XS),XiC).

Это вычитание гарантирует, что каждый график начинает с нуля, так, чтобы можно было исследовать совокупный эффект XS и взаимодействий между XS и XC.

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

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

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

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

Алгоритмы

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

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

Ссылки

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

[2] Голдстайн, A., А. Кэпелнер, Дж. Блейч и Э. Питкин. “Посмотрев в черном квадрате: Визуализация статистического изучения с графиками отдельного условного ожидания”. Журнал Вычислительной и Графической Статистики. Издание 24, № 1, 2015, стр 44-65.

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

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

Введенный в R2017b