Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 인덱싱 #슬라이싱 #python #파이썬 #수정및삭제 #원소의수정 #객체의함수 #keys#values#items#get#len#append#sort#sorted
- Chap4 #다항회귀 #PolynomialRegression #ML #머신러닝
- 선형회귀 #정규방정식 #계산복잡도 #LinearRegression #Python #ML
- IDE #spyder
- 라쏘회귀 #엘라스틱넷 #조기종료
- Chap4 #ML #미니배치경사하강법 #경사하강법 #머신러닝 #핸즈온머신러닝
- 핸즈온머신러닝 #handson
- Chap4 #핸즈온머신러닝 #머신러닝 #핸즈온머신러닝연습문제
- 키워드추출 #그래프기반순위알고리즘 #RandomSurferModel #MarcovChain #TextRank #TopicRank #EmbedRank
- Chap4 #ML #배치경사하강법 #경사하강법 #핸즈온머신러닝 #핸즈온
- 티스토리 #수학수식 #수학수식입력 #티스토리블로그 #수식입력
- 경사하강법 #핸즈온머신러닝 #머신러닝 #ML
- Chap4 #릿지회귀 #정규방정식 #확률적경사하강법 #SGD #규제가있는선형모델
- 객체의종류 #리스트 #튜플 #딕셔너리 #집합 #Python #파이썬 #list #tuple #dictionary #set
- 티스토리블로그 #티스토리 #PDF #블로그PDF저장
- 파이썬 #Python #가상환경 #anaconda #python설치 #python가상환경
- Chap4
- 확률적경사하강법 #경사하강법 #머신러닝 #선형회귀 #ML #Chap4
- ML #핸즈온머신러닝 #학습곡선 #편향분산트레이드오프
- python #dataframe #파생변수 #map #lambda #mapping
- python #파이썬 #pandas #dataframe #dataframe생성 #valueerror
- adp #데이터분석전문가 #데이터분석자격증 #adp후기 #adp필기
Archives
- Today
- Total
StudyStudyStudyEveryday
[파이썬머신러닝] SVM 회귀 본문
SVM 알고리즘은 선형, 비선형 분류뿐 아니라 선형, 비선형 회귀도 사용할 수 있다.
SVM 회귀 (SVR, Support Vector Regression)
- SVR의 목적 : 제한된 마진 오류 (즉, 도로 밖 샘플) 안에서 도로 안에 가능한 많은 샘플이 들어가도록 학습한다.
- 도로 폭은 \(\varepsilon \)으로 조절한다.
다음은 사이킷런의 LinearSVR을 이용한 코드 예제이다.
# 데이터 생성
np.random.seed(42)
m = 50
X = 2 * np.random.rand(m, 1)
y = (4 + 3 * X + np.random.randn(m, 1)).ravel()
# SVM 회귀 모델 적합
from sklearn.svm import LinearSVR
svm_reg = LinearSVR(epsilon=1.5, random_state=42)
svm_reg.fit(X, y)
svm_reg1 = LinearSVR(epsilon=1.5, random_state=42)
svm_reg2 = LinearSVR(epsilon=0.5, random_state=42)
svm_reg1.fit(X, y)
svm_reg2.fit(X, y)
def find_support_vectors(svm_reg, X, y):
y_pred = svm_reg.predict(X)
off_margin = (np.abs(y - y_pred) >= svm_reg.epsilon)
return np.argwhere(off_margin)
svm_reg1.support_ = find_support_vectors(svm_reg1, X, y)
svm_reg2.support_ = find_support_vectors(svm_reg2, X, y)
eps_x1 = 1
eps_y_pred = svm_reg1.predict([[eps_x1]])
왼쪽 그래프의 경우 margin을 크게하고, 오른쪽 그래프의 경우 margin을 작게 하였다.
margin 안에서는 훈련 샘플이 추가되어도 모델의 예측에는 영향이 없다. 그래서 SVM 회귀 모델을 \(\varepsilon \)에 민감하지 않다고 한다.
다음은 사이킷런의 SVR을 이용한 코드 예제이다.
# 2차 다항 커널을 사용한 SVM 회귀
from sklearn.svm import SVR
svm_poly_reg1 = SVR(kernel="poly", degree=2, C=100, epsilon=0.1, gamma="scale")
svm_poly_reg2 = SVR(kernel="poly", degree=2, C=0.01, epsilon=0.1, gamma="scale")
svm_poly_reg1.fit(X, y)
svm_poly_reg2.fit(X, y)
비선형 회귀 작업 처리 시에는 커널 SVM 모델을 사용한다.
왼쪽 그래프의 경우 규제가 거의 없고 (C가 큼), 오른쪽 그래프의 경우 규제가 훨씬 많다. (C가 작음)
SVR도 SVC와 같은 특징을 가진다.
파이썬 클래스 | 시간 복잡도 | 외부 메모리 학습 지원 | 스케일 조정의 필요성 | 커널 트릭 |
LinearSVR | \(O(m \times n)\) | 아니오 | 예 | 아니오 |
SGDClassifier | \(O(m \times n)\) | 예 | 예 | 아니오 |
SVR | \(O(m^{2} \times n)\) ~ \(O(m^{3} \times n)\) | 아니오 | 예 | 예 |
SVR에 대한 내용은 아래 포스팅을 참고하면 좋다.
https://eundong64.tistory.com/19
[파이썬머신러닝] 비선형 서포트 벡터 머신 (SVM) 분류
5.2 비선형 SVM 분류 5.2.1 다항식 커널 5.2.2 유사도 특성 5.2.3 가우시안 RBF 커널 5.2.4 계산 복잡도 (추가) SVC와 SVR의 차이 선형 SVM 분류기가 효율적이고 많은 경우 잘 작동하지만, 선형적으로 분류할
eundong64.tistory.com
* 해당 포스팅은 머신러닝 학습 중 핸즈온 머신러닝 2판을 참고하여 작성하였습니다. *
'DataScience > 핸즈온 머신러닝 Hands-on ML' 카테고리의 다른 글
[파이썬머신러닝] 앙상블 학습과 랜덤 포레스트 (0) | 2022.05.07 |
---|---|
[파이썬머신러닝] 결정 트리 Decision Tree (0) | 2022.04.27 |
[파이썬머신러닝] 비선형 서포트 벡터 머신 (SVM) 분류 (0) | 2022.04.02 |
[파이썬머신러닝] 선형 서포트 벡터 머신 (SVM) 분류 (0) | 2022.04.01 |
[파이썬머신러닝] 로지스틱 회귀 (Logistic Regression) (0) | 2022.03.31 |
Comments