Применение к данным обучения НЛП для финансовых услуг

Топологический анализ данных, или TDA, представляет собой набор подходов, обеспечивающих дополнительное понимание наборов данных. Он дополняет другие формы анализа, такие как статистический и геометрический подходы, и полезен любому специалисту по данным, который хочет более полного понимания своих данных.

Эта статья рисует картину полезности топологического подхода, обрисовывает в общих чертах известный алгоритм TDA, называемый «mapper», и описывает, как использовать инструментарий под названием Scikit-TDA для приложения к обработке естественного языка. Наконец, мы расскажем об особенностях применения всего вышеперечисленного к проблеме сбора обучающих данных для конвейера машинного обучения, включающего документы из индустрии финансовых услуг.

Почему топология?

Топология - это математика, касающаяся непрерывных объектов. Не размеры и формы, а просто преемственность. Речь идет о том, как все взаимосвязано и где есть пробелы.

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

Геометрия отвечает на такие вопросы, как длина дома, высота крыши, расположение розеток и необходимое количество светильников. Статистика отвечает на такие вопросы, как, сколько тока потребляют огни, сколько они стоят и сколько часов в день они будут гореть в среднем.

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

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

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

Вкратце об алгоритме картографа

Есть много отличных вводных видеороликов, объясняющих алгоритм картографирования, изобретенный Карлссоном, Мемоли и Сингхом в 2007 году. Вместо того, чтобы пытаться воспроизвести эти ресурсы, краткий обзор выглядит следующим образом:

  1. Начните с данных в многомерном пространстве.
  2. Создавайте перекрывающиеся бункеры данных.
  3. В каждом бункере сгруппируйте данные.
  4. Для каждого кластера создайте узел на графике.
  5. Подключите узлы, которые совместно используют точки данных.

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

В порядке. Как?

Ответ: Scikit-TDA.

Scitkit-TDA - это пакет Python, который предоставляет стандартные интерфейсы для ранее независимых алгоритмов. Как и scikit-learn, методы семейства .fit() и .fit_transform() используются для выполнения алгоритмов и преобразования данных. Пример выглядит так

import kmapper as km
mapper = km.KeplerMapper(verbose=2)
projected_data = mapper.fit_transform(data, projection=TSNE())
graph = mapper.map(
    projected_data,
    clusterer=DBSCAN(),
    cover=km.Cover(35, 0.4),
)

где TSNE и DBSCAN могут быть заменены соответствующими scikit-подобными объектами с собственными .fit() и .transform() методами. Более подробные примеры см. На странице примеров Scikit-TDA.

Приложение к НЛП

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

Следуя примеру Scikit-TDA’s KepplerMapper, мы векторизуем текст документов с помощью масштабирования TFIDF, уменьшаем его до двух измерений и используем алгоритм кластеризации для построения графика.

mapper = km.KeplerMapper(verbose=2)
projected_X = mapper.fit_transform(term_count_matrix,
    projection=[TfidfTransformer(sublinear_tf=True),
                TruncatedSVD(n_components=100, random_state=0),
                Isomap(n_components=2, n_jobs=-1)],
    scaler=[None, None, MinMaxScaler()])

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

Наконец, чтобы построить график:

graph = mapper.map(projected_X,
    clusterer=AgglomerativeClustering(
        n_clusters=3,
        linkage="complete",
        affinity="euclidean"),
    cover=km.Cover(n_cubes=12, perc_overlap=0.33))

Мы снова экспериментировали с различными алгоритмами кластеризации, такими как DBSCAN и HDBSCAN, а также с изменением параметров сродства и перекрытия.

Приложение к данным обучения финансовой службы

Финансовые документы лежат в основе многих рабочих процессов в S&P Global. На внутреннем уровне модели классификации машинного обучения используются для определения приоритетов потока документов во многих случаях использования. Обучающие данные регулярно предоставляются контент-экспертами внутри компании, чтобы модели работали с максимальной производительностью.

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

Для нового рабочего процесса разумным объяснением является проблема с маркировкой обучающих данных. Глядя на файлы, в которых модель ошиблась, где-то посередине, это хорошее место для начала. Для ощущения масштаба существует около 9000 документов между оценками 0,0 и 1,0 по оси абсцисс.

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

Применяя TDA к документам, как описано в предыдущем разделе, мы получаем узлы и края, окрашенные средней путаницей документа.

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

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

Каждая зеленая вертикальная полоса представляет один документ из синих / фиолетовых узлов выходных данных TDA, а более темная зеленая секция указывает на более высокую концентрацию документов при этой оценке достоверности модели. TDA пометило чуть менее 500 документов, в основном между 0,0 и 1,0 по оси абсцисс.

Перед анализом TDA у нас было около 9000 документов, которые нужно было изучить, чтобы определить, было ли что-то не так с нашим сбором данных. Сейчас это число сократилось до менее 500. Это не означает, что мы не смогли бы добиться успеха с помощью статистических или геометрических методов, но мы уверены, что документы, которые мы отправляем обратно, связаны между собой. Если повезет, наши деловые партнеры найдут закономерность в отправляемых нами документах и ​​исправят систематическую ошибку в сборе данных обучения, что позволит улучшить второй раунд обучения модели.

Вывод

Если статистические методы - это измерительная лента для специалистов по данным, а построение графиков - это лестница, то TDA - это мультиметр. Он обеспечивает ортогональный способ просмотра данных, фокусируясь на соединениях и промежутках, а не на размере и форме. Связанные ресурсы позволяют специалисту по обработке данных, который только начинает работать с TDA, быстро освоиться и стать продуктивным в короткие сроки.

Видео

Статьи и веб-сайты

Райан Дуве, специалист по анализу данных в S&P Global. А еще он физик, хакер Linux и плохой бариста.