exponenta event banner

облегчение

Ранговая важность предикторов с использованием алгоритма ReliefF или RReloringF

Описание

пример

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

Если y числовой, relieff по умолчанию выполняет анализ RRel.F для регрессии. В противном случае relieff выполняет анализ ReliefF для классификации с использованием 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

Model предиктор является наиболее важным в прогнозировании MPG. 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 (ранг (i, j )/сигма) 2. ранг (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

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

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

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

Wji = Wji 1 Δj (xr, xq) m⋅drq.

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

Wji=Wji−1+pyq1−pyr⋅Δj (xr, xq) m⋅drq.

  • 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,xrj≠xqj.

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

      Δj (xr, xq) = | xrj xqj 'max (Fj) − min (Fj).

  • drq - функция расстояния формы

    drq=d˜rq∑l=1kd˜rl.

    Расстояние зависит от масштабирования

    d˜rq=e− (ранг (r, q )/сигма) 2

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

RReliefF

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

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

  • Wdy - это вес различных значений для ответа y.

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

  • Wdy∧dj - вес наличия различных значений отклика и различных значений для предиктора Fj.

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

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

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

Wdy∧dji=Wdy∧dji−1+Δ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) = | yr − yq 'max (y) − min (y).

  • Функции Δj (xr, xq) и drq аналогичны функциям ReliefF.

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

Wj=Wdy∧djWdy−Wdj−Wdy∧djm−Wdy.

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

Ссылки

[1] Кононенко, И., Э. Симец и М. Робник-Сиконя. (1997). «Преодоление близорукости алгоритмов индуктивного обучения с помощью RELIEFF». Получено из 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