Вопрос Matlab - Анализ главных компонентов - PullRequest
3 голосов
/ 10 февраля 2011

У меня есть набор из 100 наблюдений, где каждое наблюдение имеет 45 характеристик.И к каждому из этих наблюдений прикреплена метка, которую я хочу предсказать на основе этих 45 характеристик.Таким образом, это входная матрица с размером 45 x 100 и целевая матрица с размером 1 x 100.
Дело в том, что я хочу знать, сколько из этих 45 характеристик имеют отношение к моему набору данных, в основном главноекомпонентный анализ, и я понимаю, что могу сделать это с помощью функции Matlab processpca.

Не могли бы вы сказать мне, как я могу это сделать?Предположим, что входная матрица имеет вид x с 45 строками и 100 столбцами, а y является вектором с 100 элементами.

Ответы [ 5 ]

5 голосов
/ 11 февраля 2011

Предполагая, что вы хотите построить модель вектора 1x100 на основе матрицы 45x100, я не уверен, что PCA будет делать то, что вы думаете. PCA можно использовать для выбора переменных для оценки модели, но это несколько косвенный способ собрать набор характеристик модели. Во всяком случае, я предлагаю прочитать оба:

Анализ основных компонентов

и ...

Запуск PCA в работу

... оба предоставляют код в MATLAB, не требующий никаких наборов инструментов.

1 голос
/ 11 февраля 2011

Вы пробовали COEFF = princomp(x)?

COEFF = princomp(X) выполняет основной Анализ компонентов (PCA) на матрица данных n-by-p X и возвращает коэффициенты главных компонент, также известный как нагрузки. Ряды X соответствуют наблюдениям, столбцы к переменные. COEFF - матрица p-by-p, каждый столбец, содержащий коэффициенты для одного основного компонента. столбцы в порядке убывания дисперсия компонента.

0 голосов
/ 19 февраля 2015

Вы должны найти корреляционную матрицу.в следующем примере matlab находит корреляционную матрицу с функцией 'corr'

http://www.mathworks.com/help/stats/feature-transformation.html#f75476

0 голосов
/ 14 февраля 2011

Ваш вариант использования звучит как комбинация классификации и выбора функций.

Statistics Toolbox предлагает множество хороших возможностей в этой области. Панель инструментов предоставляет доступ к ряду алгоритмов классификации, включая

  • Наивные байесовские классификаторы в мешках
  • Деревья решений (иначе случайные леса)
  • Биномиальная и полиноминальная логистическая регрессия
  • Линейный дискриминантный анализ

У вас также есть различные варианты выбора функций, включая

  • sequentialfs (выбор функции вперед и назад)
  • relifF
  • «treebagger» также поддерживает опции для выбора функций и оценки важности переменных.

Кроме того, вы можете использовать некоторые возможности Optimization Toolbox для написания собственных пользовательских уравнений для оценки важности переменных.

Пару месяцев назад я провел вебинар для MathWorks под названием «Компьютерная статистика: начало работы с классификацией с использованием MTALAB». Вы можете посмотреть вебинар на

http://www.mathworks.com/company/events/webinars/wbnr51468.html?id=51468&p1=772996255&p2=772996273

Код и набор данных для примеров доступны в MATLAB Central

http://www.mathworks.com/matlabcentral/fileexchange/28770

С учетом всего вышесказанного многие люди используют анализ главных компонентов в качестве этапа предварительной обработки перед применением алгоритмов классификации. PCA привыкает много

  1. Когда вам нужно извлечь функции из изображений
  2. Когда вы беспокоитесь о мультиколлинеарности
0 голосов
/ 11 февраля 2011

Из вашего вопроса, который я вывел, вам не нужно делать это в MATLAB, но вы просто хотите проанализировать свой набор данных.По моему мнению, ключом является визуализация зависимостей.

Если вы не обязаны проводить анализ в MATLAB, я бы посоветовал вам попробовать более специализированное программное обеспечение, например WEKA (www.cs.waikato.ac.nz/ml/weka/) или RapidMiner (быстрое-i.com).Оба инструмента могут обеспечить PCA и другие алгоритмы уменьшения размеров + они содержат хорошие инструменты визуализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...