그래디언트 부스팅 (Gradient Boosting)¶ 그래디언트 부스팅도 랜덤 포레스트 처럼 나무를 여러개 만든다. 단, 한꺼번에 나무를 만들지 않고 나무를 하나 만든 다음 그것의 오차를 줄이는 방법으로 다음 나무를 만들고, 이런 과정을 단계적으로 진행한다. 그래디언트 부스팅은 머신러닝 경연대회에서 우승을 많이 차지하였다. 어떻게 보면 점수를 올리기 위해 마지막 까지 모든 가능성을 쥐어짜는 방식이라고도 할 수 있다. In [4]: import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.datasets import l..
랜덤 포레스트 Random Forest)¶ 여러가지 머신러닝 모델을 연결하여 사용하는 것을 앙상블(ensemble) 방법이라고 한다. 결정트리를 사용한 앙상블에는 랜덤 포레스트와 그래디언트 부스팅 두가지 방법이 유명하다. 랜덤 포레스트는 결정트리를 여러개 만들고 각 결정 트리마다 무작위성(랜덤)을 부여하여 생성한다. 이렇게 나온 여러개의 결정트리의 결과를 평균하여 최종 결과를 낸다. 이는 결정트리의 과대적합 경향을 줄이고, 다양한 속성을 고려하게 된다는 의미가 된다. In [2]: import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split fr..
2장_10_결정트리 결정 트리 (Decision Tree)¶앞에서 배운 k-NN, 로지스틱회귀, SVM 등은 기하학적 분포와 거리 개념에 기반한 분류 알고리즘입니다.반면, 결정트리와 이에 기반한 알고리즘 들은 스무고개 놀이와 같이 계속 질문을 던져 가면서 예/아니오 를 판단하는 방식입니다. '예' 그룹인지 '아니오' 그룹인지가 중요하지 거리 개념은 기본적으로 없습니다.예측 점수를 가장 높게 하고 싶을 때 우선 적용을 고려하는 것이 커널 SVM 이나 결정 트리 방식입니다. 현재 여러 머신러닝 대회에서 가장 결과 점수가 높은 방식이 결정트리에 기반한 알고리즘입니다.결정트리는 거리를 재지 않기 때문에 정규화가 필요하지 않습니다.결정트리의 도전과제는 가장 잘 두 그룹으로 분..
2장_09_SVM 커널 서포트벡터 머신¶ 유방암 데이터에 커널 SVM 을 적용해 보겠습니다. In [2]: import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.datasets import load_breast_cancer from sklearn.svm import SVC cancer = load_breast_cancer() In [3]: malignant = cancer.data[cancer.target==0] # 37% benign = cancer.data[cancer.target==1] # 63% maligna..
2장_08_SVM 커널 서포트벡터 머신 (Kernel SVM)¶ 앞에서 선형 SVM 에 대해 배웠습니다. 선형 SVM 은 클래스 간의 간격을 가장 넓게 할 수 있는 곧은 평면을 찾는 것입니다. 하지만 곧은 평면 만으로 클래스를 구분 할 수 없는 경우가 많습니다. 커널 방법은 다양한 방법으로 속성을 증가시키거나 다항식이나 복잡한 곡선함수를 적용하여, 굽은 평면으로 클래스를 구분하는 방법입니다. 아래에서 동심원 형태의 데이터를 살펴보겠습니다. 커널 알고리즘의 핵심은 다양한 속성을 추가해 나가는 것이다. 아래는 2차 다항식을 추가하는 경우이다. In [2]: import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.m..
유방암 데이터 활용¶ scikit-learn 에는 유방암 데이터가 기본적으로 들어있다. 머신러닝 학습에 많이 사용되는 데이터 이므로 익숙해지자. 총 30개의 속성과 malignant(악성), benign(양성) 의 두가지 타겟값을 가지고 있다. In [1]: %pylab inline import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split Populating the interactive namespace from numpy and matplotlib In [2]: from sklearn.datasets import load_breast_can..
2장_06_로지스틱회귀 로지스틱 회귀 (Logistic Regression)¶로지스틱 회귀는 LinearSVM 과 같이 각 클래스를 직선 또는 평면 으로 가른다.시그모이드 함수는 계단함수를 표현하기 위함. 스위치 개념. 확률을 알려주는 함수 회귀함수를 구하여 시그모이드 함수에 대입> 분류하는데 많이 이용되지만 회귀라고 불리우는 이유In [2]: import numpy as npimport matplotlib.pyplot as pltIn [3]: from sklearn.datasets import make_blobsX, y = make_blobs(400, 2, [[0,0],[5,5]], [2,3])plt.scatter(X[:,0], X[:,1], c=y, s..
2장_05_LinearSVM_2 In [1]: import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris iris = load_iris() In [2]: from sklearn.model_selection import train_test_split col1 = 0 col2 = 1 X = iris.data[:,[col1,col2]] # 시각화를 위해 속성 2개만 선정 (petal length & petal width) # y = iris.target y = iris.target.copy() y[y==0] = 2 y[y==1] = 0 y[y==2] = 1 #y[y==2]=..