Разбор проекта и пошаговое руководство по коду

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

Если вам интересно, вот разбивка:

  1. Предпосылки к обучению без учителя
  2. Алгоритм K-средних - процесс кластеризации, математика, приложения
  3. Разбор проекта и кода

Предпосылки к обучению без учителя

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

Цель обучения без учителя - получить немаркированные входные данные, понять закономерности и сгруппировать данные в немаркированные выходы.

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

Давайте посмотрим на пример:

Здесь модели даны неизвестные выходы / немаркированные данные. У нас есть изображения серого животного и коричневого животного. Нам неизвестны их имена (ярлыки). Модель берет немаркированные данные и проходит через конвейер распознавания образов и вывода.

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

Затем мы создаем алгоритм, основанный на шаблонах, которые мы видели в данных. И оценка модели, при которой мы тестируем набор данных и определяем, правильно ли спрогнозированы выходные данные. Этот вывод - кластеры.

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

Алгоритмы неконтролируемого обучения могут обнаруживать закономерности в данных с помощью нескольких основных задач:

  • Кластеризация: это метод интеллектуального анализа данных, который используется для группировки немаркированных данных на основе сходства или различий. В сегодняшнем проекте мы будем использовать кластеры неконтролируемого обучения для сегментации рынка.
  • Ассоциация: метод, который находит отношения между переменными в заданном наборе данных. Например, когда Amazon рекомендует вам новые продукты на основе того, что купили другие люди, купившие тот же продукт.
  • Снижение размерности: это метод обучения, используемый, когда количество функций в данном наборе данных слишком велико. Уменьшение размерности сокращает количество вводимых данных до меньшего размера. Большая часть этого используется для очистки данных, предварительной обработки визуальных данных. Этот метод в основном используется для улучшения качества изображения.
  • Обнаружение аномалий: используется для распознавания чисел, шаблонов, которые не соответствуют заданному набору данных.

Алгоритм K-средних: процесс кластеризации, математика, приложения

Процесс кластеризации

Алгоритм K-средних берет непомеченные данные и разбивает их на кластеры. Таким образом YouTube может рекомендовать новые видео на основе того, что смотрели другие. Механизм рекомендаций принимает немаркированные входные данные и разделяет зрителей на группы людей в зависимости от их предпочтений.

Есть два основных способа разделения данных с помощью алгоритма K-средних: метод локтя и метод цели. Метод локтя строит линию с разными точками данных. По оси абсцисс отложено количество кластеров, а в строке мы ищем точку изгиба. Эта точка дает нам идеальное количество кластеров, и мы можем разбить группу на основе этого значения k.

Целевые методы группируются в n кластеров на основе целевых точек, которые мы даем данным. В этом примере мы хотим разделить размер футболки на основе цены и трех размеров; поэтому модель разделяет данные на малые, средние и большие кластеры. Если бы мы попросили 5 размеров, мы бы получили: XS, S, M, L, XL. Шесть кластеров и т. Д.

Математика

Математика, лежащая в основе алгоритма K-средних, проста.

Мы измеряем значения K, ища малую инерцию и небольшое количество кластеров. Инерция - это степень кластеризации набора данных с помощью K-средних. Мы вычисляем это, измеряя расстояние между точками данных и центроидами, возводя расстояние в квадрат и суммируя квадраты по одному кластеру.

Лучший способ сделать это - метод локтя, поскольку существует компромисс между K и инерцией. По мере увеличения K инерция уменьшается.

Чтобы найти кластерные группы, нам нужно выполнить пятиэтапный процесс:

Инициализация: первый шаг - случайный выбор центроида для каждого кластера. Центроид - это центр кластера. В K-означает, что вы случайным образом выбираете местоположения центроидов. После выбора каждая выборка данных назначается ближайшему центроиду, чтобы начать создание более точных кластеров.

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

Назначение кластера. Второй шаг - вычислить расстояние между точками данных и центроидом на основе их инициализации.

Оптимизация. Третий шаг - оптимизация кластеров. Цель состоит в том, чтобы центроиды кластера становились статичными и останавливали итерационные изменения.

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

Конвергенция: разбивает точки данных на n кластеров.

Приложения

Шаблоны и структура - это две основные вещи, которые мы ищем при обучении без учителя.

Примеры:

Системы рекомендаций: Google рекомендует продукты, которые вы должны приобрести, на основе истории просмотров на Amazon. Собирает данные с разных веб-сайтов, отображает шаблоны того, какие продукты имеют смысл покупать в будущем.

Целевой маркетинг: группировка клиентов по местоположению, интересам, привычкам.

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

Показатели отсева (EdTech): сгруппируйте студентов по группам, которые бросают школу, а не тех, кто не бросает учебу, на основе собранных данных. Затем мы можем помочь с переходом, уведомлением и доставкой ресурсов и т. Д.

Разбор проекта и кода

Проект

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

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

Я хотел разработать целевой маркетинговый алгоритм, чтобы визуализировать данные о клиентах торговых центров и сгруппировать их по возрастам и потенциальным покупаемым товарам.

Разбор кода

Первым шагом был импорт разных библиотек, чтобы я мог максимально использовать набор данных. Такие библиотеки, как seaborn, позволили мне создавать визуализации для набора данных. matplotlib.pyplot позволил мне построить все данные. Вы увидите, что plt и sns используются во всем коде, поскольку они использовались для извлечения из этих библиотек.

df обозначает фрейм данных. Фрейм данных - это когда данные в Python являются табличными, то есть в них есть строки и столбцы.

В строке 6 я говорю библиотеке pandas прочитать импортированный мной набор данных, и я ссылаюсь на имя набора данных.

df.head = возвращает первые пять строк кода, чтобы разработчик мог это увидеть.

df.shape = возвращает форму набора данных.

df.dtypes = понимание типов данных.

df.isnull() = возвращает данные, где это логическое значение.

строка 17 = команда компьютеру для удаления «Идентификатора клиента». Чтобы опустить, мне пришлось назначить логическое (True / False) значение и расположить ось состояния.

строка 21 = команда для построения фигуры + там, где она должна быть построена. figsize = (15,6) означает 15 строк и 6 столбцов данных. В Python мы читаем координаты как (строки, столбцы).

строка 23 = первый for цикл! цикл for в Python позволяет мне повторять каждую запись с помощью одной команды. Я перечислил значения, которые я хотел измерить / которые уже присутствовали в наборе данных. plt.subplot добавил третье значение. n = индекс.

Строки 25–29 - это команды для графика, заголовок графика и указание записной книжке Jupyter показать первый график.

Строки 35–45 были такими же, но с другим циклом for и визуализацией. n=0 или n+=1 означает количество нулевых объектов.

строка 47 = определение переменной agexlabel(“Age”)25 и фрейма данных, а также переменной, которую я хотел протестировать.

строка 53 = список всех данных и agex как команда, чтобы сообщить компьютеру, какой доступ получает возраст, и agey, чтобы сообщить компьютеру длину возрастов / значений.

строки 56–61 = команды о визуализации данных. xlabel(“Age”) означает, что на оси X должен быть указан возраст метки.

строка 63 = ссылка на морской анализ и визуализацию данных.

строки 67–97 = то же, что и 47 и ниже.

строка 99 = переменная X1 и фрейм данных на основе метки. На основе меток означает указание имени строк / столбцов, которые необходимо отфильтровать.

линия 102 = сумма квадратов расстояния между каждой точкой и центроидом кластера. Здесь мы начали рисовать функции локтя. wcss - это команда для просмотра этих данных.

строки 103–114 = то же, что и 102

строка 114 = определение количества кластеров, найденных в методе отвода, и печать этого количества центров.

строка 124 = введение нового сюжета - разброса.

строка 131 = создана новая переменная / график.

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

Ключевые выводы

  • Есть разные способы визуализировать и отображать данные. В моем коде я использовал графики скрипки, графики распределения, штриховые графики и т. Д. Каждый график предоставляет различное значение. Главное, чтобы понять, какие идеи вы ищете и какой график поможет удовлетворить эту потребность?
  • Введите CSV-файл в Jupyter, а затем вызовите его в записной книжке. Я начал с того, что позвонил Mall_Customers.csv, не зная, что мне нужно получить данные из Kaggle и импортировать их в записную книжку.
  • Python интуитивно понятен для понимания, но цель состоит в том, чтобы перейти от написания вводного кода, чтения кода и выполнения практических задач к созданию рабочего кода и созданию программного обеспечения.

👋

Привет, спасибо, что прочитали статью! Я хотел бы услышать ваш взгляд на будущее образования! Я люблю писать о новых технологиях и решать сложные проблемы, например образование. На моем сайте zaynpatel.com есть еще мои работы! Отправьте мне электронное письмо, я бы хотел поболтать.

Больше контента на plainenglish.io