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

Мне удалось загрузить некоторые данные с веб-сайта Всемирного банка здесь: https://data.worldbank.org/country/nigeria и использовать их в своем проекте. Я выбрал% стоимости производства, добавленной в технологическую отрасль, уровень грамотности взрослого населения, численность населения, уровень безработицы и рабочую силу с 1960 по 2019 год.

К сожалению, до 1991 года не было записей для большей части набора данных, поэтому мне пришлось избавиться от всех записей с 1960 по 1990 год. Я также исключил популяцию из набора данных, так как я чувствовал, что переменная рабочей силы была более связанной к уровню безработицы, который является нашей целевой переменной, поскольку уровень безработицы в этом наборе данных относится к рабочей силе в Нигерии. Переменная грамотности была в основном пуста, было доступно всего 4 строки, что не оставило мне выбора, кроме как отбросить и ее. Это означало, что теперь у меня было всего 30 строк данных!

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

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

Похоже, все начинает складываться. Теперь, поскольку это чрезвычайно маленький набор данных, имеющихся у нас функций будет недостаточно для обеспечения достаточно хорошей производительности для любого машинного обучения, которое мы можем сделать. Здесь мы можем использовать приятный трюк по разработке функций, а именно взаимодействия! Взаимодействия - это пары, которые мы можем создать между переменными, и это хороший способ сообщить модели, что эти переменные связаны. Подробнее об этом можно узнать здесь: https://www.kaggle.com/matleonard/feature-generation. А теперь давайте соберем все это вместе!

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

Наши данные временных рядов категоричны, поэтому мы должны иметь возможность каким-то образом их закодировать или использовать другие методы, такие как рекуррентные нейронные сети. Также есть недавно выпущенный набор инструментов, который может более эффективно обрабатывать данные временных рядов, называемый sktime. Однако для этого проекта я решил использовать кодировку счетчика. Это просто заменяет категориальные значения на то, сколько раз это значение появляется. Мы будем кодировать все категориальные значения, используя эту технику.

Если вы дочитали до этого места, вы заслуживаете хорошей шутки о питоне!

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

Для задач регрессии среднее значение категории, в которую попадает результат каждого теста, используется в качестве значения прогноза. Глубина дерева - это количество внутренних узлов в дереве после корневого узла.

А теперь самое интересное! Давайте тренироваться и прогнозировать, используя выбранную нами модель!

Мы получаем ошибку примерно 0,45 для наших прогнозов, что совсем неплохо, учитывая размер нашего набора данных. Несмотря на это, по-прежнему важно использовать доверительный интервал для наших прогнозов по тестовым данным, потому что наш набор данных чрезвычайно мал. Поскольку размер нашей выборки меньше 30, мы рассчитаем доверительный интервал Стьюдента.

Вы можете узнать все о доверительных интервалах здесь: https://sixsigmastudyguide.com/types-of-hypothesis-tests/#:~:text=Types%20of%20Hypothesis%20Tests%3A%20a,t%2Dtests%20compare% 20два% 20 образцов .

Загрузим тестовый набор данных и спрогнозируем уровень безработицы. Рабочая сила в тестовом наборе данных была спрогнозирована с учетом среднего% роста рабочей силы в Нигерии за последние пару лет, в то время как% увеличения производственной стоимости, добавленной к технологической отрасли в Нигерии, было намеренно увеличено на 5%. более 5 лет, чтобы проверить, верна ли наша альтернативная гипотеза.

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

Доверительный интервал студента-t для наших прогнозов, предполагающий уровень значимости 95%, составляет примерно [2,997, 12,45], а уровень безработицы в 2019 году составляет примерно [3,26,12,94]. Таким образом, мы можем предположить, что падение уровня безработицы, предсказанное нашей моделью, может быть статистически значимым, поскольку нижняя граница существует за пределами доверительного интервала уровня безработицы в 2019 году. Однако это только предположение и с большим набором данных , может оказаться неверным, потому что, если мы просто будем придерживаться нашего значения прогноза, прогноз нашей модели не будет статистически значимым. Тем не менее, поскольку данных недостаточно, будет принята альтернативная гипотеза о том, что увеличение стоимости обрабатывающей промышленности, добавленной к технологической отрасли в Нигерии, может снизить уровень безработицы.

Работать с очень маленькими наборами данных сложно, но, сохраняя простоту, расширяя возможности, когда это возможно, используя доверительные интервалы, вы можете делать разумные выводы на основе моделей с хорошей производительностью. Еще один прием, который можно было бы использовать здесь, - это обнаружение и обработка выбросов, поскольку они имеют гораздо более значительное влияние на производительность модели, когда набор данных чрезвычайно мал. Я также должен отметить, что эти прогнозы не принимают во внимание влияние пандемии COVID-19.

Если вы зашли так далеко, вы - жемчужина! Пожалуйста, свяжитесь со мной здесь и в Linkedin и похлопайте в ладоши, если вам понравилось! Вы можете ознакомиться с полным кодом здесь: https://www.kaggle.com/chizzi25/data-science-project-1-manufacturing-in-ng/edit/run/38483023

Пожалуйста, поделитесь своим мнением, если можете, и спасибо за чтение :)