Электронная библиотека » Джон Форман » » онлайн чтение - страница 5


  • Текст добавлен: 22 ноября 2023, 14:32


Автор книги: Джон Форман


Жанр: Базы данных, Компьютеры


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 5 (всего у книги 25 страниц) [доступный отрывок для чтения: 7 страниц]

Шрифт:
- 100% +
Как насчет пяти кластеров?

Попробуем поднять k до 5 и посмотреть, что будет.

Есть хорошая новость: так как вы уже делали расчет для 4 кластеров, вам не придется начинать все с чистого листа. Не нужно ничего делать с листом Distances. Он вполне сгодится и так.

Создаем копию листа 4МС и называем ее 5МС. Все, что нужно – это добавить пятый кластер на лист и ввести его в свои расчеты.

Кликните для начала правой клавишей мыши на столбце L и вставим новый столбец, который назовем Cluster 5. Вам также нужно вставить расстояние в строку кластера 5, кликнув на строке 38 правой клавишей и выбрав «Вставить». Скопируйте расстояние в строку кластера 4 в 38 строке и поменяйте столбец с K на L, чтобы создать строку с расстоянием до кластера 5. Что касается строк Minimum Cluster Distance и Assigned Cluster, то ссылки на строку 37 нужно исправить на 38, чтобы включить в расчет новое кластерное расстояние.

В результате должна получиться таблица как на рис. 2-32.


Поиск решения для пяти кластеров

Открыв «Поиск решения», вам нужно только поменять $H$2:$K$33 на $H$2:$L$33 в переменных решения и разделах условий, чтобы включить новый кластер 5. Все остальное остается без изменений.

Нажмите «Выполнить» и запустите решение этой новой задачи.

Мой «Поиск решения» остановился на итоговом расстоянии 135,1, как показано на рис. 2-33.


Рейтинг сделок для всех пяти кластеров

Отлично. Давайте посмотрим, как это делается.

Создайте копию листа 4MC – TopDealsByCluster tab и переименуйте его в 5MC – TopDealsByCluster. Придется еще подкорректировать несколько формул, чтобы все заработало.

Сначала убедитесь, что эта таблица упорядочена по номеру предложений в столбце 1. Затем назовите столбец L «5» и перетащите формулы из K в L. Выделите столбцы от А до L и примените автофильтрацию заново, чтобы сделать заказы кластера 5 сортируемыми.

Все ссылки на этом листе ведут к листу 4МС, так что пришло время решительно все найти и заменить. Привязки к кластерам на листе 5МС смещены на одну строку вниз и один столбец вправо, поэтому ссылка на '4MC'!$L$39:$DG$39 в формуле SUMIF//СУММАЕСЛИ превратится в '5MC'!$M$40:$DH$40. Как показано на рис. 2-34, вы можете воспользоваться функцией «Найти и заменить».


Заметка

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

Сортируя кластер 1, мы снова ясно видим наш кластер пино нуар. (рис. 2-35).



Кластер 2 – это кластер покупателей малых объемов (рис. 2-36).



Что касается кластера 3, то он снова взрывает мой мозг. Единственное, что можно в нем выделить – это, по какой-то причине, южноафриканское эспуманте (рис. 2-37).



Покупатели кластера 4 заинтересованы в больших объемах, преимущественно французского вина и с хорошей скидкой. Здесь даже можно обнаружить склонность к игристым винам. Этот кластер сложно читается, в нем много что происходит (рис. 2-38).



Сортировка кластера 5 даст результат, идентичный кластеру 4, хотя большие объемы и большие скидки похожи на основные тенденции (рис. 2-39).

Вычисление силуэта кластеризации по пяти средним

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

Начнем с копирования листа 4МС Silhouette и переименования его в 5МС Silhouette. Теперь кликните правой клавишей мышки на столбце G, вставьте новый столбец и назовите его Distance From People in 5. Перетащите формулу из F2 в G2, поменяйте количество кластеров в переборе с 4 на 5, а затем кликните дважды на ячейке, чтобы заполнить весь столбец.

Точно так же, как и в предыдущей части, вам нужно найти и заменить '4MC'!$L$39:$DG$39 на '5MC'!$M$40:$DH$40.



В ячейки Н2, I2 и J2 нужно добавить расстояние до ребят из кластера 5, поэтому все диапазоны, заканчивающиеся на F2, должны быть расширены до G2. Затем выделите Н2:J2 и двойным щелчком в правом нижнем углу отправьте эти обновленные формулы вниз по столбцам.

И, наконец, скопируйте и вставьте с помощью «Специальной вставки» значения привязки к кластерам из строки 40 листа 5МС в столбец В листа 5МС Silhouette. Это также означает, что вы должны отметить «Транспонировать» в меню специальной вставки.

После исправлений лист должен выглядеть как на рис. 2-40.

Немного удручает, не правда ли? Силуэт не так уж и отличается. Наоборот, 0,134 даже хуже! Но это не назовешь неожиданностью после изучения получившихся кластеров. В обоих случаях получались 3 кластера, действительно имеющие смысл. Остальные – просто статистический шум. Может, стоит пойти в другом направлении и проверить k = 3? Если вы хотите дать этой гипотезе шанс, я оставлю это вам как самостоятельную работу.



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

K-медианная кластеризация и асимметрическое измерение расстояний

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

Использование k-медианной кластеризации

Первая очевидная проблема заключается в том, что ваши кластерные центры выражены десятыми долями от единицы, притом что вектор сделок каждого покупателя – точный ноль или единица. Что на самом деле значит 0,113 для сделки? Я хочу, чтобы кластерные центры выражали либо совершение сделки, либо ее отсутствие!

Если немного изменить алгоритм кластеризации, чтобы он использовал только величины векторов сделок покупателей, то он уже будет называться кластеризацией по k-медианам, а не по k-средним.

А если вы не хотите изменять евклидовым расстояниям, то все, что вам нужно – это добавить бинарное условие (bin) в «Поиске решения» для всех кластерных центров.

Но если кластерные центры теперь бинарны, то как использовать евклидово расстояние?

Переходим к соответствующему измерению расстояний

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

Несмотря на то, что расстояние от точки А до точки В измеряется по прямой, такси на Манхэттене приходится перемещаться по сети прямых улиц, где возможны движения лишь на север, юг, запад или восток. Поэтому, если на рис. 2-13 вы видели, что расстояние между танцором-школьником и его кластерным центром равняется примерно 4,47, его манхэттенское расстояние будет равно 6 метрам (4 метра вниз + 2 метра вбок).

В терминах бинарных данных, таких как данные о продажах, манхэттенское расстояние между кластерным центром и покупательским вектором – это просто число несоответствий. Если у кластерного центра 0 и у меня 0, то в этом направлении расстояние будет 0, а если встречаются 0 и 1, то есть числа не совпадают, то в этом направлении расстояние равно 1. Складывая их, вы получаете общее расстояние, которое является просто числом несовпадений.

Действительно ли манхэттенское расстояние играет в решении ключевую роль?

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

Что значит «покупатель совершил сделку»? Это значит, что он действительно хотел приобрести этот товар!

Что значит «покупатель не совершил сделку»? Значит ли это, что он не хотел этот товар настолько, насколько хотел тот, который купил? Одинаково ли сильны положительный и отрицательный сигналы? Может, он и любит шампанское, но уже держит запас в подвале. Может, он просто не видел вашу рассылку за этот месяц. Есть масса причин, почему кто-то чего-то не делает, но всего несколько – почему действия совершаются.

Другими словами, стоит обращать внимание на заказы, а не на их отсутствие.

Есть затейливое словцо – «асимметрия» данных. Единицы более ценны, чем нули. Если один покупатель совпадает с другим по трем единицам, то это более важное совпадение, чем с третьим покупателем по трем нулям. Что бросается в глаза – так это малое количество ценных единиц в данных – вот они, «разреженные данные»!

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

Вам нужен расчет асимметричного расстояния. А для переменных данных в бинарном коде вроде этих заказов вина существует уйма неплохих вариантов.

Самый, наверное, широко используемый метод подсчета асимметричного расстояния для данных формата 0–1 называется расстоянием по косинусу.

Расстояние по косинусу – это не так страшно, несмотря на тригонометрию

Самый простой способ объяснить, что такое расстояние по косинусу – это проанализировать понятие «близость по косинусу».

Рассмотрим пару двумерных бинарных векторов (1,1) и (1,0). В первом векторе были заказаны оба товара, в то время как во втором только первый. Вы можете представить эти векторы в пространстве и увидеть, что угол между ними – 45 градусов (рис. 2-41). Доставайте транспортир – проверим.

Можно сказать, что их близость равна косинусу 45 градусов, что составляет 0,707. Но почему?

Оказывается, косинус угла между двумя бинарными заказами – это:

Число совпадений заказов в двух векторах, разделенное на произведение квадратных корней количества заказов первого и второго векторов

В нашем случае два вектора (1,1) и (1,0) имеют один совпадающий заказ, так что в числителе будет 1, а в знаменателе – квадратный корень из 2 (две заключенные сделки), умноженный на корень из 1 заключенной сделки. В результате имеем 0,707 (рис. 2-41).

Что примечательного в этом расчете?

Причины три:

• счетчик в формуле считает только совпадения сделок, то есть он асимметричен и поэтому отлично подходит к данному случаю;

• квадратные корни из количества сделок по каждому вектору в знаменателе обращают наше внимание на тот факт, что вектор, в котором совершены все сделки – назовем его неразборчивым – гораздо дальше отстоит от другого вектора, чем тот, в котором совершены те же сделки и не совершены несколько других. Вам нужно совпадение векторов, «вкусы» которых совпадают, а не один вектор, содержащий «вкусы» другого.

• для бинарных данных эта близость находится в промежутке между 0 и 1, причем у двух векторов не получается 1, пока все их заказы не совпадут. Это означает, что 1 – близость по косинусу может использоваться как мера расстояния, называемая расстоянием по косинусу, которое также варьируется от 0 до 1.


А теперь все то же самое, но в Excel

Пришло время дать шанс проявить себя k-медианной кластеризации с помощью расстояния по косинусу.

Заметка

Кластеризация с помощью расстояния по косинусу также иногда называется сферической по k-средним. В главе 10 вы увидите сферические k-средние в R.

Будем последовательны и продолжим с k= 5.

Снова начнем с копирования листа 5МС и переименования его, на этот раз в 5MedC. Так как кластерные центры должны быть бинарными, нужно удалить все, что туда понаписал «Поиск решения».

Единственные вещи, требующие изменения здесь (кроме добавления бинарного условия в «Поиск решения» для k-медиан), – это расчеты расстояний в строках с 34 по 38. Начните с ячейки М34, в которой находится расстояние между Адамсом и центром кластера 1.

Чтобы сосчитать совпадения сделок у Адамса и кластера 1, нужно применить к этим двум столбцам SUMPRODUCT/СУММПРОИЗВ. Если у одного из них или у обоих встречается 0, строка остается пустой, но если у обоих 1, то это совпадение обрабатывается SUMPRODUCT/СУММПРОИЗВ и 1, помноженная на 1, остается 1.

Что касается извлечения корня из количества сделок, совершенных в векторе, это просто SQRT//КОРЕНЬ, наложенный на SUM//СУММА вектора. Таким образом, уравнение расстояния можно записать как

=1-SUMPRODUCT(M$2:M$33,$H$2:$H$33)/

(SQRT(SUM(M$2:M$33))*SQRT(SUM($H$2:$H$33)))

=1-СУММПРОИЗВ(M$2:M$33,$H$2:$H$33)/

(КОРЕНЬ(СУММА(M$2:M$33))*КОРЕНЬ(СУММА($H$2:$H$33)))

Обратите внимание на «1–» в начале формулы, что отличает близость по косинусу от расстояния по косинусу. Также, в отличие от евклидова расстояния, расчет расстояния по косинусу не требует использования формул массива.

Так или иначе, когда вы вставите это в М34, следует добавить проверку на ошибки на случай, если кластерный центр окажется 0:

=IFERROR(1-SUMPRODUCT(M$2:M$33,$H$2:$H$33)/

(SQRT(SUM(M$2:M$33))*SQRT(SUM($H$2:$H$33))),1)

=ЕСЛИОШИБКА(1-СУММПРОИЗВ(M$2:M$33,$H$2:$H$33)/

(КОРЕНЬ(СУММА(M$2:M$33))*КОРЕНЬ(СУММА($H$2:$H$33))),1)

Добавление формулы IFERROR/ЕСЛИОШИБКА избавляет вас от деления на 0. И если по какой-то причине «Поиск решения» выбирает кластерный центр, полностью состоящий из 0, вы можете предположить, что этот центр находится на расстоянии 1 от всего остального (1 как наибольшее значение бинарной переменной).

Затем вы можете скопировать М34 вниз по столбцу до М38 и изменить ссылки столбца H на I, J, K или L. Так же, как в случае с евклидовым расстоянием, вы используете абсолютные ссылки ($) в формуле, так что можете перетаскивать ее куда вздумается без ущерба для столбца с кластерным центром.

Таким образом, мы получили лист 5MedC (рис. 2-42), который пока абсолютно идентичен листу 5МС, с которым мы работали ранее.

Теперь, чтобы найти кластеры, откройте «Поиск решения» и измените условие «<= 1» для Н2:L33 на бинарное.

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


Рейтинг сделок для 5-медианных кластеров

По завершении работы «Поиска решения» у вас образуется 5 кластерных центров, и в каждом – кучка единичек, указывающих на сделки, предпочитаемые этим кластером. Мой «Поиск решения» выдал оптимальное объективное значение 42,8, хотя ваше может серьезно отличаться (рис. 2-43).



Давайте разберемся в этих кластерах, используя метод подсчета сделок, которым мы пользовались для k-средних. Для этого сперва скопируйте лист 5MC – TopDealsByCluster tab и назовите его 5MedC – TopDealsByCluster.

Все, что нужно сделать на этом листе, чтобы заставить его работать, – это найти и заменить 5МС на 5MedC. Так как общий вид столбцов и строк у этих двух листов идентичен, все вычисления пройдут гладко, если ссылка на лист изменена.

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

Сортировка кластера 1: похоже, это мелкооптовый кластер (рис. 2-44).



В кластер 2 попали покупатели, приобретающие только игристые вина. Шампанское, просекко и игристое доминируют в первых 11 позициях кластера (рис. 2-45). Интересно отметить, что подход k-средних не очень явно демонстрирует кластер любителей шипучего при k равном 4 или 5.



Кластер 3 – кластер франкофилов. Пять самых крупных сделок – на французские вина (рис. 2-46). Разве они не знают, что калифорнийские вина лучше?



Что касается кластера 4, то здесь только крупные сделки. И все самые популярные сделки – с большой скидкой и еще не прошли ценовой максимум (рис. 2-47).



Кластер 5 снова оказался кластером пино нуар (рис. 2-48).

Так почище, не правда ли? Это оттого, что метод k-медиан, используя асиметричные методы измерения расстояний вроде равенства косинусов, позволяет кластеризировать клиентов, основываясь больше на их предпочтениях, чем на антипатиях. Ведь нас интересует именно это!



Вот на что способна мера расстояния!

Теперь вы можете взять привязки к этим пяти кластерам, импортировать их обратно в MailChimp.com как объединенное поле в списке писем и использовать эти значения для настройки вашей маркетинговой рассылки по кластерам. Это должно помочь вам лучше подбирать покупателей и управлять продажами.

Подытожим

В этой главе было описано много разных отличных приемов. Вспомним все, что вы увидели и узнали:

• евклидово расстояние;

• кластеризацию методом k-средних с использованием «Поиска решения» для оптимизации центров;

• как понимать кластеры, раз уж они у вас есть;

• как рассчитать силуэт, данный по k-средним;

• k-медианную кластеризацию;

• манхэттенское расстояние / расстояние городского квартала;

• близость и расстояние по косинусу.

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

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

Вы хотите самостоятельно продвинуться в кластеризации по k-средним? Не забывайте, что стандартный Excel способен управиться только с 200 переменными «Поиска решения», поэтому советую обновить надстройку на нелинейный решатель получше (к примеру, PremuimSolver с сайта Solver.com или просто мигрировать в LibreOffice), чтобы кластеризировать данные во многих измерениях сделок и пользоваться большими значениями k.

Большинство программ для статистики предлагает возможности кластеризации. Например, R выпускается с функцией k-средних; так или иначе, более широкие возможности открывает пакет fastcluster, в который входят k-медианы и набор функций расстояния. В главе 10 вы познакомитесь с пакетом skmeans для применения сферических k-средних.

3. Наивный байесовский классификатор и неописуемая легкость бытия идиотом

В предыдущей главе вы отлично справились с началом неконтролируемого машинного обучения. Вы ознакомились с кластеризацией по k-средним, которая похожа на куриный наггетс в измерении извлечения данных (data mining) – простой, интуитивный и практичный. И к тому же вкусный.

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

Как уже упоминалось в главе 2, в случае с контролируемым искусственным интеллектом вы «обучаете» свою модель делать расчет, пользуясь уже классифицированными данными. Самое распространенное применение «наивного Байеса» – классификация документов. Является ли это электронное письмо спамом или наоборот, долгожданной новостью? Эта запись в Twitter – благодушная или сердитая? Нужно ли передавать этот перехваченный звонок по сотовому для дальнейшего исследования федеральным агентам? Вы предоставляете «данные для обучения», например, классифицированные примеры документов, обучающему алгоритму, который в дальнейшем сможет «разбить» новые документы на те же категории, используя имеющиеся знания.

Пример, над которым мы будем работать в этой главе, мне особенно близок. Позвольте объяснить.

Называя продукт Mandrill, ждите помех вместе с сигналами

Недавно компания, в которой я работаю, начала новый проект под названием Mandrill.com. Логотип у этого проекта – самый страшный из всех мною виденных (рис. 3–1).

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



Но с момента запуска Mandrill меня постоянно раздражала одна вещь. При том, что MailChimp придумали мы же, Mandrill – тоже примат – стал занимать его экологическую нишу! И они оба довольно популярны. А ведь еще Дарвин называл разноцветный зад мандрила «экстраординарным».



К чему я клоню? Зайдя в Twitter и посмотрев записи с упоминанием продукта Mandrill, вы увидите то, что изображено на рис. 3–2. Нижний твит – о новом модуле, подключающем язык программирования Pearl к Mandrill. И это единственный релевантный твит. Те два, что выше, – про Spark Mandrill из игры Megaman X для Super Nintendo и группу под названием Mandrill.

Ужас!

Даже если вам в школьные годы нравился Megaman X, многие записи нерелевантны вашему поиску. Разумеется, туда попадает еще куча твитов о группе, об игре, о животных, а также других пользователях Twitter, в имени которых есть «mandrill», и всего три – о Mandrill.com. Это называется помехами. Много помех.

Так возможно ли создание модели, которая способна отличить сигнал от помех? Может ли модель ИИ извещать вас только о твитах о почтовом продукте Mandrill?

Итак, мы столкнулись с типичной проблемой классификации документов. Если документ, такой, как твит о Mandrill, может принадлежать к нескольким классам (он может быть о Mandrill.com, а может – о других мандрилах), то к какому классу его следует отнести?

Самый распространенный подход к решению этой проблемы – это использование модели «набор слов» (bag of words) в сочетании с наивным байесовским классификатором. Модель «набор слов» воспринимает документ как беспорядочное множество слов. «Джонни съел сыр» для него то же самое, что «сыр съел Джонни» – и то и другое состоит из одного и того же множества слов:{«Джонни», «съел», «сыр»}.

Наивный байесовский классификатор снабжается обучающим набором уже классифицированных «наборов слов». К примеру, можно загрузить в него несколько наборов о-приложении-Mandrill и несколько – о-других-мандрилах и обучать его отличать одно от другого. В будущем вы сможете скормить ему неизвестный набор слов, и он классифицирует его для вас.

Именно этим мы и займемся в данной главе – созданием наивного байесовского классификатора документов, который воспринимает твиты о мандрилах как наборы слов и выдает вам классификацию. И это будет весьма забавно. Почему?

Потому что наивный байесовский классификатор часто называют «идиотским Байесом». Как вы увидите ниже, придется делать множество неуклюжих, идиотских предположений насчет ваших данных, и все равно они сработают! Это что-то вроде рисования брызгами в моделировании ИИ. Из-за крайней простоты исполнения (он может уложиться в 50 строк кода) компании постоянно их используют для простых классификационных задач. С его помощью можно классифицировать электронную почту организации, записи поддержки пользователей, новостную рассылку, журнал полицейских приводов, медицинские документы, обзоры кинофильмов – что угодно!

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


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 | Следующая
  • 3 Оценок: 1

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации