F-검정과 상호 정보량 비교

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 단변량 F-검정 통계량과 상호 정보량의 차이점을 배우게 됩니다. scikit-learn 라이브러리를 사용하여 데이터 세트에 F-검정과 상호 정보량 회귀를 수행하고 결과를 비교할 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 연습을 위한 Jupyter Notebook에 접속할 수 있는 Notebook 탭으로 전환합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 가져오기

이 실습에서는 필요한 라이브러리를 가져오는 것으로 시작합니다. 이 실습에서는 numpy, matplotlib, scikit-learn 을 사용할 것입니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression

데이터셋 생성

이 실습에서는 3 개의 특징을 가진 데이터셋을 생성합니다. 첫 번째 특징은 대상과 선형 관계를 가지고, 두 번째 특징은 대상과 비선형 관계를 가지며, 세 번째 특징은 완전히 관련이 없습니다. 이 데이터셋에는 1000 개의 샘플을 생성할 것입니다.

np.random.seed(0)
X = np.random.rand(1000, 3)
y = X[:, 0] + np.sin(6 * np.pi * X[:, 1]) + 0.1 * np.random.randn(1000)

F-검정 계산

이제 각 특징에 대한 F-검정 점수를 계산합니다. F-검정은 변수 간의 선형 종속성만 포착합니다. F-검정 점수를 최대 F-검정 점수로 나누어 정규화할 것입니다.

f_test, _ = f_regression(X, y)
f_test /= np.max(f_test)

상호 정보량 계산

이제 각 특징에 대한 상호 정보량 점수를 계산합니다. 상호 정보량은 변수 간의 모든 종류의 종속성을 포착할 수 있습니다. 상호 정보량 점수를 최대 상호 정보량 점수로 나누어 정규화할 것입니다.

mi = mutual_info_regression(X, y)
mi /= np.max(mi)

결과 플롯

이제 각 특징과 각 특징에 대한 F-검정 및 상호 정보량 점수에 대한 대상의 종속성을 플롯합니다.

plt.figure(figsize=(15, 5))
for i in range(3):
    plt.subplot(1, 3, i + 1)
    plt.scatter(X[:, i], y, edgecolor="black", s=20)
    plt.xlabel("$x_{}$".format(i + 1), fontsize=14)
    if i == 0:
        plt.ylabel("$y$", fontsize=14)
    plt.title("F-검정={:.2f}, 상호 정보량={:.2f}".format(f_test[i], mi[i]), fontsize=16)
plt.show()

요약

이 실험에서 우리는 단변량 F-검정 통계와 상호 정보량의 차이점을 배웠습니다. 데이터 세트에 대해 F-검정과 상호 정보량 회귀를 수행하고 결과를 비교했습니다. F-검정은 변수 간의 선형 종속성만 포착하는 반면, 상호 정보량은 변수 간의 모든 종류의 종속성을 포착할 수 있다는 것을 발견했습니다.