본문 바로가기
python 및 머신러닝/파이썬 라이브러리를 활용한 머신러닝

파이썬 라이브러리를 활용한 머신러닝 3장

by java개발자 2017. 8. 18.

3.3.1 여러 가지 전처리 방법(169p)

StandardScaler : 각 특성의 평균을 0, 분산을 1로 변경하여 모든 특성이 같은 크기를 가진다. 최대값, 최소값을 제한하지는 않는다.

RobustScaler : 평균과 분산 대신 중간값과 사분위값을 사용한다. 모든 특성이 같은 크기를 가진다. 최대값, 최소값을 제한하지는 않는다.

(이상치(에러) 데이터의 영향을 덜 받음)

MinMaxScaler : 모든 특성이 정확하게 0과 1사이에 위치

Normalizer : 특성 벡터의 유클리디안 길이가 1이 되도록 데이터 포인터 조정. (데이터의 방향만이 중요할때 많이 사용)


3.4 차원 축소, 특성 추출, 매니폴드 학습(178p)

3.4.1 주성분 분석(PCA) -178p

: 특성들이 통계적으로 상관관계가 없도록 데이터셋을 회전시키는 기술

3.4.2 비음수 행렬 분해(NMF) - 197p

: 음수가 아닌 성분과 계수 값을 찾음.

: 데이터에 있는 유용한 패턴을 찾는 데 활용함.

3.4.3 t-SNE를 이용한 매니폴드 학습 - 205p

: 데이터 포인트 사이의 거리를 가장 잘 보존하는 2차원 표현을 찾는 것


3.5 군집

3.5.1 k-means (k-평균 군집) - 210p

: 데이터의 어떤 영역을 대표하는 클러스터 중심을 찾는다.(중심 임의 할당 -> 중심 재계산 -> 중심 재할당 -> 중심 재계산 ...)


 page

 

 데이터

 알고리즘

 결과

 212

 

 X, y = make_blobs(random_state=1)

 KMeans(n_clusters=3)

 클러스터 3개를 정확히 찾아냄

 214  X, y = make_blobs(random_state=1)

 KMeans(n_clusters=2)

 이상하게 분류함

 214  X, y = make_blobs(random_state=1)

 KMeans(n_clusters=5)

 이상하게 분류함
 215

 실패 케이스

 X, y = make_blobs(random_state=170

  , n_samples=200

  , cluster_std=[1.0, 2.5, 0.5]
)

 KMeans(n_clusters=3
  , random_state=0)

 이상하게 분류함 - 멀리 떨어진 포인트를 포함.

 --> 모든 클러스터의 반경이 똑같다는 가정 때문에 클러스터간의 중심 사이에 정확히 중간에 경계를 그림. 

 217 실패 케이스

 X, y = make_blobs(random_state=170

  , n_samples=600

)

 KMeans(n_clusters=3)

 이상하게 분류함 --> k평균은 클러스터에서 모든 방향이 똑같이 중요하다고 가정함

 218 실패 케이스

 make_moons(n_samples=200

  , noise=0.05

  , random_state=0)

 KMeans(n_clusters=2)

 복잡한모형을 구분하지 못함.

 222 벡터 양자화 make_moons(n_samples=200

  , noise=0.05

  , random_state=0)

 KMeans(n_clusters=10

 , random_state=0)

 복잡한모형을 여러 클러스터로 나눠버림.

     

장점

1.대용량 데이터셋에는 MiniBatchKMeans 이용


단점

1. 무작위 초기화를 사용하여 알고리즘의 출력이 난수 초깃값에 따라 달라진다.

2. 클러스터의 모양을(구형) 가정하고 있기 때문에 활용 범위가 비교적 제한적이다.

3. 찾으려는 클러스터의 개수를 지정해야 한다.

--> 개선 : 병합군집, DBSCAN


3.5.2 agglomerative clustering 병합 군집 - 224p

: 처음에 모든 데이터를 클러스터로 지정하고, 합쳐나가는 것

ward : 모든 클러스터 내의 분산을 가장 작게 증가시키는 두 클러스터를 합칩니다.

average : 연결 클러스터 포인트 사잉의 평균 거리가 가장 짧은 두 클러스터를 합칩니다.

complete : 연결(최대 연결)은 클러스터 포인트 사이의 최대 거리가 가장 짧은 두 클러스터를 합칩니다.


 page

 

 데이터

 알고리즘

 결과

 226 ward

 X, y = make_blobs(random_state=1)

 AgglomerativeClustering(n_clusters=3)

 완벽하게 찾아냄

 228 덴드로그램

 X, y = make_blobs(random_state=0

  , n_samples=12)

 dendrogram(ward(X))

 
     

단점

1. two_moons 데이터셋과 같은 복잡한 형상을 구분하지 못함.


3.5.3 DBSCAN(density-based spatial clustering of applications with ) - 230p

: 클러스터의 개수를 미리 지정할 필요가 없음.

특성 공간에서 가까이 있는 데이터가 많아 붐비는 지역의 포인트를 찾음.

 page

 

 데이터

 알고리즘

 결과

 231 

 X, y = make_blobs(random_state=0
  , n_samples=12)

 DBSCAN

 전부 -1 레이블을 할당함
 --> 파라메터 변경 필요

 min_samples=2, eps=1.5에서 가장 잘 분류함.

 233

 스케일 조정

 X, y = make_moons(n_samples=200

  , noise=0.05

  , random_state=0)

 DBSCAN 정확히 구분
    


3.5.4 군집 알고리즘의 비교와 평가 - 234p

1. 타깃값으로 군집 평가하기

ARI : adjusted rand index

NMI : normalized mutual information


 page

 

 데이터

 알고리즘

 결과

 235 ARI 비교
 adjusted_rand_score
 X, y = make_moons(n_samples=200

  , noise=0.05

  , random_state=0)

 KMeans(n_clusters=2)

 ARI : 0.5

 

 

 

 AgglomerativeClustering(n_clusters=2) ARI : 0.61
    DBSCAN

 ARI : 1.0

     


2. 타깃값 없이 군집 평가하기

실루엣 계수 : silhouette coefficient, 실제 잘 동작하지는 않음.