Scikit-Learn 에서 쌍대 메트릭 및 커널

Beginner

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

소개

이 실습에서는 scikit-learn 의 sklearn.metrics.pairwise 서브모듈을 탐색합니다. 이 모듈은 샘플 집합 간의 쌍별 거리와 친화도를 계산하는 유틸리티를 제공합니다.

다양한 쌍별 메트릭과 커널, 그 정의, 그리고 scikit-learn 에서 이들을 사용하는 방법을 배울 것입니다.

VM 팁

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

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

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

거리 메트릭

거리 메트릭은 두 개의 객체 간의 유사성을 측정하는 함수입니다. 이러한 메트릭은 음수가 아니고, 대칭이며, 삼각 부등식과 같은 특정 조건을 만족합니다.

일부 인기 있는 거리 메트릭으로는 유클리드 거리, 맨해튼 거리, 민코프스키 거리가 있습니다.

pairwise_distances 함수를 사용하여 두 개의 샘플 집합 간의 쌍별 거리를 계산해 보겠습니다.

import numpy as np
from sklearn.metrics import pairwise_distances

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## X 와 Y 사이의 쌍별 거리 계산
distances = pairwise_distances(X, Y, metric='manhattan')
print(distances)

출력:

array([[4., 2.],
       [7., 5.],
       [12., 10.]])

커널

커널은 두 개의 객체 간의 유사성을 측정하는 방법입니다. 특징 간의 비선형 관계를 포착하기 위해 다양한 머신 러닝 알고리즘에서 사용될 수 있습니다.

Scikit-learn 은 선형 커널, 다항 커널, 시그모이드 커널, RBF 커널, 라플라시안 커널, 카이제곱 커널과 같은 다양한 커널 함수를 제공합니다.

pairwise_kernels 함수를 사용하여 두 개의 샘플 집합 간의 쌍별 커널을 계산해 보겠습니다.

from sklearn.metrics.pairwise import pairwise_kernels

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## 선형 커널을 사용하여 X 와 Y 사이의 쌍별 커널 계산
kernels = pairwise_kernels(X, Y, metric='linear')
print(kernels)

출력:

array([[ 2.,  7.],
       [ 3., 11.],
       [ 5., 18.]])

코사인 유사도

코사인 유사도는 두 벡터 간의 유사성을 측정하는 방법입니다. 벡터를 정규화한 후 벡터 사이의 각도의 코사인을 계산합니다.

Scikit-learn 은 벡터 간의 코사인 유사도를 계산하기 위한 cosine_similarity 함수를 제공합니다.

from sklearn.metrics.pairwise import cosine_similarity

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## X 와 Y 사이의 코사인 유사도 계산
similarity = cosine_similarity(X, Y)
print(similarity)

출력:

array([[0.89442719, 0.9486833 ],
       [0.93982748, 0.99388373],
       [0.99417134, 0.99705449]])

다항 커널

다항 커널은 두 벡터의 차원 간 상호작용을 고려하여 두 벡터 간의 유사성을 계산합니다.

Scikit-learn 은 벡터 간의 다항 커널을 계산하기 위한 polynomial_kernel 함수를 제공합니다.

from sklearn.metrics.pairwise import polynomial_kernel

X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])

## X 와 Y 사이의 다항 커널 계산
kernel = polynomial_kernel(X, Y, degree=2)
print(kernel)

출력:

array([[ 10.,  20.],
       [ 17.,  37.],
       [ 38.,  82.]])

요약

이 실험에서는 scikit-learn 의 sklearn.metrics.pairwise 서브모듈을 탐색했습니다. 다양한 쌍대 (pairwise) 메트릭과 커널, 그 정의, 그리고 샘플 간의 거리와 친화도를 계산하는 방법을 배웠습니다.

pairwise_distances 함수를 사용하여 샘플 집합 간의 쌍대 거리를 계산했습니다. pairwise_kernels 함수를 사용하여 다양한 커널 함수를 사용하여 샘플 집합 간의 쌍대 커널을 계산했습니다.

또한 벡터 간의 코사인 유사도를 계산하는 cosine_similarity 함수와 다항 커널을 계산하는 polynomial_kernel 함수를 탐색했습니다.

이러한 쌍대 메트릭과 커널은 군집화, 차원 축소 및 유사성 기반 분석과 같은 다양한 머신 러닝 작업에 유용합니다.

요약

짝짓기 메트릭 실험을 완료하셨습니다! LabEx 에서 더 많은 실험을 통해 기술을 향상시킬 수 있습니다.