Классификация захваченных данных в неизвестном формате? - PullRequest
0 голосов
/ 19 мая 2010

У меня есть большой набор захваченных данных (возможно, сотни тысяч записей), и мне нужно иметь возможность разбить их, чтобы я мог как классифицировать их, так и сам производить «типичные» данные. Позвольте мне объяснить подробнее ...

Если у меня есть следующие строки данных:

132T339G1P112S
164T897F5A498S
144T989B9B223T
155T928X9Z554T
...

Вы можете начать выводить следующее:

  • возможно, все строки имеют длину 14 символов
  • 4-й, 8-й, 10-й и 14-й символы всегда могут быть альфами, а остальные - числовыми
  • первый символ всегда может быть '1'
  • 4-ым символом всегда может быть буква 'T'
  • 14-й символ может быть ограничен только 'S' или 'T'
  • и так далее ...

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

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

Учитывая набор захваченных данных (значительно более сложных, чем описанные выше ...), есть ли библиотеки, которые я могу применить в своем коде, чтобы выполнить такую ​​классификацию для меня, которая будет определять «правила» с заданной степенью доверия?

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

По-видимому, Python или Java (или, возможно, Perl или R), возможно, являются "общими" языками, которые, скорее всего, имеют такие библиотеки, и, возможно, некоторые из биоинформационных библиотек делают подобные вещи. Мне действительно все равно, какой язык я должен использовать; Мне нужно решить эту проблему так, как я могу.

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2010

Попробуйте Weka , который имеет алгоритмы кластеризации. Алгоритмы кластеризации находят закономерности в данных без присмотра. У Weka также есть дополнительные кластеры. Я думаю, именно то, что вы хотите.

И это Java.

0 голосов
/ 19 мая 2010

Для начала, вы не можете ожидать, что компьютер будет определять произвольно сложные правила. То же самое верно для человека, анализирующего строки; Я уверен, что вы можете подумать о некоторых примерах правил, которые могли бы применяться, но от человека нельзя было бы ожидать, что он просто увидит эти строки.

Я думаю, вам нужно настроить компьютер на определенные правила, которые он может идентифицировать. Например, вы можете написать скрипт, который идентифицирует правила вида «Длина строки всегда X». Или даже «N-й символ всегда X» не будет слишком сложным. Я замечаю, что примеры правил, которые вы упомянули, имеют всю эту форму, так что это не слишком далеко от человеческого анализа ;-) На самом деле, если вы знаете или можете предположить, что выбор персонажа, который появляется в данная позиция основана только на позиционном индексе, вы можете использовать свои данные для оценки вероятности появления данного символа в данном месте, что будет похоже на более общую версию «N-й символ - это всегда X».

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

...