Читаем Разберись в Data Science полностью

Тематическое моделирование[115] похоже на метод k-средних в том смысле, что это алгоритм неконтролируемого обучения, который пытается сгруппировать похожие наблюдения, но при этом не требует, чтобы каждый документ был явно отнесен к одному кластеру. Вместо этого он выдает значения вероятности, говорящие о том, как один документ связан с несколькими темами. Предложение 1, например, может получить оценку 60 % по теме национальной обороны и 40 % по теме космоса.

Чтобы лучше в этом разобраться, рассмотрим еще один пример. На рис. 11.3 представлена перевернутая набок матрица «документ-термин»[116]. Слева вы видите термины, которые встречаются в 20 документах d0–d19. Каждая ячейка отражает частоту встречаемости слова в документе: более темные ячейки соответствуют более высокой частоте. Причем термины и документы были упорядочены с помощью метода тематического моделирования.


Рис. 11.3. Кластеризация документов и терминов путем тематического моделирования. Можете ли вы выделить пять основных тем на этом изображении? Как бы вы их назвали?


Глядя на это изображение, вы можете заметить слова, часто встречающиеся в документах и вместе образующих возможные темы, а также документы, содержащие термины, связанные с несколькими темами (в частности, обратите внимание на d13, третий столбец справа). Однако имейте в виду: данный метод не гарантирует получения точных результатов, как и другие методы неконтролируемого обучения.

С практической точки зрения тематическое моделирование работает лучше всего, когда в наборе документов представлены различные темы. Это может показаться очевидным, однако нам известны случаи, когда тематическое моделирование применялось к подмножествам текстов, которые перед анализом были отфильтрованы по конкретной интересующей аналитиков теме. Это все равно что взять группу новостных статей, отобрать только те, которые содержат слова «баскетбол» и «Леброн Джеймс», а затем ожидать значимых результатов от применения тематического моделирования к отобранным статьям. Результаты вас разочаруют. Отфильтровывая тексты, вы, по сути, задаете одну тему для оставшихся статей. Помните об этом нюансе, продолжайте спорить со своими данными и корректируйте ожидания по мере необходимости.

Классификация текстов

В этом разделе мы поговорим о контролируемом обучении на матрице «документ-термин» (при условии наличия известных целевых атрибутов). В случае с текстом мы, как правило, пытаемся предсказать категориальную переменную, поэтому данная задача решается с помощью моделей классификации, о которых мы говорили в предыдущей главе, а не моделей регрессии, которые предсказывают числа. Один из самых известных примеров успешного применения метода классификации текстов – спам-фильтр, используемый в сервисах электронной почты, входными данными для которого является текст сообщения, а выходными – бинарный флаг «спам» или «не спам»[117]. Пример применения многоклассовой классификации текстов – автоматическое распределение новостных онлайн-статей по категориям: местные новости, политика, мир, спорт, развлечения и так далее.

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


Табл. 11.4. Простейший пример классификации спама


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

Возможно, вы подумали о логистической регрессии, которая бывает полезна для предсказания бинарных результатов. Но, к сожалению, здесь она не сработает из-за слишком большого количества слов и недостаточного количества примеров для обучения. В табл. 11.4 столбцов больше, чем строк, а логистическая регрессия этого не любит[118].

Наивный байесовский алгоритм

В подобной ситуации обычно применяется так называемый наивный байесовский алгоритм классификации (названный так в честь того самого Байеса, которого мы упоминали в главе 6). Данный алгоритм пытается ответить на простой вопрос: где с большей вероятностью встречаются слова, используемые в теме электронного письма, – в спаме или в обычном письме? Вы, скорее всего, пытаетесь сделать то же самое, когда просматриваете содержимое своего почтового ящика: вы по собственному опыту знаете, что слово «бесплатно», как правило, встречается в спаме. То же касается слов «деньги», «Виагра» или «богатство». Если большинство слов ассоциируется со спамом, то электронное письмо, скорее всего, им и является. Все просто.

Перейти на страницу:

Все книги серии Мировой компьютерный бестселлер

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных