Введение:

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

Понимание двумерного и многомерного анализа:

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

Важность двумерного анализа:

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

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

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

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

Важность многомерного анализа:

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

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

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

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

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

Хотя продвинутые алгоритмы, такие как случайный лес и логистическая регрессия (с регуляризацией L1 и L2), могут определять важность признаков, они имеют определенные ограничения:

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

2. Смещенная важность признаков:важность признаков в таких алгоритмах, как Random Forest, может быть смещена в сторону числовых признаков или признаков с высокой кардинальностью. Это может упустить из виду важность категориальных или порядковых переменных.

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

  • Числовые признаки. Алгоритму легко работать с числовыми признаками, поскольку они представляют количества. Например, «Количество спален» — это числовая характеристика, которая находится в диапазоне от 1 до 5. Такие алгоритмы, как «Случайный лес», могут хорошо обрабатывать числовые характеристики и придавать им большее значение, поскольку они напрямую влияют на целевую переменную (цену дома).
  • Категориальные признаки. Категориальные признаки представляют различные категории или группы. Например, «Местоположение» может иметь такие значения, как «Нью-Йорк», «Лос-Анджелес» и «Чикаго». «Год постройки» может иметь такие значения, как «1990», «2005» и «2010». Поскольку Random Forest предназначен для работы с числовыми данными, он может неадекватно обрабатывать категориальные признаки. Это может упустить из виду важность категориальных переменных, особенно если они имеют много различных категорий (высокая кардинальность).
  • Влияние высокой кардинальности. Если в функции "Местоположение" указано много уникальных городов, Random Forest может не полностью учитывать ее важность при прогнозировании цен на жилье. Алгоритм может больше сосредоточиться на числовых характеристиках и упустить ценную информацию из категориальной функции «Местоположение», даже если она является критическим фактором при определении цены дома.

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

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

Примеры двумерных и многомерных программ:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets

# Load the iris dataset
iris_data = sns.load_dataset('iris')

# Univariate Analysis
def univariate_analysis(data, variable):
    # Histogram
    plt.figure(figsize=(8, 6))
    plt.hist(data[variable], bins=20)
    plt.title('Histogram of ' + variable)
    plt.xlabel(variable)
    plt.ylabel('Frequency')
    plt.show()

    # Box plot
    plt.figure(figsize=(8, 6))
    plt.boxplot(data[variable])
    plt.title('Box plot of ' + variable)
    plt.ylabel(variable)
    plt.show()

# Bivariate Analysis
def bivariate_analysis(data, variable1, variable2):
    # Scatter plot
    plt.figure(figsize=(8, 6))
    plt.scatter(data[variable1], data[variable2])
    plt.title('Scatter plot between ' + variable1 + ' and ' + variable2)
    plt.xlabel(variable1)
    plt.ylabel(variable2)
    plt.show()

    # Line plot
    plt.figure(figsize=(8, 6))
    plt.plot(data[variable1], data[variable2])
    plt.title('Line plot between ' + variable1 + ' and ' + variable2)
    plt.xlabel(variable1)
    plt.ylabel(variable2)
    plt.show()

    # Correlation matrix heatmap
    correlation_matrix = data[[variable1, variable2]].corr()
    sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
    plt.title('Correlation Heatmap between ' + variable1 + ' and ' + variable2)
    plt.show()

# Multivariate Analysis
def multivariate_analysis(data, variables_to_analyze):
    # Pair plot
    sns.pairplot(data[variables_to_analyze])
    plt.show()

    # Correlation matrix heatmap for multiple variables
    correlation_matrix_multivariate = data[variables_to_analyze].corr()
    sns.heatmap(correlation_matrix_multivariate, annot=True, cmap='coolwarm')
    plt.title('Correlation Heatmap for Multiple Variables')
    plt.show()

# Main function
if __name__ == "__main__":
    # print(iris_data.columns)
    # print(iris_data['species'].unique())
    
    # Perform univariate analysis on 'sepal_length' variable
    univariate_analysis(iris_data, 'petal_length')

    # # Perform bivariate analysis between 'sepal_length' and 'petal_length' variables
    bivariate_analysis(iris_data, 'petal_length', 'species')

    # # Perform multivariate analysis on all numerical variables
    numerical_variables = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
    multivariate_analysis(iris_data, numerical_variables)

    # Assuming 'target' is the name of the target variable and 'feature' is the name of the feature to analyze
    cross_tab = pd.crosstab(iris_data['species'], iris_data['sepal_length'])
    print(cross_tab)

Заключение:

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