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 | 이상하게 분류함 - 멀리 떨어진 포인트를 포함. --> 모든 클러스터의 반경이 똑같다는 가정 때문에 클러스터간의 중심 사이에 정확히 중간에 경계를 그림. |
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 | 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, 실제 잘 동작하지는 않음.
'python 및 머신러닝 > 파이썬 라이브러리를 활용한 머신러닝' 카테고리의 다른 글
scikit-learn 책 정리 (0) | 2017.09.18 |
---|---|
파이썬 라이브러리를 활용한 머신러닝 2장~6장 정리 (1) | 2017.08.30 |
파이썬 라이브러리를 활용한 머신러닝 5장 (0) | 2017.08.28 |
파이썬 라이브러리를 활용한 머신러닝 4장 (0) | 2017.08.25 |
파이썬 라이브러리를 활용한 머신러닝 2장 (0) | 2017.08.09 |