본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.

ML20

XGBoost vs Randomforest 데이터 사이언티스트(DS)로 성장하기 위해 모델의 분류와 모델에 관해 심도 깊은 이해가 필요하다. 그래서 이번에는 XGBoost와 Randomforest의 차이에 대해 알아보려고 한다. 또한 앞으로 모델을 세부적으로 공부하면서 간간히 모델에 대해 공부하고 포스팅을 하려고 한다. 왜 이 둘의 차이를 먼저 알아보는지 ? 이번 삼성 SDS Brightics 서포터즈 3기 면접에서 XGBoost와 Randomforest의 차이에 대해 여쭤봤지만.. 제대로 답하지를 못했다.. 동계 인턴십에서 '암예측'에서 사용했던 주요 모델 중 하나였지만, 모델을 제대로 숙지하지 않고 썼던 나를 반성하며 공부하려고 한다. XGBoost란? XGBoost는 현업에서 자주 사용하는 ML 모델이다. XGBoost는 Gradient B.. 2022. 6. 29.
Hands-on ML : 5.3 SVM 회귀 앞서 포스팅에 이어 SVM 알고리즘은 다목적으로 사용할 수 있다. SVM을 분류 뿐만 아니라 선형/비선형 회귀에도 사용할 수 있다. SVM을 분류가 아니라 회귀에 적용하는 방법은 목표를 반대로 하는 것이다. 일정한 마진 오류 안에서 두 클래스 간의 도로 폭이 가능한 한 최대가 되도록 하는 대신 SVM 회귀는 제한된 마진 오류(즉, 도로 밖의 샘플) 안에서 도로 안에 가능한 한 많은 샘플이 들어가도록 학습한다. 도로의 폭은 하이퍼파라미터 E로 조절한다. from sklearn.svm import LinearSVR svm_reg=LinearSVR(epsilon=1.5) svm_reg.fit(X,y) 비선형 회귀 작업을 처리하려면 커널 SVM 모델을 사용한다. 임의의 2차 방정식 형태의 훈련 세트에 2차 다항.. 2022. 6. 2.
Hands-on ML : 5.2 비선형 SVM 분류 https://honeyofdata.tistory.com/73 에 이어 포스팅을 하려 한다. 전에는 선형 SVM 분류를 살펴봤으면 이번에는 비선형 SVM분류를 살펴보려고 한다. 좌측이 선형 , 우측이 비선형 SVM 분류이다. 비선형 데이터셋을 다루는 한 가지 방법은 다항 특성과 같은 특성을 더 추가하는 것이다.9 from sklearn.datasets import make_moons from sklearn.pipeline import Pipeline from sklearn.preprocessing import PolynomialFeatures X,y=make_moons(n_samples=100,noise=0.15) polynomial_svm_clf=Pipeline([ ('poly_features',Pol.. 2022. 6. 2.
Hands-on ML : 5.1 선형 SVM 분류 SVM이란? SVM은 서포터 벡터 머신으로 매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델이다. SVM은 복잡한 분류 문제에 잘 들어맞으며 작거나 중간 크기의 데이셋에 적합하다. 5.1 선형 SVM 분류 SVM 분류기를 클래스 사이에 가장 폭이 넓은 도로를 찾는 것으로 생각할 수 있다. 도로 바깥쪽에 훈련 샘플을 더 추가해도 결정 경계에는 전혀 영향을 미치지 않는다. 도로 경계에 위치한 샘플에 의해 전적으로 결정된다. 이런 샘플을 서포트 벡터라고 한다. 5.1.1 소프트 마진 분류 모든 샘플이 도로 바깥쪽에 올바르게 분류되어 있다면 이를 하드 마진 분류(hard margin classification)라고 한다. 하드 마진 분류에는 두 가지 문제점이 있다.. 2022. 5. 26.
Hands-on ML : 4. 6 로지스틱 회귀 4.6 로지스틱 회귀 로지스틱 회귀(logistic regression)는 샘플이 특정 클래스에 속할 확률을 추정하는 데 널리 사용된다. 추정 확률이 50% 이상이면 모델은 그 샘플이 해당 클래스에 속한다고 예측, 아니면 클래스에 속하지 않는다고 예측한다. -> 이진 분류기이다. 4.6.1 확률 추정 로지스틱 회귀 모델은 입력 특성의 가중치 합에 편향을 더해 계산한다. 이때 선형 회귀처럼 바로 결과를 출력하지 않고, 결과값의 로지스틱(logistic)을 출력한다. 로지스틱은 0 과 1 사이의 값을 출력하는 시그모이드 함수(sigmoid function)이다. 이 함수를 거쳐나온 확률값으로 최종적으로 주어진 데이터가 어느 클래스에 속할지에 대해 결정하게 된다. 보통 확률값이 0.5 이상이면 1 (양성 클래.. 2022. 5. 26.
Hands-on ML : 4. 3 다항회귀 및 4.4 학습곡선 4.3 다항회귀 import numpy as np import matplotlib.pyplot as plt m = 100 X = 6 * np.random.rand(m,1) - 3 y = 0.5 * X**2 + X + 2 + np.random.randn(m,1) # 약간의 노이즈 포함 plt.plot(X,y,"b.") plt.show() 사이킷런의 PolynomialFeatures를 사용하여 훈련 데이터를 변환 from sklearn.preprocessing import PolynomialFeatures poly_features = PolynomialFeatures(degree=2, include_bias=False) X_poly = poly_features.fit_transform(X) print(X[0.. 2022. 5. 19.