#machine-learning #neural-network #svm #dimensionality-reduction
#машинное обучение #нейронная сеть #svm #уменьшение размерности
Вопрос:
Я ищу несколько предложений по проблеме, с которой я в настоящее время сталкиваюсь.
У меня есть набор датчиков, скажем, S1-S100, который запускается при выполнении некоторого события E1-E20. Предположим, что обычно E1 запускает S1-S20, E2 запускает S15-S30, E3 запускает S20-s50 и т.д. И E1-E20 являются полностью независимыми событиями. Иногда событие E может вызвать срабатывание любого другого не связанного датчика.
Я использую ансамбль из 20 svm для анализа каждого события отдельно. Моими функциями являются частота датчиков F1-F100, количество срабатываний каждого датчика и несколько других связанных функций.
Я ищу метод, который может уменьшить размерность функции датчика (F1-F100) / или некоторые методы, которые охватывают весь датчик и также уменьшают размерность (я искал некоторую концепцию теории информации в течение последних нескольких дней). Я не думаю, что усреднение, максимизация — хорошая идея, поскольку я рискую потерять информацию (это не дало мне хорошего результата).
Кто-нибудь, пожалуйста, может подсказать, чего мне здесь не хватает? Документ или какая-нибудь начальная идея…
Заранее спасибо.
Ответ №1:
Возможно, вам захочется начать с линейного дискриминантного анализа, это довольно простой алгоритм, который более или менее выполняет то, что вы ищете: уменьшение размерности и / или классификацию. Предполагается, что каждый класс распределен по Гауссу разными способами, но с одинаковой ковариацией. Вероятно, хорошей идеей будет заранее отобразить некоторые данные, чтобы убедиться в обоснованности этого предположения. Я уже использовал реализацию LDA в R раньше. Однако в нем было около дюжины функций. Я не уверен, как это будет масштабироваться до 100 размеров.
Это также может помочь узнать, почему вы хотите уменьшить размерность данных. SVM обычно используются с сотнями тысяч (разреженных) функций, так в чем же сложность, с которой вы сталкиваетесь?
Комментарии:
1. спасибо за ответ.. я попробую LDA .. я хочу уменьшить размер, потому что в большинстве случаев, если E1 запускает S1-S15, значение для остальной частоты датчика F16-F100 будет равно нулю, иногда другие датчики, скажем, S45, S50, также могут запускаться несколько раз… в основном я хочу исключить все эти нули из вектора объектов
2. Предупреждаю, LDA также является скрытым распределением Дирихле, родственным, но совсем другим алгоритмом.
Ответ №2:
Это отличная статья, связанная с вашим вопросом: http://en.wikipedia.org/wiki/Nonlinear_dimensionality_reduction
Кроме того, как упоминает @StompChicken, у вас не должно возникнуть проблем с тем, чтобы заставить SVM работать с несколькими сотнями функций. Вы должны начать видеть (операционные) проблемы в десятках тысяч функций.
Карлос