Могу ли я использовать независимый компонентный анализ, если у меня есть две дискретные совокупности источников сигналов, смешанных вместе?

10

Я понимаю (главным образом), как независимый компонентный анализ (ICA) работает с набором сигналов от одной популяции, но мне не удается заставить его работать, если мои наблюдения (матрица X) включают сигналы от двух разных популяций (имеющих разные средние значения), и я Мне интересно, является ли это внутренним ограничением ICA или я могу решить эту проблему. Мои сигналы отличаются от анализируемого общего типа тем, что мои исходные векторы очень короткие (например, 3 значения), но у меня много (например, 1000) наблюдений. В частности, я измеряю флуоресценцию в 3 цветах, где широкие сигналы флуоресценции могут «распространяться» на другие детекторы. У меня есть 3 детектора и использую 3 разных флуорофора на частицах. Можно думать об этом как о спектроскопии с очень плохим разрешением. Любая флуоресцентная частица может иметь произвольное количество любого из 3 различных флуорофоров. Тем не менее, у меня есть смешанный набор частиц, которые имеют довольно разные концентрации флуорофоров. Например, один набор может обычно иметь много флуорофоров № 1 и мало флуорофоров № 2, в то время как другой набор имеет мало # 1 и много # 2.

По сути, я хочу деконволюцию побочного эффекта, чтобы оценить фактическое количество каждого флуорофора на каждой частице, а не добавлять долю сигнала от одного флуорофора к сигналу другой. Казалось, что это было бы возможно для ICA, но после некоторых значительных сбоев (преобразование матрицы, по-видимому, делает приоритет разделением популяций, а не вращением для оптимизации независимости сигнала), мне интересно, не является ли ICA правильным решением или мне нужно предварительно обработать мои данные другим способом, чтобы решить эту проблему.

Результаты алгоритма FastICA с 2 популяциями в 1 наборе данных

Графики показывают мои синтетические данные, использованные для демонстрации проблемы. Начав с «истинных» источников (панель A), состоящих из смеси двух популяций, я создал «истинную» матрицу смешения (A) и рассчитал матрицу наблюдения (X) (панель B). FastICA оценивает S-матрицу (показана на панели C), и вместо того, чтобы найти мои истинные источники, мне кажется, что она вращает данные, чтобы минимизировать ковариацию между двумя популяциями.

Ищете какие-либо предложения или понимание.

Эдвард
источник

Ответы:

1

Концептуально, для работы ICA, требуется N наблюдений того же явления, и он будет пытаться разложить эти сигналы (смеси) до <N компонентов.

По вашему описанию каждый детектор считает другую энергетическую частицу. То есть «смеси» на самом деле уже три разных сигнала. Рассмотрим пример, в котором вы используете записи 4 разных микрофонов, чтобы попытаться различить 2 разных (взаимно независимых) источника звука. В этом случае каждый микрофон записывает (различную) сумму ОБА источников звука. В вашем случае, из-за явления, которое вы наблюдаете, каждый «микрофон» (детектор) НЕ записывает (различную) сумму ОБА источников, а скорее записывает каждый источник отдельно (в большинстве случаев).

Как вы описываете, иногда, ЖЕ событие может быть зарегистрировано более чем одним детектором (переполнение). В этом случае, если вы настаиваете на ICA, он попытается разложить эту сумму.

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

Но в этом случае вместо изучения 1000 «триплетов» наблюдений вы создаете три разных временных ряда. Один временной ряд на детектор, описывающий события (во времени) каждого детектора.

Если ваши детекторы и аппарат достаточно быстрые, этот сигнал будет выглядеть как серия экспоненциально затухающих импульсов. Если нет, ваш сигнал будет выглядеть как последовательность импульсов, свернутых с импульсной характеристикой системы (сглаженная версия). В любом случае, если одно и то же событие было обнаружено более чем одним детектором, выход этих детекторов будет одновременно повышаться по уровню (и увеличивать взаимную корреляцию или какую-либо другую форму метрики корреляции). Это будет легче обнаружить в первом случае (быстрая система).

Таким образом, проблема теперь становится той, где вы должны решить, какому детектору назначить это событие для его правильного подсчета. Есть несколько способов, которыми вы можете сделать это (не используя ICA), но вы должны будете знать спектральный отклик вашего детектора (амплитуда импульса VS энергия или выходное напряжение VS энергия). Затем вы сможете создать взвешенную сумму подсчитанных частиц, посмотрев «вес» для каждого импульса в ответе вашего детектора. Или вы можете применить «окно» для импульсов. То есть, учитывайте резкий порог вокруг пикового отклика детектора и считайте только события, которые генерируют такие (обычно высокие) импульсы. Принимая во внимание короткую область вокруг пиковой производительности детектора, будут отклоняться (более низкие) импульсы, создаваемые перетоком.

Надеюсь, это поможет. Я надеюсь, что правильно понял вашу конфигурацию.

a_a
источник
0

Похоже, ваши "сигналы" не подходят для ICA. Тем не менее, кажется, что вы могли бы извлечь выгоду из алгоритмов кластеризации, особенно если вы знаете отдельный сигнал (уровень энергии или длина волны), ожидаемый от каждого типа флуорофора. Вы можете создать идеальные синтетические кластеры и совместно с ними собрать данные наблюдений. Изменяя количество кластеров и другие параметры, вы должны быть в состоянии распространить перетекание каждого флуорофора друг на друга как дополнительные кластеры. Спектральные или иерархические методы кластеризации могут быть лучшими для этого (в отличие от k-средних).

wwwslinger
источник