데이터 분석

15. 서포트 벡터 머신

Uno_says 2024. 7. 9. 23:52
728x90

1. 손글씨 데이터셋('load_digits')

  • 손글씨 숫자 이미지를 포함하고 있다.
  • 0부터 9까지의 숫자 이미지를 포함하며, 각 이미지는 8*8 픽셀 크기이다.
  • 주로 분류 알고리즘을 테스트하고 비교하는 데 사용된다.

 

 

📌'load_digits'에서 10개의 샘플 이미지를 시각화

 

- 이미지 그리기

  • 'enumerate(axes.flatten())' 을 사용하여 서브플롯의 인덱스와 축 객체를 가져온다.
  • 'data[i].reshape((8, 8))'을 통해 데이터 배열을 (8, 8) 모양으로 변환하여 이미지로 만든다.
  • 'ax.imshow'를 사용하여 서브플롯에 이미지를 그린다.

 

 

 

 

2. 스케일링(Scaling)

  • 데이터를 특정한 스케일로 통일하는 것
  • 다차원의 값들을 비교 분석하기 쉽게 만들어주며, 자료의 오버플로우나 언더플로우를 방지하여 최적화 과정에서의 안정성 및 수렴 속도를 향상
  • 데이터를 모델링하기 전에 스케일링을 하는 것이 좋음

2-1. 스케일링의 종류

  • StandardScaler: 평균과 표준편차를 사용
  • MinMaxScaler: 최소, 최대값이 각각 0과 1이 되도록 스케일링
  • RobustScaler: 중앙값과 IQR사용(아웃라이어의 영향을 최소화)

 

📌네이버와 넷플릭스의 평점 비교

MinMaxScaler를 사용하여 평점을 0~1로 변환하였다.

 

 

2-2. 정규화(Normalization)

  • 값의 범위(Scale)을 0~1 사이의 값으로 바꿔주는 것
  • 정규화가 스케일링 중 하나
  • 학습 전에 Scaling을 하는 것
  • 머신러닝, 딥러닝에서 Scale이 큰 Feature의 영향이 비대해지는 것을 방지
  • scikit-learn에서 MinMaxScaler 사용

 

 

2-3. 표준화(Standardization)

  • 값의 범위(Scale)를 평균 0, 분산 1이 되도록 바꿔주는 것
  • 학습 전에 Scaling 하는 것
  • 머신러닝, 딥러닝에서 Scale이 큰 Feature의 영향이 비대해지는 것을 방지
  • scikit-learn에서 StandardScaler 사용

 

 

3. Support Vector Machine(SVM)

분류, 회귀 및 이상 탐지에 사용되는 강력한 감독 학습 기법이다. SVM의 주요 목표는 데이터 포인트를 클래스 사이의 최대 여백을 가진 결정 경계(또는 초평면)로 분리하는 것이다.

 

3-1. 초평면(Hyperplane):

  • 데이터 포인트를 다른 클래스와 구별하는 선형 경계를 나타낸다.
  • 2차원에서는 직선, 3차원에서는 평면, 고차원에서는 초평면으로 불린다.

3-2. 서포트 벡터(Support Vectors):

  • 결정 경계를 정의하는 데이터 포인트이다.
  • 서포트 벡터는 초평면에 가장 가까운 데이터 포인트로, 이 포인트들은 초평면의 위치를 결정하는 데 중요한 역할을 한다.

3-3. 마진(Margin):

  • 초평면과 가장 가까운 서포트 벡터 사이의 거리이다.
  • SVM은 이 마진을 최대화하는 초평면을 찾는다.

3-4. 커널 트릭(Kernel Trick):

  • 선형적으로 구분할 수 없는 데이터를 고차원 공간으로 매핑하여 선형적으로 구분 가능하게 만든다.
  • 주로 사용되는 커널 함수: 폴리노미얼 커널(Polynomial kernel), RBF(Radial Basis Function) 커널, 시그모이드 커널 등.

 

 

728x90