Что такое индекс массы тела (ИМТ)?

Индекс массы тела (ИМТ) - это показатель, который использует ваш рост и вес, чтобы определить, здоров ли ваш вес.

При расчете ИМТ вес взрослого в килограммах делится на его рост в метрах в квадрате. Например, ИМТ 25 означает 25 кг / м2.

Формула: вес (кг) / [рост (м)] ^ 2

ИМТ диапазоны

Для большинства взрослых идеальный ИМТ находится в диапазоне от 18,5 до 24,9.

Для детей и молодых людей в возрасте от 2 до 18 лет при расчете ИМТ учитываются возраст и пол, а также рост и вес.

Если ваш ИМТ:

  • ниже 18,5 - у вас недостаточный вес
  • от 18,5 до 24,9 - ваш вес находится в нормальном диапазоне
  • от 25 до 29,9 - у вас избыточный вес
  • от 30 до 39,9 - вы страдаете ожирением

Цель этого исследования :
Исходя из имеющихся данных, определить, к какому типу ИМТ принадлежит человек.

Обнаружение набора данных

Набор данных, который он использует, можно найти на Kaggle и содержит: индекс массы тела, вес и пол 500 человек, где рост и вес генерируются случайным образом, а индекс массы тела рассчитывается по формуле ИМТ.

К исходному набору данных я добавил столбец Статус, который показывает категорию ИМТ по сравнению со значениями в столбце Индекс, которые:
0 = Чрезвычайно слабый: ИМТ ‹16

1 = Слабая: 16 ‹ИМТ‹ 18,5

2 = Нормальный: 18,5 ‹ИМТ‹ 24,9

3 = избыточный вес: 25 ‹ИМТ‹ 29,9

4 = Ожирение: 30 ‹ИМТ 34,9

5 = крайнее ожирение: ИМТ ›35
Таким образом, анализ и визуализация данных становятся более понятными.

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

на рисунках ниже мы можем видеть гистограмму тренда статуса по весу и росту.

Точечная диаграмма, показывающая разные категории для всех точек данных

Трехмерный график разброса для различения мужчин и женщин, где: пол_m_f = 1 - мужской, пол_m_f = 0 - женский

Машинное обучение

Для создания нашей прогнозной модели нам нужно будет выполнить определенные шаги:

1 - Назначьте наши экземпляры данных и целевое значение (столбцы X и Y)

2 - Масштабирование функций и разделение данных на обучающие и тестовые наборы.

3 - Обучите нашу модель

4 -Проверьте и оцените модель.

1. Учитывая исходный набор данных, мы берем столбец Индекс как "целевую" переменную y, а остальные столбцы будут нашими X "предсказателей". Кроме того, присвойте столбцу Пол произвольные числа, например 1 для женщин и 0 для мужчин (аналогично логическому значению / истинности), чтобы различать их.

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

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

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

Как повысить производительность?
Для повышения производительности несбалансированных наборов данных используются различные методы. Я выбрал SMOTE ((Техника передискретизации синтетических меньшинств), это метод избыточной выборки. Он создает синтетические выборки класса меньшинства Он работает случайным образом, выбирая точку из класса меньшинства и вычисляя k-ближайших соседей для этой точки. Синтетические точки добавляются между выбранной точкой и ее соседями.

Original training set: X_train= (400, 3), y_train= (400,)
Training set after SMOTE: X_train_sm= (954, 3),y_train_sm= (954,)

Алгоритмы классификации

Тренировочные модели

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

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

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

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

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

5- Нейронные сети с тензорным потоком: Искусственные нейронные сети (ИНС) были созданы на основе обработки информации и распределенных коммуникационных узлов в биологических системах. ИНС имеют различные отличия от биологического мозга. В частности, нейронные сети, как правило, статичны и символичны, в то время как биологический мозг большинства живых организмов является динамическим (пластичным) и аналоговым.

Для нашего исследования мы строим многослойный персептрон с двумя скрытыми слоями. В нашей архитектуре на этот раз будут нейроны = X_Train_sm во входном слое, 64 нейрона в 2 скрытых слоях и 6 в выходном слое. Мы также изменим функцию активации на ReLu и будем использовать оптимизатор adam. Наша модель будет выглядеть так:

Перед обучением модели нам необходимо настроить процесс обучения, который осуществляется с помощью метода компиляции.

Метод компиляции получает три аргумента: оптимизатор. Мы используем алгоритм оптимизации Адама, который можно использовать вместо классической процедуры стохастического градиентного спуска для итеративного обновления сетевых весов на основе данных обучения. . L функция oss. Это цель, которую модель попытается минимизировать. Список показателей. Для любой проблемы с классификацией вам нужно будет установить для него значение metrics = [‘точность’].

Протестируйте и оцените модель

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

Матрица неточности определяет количество TP (истинно положительное), TN (истинно отрицательное), FP (ложное положительное), FN. (ложноотрицательный) в предсказаниях классификатора.

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

Точность = TP + TN / TP + FP + FN + TN

Мы можем видеть, что TP или FP, которые мы находим из матрицы путаницы, находятся между классами, которые близки друг к другу, то есть: нет неправильной классификации между Extremely Obese и Normal, которые находятся далеко друг от друга.

Из-за путаницы Матрица и точность лучшими лучшими классификаторами были SVM и нейронные сети, но я думаю, что если бы у нас было больше данных, с нейронными сетями у меня были бы лучшие результаты. Обычно нейронные сети с тензорным потоком используются только тогда, когда у вас много данных, но в данном случае я хотел использовать их только и подчеркиваю только, в образовательных целях, потому что с задачами мультикласса это настоятельно рекомендуется.

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

Теперь я хочу протестировать модели на своих данных:

Пол = 0 - мужской
Рост = 181
Вес = 72

Индекс 2 означает Нормальный: Вау! это работает, и у меня хороший ИМТ ❤

Выводы

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

Надеюсь, это чтение было для вас полезным и понятным, предложения принимаются.

Библиография и источники вдохновения