Все в этой статье основано на наборе данных Goodreads-books, который можно найти здесь, на Kaggle: https://www.kaggle.com/jealousleopard/goodreadsbooks.

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

Визуализация

Первый рисунок, показанный ниже, представляет собой гистограмму, показывающую частоту разной длины книг. Как и ожидалось, объем большинства книг составляет от 200 до 400 страниц. Ни одна книга не превышает 1000 страниц, хотя есть несколько сотен, которые заметно короче.

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

Из кластеризации данных между 1990 и 2010 годами можно сделать вывод, что набор данных охватывает только современные публикации. Также очень мало свидетельств корреляции между годом публикации и количеством страниц, хотя, похоже, больше обзоров книг, которые были опубликованы недавно.

Машинное обучение

Для классификации книг как плохих (средний рейтинг 0–3) или хороших (4–5) использовались пять переменных: количество авторов, количество страниц, год публикации, количество оценок и количество текстовых рецензий. Чтобы исследовать соответствующие пространства гиперпараметров, поиск по сетке использовался для предопределенных переменных. Результаты для различных алгоритмов классификации следующие:

  • Классификатор дерева решений: точность 99,50%
  • Классификатор случайного леса: точность 98,83%
  • Многоуровневый классификатор персептрона: точность 98,74 %
  • Классификатор K-ближайших соседей: точность 99,01%

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

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

  • Регрессор дерева решений: 0,339 RMSE
  • Случайный лесной регрессор: 0,328 RMSE
  • Многослойный регрессор персептрона: 0,381 RMSE
  • Регрессор K-ближайших соседей: 0,369 RMSE

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

Заключение

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