relieff

Оцените важность предикторов, использующих алгоритм ReliefF или RReliefF

Описание

пример

[idx,weights] = relieff(X,y,k) ранжирует предикторы с помощью алгоритма ReliefF или ReliefF с k ближайшие соседи. Матрица входа X содержит переменные предиктора и вектор y содержит вектор отклика. Функция возвращается idx, который содержит индексы наиболее важных предикторов, и weights, который содержит веса предикторов.

Если y является числовым, relieff выполняет анализ RReliefF для регрессии по умолчанию. В противном случае, relieff выполняет анализ Relief для классификации с помощью k ближайшие соседи по классам. Для получения дополнительной информации о ReliefF и RReliefF, см. Алгоритмы.

пример

[idx,weights] = relieff(X,y,k,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение". Для примера, 'updates',10 устанавливает количество наблюдений, случайным образом выбранных для вычисления весов, равным 10.

Примеры

свернуть все

Загрузите выборочные данные.

load fisheriris

Найдите важные предикторы, используя 10 ближайших соседей.

[idx,weights] = relieff(meas,species,10)
idx = 1×4

     4     3     1     2

weights = 1×4

    0.1399    0.1226    0.3590    0.3754

idx показывает номера предикторов, перечисленные в соответствии с их рейтингом. Четвертый предиктор является самым важным, а второй предиктор - наименее важным. weights задает значения веса в том же порядке, что и предикторы. Первый предиктор имеет вес 0,1399, а четвертый предиктор имеет вес 0,3754.

Загрузите выборочные данные.

load ionosphere

Оцените предикторы на основе важности, используя 10 ближайших соседей.

[idx,weights] = relieff(X,Y,10);

Создайте столбиковую диаграмму весов предикторной важности.

bar(weights(idx))
xlabel('Predictor rank')
ylabel('Predictor importance weight')

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

Выберите топ-5 самых важных предикторов. Найдите столбцы этих предикторов в X.

idx(1:5)
ans = 1×5

    24     3     8     5    14

24-ый столбец X является важнейшим предиктором Y.

Оцените категориальные предикторы, используя relieff.

Загрузите выборочные данные.

load carbig

Преобразуйте категориальные переменные предиктора Mfg, Model, и Origin к числовым значениям и объединить их в матрицу входа. Задайте переменную отклика MPG.

X = [grp2idx(Mfg) grp2idx(Model) grp2idx(Origin)];
y = MPG;

Найдите ранги и веса предиктора переменных используя 10 ближайших соседей и обрабатывая данные в X как категориальный.

[idx,weights] = relieff(X,y,10,'categoricalx','on')
idx = 1×3

     2     3     1

weights = 1×3

   -0.0019    0.0501    0.0114

The Model предиктор является самым важным в прогнозировании MPG. The Mfg переменная имеет отрицательный вес, что указывает на то, что она не является хорошим предиктором MPG.

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

свернуть все

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

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

Данные отклика, заданные как числовой вектор, категориальный вектор, логический вектор, символьный массив, строковые массивы или массив ячеек векторов символов.

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

Количество ближайших соседей, заданное как положительный целочисленный скаляр.

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

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

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

Пример: relieff(X,y,5,'method','classification','categoricalx','on') задает 5 ближайших соседей и рассматривает переменную отклика и данные предиктора как категориальные.

Метод для вычисления весов, заданный как разделенная запятыми пара, состоящая из 'method' и любой из них 'regression' или 'classification'. Если y является числовым, 'regression' является методом по умолчанию. В противном случае 'classification' является значением по умолчанию.

Пример: 'method','classification'

Предыдущие вероятности для каждого класса, заданные как разделенная разделенными запятой парами, состоящая из 'prior' и значение в этой таблице.

ЗначениеОписание
'empirical'Вероятности классов определяются из частот классов в y.
'uniform'Все вероятности классов равны.
числовой векторДля каждого отдельного имени группы существует одно значение.
структура

Структурный S с двумя полями:

  • S.group содержит имена групп в виде переменной того же типа, что и y.

  • S.prob содержит вектор соответствующих вероятностей.

Пример: 'prior','uniform'

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

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

Пример: 'updates',25

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

Флаг категориальных предикторов, заданный как разделенная разделенными запятой парами, состоящая из 'categoricalx' и любой из них 'on' или 'off'. Если вы задаете 'on', затем relieff обрабатывает все предикторы в X как категориальный. В противном случае он обрабатывает все предикторы в X в виде числа. Вы не можете смешивать числовые и категориальные предикторы.

Пример: 'categoricalx','on'

Масштабный коэффициент расстояния, заданный как разделенная разделенными запятой парами, состоящая из 'sigma' и числовая положительная скалярная величина. Для i наблюдений влияние на вес предиктора от его ближайшего соседнего j умножается на e(rank(i,j)/sigma2. Ранг (i, j) - положение j-го наблюдения среди ближайших соседей i-го наблюдения, отсортированное по расстоянию. Значение по умолчанию является Inf для классификации (все ближайшие соседи имеют одинаковое влияние) и 50 для регрессии.

Пример: 'sigma',20

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

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

свернуть все

Индексы предикторов в X упорядоченный по значимости предиктора, возвращенный как числовой вектор. Для примера, если idx(3) является 5, тогда третьим по значимости предиктором является пятый столбец в X.

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

Веса предикторов, возвращенные как числовой вектор. Значения в weights имеют тот же порядок, что и предикторы в X. weights область значений от –1 на 1, с большими положительными весами, присвоенными важным предикторам.

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

Совет

  • Ранги и веса предикторов обычно зависят от k. Если вы задаете k к 1, тогда оценки могут быть ненадежными для зашумленных данных. Если вы задаете k к значению, сопоставимому с количеством наблюдений (строк) в X, relieff может не найти важные предикторы. Вы можете начать с k = 10 и исследовать стабильность и надежность relieff рангов и веса для различных значений k.

  • relieff удаляет наблюдения с помощью NaN значения.

Алгоритмы

свернуть все

ReliefF

Relief находит веса предикторов в случае, где y - многоклассовая категориальная переменная. Алгоритм наказывает предикторы, которые дают различные значения соседям одного и того же класса, и предикторы вознаграждений, которые дают различные значения соседям разных классов.

Relief сначала устанавливает все веса предикторов Wj равными 0. Затем алгоритм итерационно выбирает xr случайного наблюдения, находит k - ближайшие наблюдения, которые будут xr для каждого класса, и обновляет, для каждого ближайшего соседнего xq, все веса для предикторов Fj следующим образом:

Если xr и xq находятся в одном классе,

Wji=Wji1Δj(xr,xq)mdrq.

Если xr и xq находятся в разных классах,

Wji=Wji1+pyq1pyrΔj(xr,xq)mdrq.

  • Wji - вес предиктора, Fj на i-м шаге итерации.

  • pyr - априорная вероятность класса, к которому принадлежит xr, а pyq - априорная вероятность класса, к которому xq принадлежит.

  • m - количество итераций, заданное 'updates'.

  • Δj(xr,xq) - различие в значении предиктора Fj между наблюдениями xr и xq. Позвольте xrj обозначить значение j-го предиктора для xr наблюдений и xqj обозначить значение j-го предиктора для xq наблюдений.

    • Для дискретных Fj,

      Δj(xr,xq)={0,xrj=xqj1,xrjxqj.

    • Для непрерывных Fj,

      Δj(xr,xq)=|xrjxqj|max(Fj)минута(Fj).

  • drq является функцией расстояния от вида

    drq=d˜rql=1kd˜rl.

    Расстояние подлежит масштабированию

    d˜rq=e(ранг(r,q)/sigma2

    где ранг (r, q) - положение q-го наблюдения среди ближайших соседей r-го наблюдения, отсортированное по расстоянию. k - количество ближайших соседей, заданное k. Изменить масштабирование можно путем определения 'sigma'.

RReliefF

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

Учитывая два ближайших соседа, примите следующее:

  • Wdy - вес, имеющий различные значения для y отклика.

  • Wdj является весом, имеющим различные значения для Fj предиктора.

  • Wdydj - вес, имеющий различные значения отклика и различные значения для Fj предиктора.

RReliefF сначала устанавливает веса Wdy, Wdj, Wdydjи Wj равным 0. Затем алгоритм итерационно выбирает xr случайного наблюдения, находит k - ближайшие наблюдения, чтобы xr, и обновляет, для каждого ближайшего соседнего xq, все промежуточные веса следующим образом:

Wdyi=Wdyi1+Δy(xr,xq)drq.

Wdji=Wdji1+Δj(xr,xq)drq.

Wdydji=Wdydji1+Δy(xr,xq)Δj(xr,xq)drq.

  • i и i суперкрипты -1 обозначают число шагов итерации. m - количество итераций, заданное 'updates'.

  • Δy(xr,xq) - различие в значении непрерывного y отклика между наблюдениями xr и xq. Позвольте yr обозначить значение отклика для xr наблюдения и позвольте yq обозначить значение отклика для xq наблюдения.

    Δy(xr,xq)=|yryq|max(y)минута(y).

  • Δj(xr,xq) и drq функции те же, что и для Relief.

RReliefF вычисляет веса предикторов Wj после полного обновления всех промежуточных весов.

Wj=WdydjWdyWdjWdydjmWdy.

Для получения дополнительной информации см. раздел [2].

Ссылки

[1] Кононенко, И., Э. Симек, и М. Робник-Сиконья. (1997). Преодоление близорукости алгоритмов индуктивного обучения с помощью RELEFF. Получено из CiteSeerX: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.4740

[2] Робник-Сиконья, М., и И. Кононенко. (1997). «Адаптация Рельефа для оценки атрибутов в регрессии». Получено из CiteSeerX: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.8381

[3] Робник-Сиконья, М., и И. Кононенко. (2003). Теоретический и эмпирический анализ ReliefF и RReliefF. Машинное обучение, 53, 23-69.

Введенный в R2010b