Предпосылки Введение

Вода является основой для развития экономики, особенно для Танзании, одной из самых быстрорастущих экономик Африки, которая сталкивается с серьезным водным кризисом по всей стране. По данным water.org (https://water.org/our-impact/tanzania/), только 57% населения Танзании имеют доступ к улучшенному источнику безопасной воды, и только 30% населения Танзании имеет доступ к улучшенной санитарии. Другими словами, 25 миллионов человек не имеют доступа к безопасной воде, а 40 миллионов человек нуждаются в улучшенных санитарных условиях.

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

В этом проекте я собираюсь использовать набор данных от Tarrifa и Министерства водных ресурсов Танзании (https://www.drivendata.org/competitions/7/pump- it-up-data-mining-the-water-table / data / ), чтобы предсказать, работают ли водяные насосы хорошо, работают хорошо, но нуждаются в ремонте или не работают вообще (функциональные, функциональные, требующие ремонта, нефункциональные) на основе их атрибуты, такие как местоположение, количество воды, качество, источник, тип добычи и т. д. Подробное объяснение атрибутов можно найти здесь: https://www.drivendata.org/competitions/7/pump-it-up-data- добыча-вода-стол / страница / 25 / # features_eg .

В этом проекте я собираюсь использовать Tableau для визуализации данных, включая исследовательскую визуализацию данных перед интеллектуальным анализом данных и оценку производительности после интеллектуального анализа данных. Я также использую пакеты Python, такие как Pandas и Scikit Learn, для очистки данных и интеллектуального анализа данных. Для интеллектуального анализа данных будут использоваться такие алгоритмы, как логистическая регрессия, дерево решений, случайный лес, классификатор повышения градиента и нейронная сеть. А для оптимизации производительности будут использоваться такие методы, как MinMax Scale, Feature Importance Ranking и GridSearch.

Очистка данных и визуализация исследовательских данных

Очистка данных

Во время очистки данных я в основном сосредоточился на типах и нулевых значениях атрибутов и обнаружил, что есть нулевые значения в некоторых столбцах, таких как funder, installer, public_meeting и т. Д. В некоторых столбцах, таких как scheme_name, почти половина строк содержит нулевое значение . Поэтому я не могу просто удалить все строки с нулевыми значениями. Однако, учитывая тот факт, что нулевые значения существуют только среди категориальных атрибутов, я решил заполнить все эти нулевые значения категорией «неизвестно», чтобы получить набор данных без нулевых значений.

Визуализация данных с помощью Tableau

После очистки данных я импортировал очищенный набор данных в Tableau и провел исследовательский анализ данных, задавая один вопрос: что соотносится с функциональностью? Эта визуализация дает качественное представление о прогнозировании функциональности водяного насоса. Некоторые из важных выводов резюмируются ниже:

В целом: несбалансирован набор данных относительно целевой переменной

Сделана простая гистограмма для визуализации распределения целевой метки во всем наборе данных. Основываясь на графике, мы могли видеть, что более половины водяных насосов в наборе данных работают, а около 38% водяных насосов не работают. Лишь 7,27% насосов исправны, но требуют ремонта. Набор данных несбалансирован и смещен в сторону категорий «функциональный» и «нефункциональный». Этот дисбаланс дает нам основу для понимания разницы в точности прогнозирования между этими 3 категориями при оценке эффективности.

Статус по сравнению с ростом: в целом, с увеличением высоты функциональные возможности улучшаются

Гистограмма с накоплением выше показывает взаимосвязь между высотой и функциональностью. Ось Y - это интервалы высоты GPS, а именно диапазоны высот, такие как 0–200 м, 200–400 м. По оси абсцисс отложено соотношение различных групп состояний для всех насосов в этой группе высоты. Например, для всех насосов, расположенных ниже уровня моря, 52% работают, а 45% - нет. Мы могли видеть, что с увеличением высоты доля функциональных насосов в целом увеличивается, что указывает на общую положительную корреляцию между высотой и функциональностью.

Регион: у Линди и Мтвара самый высокий процент брака

В этой визуализации я создал новую переменную: процент дефектов, которая представляет собой долю «нефункциональных» насосов, и визуализировал на карте средний процент дефектов в различных регионах Танзании. Из карты видно, что процент брака чрезвычайно высок в 2 регионах: Линди (64,2%) и Мтвара (62,4%). Уровень дефектности сильно различается в зависимости от региона, что указывает на потенциальную возможность географических атрибутов в более позднем прогнозе.

Возраст: как правило, с возрастом частота брака соответственно увеличивается.

Как и гистограмма с накоплением для высоты, приведенная выше показывает положительную корреляцию между возрастом насоса и частотой дефектов. Я создал новую переменную: возраст насоса на основе года постройки и разделил возраст на группы на оси Y выше. Из диаграммы мы могли видеть, что с возрастом вероятность отказа насосов возрастает.

Качество и количество воды: насосы для сухой воды, скорее всего, не работают

Приведенная выше тепловая карта показывает взаимосвязь между частотой дефектов и комбинациями количества и типов воды. Из этой карты мы могли видеть, что существует сильная корреляция между количеством и функциональностью: если водяной насос сухой, то вероятность того, что этот насос не работает, по крайней мере, составляет 90%. Таким образом, уровень категории «сухой» может быть очень сильным индикатором функциональности. Несмотря на то, что у нас есть данные о количестве воды до прогноза, мы все равно должны беспокоиться об утечке данных: действительно ли сухой источник воды является сильным индикатором неисправности или его неработоспособность действительно приводит к источнику сухой воды?

Менеджмент: насосы, которыми управляет школа или компания, доставляют больше всего хлопот.

Я также использовал простую гистограмму, чтобы наглядно представить, как процент брака различается в зависимости от типа управления, и обнаружил, что управление школой и компанией наиболее проблематично, с долей брака более 75% и 58% соответственно, тогда как управление водным хозяйством Плата самая лучшая, процент брака всего 17%. Это ставит перед Министерством водного хозяйства Танзании реальную проблему: следует ли им изменить тип управления или больше сосредоточиться на улучшении управления водяными насосами в школах и компаниях?

Сбор данных

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

1. Для категориальных переменных: многомерность набора данных. В некоторых столбцах для одной категориальной переменной содержится более 2000 уровней. Если мы преобразуем все эти уровни в фиктивные переменные перед регрессией, будет слишком много столбцов (более 7000 столбцов). Эта высокая размерность затрудняет, а иногда даже делает невозможным выполнение определенных алгоритмов, таких как Gradient Boosting Classifier. В этом проекте размерность значительно снижена за счет исключения функции с нулевой важностью в модели дерева решений.

2. Для непрерывных переменных: очень разные шкалы. Непрерывные переменные имеют разные масштабы и диапазоны, например, долготы в основном находятся в диапазоне от 0 до 40, тогда как совокупность может достигать 30500. Поскольку регрессия выполняется при регуляризации L2, которая представляет собой сумму квадратных корней различных коэффициенты регрессии, окончательный результат может быть смещен, поскольку коэффициенты переменных с различным масштабом могут сильно отличаться. Поэтому мы использовали MinMaxScaler в Scikit Learn, чтобы нормализовать эти переменные в одном масштабе [0,1].

Классификатор дерева решений: точность набора тестов 76%

Сначала я использовал классификатор дерева решений, чтобы он соответствовал исходному набору данных большой размерности с более чем 7000 атрибутами. После этого я ранжировал переменные в соответствии с их важностью для прогнозирования целевой переменной и обнаружил, что большинство функций на самом деле бесполезны для прогнозирования, которые затем удаляются. После этого размерность набора данных значительно снижается с 7243 атрибутов до 1701. 20 основных характеристик визуализируются ниже с помощью Tableau:

Затем мы использовали низкоразмерный набор данных для повторного обучения модели и получили тот же результат: точность обучения 100% и точность тестирования 76%.

Логистическая регрессия: точность набора тестов 74,1%

Набор данных с выбранными фиктивными функциями из Decision Tree Classifier и нормализованными шкалами используется для логистической регрессии. Мы также использовали цикл for (аналогично GridSearch), чтобы выбрать лучший параметр C (параметр, установленный для управления штрафом, меньшее значение C означает более сложные модели), которые максимизируют точность тестовой выборки в пределах диапазона [1, 3, 5, 7]. Результаты представлены ниже. Мы можем видеть, что в целом точность теста довольно устойчива к выбору C. Однако C = 5 немного лучше, с достигнутой точностью набора тестов 74,1%.

Классификатор случайного леса: точность набора тестов 80%

Классификатор случайного леса также используется для прогнозирования. Для max_features установлено значение 20, а для количества деревьев установлено значение 100. Я также установил для class_weight значение «balance_subsample», учитывая дисбаланс набора данных. Случайный лес дал точность тестового набора 80%.

Точность тестового набора Gradient Boosting Classifier 80%.

В деревьях решений с градиентным усилением строится серия деревьев, где каждое дерево обучается так, чтобы пытаться исправить ошибку предыдущего дерева в серии. В этом проекте я увеличил max_depth со значения по умолчанию 3 до 10 и обнаружил, что по мере увеличения глубины деревьев точность увеличивается. Однако после 10 точность осталась прежней. Таким образом, классификатор Gradient Boosting Classifier дал такую ​​же точность набора тестов 80%.

Нейронная сеть: точность тестового набора 75%

Я также пробовал использовать MLPClassifier. Для параметра hidden_layer_sizes установлено значение [100, 100, 100], что означает 100 функций в каждом из 3 слоев, и достигается точность тестового набора 75%.

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

Оценка эффективности

Что такое точность

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

Из этой приборной панели видно, что точность прогноза различается в разных группах: для работающих водяных насосов точность прогноза самая высокая (87,48%), тогда как для насосов, нуждающихся в ремонте, точность прогноза составляет всего 36,17%. Это означает, что для насосов, которые действительно функционируют, 87% могут быть правильно спрогнозированы алгоритмом, но только 36,17% насосов, нуждающихся в ремонте, могут быть обнаружены текущими алгоритмами. Это также можно понять по приведенной ниже матрице путаницы:

когда Random Forest предсказывает «функциональность», вероятность правильной классификации составляет 81%. В то время как алгоритм предсказывает «функциональную потребность в ремонте», он имеет только 54,47% правильности. Таким образом, на самом деле предсказание функционального и нефункционального может быть очень надежным, тогда как люди должны быть особенно осторожны с предсказанием «функционального восстановления потребностей» из-за низкой точности.

Так почему это происходит? Почему существует такая разница в точности между разными группами статуса?

Чтобы понять эту разницу, мы должны понять, как Random Forest проводит такую ​​классификацию. При классификации различных уровней Random Forest фактически относит метку к уровню с наибольшей вероятностью. Например, предположим, что насос прогнозируется с вероятностью (функциональной) = 0,8, вероятностью (функциональная требует ремонта) = 0,7, вероятностью (нефункциональной) = 0,6, насос будет классифицирован как «исправный». Однако прогнозируемая вероятность смещена в сторону более крупных групп выборки. В этом проекте средняя вероятность (функциональная) ›Средняя вероятность (нефункциональная)› Средняя вероятность (функциональная вероятность требует исправления). Это может быть доказано на приборной панели ниже. Мы могли видеть, что распределение вероятностей «функциональной потребности в ремонте» смещено в сторону 0 и, следовательно, систематически ниже, чем две другие вероятности. Для всех насосов, которые действительно нуждаются в ремонте, средняя прогнозируемая вероятность (требуется ремонт) составляет всего 35%, что даже ниже, чем вероятность (функциональная), и поэтому не является устойчивым к ошибочной классификации.

Настройка весов вероятности для реалистичных целей

Это понимание ставит еще один вопрос: можем ли мы присвоить веса разным вероятностям, чтобы повысить точность в определенной статусной группе? Это похоже на установку порога для контроля ошибок типа I и типа II в задаче двоичной классификации. Как указывалось ранее, классификация случайных лесов основана на:

Макс. (Вероятность (работоспособна), Вероятность (требуется исправление), Вероятность (не работает)).

И теперь весовые коэффициенты присваиваются вероятности, чтобы контролировать определенные ошибки неправильной классификации, поэтому классификация основана на:

Макс (вероятность (работоспособна), x * вероятность (требуется ремонт), y * вероятность (не работает)).

Такой подход с взвешенной вероятностью может быть полезен в реальности, чтобы избежать ошибочной классификации, которая требует больших затрат. Например, в реальности правительство может не захотеть упустить ни одного нефункционирующего насоса, который повлиял на качество жизни и развитие экономики. В этом случае мы могли бы присвоить более высокий вес Prob (нефункциональный), чтобы избежать случая, когда нефункциональные насосы классифицируются как функциональные и, следовательно, пропускаются или игнорируются правительством. Мы также можем захотеть обнаружить другие насосы, нуждающиеся в ремонте. Этого можно добиться, установив более высокие веса для Prob (требуется ремонт функциональности). Панель инструментов ниже является примером такого случая: