Одномерное ранжирование элементов для регрессии с использованием F-тестов
ранжирует функции (предикторы) с помощью F-тестов. Стол idx = fsrftest(Tbl,ResponseVarName)Tbl содержит переменные предиктора и переменную ответа, и ResponseVarName - имя переменной ответа в Tbl. Функция возвращает idx, который содержит индексы предикторов, упорядоченные по важности предиктора, что означает idx(1) является индексом самого важного предиктора. Вы можете использовать idx чтобы выбрать важные предикторы для проблем регрессии.
указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно указать категориальные предикторы и веса наблюдений.idx = fsrftest(___,Name,Value)
Ранжируйте предикторы в числовой матрице и создайте гистограмму показателей важности предикторов.
Загрузите образцы данных.
load robotarm.mat robotarm набор данных содержит 7168 учебных наблюдений (Xtrain и ytrain) и 1024 контрольных наблюдения (Xtest и ytest) с 32 функциями [1][2].
Ранжируйте предикторы, используя обучающие наблюдения.
[idx,scores] = fsrftest(Xtrain,ytrain);
Значения в scores являются отрицательными журналами p-значений. Если значение p меньше, чем eps(0), то соответствующее значение оценки равно Inf. Перед созданием штрих-графика определите, scores включает Inf значения.
find(isinf(scores))
ans = 1x0 empty double row vector
scores не включает Inf значения. Если scores включает Inf значения, можно заменить Inf большим числовым числом перед созданием штрих-графика в целях визуализации. Дополнительные сведения см. в разделе Предикторы ранга в таблице.
Создайте штрих-график показателей важности предиктора.
bar(scores(idx)) xlabel('Predictor rank') ylabel('Predictor importance score')

Выберите пять наиболее важных предикторов. Найдите столбцы этих предикторов в Xtrain.
idx(1:5)
ans = 1×5
30 24 10 4 5
30-я колонна Xtrain является наиболее важным предиктором ytrain.
Ранжирование предикторов в таблице и создание штрих-графика показателей важности предикторов.
Если данные находятся в таблице и fsrftest ранжирует подмножество переменных в таблице, затем функция индексирует переменные, используя только подмножество. Поэтому рекомендуется переместить предикторы, которые не нужно ранжировать, в конец таблицы. Переместите также переменную отклика и весовой вектор наблюдения. Затем индексы выходных аргументов согласуются с индексами таблицы. Можно перемещать переменные в таблице с помощью movevars функция.
В этом примере используется [3][4] данных Abalone из репозитария машинного обучения UCI [5]. Загрузите данные и сохраните их в текущей папке с именем 'abalone.data'.
Сохраните данные в таблице.
tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false); tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height', ... 'WWeight','SWeight','VWeight','ShWeight','NoShellRings'};
Предварительный просмотр первых нескольких строк таблицы.
head(tbl)
ans=8×9 table
Sex Length Diameter Height WWeight SWeight VWeight ShWeight NoShellRings
_____ ______ ________ ______ _______ _______ _______ ________ ____________
{'M'} 0.455 0.365 0.095 0.514 0.2245 0.101 0.15 15
{'M'} 0.35 0.265 0.09 0.2255 0.0995 0.0485 0.07 7
{'F'} 0.53 0.42 0.135 0.677 0.2565 0.1415 0.21 9
{'M'} 0.44 0.365 0.125 0.516 0.2155 0.114 0.155 10
{'I'} 0.33 0.255 0.08 0.205 0.0895 0.0395 0.055 7
{'I'} 0.425 0.3 0.095 0.3515 0.141 0.0775 0.12 8
{'F'} 0.53 0.415 0.15 0.7775 0.237 0.1415 0.33 20
{'F'} 0.545 0.425 0.125 0.768 0.294 0.1495 0.26 16
Последняя переменная в таблице является переменной ответа.
Ранг предикторов в tbl. Укажите последний столбец NoShellRings в качестве переменной ответа.
[idx,scores] = fsrftest(tbl,'NoShellRings')idx = 1×8
3 4 5 7 8 2 6 1
scores = 1×8
447.6891 736.9619 Inf Inf Inf 604.6692 Inf Inf
Значения в scores являются отрицательными журналами p-значений. Если значение p меньше, чем eps(0), то соответствующее значение оценки равно Inf. Перед созданием штрих-графика определите, scores включает Inf значения.
idxInf = find(isinf(scores))
idxInf = 1×5
3 4 5 7 8
scores включает пять Inf значения.
Создайте штрих-график с показателями важности предиктора. Используйте имена предикторов для меток засечек по оси X.
bar(scores(idx)) xlabel('Predictor rank') ylabel('Predictor importance score') xticklabels(strrep(tbl.Properties.VariableNames(idx),'_','\_')) xtickangle(45)
bar функция не строит полосы для Inf значения. Для Inf значения, планки графика, имеющие ту же длину, что и наибольший конечный балл.
hold on bar(scores(idx(length(idxInf)+1))*ones(length(idxInf),1)) legend('Finite Scores','Inf Scores') hold off

На гистограмме отображаются конечные оценки и оценки Inf с использованием различных цветов.
Tbl - Образцы данныхОбразец данных, указанный как таблица. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, Tbl может содержать дополнительные столбцы для переменной ответа и весов наблюдения.
Переменная ответа может быть категориальным, символьным или строковым массивом, логическим или числовым вектором или массивом ячеек символьных векторов. Если ответная переменная является символьным массивом, то каждый элемент ответной переменной должен соответствовать одной строке массива.
Если Tbl содержит переменную ответа, и вы хотите использовать все оставшиеся переменные в Tbl в качестве предикторов, затем укажите переменную ответа, используя ResponseVarName. Если Tbl также содержит веса наблюдения, затем можно указать веса с помощью Weights.
Если Tbl содержит переменную ответа, и требуется использовать только подмножество остальных переменных в Tbl в качестве предикторов, затем укажите подмножество переменных с помощью formula.
Если Tbl не содержит переменную ответа, затем укажите переменную ответа с помощью Y. Переменная ответа и Tbl должно иметь одинаковое количество строк.
Если fsrftest использует подмножество переменных в Tbl в качестве предикторов функция индексирует предикторы, используя только подмножество. Значения в 'CategoricalPredictors' аргумент пары имя-значение и выходной аргумент idx не подсчитывайте предикторы, которые функция не ранжирует.
fsrftest рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Tbl для переменной ответа отсутствуют значения. fsrftest не использует наблюдения с отсутствующими значениями для переменной ответа.
Типы данных: table
ResponseVarName - Имя переменной ответаTblИмя ответной переменной, указанное как вектор символов или строковый скаляр, содержащий имя переменной в Tbl.
Например, если переменная ответа является столбцом Y из Tbl (Tbl.Y), затем укажите ResponseVarName как 'Y'.
Типы данных: char | string
formula - Пояснительная модель переменной ответа и подмножество переменных предиктораПояснительная модель переменной ответа и подмножество переменных предиктора, указанное как вектор символов или строковый скаляр в форме 'Y ~ x1 + x2 + x3'. В этой форме Y представляет переменную ответа, и x1, x2, и x3 представляют переменные предиктора.
Задание подмножества переменных в Tbl в качестве предикторов используйте формулу. Если задать формулу, то fsrftest не ранжирует переменные в Tbl которые не отображаются в formula.
Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB ®. Имена переменных можно проверить вTbl с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.
Типы данных: char | string
Y - Переменная ответаПеременная ответа, заданная как числовой, категориальный или логический вектор, символьный или строковый массив или массив ячеек символьных векторов. Каждая строка Y представляет метки соответствующей строки X.
fsrftest рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Y для отсутствующих значений. fsrftest не использует наблюдения с отсутствующими значениями для Y.
Типы данных: single | double | categorical | logical | char | string | cell
X - Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной.
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'NumBins',20,'UseMissing',true устанавливает количество ячеек как 20 и определяет использование отсутствующих значений в предикторах для ранжирования.'CategoricalPredictors' - Список категориальных предикторов'all'Список категориальных предикторов, указанных как одно из значений в этой таблице.
| Стоимость | Описание |
|---|---|
| Вектор положительных целых чисел |
Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до Если |
| Логический вектор |
A |
| Символьная матрица | Каждая строка матрицы является именем предикторной переменной. Имена должны совпадать с именами в Tbl. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину. |
| Строковый массив или массив ячеек символьных векторов | Каждый элемент массива является именем переменной предиктора. Имена должны совпадать с именами в Tbl. |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl), fsrftest предполагает, что переменная категорична, если она является логическим вектором, неупорядоченным категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Если данные предиктора являются матрицей (X), fsrftest предполагает, что все предикторы непрерывны. Чтобы определить любые другие предикторы как категориальные предикторы, укажите их с помощью 'CategoricalPredictors' аргумент «имя-значение».
Пример: 'CategoricalPredictors','all'
Типы данных: single | double | logical | char | string | cell
'NumBins' - Количество бункеров для непрерывных предикторов биннингаКоличество ячеек для непрерывных предикторов, указанных как пара, разделенная запятыми, состоящая из 'NumBins' и положительный целочисленный скаляр.
Пример: 'NumBins',50
Типы данных: single | double
'UseMissing' - Индикатор использования или отбрасывания отсутствующих значений в предикторахfalse (по умолчанию) | trueИндикатор того, следует ли использовать или отбрасывать отсутствующие значения в предикторах, указанный как пара, разделенная запятыми, состоящая из 'UseMissing' и либо true для использования или false для отбрасывания отсутствующих значений в предикторах для ранжирования.
fsrftest рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения должны быть отсутствующими значениями.
При указании 'UseMissing',true, то fsrftest использует отсутствующие значения для ранжирования. Для категориальной переменной: fsrftest обрабатывает отсутствующие значения как дополнительную категорию. Для непрерывной переменной: fsrftest места NaN значения в отдельном бункере для биннинга.
При указании 'UseMissing',false, то fsrftest не использует отсутствующие значения для ранжирования. Поскольку fsrftest вычисляет оценки важности индивидуально для каждого предиктора, функция не отбрасывает всю строку, когда значения в строке частично отсутствуют. Для каждой переменной, fsrftest использует все значения, которые не отсутствуют.
Пример: 'UseMissing',true
Типы данных: logical
'Weights' - Наблюдательные весаones(size(X,1),1) (по умолчанию) | вектор скалярных значений | имя переменной в TblВеса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и вектор скалярных значений или имя переменной в Tbl. Функция взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк в X или Tbl.
Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если весовой вектор является столбцом W из Tbl (Tbl.W), затем укажите 'Weights','W'.
fsrftest нормализует веса до единицы.
Типы данных: single | double | char | string
idx - Индексы предикторов, упорядоченные по важности предикторовИндексы предикторов в X или Tbl упорядоченный по важности предиктора, возвращаемый как числовой вектор 1 на r, где r - число ранжированных предикторов.
Если fsrftest использует подмножество переменных в Tbl в качестве предикторов функция индексирует предикторы, используя только подмножество. Например, предположим Tbl включает 10 столбцов и указывает последние пять столбцов Tbl в качестве переменных предиктора с помощью formula. Если idx(3) является 5, тогда третьим по значимости предиктором является 10-й столбец в Tbl, который является пятым предиктором в подмножестве.
scores - Показатели предиктораОценки предиктора, возвращенные как числовой вектор 1 на r, где r - количество ранжированных предикторов.
Большое значение оценки указывает, что соответствующий предиктор важен.
Если вы используете X чтобы указать предикторы или использовать все переменные в Tbl в качестве предикторов, затем значения в scores имеют тот же порядок, что и предикторы в X или Tbl.
При указании подмножества переменных в Tbl в качестве предикторов, затем значения в scores имеют тот же порядок, что и подмножество.
Например, предположим Tbl включает 10 столбцов и указывает последние пять столбцов Tbl в качестве переменных предиктора с помощью formula. Затем, score(3) содержит значение балла 8-го столбца в Tbl, который является третьим предиктором в подмножестве.
fsrftest исследует важность каждого предиктора индивидуально, используя F-тест. Каждый F-тест проверяет гипотезу о том, что значения ответа, сгруппированные по значениям переменных предиктора, взяты из популяций с одинаковым средним значением против альтернативной гипотезы о том, что средства популяции не все одинаковы. Небольшое p-значение тестовой статистики указывает, что соответствующий предиктор важен.
Продукция scores является -log (p). Следовательно, большое значение оценки указывает, что соответствующий предиктор важен. Если значение p меньше, чемeps(0), то выходной сигнал равен Inf.
fsrftest рассматривает непрерывную переменную после объединения или дискретизации переменной. Можно указать количество ячеек с помощью 'NumBins' аргумент пары имя-значение.
[1] Расмуссен, К. Э., Р. М. Нил, Г. Э. Хинтон, Д. ван Кэмп, М. Ревоу, З. Гахрамани, Р. Кюста и Р. Тибширани. Руководство DELVE, 1996.
[2] Университет Торонто, факультет компьютерных наук. Наборы данных Delve.
[3] Нэш, У. Джей, Т. Л. Селлерс, С. Р. Толбот, А. Дж. Коуторн и У. Б. Форд. "Популяционная биология Абалоне (вид Haliotis) в Тасмании. И. Блэклип Абалоне (Х. рубра) с Северного побережья и островов Бассова пролива ". Отдел морского рыболовства, Технический доклад № 48, 1994 год.
[4] Во, С. «Расширение и сравнительный анализ каскадной корреляции: расширение каскадно-корреляционной архитектуры и сравнительный анализ искусственных нейронных сетей, находящихся под контролем Feed-Forward». Факультет компьютерных наук Тасманийского университета, 1995 год.
[5] Лихман, M. UCI Machine Learning Repository. Ирвин, Калифорния, Калифорнийский университет, Школа информации и компьютерных наук, 2013 год. http://archive.ics.uci.edu/ml.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.