njs03332 / ml_study

3 stars 0 forks source link

2022/05/27~2022/06/02 #30

Open njs03332 opened 2 years ago

njs03332 commented 2 years ago

스크린샷 2022-05-27 오후 8 24 16

givitallugot commented 2 years ago

5. 서포트 벡터 머신


5.1 선형 SVM 분류


5.1.1 소프트 마진 분류

danbi5228 commented 2 years ago

5.2 비선형 SVM 분류

X, y = make_moons(n_samples=100, noise=0.15) polynomial_svm_clf = Pipeline([ ("poly_features", PolynomialFeatures(degree=3)), ("scaler", StandaradScaler()), ("svm_clf", LinearSVC(C=10, loss="hinge")) ])

polynomial_svm_clf.fit(X, y)

![image](https://user-images.githubusercontent.com/26505830/171621524-502318d7-8b84-410e-8f8b-11e686c2b321.png)

### 5.2.1 다항식 커널
- 다항식 특성을 추가하는 것은 간단하고 모든 머신러닝 알고리즘에서 잘 작동함
- 하지만 낮은 차수의 다항식은 매우 복잡한 데이터셋을 잘 표현하지 못하고,
높은 차수의 다항식은 굉장히 많은 특성을 추가하므로 모델을 느리게 만듦
- SVM의 경우 커널트릭을 사용해 실제로는 특성을 추가하지 않으면서 다항식 특성을 많이 추가한 것과 같은 결과를 얻을 수 있음
   - 모델이 과대적합이라면 다항식 차수를 줄여야하고, 과소적합이라면 차수를 늘려야 함
   - coef0는 모델이 높은 차수와 낮은 차수에 얼마나 영향을 받을지 조절
```python
from sklearn.svm import SVC
poly_kernel_svm_clf = Pipeline([
    ("scaler", StandardScaler()),
    ("svm_clf", SVC(kernel="poly", degree=3, coef0=1, C=5))
])

poly_kernel_svm_clf.fit(X,y)

image

njs03332 commented 2 years ago

4.6.4 소프트맥스 회귀

softmax_reg = LogisticRegression(multi_class="multinomial", solver="lbfgs", C=10) softmax_reg.fit(X, y)

- 꽃잎 길이 5, 너비 2인 붓꽃의 경우 94.2%의 확률로 Iris-Virginica (클래스2)라고 출력함
```python
>>> softmax_reg.predict([[5, 2]])
array([2])
>>> softmax_Reg.predict_proba([[5, 2]])
array([[6.38014896e-09, 5.74929995e-01, 9.42506362e-01]])