Support Vector Machines(SVM)
- 회귀, 분류, 이상치 탐지 등에 사용되는 지도학습 알고리즘
- 서포트 벡터 사이의 마진이 가장 큰 방향으로 학습
- 지지 벡터 까지의 거리와 벡터의 중요도를 기반으로 예측 수행
kernel 기법
- 입력 데이터를 고차원공간에 사상하여 비선형 특징을 학습할 수 있도록 확장하는 방법
- Linear, polynomial, RBF 등 커널 기법 지원
linear_svc = SVC(kernel='linear')
polynomial_svc = SVC(kernel='poly')
rbf_svc = SVC(kernel='rbf')
매개변수 튜닝
- SVM은 사용하는 커널에 따라 다양한 매개변수 설정 가능
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)
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)
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)
model = SVR(kernel='rbf')
model.fit(X_train, y_train)
SVM을 사용한 분류 모델(SVC)
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)
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)
model = SVC(kernel='linear')
model.fit(X_train, y_train)