Support Vector Machines(SVM)

Bigjoo·2023년 6월 21일
0

Machine Learning

목록 보기
3/3
post-thumbnail

Support Vector Machines(SVM)

  • 회귀, 분류, 이상치 탐지 등에 사용되는 지도학습 알고리즘
  • 서포트 벡터 사이의 마진이 가장 큰 방향으로 학습
  • 지지 벡터 까지의 거리와 벡터의 중요도를 기반으로 예측 수행

kernel 기법

  • 입력 데이터를 고차원공간에 사상하여 비선형 특징을 학습할 수 있도록 확장하는 방법
  • Linear, polynomial, RBF 등 커널 기법 지원
#선형으로 구분 가능한 문제에서 사용
linear_svc = SVC(kernel='linear')

#비선형 데이터에 유용
polynomial_svc = SVC(kernel='poly')  
rbf_svc = SVC(kernel='rbf')

매개변수 튜닝

  • SVM은 사용하는 커널에 따라 다양한 매개변수 설정 가능
# degree = 다항식 차수, gamme = 매개변수 커널 계수
polynomial_svc = SVC(kernel='poly', degree=2, C=0.1, gamma='auto')
rbf_svc = SVC(kernel='rbf', C=2.0, gamma='scale')

데이터 전처리

  • SVM은 입력 데이터가 정규화 되어야 좋은 성능을 보임
  • standardScaler, MinMaxScaler 정규화 진행
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)

SVM을 사용한 회귀 모델(SVR)

  • 회귀 문제를 다루기 위한 SVM방법

Linear SVR

  • 선형 회귀 문제 다룸
  • 입력 데이터 특성을 변환하지 않고 선형 결정 경계를 형성
# 당뇨병 데이터 사용
X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 데이터 정규화 진행
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# SVR 모델 생성, kernel = Linear 사용
model = SVR(kernel='linear')
model.fit(X_train, y_train)

Kernel SVR

  • 비선형 회귀 문제 다룸
  • 커널 함수를 통해 입력 데이터를 고차원 특성 공간으로 변환하고 비선형 결정 경계를 형성
# 당뇨병 데이터 사용
X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 데이터 정규화 진행
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# SVR 모델 생성, kernel = rbf 사용
model = SVR(kernel='rbf')
model.fit(X_train, y_train)

SVM을 사용한 분류 모델(SVC)

  • 분류 문제를 다루기 위한 SVM방법

Linear SVC

  • 선형 분류 문제 다룸
  • 입력 데이터 특성을 변환하지 않고 선형 결정 경계를 형성
# 유방암 데이터 사용
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 데이터 정규화 진행
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# SVC 모델 생성, kernel = Linear 사용
model = SVC(kernel='linear')
model.fit(X_train, y_train)

Kenel SVC

  • 비선형 분류 문제 다룸
  • 커널 함수를 통해 입력 데이터를 고차원 특성 공간으로 변환하고 비선형 결정 경계를 형성
# 유방암 데이터 사용
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 데이터 정규화 진행
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# SVC 모델 생성, kernel = rbf 사용
model = SVC(kernel='linear')
model.fit(X_train, y_train)
profile
ComputerVision 누구냐 넌

0개의 댓글