plotPartialDependence

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

Описание

пример

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. Можно также изменить подписи по осям при помощи xlabel и ylabel функции.

Обучите Гауссову модель регрессии процесса использование сгенерированных выборочных данных, где переменная отклика включает взаимодействия между переменными предикторами. Затем создайте графики 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');

Сравните важность переменных предикторов при помощи plotPartialDependence и predictorImportance функции. 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 имя аргумента и 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