Делаем ваши данные более понятными с помощью машинного обучения в SQL
Человек A: О нет, это происходит!
Человек Б: Это снова он?
Человек А: Да. Теперь он тоже занимается розничной торговлей!
Машинное обучение буквально меняет то, как раньше работали компании. Внедрение машинного обучения в организации стало стандартом, и почти все ключевые бизнес-решения принимались с помощью этих так называемых алгоритмов, и в настоящее время он оказывается очень эффективным по сравнению с традиционными методами. Понимания, основанной на существующих статических информационных панелях, больше недостаточно для принятия ключевых решений, поскольку необходимо учитывать не только прошлое, но и будущее.
Так что же такое машинное обучение и как эти алгоритмы используют прошлое, чтобы предсказать эти волшебные числа? Чем это отличается от традиционного программирования?
Основное различие заключается в том, как мы подходим к нашим данным. В традиционном программировании прогнозы выводятся на основе правил, созданных человеком, в то время как в машинном обучении эти правила будут заменены базовыми значениями истинности. Алгоритм пытается найти логику, с помощью которой он может предсказывать значения, близкие к истинным в большинстве случаев. Похоже на черный ящик для вас? Нет, это не так. Новаторские математические формулы, изобретенные различными великими умами в этой области, делают свое дело.
Итак, какова будет роль специалиста по данным, когда кажется, что алгоритма достаточно для работы? Что ж, роль Data Scientist - решить, какой алгоритм использовать в зависимости от характера данных. Специалисты по обработке данных обычно обладали широким спектром навыков, начиная от статистики и вероятности до знаний предметной области. Ключевая проблема здесь в том, что очень немногие из них обладают всеми этими наборами навыков. Итак, организации по всему миру начали переобучать своих существующих экспертов по данным с этими новыми наборами навыков, но основная проблема, с которой они сталкиваются, заключается в том, что им приходится изучать новый язык программирования, например Python или R, для выполнения машинного обучения. Python уже стал языком машинного обучения с его огромным сообществом и вкладом ведущих интернет-компаний. Вот где застряло предыдущее поколение экспертов по данным, потому что раньше они генерировали отличные идеи с помощью SQL, но теперь им нужно выучить новый язык, чтобы лучше использовать свои данные.
«Почему не существует способа реализовать машинное обучение с помощью самого SQL?»
Что ж, если вы один из тех, кто задавал этот вопрос, у меня есть для вас ответ. Oracle представила продукт под названием Oracle Autonomous Data Warehouse, который поставляется с готовой поддержкой машинного обучения. Вы можете создавать записные книжки на основе SQL для выполнения расширенного анализа ваших данных и получения ценной информации для вашей организации. В этом блоге я расскажу вам о сценарии использования, в котором мы будем использовать образцы данных для определения группы клиентов, которые собираются уйти, чтобы организации могли предпринять необходимые шаги для удержания своих клиентов. Всегда легче удержать клиентов, чем привлечь их.
Прогнозирование оттока с помощью машинного обучения - способ SQL
Прогнозирование оттока - это тип проблемы классификации, в которой мы будем прогнозировать набор клиентов, которые собираются оттолкнуться, на основе различных параметров, таких как демографические данные клиентов, использование, отзывы и т. Д.,
Обзор
Показатель оттока, также известный как показатель истощения, чаще всего известен как процент подписчиков службы, которые прекращают подписку в течение определенного периода времени. Это также скорость, с которой сотрудники увольняются с работы в течение определенного периода. Чтобы компания могла расширить свою клиентуру, ее темп роста (измеряемый количеством новых клиентов) должен превышать скорость оттока клиентов.
Показатель оттока - особенно полезный показатель в телекоммуникационной отрасли. Сюда входят поставщики кабельного или спутникового телевидения, интернет-провайдеры и провайдеры телефонных услуг (поставщики услуг фиксированной и беспроводной связи). Поскольку у большинства клиентов есть несколько вариантов выбора, коэффициент оттока помогает компании определить, насколько она соответствует своим конкурентам. Если один из каждых 20 подписчиков услуги высокоскоростного Интернета прекратит подписку в течение года, ежегодный отток для этого интернет-провайдера составит 5%.
Цель
С помощью готовых сценариев машинного обучения в Oracle Autonomous Data Warehouse мы можем обучить модель, основанную на предыдущих выборках оттока, для прогнозирования будущих оттоков. Это будет проблема классификации (бинарной классификации), потому что мы пытаемся классифицировать клиента независимо от того, откажется он / она (да / нет), чтобы мы могли соответственно предоставлять персонализированные предложения.
Подход
Мы будем собирать необходимые данные и начинать понимать их, выполняя некоторый исследовательский анализ данных. Чем больше времени вы тратите на понимание своих данных, тем меньше усилий при создании и настройке моделей. Вот почему это важный шаг в каждом проекте Data Science. После лучшего понимания наших данных мы подготовим данные для фактического процесса создания модели.
Я предполагаю, что ваш экземпляр настроен и готов. Теперь мы можем начать с загрузки наших данных в таблицу в нашем автономном экземпляре. Вы можете использовать любой метод для загрузки данных, но я остановлюсь на способе разработчика SQL.
Загрузка данных
Подключитесь к SQL Developer, указав сведения о подключении к БД, и импортируйте файл CSV в таблицу с именем customer_details.
Создание записной книжки
Войдите, используя пользователя с разрешениями ML, и нажмите Блокноты на главной странице. Щелкните «Создать блокнот» и назовите его «Классификация оттока». Теперь откройте свой блокнот, и вы готовы погрузиться в свои данные.
Аналитика
Здесь у нас есть интересный вариант использования и данные, готовые для анализа. Следующие запросы дадут вам желаемый результат.
Обзор данных
Рекомендуется сначала выполнить это, чтобы вы могли получить представление о своих данных и фактических значениях, хранящихся в них. Вы можете проверить это, выполнив следующий запрос.
Проверить количество выборок данных
Нам нужно иметь представление о том, сколько данных доступно в нашем распоряжении. Вы можете узнать это, запустив следующий запрос.
У нас есть 7032 выборки данных в нашем наборе данных. Это относительно очень небольшой набор данных по сравнению с объемом данных, которые мы используем в наших реальных проектах Data Science, но этого достаточно для вас, чтобы начать работу.
Проверить целевое распространение
Поскольку это проблема классификации, вы, возможно, уже догадались, что наша цель имеет разные дискретные классы. Ты прав! В нашем примере нашими целевыми классами являются «Да» и «Нет». Нам очень важно понимать, как они распределяются. Причина этого в том, что если у нас есть огромный дисбаланс в наших данных (нечетное количество примеров), то, вероятно, наша модель всегда будет предсказывать класс большинства для повышения точности, а это не то, что мы хотим.
Примечание. Существуют разные наборы показателей для оценки производительности вашей модели, если у вас есть несбалансированность данных, например, F1 Score, Kappa и т. д., но пока позвольте нам придерживаться в качестве показателя точности.
Мы ясно видим, что существует дисбаланс данных, поскольку у нас больше выборок для «Нет», чем для «Да». Для решения этой проблемы нам может потребоваться использовать недостаточную / избыточную выборку в зависимости от данных.
Выполнение дополнительного анализа
Все дело в творчестве. С этого момента вы можете выполнять столько анализа, сколько хотите, чтобы лучше понимать свои данные. Я поделюсь некоторыми идеями, которые я попытался понять здесь, и которые откроют для вас возможности.
Подготовка данных
После понимания наших данных нам необходимо подготовить наши данные так, как это понимает Oracle. Всегда хорошо начинать с минимального количества функций, потому что, если ваша модель может правильно предсказывать это, зачем путать ее с дополнительными функциями? Давайте начнем с рассмотрения следующих функций: customerid (требование Oracle), пол, срок полномочий, ежемесячная плата, totalcharges и churn (Target). Итак, мы будем создавать представление только с этими столбцами.
Разделите данные на "Обучение" и "Тестирование"
Мы разделим наши данные на две части: одну для обучения модели, а другую - для проверки, насколько хорошо она работает с новыми данными. Для этого мы напишем процедуру PL / SQL.
Создание модели
Наконец, теперь мы можем работать над нашей моделью. В нашем случае мы создаем классификатор дерева решений, поэтому мы определяем его как тип алгоритма в таблице настроек модели. Затем передайте имя модели, тип проблемы, данные, индекс, цель и имя таблицы настроек в функцию CREATE_MODEL.
Применение модели
Итак, мы идем. Наша модель называется N1_CLASS_MODEL_2. Теперь нам нужно применить эту модель к нашему набору тестов, чтобы проверить, насколько хорошо наша модель обучена.
Получение информации
Вот некоторые из клиентов, которым грозит отток.
А вот список клиентов по прогнозируемому классу, вероятности и фактической достоверности. Как вы можете заметить, наша модель неправильно определила некоторые образцы, но вы всегда можете улучшить ее, обучив ее дольше или добавив больше функций, и я оставлю часть эксперимента вам.
До сих пор мы исследовали образцы данных, чтобы понять, как можно выполнять машинное обучение с помощью SQL в Oracle Autonomous Data Warehouse. В этом блоге показано, как можно использовать SQL для создания моделей машинного обучения. Вы определенно можете улучшить модель, которую мы построили, и я оставлю эту часть вам.
Если вы нашли этот блог полезным, поддержите мою работу, хлопая в ладоши, и дайте мне знать, если у вас возникнут какие-либо вопросы.
Венкатеш Прабху.