Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023

Интеграция данных и предварительная обработка данных в ML

Подробное руководство по анализу данных для любого проекта машинного обучения от Кришны Манохара Вармы Индукури, Ника Беара Брауна

Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023

Вступление

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

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

@Chatgpturbobot -бесплатный chatgpt bot в телеграме.

Что такое Интеграция данных?

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

Что такое Средства интеграции данных?

Средства интеграции данных – это программные инструменты, которые принимают, консолидируют, преобразуют и перемещают данные из источника(ов) в пункт назначения, попутно выполняя сопоставления, преобразования и очистку данных. В конечном счёте, они интегрируют данные в ‘единый источник истины’, такой как озеро данных или хранилище данных. Это позволяет получать последовательные и надёжные данные для использования в аналитике и бизнес-аналитике.

Пример того, как работает человеческий мозг в отношении интеграции данных
Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023

Как люди интерпретируют то, что это маленькое животное – коала, а не белка или большая крыса?

Есть определённые атрибуты или особенности, которые отличают коал от других животных. Давайте обсудим, как человеческий мозг приходит к выводу всякий раз, когда мы видим коалу.

Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023
Нос коалы

Нос – одна из главных особенностей, которая отличает коалу от остальных подобных видов. На языке машинного обучения особенность с наибольшим вкладом при весе 0,7/1. Остальные 0,3 или 30% приходится на оставшиеся особенности, такие как уши и глаза.

Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023
Глаза коалы

Итак, аналогично с бизнес-данными, нам нужно объединить несколько важных атрибутов, чтобы придать смысл желаемому результату. Как показано выше, наличие только носа, ушей или глаз не имеет особого смысла, но объединение в одну цельную картинку (изображение коалы) дало нам необходимые данные для получения желаемого результата под названием KOALA.

Та же теория применима и к данным, связанным с бизнесом. Но часто данные становятся фрагментированными, плохо организованными и хранятся в нескольких разных системах хранения. Будучи профессионалом в области Data Science, вы должны чётко представлять бизнес-проблему и то, чего нужно достичь с помощью данных, а также где найти и собрать все необходимые данные.

Реальная проблема в мире

  • Давайте возьмём пример сценария реального мира: прогнозирование снегопада на озере Мичиган
  • У нас есть два разных набора данных, поступающих из двух источников. Один из них получен с геопространственного спутника для получения широтных и продольных данных о соответствующем времени. Другой – со спутника NOAA, который делает сотни снимков земной поверхности, предварительно обрабатывает изображения и возвращает данные, собранные путём анализа изображений. Давайте импортируем данные с помощью pandas и углубимся в эту тему:
import pandas as pd
df1 = pd.read_csv('https://raw.githubusercontent.com/Varmai/Data-sets/main/Date_time.csv')
df2 = pd.read_csv('https://raw.githubusercontent.com/Varmai/Data-sets/main/Cloud%20%26%20wind.csv')

Давайте интегрируем наборы данных с помощью метода python merge(), используя общий столбец с именем ‘id’:

df = pd.merge(df1, df2, on='id')
Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023

Теперь мы успешно соединили два фрейма данных и готовы перейти к предварительной обработке.

Что такое Предварительная обработка данных?

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

Этапы предварительной обработки данных

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

  • Оценка качества данных
  • Очистка данных
  • Преобразование данных
  • Сокращение объёма данных

Давайте вычислим все вышеперечисленные процессы с помощью кода:

1. Проверка наличия нулевых значений в данных является одним из важных шагов в оценке качества данных:

tabel = pd.DataFrame({
    'Unique':df.nunique(),
    'Null':df.isnull().sum(),
    'NullPercent':df.isnull().sum() / len(df),
    'NaNN':df.isna().sum(),
    'Type':df.dtypes.values,
})
tabel

С помощью приведённого выше кода мы сможем определить все недостающие значения и константы во всех объектах / столбцах в датасете. Если пропущенных значений нет, мы можем пропустить шаг 2 и перейти к шагу 3.

2. Существует несколько методов вставки отсутствующих значений в зависимости от типа данных и распределений.

  • Среднее или медианное заполнение
  • Регрессионное заполнение
  • Заполнение K-ближайшего соседа (KNN)
  • Последнее перенесённое наблюдение (LOCF) заполнение
  • Следующее наблюдение перенесло заполнение в обратном направлении (NOCB)
  • Заполнение с максимальной вероятностью
Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023

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

3. Преобразование данных:

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

from sklearn.preprocessing import LabelEncoder

for column in df.columns:
    fields = []
    if df[column].dtype == 'object':
        encoder = LabelEncoder()
        df[column] = encoder.fit_transform(df[column].values)

4. Сокращение объёма данных:

Все сильно коррелированные функции будут удалены, потому что модель ожидает только одну зависимую функцию и все остальные как независимые. Но в реальном мире одно значение тем или иным образом зависит от другого значения. Таким образом, индекс корреляции может поддерживаться в пределах 60-80% в зависимости от того, насколько важным будет признак для прогнозирования.

import matplotlib.pyplot as plt
import seaborn as sns

plt.subplots(figsize=(30,20))
sns.heatmap(df.corr(), annot=True)
plt.show()
Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023

Один краткий пример:

Для расчёта индекса BMI нам нужны такие характеристики, как вес, рост, возраст, ежедневное потребление калорий, физическая активность и т.д., а выходной / зависимой функцией будет BMI. Но если мы рассчитаем корреляцию между признаками, то рост и вес зависят от возраста человека в возрасте до 18 лет. Потребление калорий зависит от физической активности. Спортсмен, потребляющий 4000-5000 калорий, вcё ещё остаётся худым, в то время как человек, ведущий сидячий образ жизни, потребляет 2500 калорий и всё ещё остаётся толстым. Итак, образ жизни имеет значение. Если мы внимательно понаблюдаем, то обнаружим корреляцию между самими независимыми функциями, что означает большее количество зависимых переменных в данных. Тем не менее, все столбцы необходимы для точного расчёта индекса массы тела человека.

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

Сокращение функций

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

import numpy as np 

cor_matrix = df.corr().abs()
print(cor_matrix)

upper_tri = cor_matrix.where(np.triu(np.ones(cor_matrix.shape),k=1).astype(np.bool))
print(upper_tri)

to_drop = [column for column in upper_tri.columns if any(upper_tri[column] > 0.80)]
print(to_drop)

df = df.drop(columns = to_drop, axis=1)
print(df)

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

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

Масштабирование данных для устранения смещения

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

from sklearn.preprocessing import MinMaxScaler

X = df.drop(columns='LES_snowfall')
y = df['LES_snowfall']

scaler = MinMaxScaler(feature_range=(0,1))
X = scaler.fit_transform(X)

Приведённый выше код преобразует все значения независимых объектов от 0 до 1. Это гарантирует отсутствие смещения в сторону какой-либо конкретной функции при вычислении алгоритма.

Балансирующая зависимая переменная

Давайте предположим, что 90% данных не показывают снегопада, и только 10% данных показывают снегопад в функции вывода. Сами по себе эти данные имеют уклон в сторону отсутствия категории снегопадов. Модель предсказывает даже отсутствие снегопада в будущих случаях, поскольку алгоритм обучен смещению (отсутствие снегопада), что хуже того, что даёт неточные прогнозы. Итак, чтобы устранить будущие сложности, мы сбалансируем данные с помощью соотношения 50 на 50.

from imblearn.over_sampling import SMOTE

smote = SMOTE()
X, y = smote.fit_resample(X, y)
ros_chd_plot=y.value_counts().plot(kind='bar')
plt.show()
Контролируемое машинное обучение (ML): Ускоренный курс по обработке данных 2023

На этом этапе завершается предварительная обработка данных. Теперь мы готовы подогнать эти данные под любую модель машинного обучения.

Заключение

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

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

Подробное объяснение с кодом приведено на GitHub.

Ссылки на используемую литературу

https://streamsets.com/learn/data-integration/?gclid=Cj0KCQiAutyfBhCMARIsAMgcRJTnyXp3aC2sAp8LsumeCf0P0CwF2U_oe4CqKREfSrz88UyNnT0p2BIaArnAEALw_wcB

https://monkeylearn.com/blog/data-preprocessing/

+1
0
+1
1
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *