Программируем коллективный разум

Практическое руководство по программированию интеллектуальных приложений.

Сегаран. Т. "Программируем коллективный разум" Символ-Плюс, 2008 год, 368 стр.(2,45 мб. pdf, 2,78 мб. djvu, примеры 225 кб.)

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

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

Компания Netflix занимается онлайновым прокатом DVD. Пользователь выбирает фильм и заказывает его доставку, а компания рекомендует другие фильмы на основе того, что заказывали другие пользователи. В конце 2006 года компания предложила приз в 1 млн долларов тому, кто улучшит точность системы рекомендования на 10%, причем сумму вознаграждения каждый год предполагалось увеличивать на 50 000 долларов. В конкурсе приняли участие тысячи коллективов со всего мира, и в апреле 2007 года победителю удалось добиться улучшения на 7%. Пользуясь данными о том, какие фильмы нравятся пользователям, Netflix удается рекомендовать своим клиентам такие фильмы, о которых они даже не слышали. В результате люди приходят снова и снова. Поэтому любое усовершенствование системы рекомендования приносит Netflix большие деньги.

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

Следует отметить, что Python используется такими компаниями, как Google, YouTube, IBM, NASA, NSA и др., он применяется для статистических и научных разработок и поэтому. как нельзя лучше подходит для анализа данных и программированию интеллектуальных приложений для Web 2.0. Все алгоритмы приводимые в книге ориентированы на реализацию конкретных задач, представление которых должно быть понятно большинству читателей. Для более наглядного представления и понимания алгоритмов каждая глава содержит практические примеры и задания. Если вас интересует работа в сфере машинного обучения (в частности генетического программирования)  и программирования интеллектуальных приложений, то стоит подумать о изучении языка Python, тем более, что его довольно легко освоить.
ISBN:978-5-93286-119-6
ISBN:5-93286-119-3
ISBN:0-596-52932-5 (Programming Collective Intelligence)

Оглавление книги.

1. Введение в коллективный разум 19
Что такое коллективный разум 20
Что такое машинное обучение 22
Ограничения машинного обучения 23
Примеры из реальной жизни 23
Другие применения обучающих алгоритмов 24

2. Выработка рекомендаций 26
Коллаборативная фильтрация 27
Сбор информации о предпочтениях 27
Отыскание похожих пользователей 29
Рекомендование предметов 35
Подбор предметов 37
Построение рекомендателя ссылок с помощью АРI сайта del.icio.us 39
Фильтрация по схожести образцов 43
Использование набора данных MovieLens 46
Сравнение методов фильтрации по схожести пользователей и по схожести образцов 48
Упражнения 49

3. Обнаружение групп 50
Обучение с учителем и без него 51
Векторы слов 51
Иерархическая кластеризация 54
Рисование дендрограммы 60
Кластеризация столбцов 63
Кластеризация методом К-средних 64
Кластеры предпочтений 67
Просмотр данных на двумерной плоскости 71
Что еще можно подвергнуть кластеризации 75
Упражнения 76

4. Поиск и ранжирование 77
Что такое поисковая машина 77
Простой паук 79
Построение индекса 82
Запросы 86
Ранжирование по содержимому 88
Использование внешних ссылок на сайт 93
Обучение на основе действий пользователя 99
Упражнения 109

5. Оптимизация 111
Групповые путешествия 112
Представление решений 113
Целевая функция 114
Случайный поиск 117
Алгоритм спуска с горы 118
Алгоритм имитации отжига 120
Генетические алгоритмы 123
Поиск реальных авиарейсов 127
Оптимизация с учетом предпочтений 132
Визуализация сети 136
Другие возможности 142
Упражнения 142

6. Фильтрация документов 144
Фильтрация спама 145
Документы и слова 145
Обучение классификатора 146
Вычисление вероятностей 149
Наивная классификация 151
Метод Фишера 155
Сохранение обученных классификаторов 159
Фильтрация блогов 161
Усовершенствование алгоритма обнаружения признаков 164
Использование службы Akismet 166
Альтернативные методы 168
Упражнения 168

7. Моделирование с помощью деревьев решений 170
Прогнозирование количества регистраций 171
Введение в теорию деревьев решений 173
Обучение дерева 174
Выбор наилучшего разбиения 176
Рекурсивное построение дерева 178
Отображение дерева 180
Классификация новых наблюдений 183
Отсечение ветвей дерева 184
Восполнение отсутствующих данных 186
Числовые результаты 188
Моделирование цен на недвижимость 188
Моделирование степени привлекательности 191
В каких случаях применять деревья решений 194
Упражнения 196

8. Построение ценовых моделей 197
Построение демонстрационного набора данных 198
Алгоритм к-ближайших соседей 199
Взвешенные соседи 203
Перекрестный контроль 207
Гетерогенные переменные 209
Оптимизация масштаба 212
Неравномерные распределения 214
Использование реальных данных - API сайта eBay 220
В каких случаях применять метод к-ближайших соседей 227
Упражнения 227

9. Более сложные способы классификации: ядерные методы и машины опорных векторов 229
Набор данных для подбора пар 230
Затруднения при анализе данных 231
Простая линейная классификация 234
Категориальные свойства 238
Масштабирование данных 242
Идея ядерных методов 243
Метод опорных векторов 247
Библиотека LIBSVM 249
Подбор пар на сайте Facebook  252
Упражнения 258

10. Выделение независимых признаков 259
Массив новостей 260
Прошлые подходы 264
Неотрицательная матричная факторизация 267
Вывод результатов 273
Использование данных о фондовом рынке 277
Упражнения 282

11. Эволюционирующий разум 284
Что такое генетическое программирование 285
Программы как деревья 287
Создание начальной популяции 292
Проверка решения 293
Мутация программ 295
Скрещивание 298
Построение окружающей среды 300
Простая игра 303
Направления развития 308
Упражнения 311

12. Сводка алгоритмов 312
Байесовский классификатор 312
Классификатор на базе деревьев решений 316
Нейронные сети 320
Метод опорных векторов 324
к-ближайшие соседи 329
Кластеризация 333
Многомерное шкалирование 336
Неотрицательная матричная факторизация 338
Оптимизация 341
Приложения 344
A. Дополнительные библиотеки 344
B. Математические формулы 351
Алфавитный указатель 358

Скачать книгу бесплатно2,45 мб. pdf Скачать книгу бесплатно2,78 мб. djvu Скачать примеры бесплатнопримеры 225 кб