облегчение

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

Синтаксис

[ranks,weights] = relieff(X,y,k)
[ranks,weights] = relieff(X,y,k,Name,Value)

Описание

пример

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

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

пример

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

Примеры

свернуть все

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

load fisheriris

Найдите важные предикторы с помощью 10 самых близких соседей.

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

     4     3     1     2

weights = 1×4

    0.1399    0.1226    0.3590    0.3754

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

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

load ionosphere

Оцените предикторы на основе важности с помощью 10 самых близких соседей.

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

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

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

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

ranks(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 как категориальные.

[ranks,weights] = relieff(X,y,10,'categoricalx','on')
ranks = 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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)/\sigma2. ранг (i, j) является положением j th наблюдение среди самых близких соседей i th наблюдение, отсортированное по расстоянию. Значением по умолчанию является Inf для классификации (все самые близкие соседи имеют то же влияние), и 50 для регрессии.

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

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

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

свернуть все

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

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

Веса предикторов, возвращенных как числовой вектор. диапазон 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