relieff

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

Описание

пример

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

Если y является числовым, relieff выполняет анализ RReliefF для регрессии по умолчанию. В противном случае, 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')

Выберите лучшие 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(rank(i,j)/\sigma2. ранг (i, j) является положением j th наблюдение среди самых близких соседей i th наблюдение, отсортированное по расстоянию. Значением по умолчанию является 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=Wji1Δj(xr,xq)mdrq.

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

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

  • Wji является весом предиктора Fj в i th шаг итерации.

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

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

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

    • Для дискретного Fj,

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

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

      Δj(xr,xq)=|xrjxqj|max(Fj)min(Fj).

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

    drq=d˜rql=1kd˜rl.

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

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

    где ранг (r, q) является положением q th наблюдение среди самых близких соседей r th наблюдение, отсортированное по расстоянию. 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)min(y).

  • Δj(xr,xq) и функции drq эквивалентны для ReliefF.

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

Wj=WdydjWdyWdjWdydjmWdy.

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

Ссылки

[1] Кононенко, я., Э. Симек и М. Робник-Сиконджа. (1997). “Преодолевая близорукость индуктивных алгоритмов обучения с РЕЛИЕВЫМ”. Полученный из CiteSeerX: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.4740

[2] Robnik-Sikonja, M. и я. Кононенко. (1997). “Адаптация Облегчения для оценки атрибута регрессию”. Полученный из CiteSeerX: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.8381

[3] Robnik-Sikonja, M. и я. Кононенко. (2003). “Теоретический и эмпирический анализ ReliefF и RReliefF”. Машинное обучение, 53, 23–69.

Представленный в R2010b