K는 R의 클러스터링을 의미합니다. 예제가 포함된 단계별 자습서
게시 됨: 2020-02-17데이터 과학자로서 많은 클러스터링을 수행하게 됩니다. 사용 가능한 클러스터링 알고리즘에는 여러 유형이 있으며 모든 유형의 사용에 정통해야 합니다. 이 기사에서는 인기 있는 클러스터링 알고리즘인 K-means에 대해 논의하고 이것이 R에서 어떻게 사용되는지 확인할 것입니다.
R에서 K-means 클러스터링의 기본 이론과 사용 방법을 알 수 있습니다. 우리는 또한 기사 뒷부분에서 실용적인 예에 대해 논의했습니다. 나중에 참조할 수 있도록 이 문서를 북마크에 추가하십시오. 데이터 마이닝의 클러스터링 분석에 대해 자세히 알아보세요.
R에서 K가 클러스터링을 의미한다는 논의를 시작하기 전에 존재하는 클러스터링 알고리즘 유형을 살펴보고 이 알고리즘이 이를 어떻게 처리하는지 더 잘 이해할 수 있어야 합니다.
읽기: 데이터 과학의 상위 R 라이브러리
목차
클러스터링 유형
서로 가장 유사한 개체가 가까운 클러스터에 있는 방식으로 여러 개체를 그룹화하는 것을 클러스터링이라고 합니다. 객체 사이의 거리는 유사성과 관련이 있을 수 있습니다. 유사성은 데이터 과학에서 서로 다른 두 개체 간의 관계의 강도를 나타냅니다. 클러스터링은 널리 사용되는 데이터 마이닝 기술입니다. 클러스터링은 이미지 분석, 기계 학습, 데이터 압축, 패턴 인식 등을 포함한 다양한 산업 및 영역에서 응용 프로그램을 찾습니다.
클러스터링에는 하드 및 소프트의 두 가지 유형이 있습니다. 각각에 대해 간략하게 논의해 보겠습니다.
- 하드 클러스터에서 데이터 포인트는 클러스터에 완전히 속하거나 전혀 속하지 않습니다. 사이가 없습니다.
- 소프트 클러스터에서 데이터 개체는 어떤 가능성이나 확률로 인해 한 번에 둘 이상의 클러스터와 관련될 수 있습니다.
세계 최고의 대학에서 온라인으로 데이터 과학 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
클러스터링 알고리즘의 유형
다양한 유형의 클러스터가 있는 것처럼 클러스터링 알고리즘에도 다양한 유형이 있습니다. 클러스터 모델을 기반으로 알고리즘을 차별화할 수 있습니다. 즉, 클러스터를 형성하는 방법에 따라 구별할 수 있습니다. 모든 종류의 클러스터링 알고리즘에 대해 이야기하기 시작하면 이 가이드가 너무 길어서 요점에서 멀어질 것입니다. 따라서 우리는 몇 가지 두드러진 유형의 클러스터링 알고리즘에 대해서만 논의할 것입니다. 연결 기반, 중심 기반, 밀도 기반 및 분포 기반 클러스터링 알고리즘이 있습니다.
K-Means의 기본 개념
K-means의 기본 개념은 매우 간단합니다. K-평균은 클러스터 내 전체 변동이 가능한 한 최소화되도록 클러스터를 정의하는 것과 관련이 있습니다. 다양한 k-평균 알고리즘이 있습니다. 가장 일반적인 k-평균 알고리즘은 Hartigan-Wong 알고리즘으로, 전체 클러스터 내 변동이 중심과 해당 항목 사이의 거리 제곱 유클리드 거리의 합과 같다고 명시합니다.
W( C k )= x i C k ( x i – k ) 2
여기서 x i 는 클러스터 Ck 에 속하는 데이터 포인트를 나타내고 k 는 클러스터 Ck 에 존재하는 데이터 포인트의 평균값을 나타냅니다.
x i의 값은 x i 와 k 사이 의 거리 제곱의 합이 최소가 되도록 해야 합니다.
K-평균 알고리즘이란 무엇입니까?
알고리즘을 사용하려면 먼저 결과에 나타날 클러스터 수 K를 지정해야 합니다. 알고리즘은 먼저 K개의 객체를 무작위로 선택하여 초기 군집 중심으로 작동합니다. 이러한 개체를 클러스터 중심 또는 수단이라고 합니다. 그런 다음 나머지 객체를 가장 가까운 중심에 할당합니다. 클러스터 중심과 객체 간의 유클리드 거리는 그들이 얼마나 가까운지를 결정합니다.
객체를 각각의 중심에 할당한 후 알고리즘은 클러스터의 평균 값을 계산합니다. 이 재계산 후에 우리는 관측치가 다른 클러스터에 더 가까울 수 있는지 확인하기 위해 다시 확인합니다. 그런 다음 그에 따라 객체를 중심에 재할당합니다. 클러스터 할당이 중지될 때까지 이 단계를 계속 반복합니다. 이것은 반복에서 형성된 클러스터가 이전 반복의 클러스터와 같을 때 반복 반복을 중단한다는 것을 의미합니다.
K-평균 클러스터링 사용(예시)
이제 R의 K-means 알고리즘이 무엇이고 어떻게 작동하는지 알았으므로 더 명확한 설명을 위해 예제를 논의해 보겠습니다. 이 예에서는 도매 고객 데이터베이스를 사용하여 조직의 고객을 클러스터링합니다. 이 문제에 대한 데이터는 Berkley UCI의 기계 학습 저장소에서 사용할 수 있습니다. 여기에서 확인할 수 있습니다 .
먼저 데이터를 읽겠습니다. 그런 다음 요약을 가져옵니다. 데이터를 읽고 요약을 보고 나면 다양한 범주의 상위 소비자 간에 상당한 차이가 있음을 알 수 있습니다. 정규화(또는 스케일링)로 쉽게 제거할 수 없는 일부 이상값을 찾을 수 있습니다. 이 데이터를 사용하여 기업은 중간 범위의 고객이 대부분의 시간에 무엇을 구매하는지 확인하려고 합니다. 회사는 최고의 고객이 무엇을 구매하는지에 대한 적절한 아이디어를 가지고 있기 때문입니다.
중간 수준의 고객 클러스터를 만들려면 먼저 각 범주에서 최상위 고객 계층을 제거해야 합니다. 따라서 상위 5개를 제거하고 새 세트를 만듭니다. 방법은 다음과 같습니다.
top.n.custs <- function (data,cols,n=5) { #제거하려면 일부 데이터 프레임과 상위 N이 필요합니다.
idx.to.remove <-integer(0) # 제거되는 고객을 유지하기 위해 벡터를 초기화합니다.
for (c in cols){ # 이 함수에 전달한 데이터의 모든 열에 대해
col.order <-order(data[,c],decreasing=T) # "c" 열을 내림차순으로 정렬합니다(위쪽이 더 큼).
#Order는 정렬된 실제 값이 아닌 정렬된 인덱스(예: 행 15, 3, 7, 1, ...)를 반환합니다.
idx <-head(col.order, n) #정렬된 열 C의 처음 n개를
idx.to.remove <-union(idx.to.remove,idx) #제거해야 하는 행 ID를 결합 및 중복 제거
}
return(idx.to.remove) #제거할 고객의 인덱스를 반환합니다.
}
top.custs <-top.n.custs(data,cols=3:8,n=5)
length(top.custs) #제거하려면 몇 명의 고객이 필요합니까?
data[top.custs,] #사용 가능한 고객 조사
data.rm.top<-data[-c(top.custs),] #필수 고객 제거

이 새 파일을 사용하여 클러스터 분석 작업을 시작할 수 있습니다. 클러스터 분석을 수행하기 위해 다음 코드를 사용합니다.
set.seed(76964057) #재현성을 위해 시드를 설정합니다.
k <-kmeans(data.rm.top[,-c(1,2)], 센터=5) # 클러스터 5개 생성, 1열과 2열 제거
k$centers #클러스터 센터 표시
table(k$cluster) #각 클러스터의 데이터 포인트 수를 제공합니다.
주어진 데이터베이스에서 이 코드를 실행하면 다음 결과를 얻을 수 있습니다.
- 첫 번째 클러스터에는 고품질 세제가 있지만 신선 식품의 양이 적습니다.
- 세 번째 클러스터에는 더 신선한 제품이 있습니다.
결과에 대한 자세한 해석을 위해 insides와 betweenss를 사용해야 합니다. k$withinss는 클러스터 중심에서 각 데이터 객체 사이의 거리 제곱의 합과 같습니다. 범위가 낮을수록 더 좋은 결과를 얻을 수 있습니다. 데이터에서 내부 측정값이 높으면 이상치가 많이 존재하므로 데이터 정리를 수행해야 함을 의미합니다. k$ betweenss는 클러스터의 서로 다른 중심 사이의 거리 제곱의 합입니다. 클러스터 중심 사이의 거리는 가능한 한 높아야 합니다.
읽기: 6 R에서 더 일반적으로 사용되는 데이터 구조
가장 정확한 결과를 얻으려면 시행착오를 거쳐야 합니다. 그렇게 하려면 K에 대해 다양한 값을 시도해야 합니다. 결과 그래프에 클러스터 내에서 증가가 표시되지 않으면 해당 지점이 K에 가장 적합한 값이 됩니다. 값을 찾을 수 있습니다. 다음 코드를 통해 K의:
rng<-2:20 #K 2에서 20까지
시도 <-100 #K 평균 알고리즘을 100번 실행합니다.
avg.totw.ss <-integer(length(rng)) # 모든 점을 보유하기 위해 빈 벡터를 설정합니다.
for(v in rng){ # 범위 변수의 각 값에 대해
v.totw.ss <-integer(tries) #100번의 시도를 유지하기 위해 빈 벡터를 설정
for(i in 1:tries){
k.temp <-kmeans(data.rm.top,centers=v) #kmeans 실행
v.totw.ss[i] <-k.temp$tot.withinss#전체 내부 저장
}
avg.totw.ss[v-1] <-mean(v.totw.ss) #총 100개 이내의 평균
}
plot(rng,avg.totw.ss,type=”b”, main=”다양한 K에 의한 SS 내 총계”,
ylab="제곱합 내 평균 합계",
xlab="K의 값")
그게 다야 이제 이 코드에서 얻은 그래프를 사용하여 K에 대한 최상의 값을 얻고 필요한 결과를 얻는 데 사용할 수 있습니다. 이 예제를 사용하여 R의 K-means 클러스터링에 대한 지식을 시험해 보십시오. 다음은 예제에서 사용한 모든 코드입니다.
data <-read.csv("도매 고객 data.csv",header=T)
요약(데이터)
top.n.custs <- function (data,cols,n=5) { #제거하려면 일부 데이터 프레임과 상위 N이 필요합니다.
idx.to.remove <-integer(0) # 제거되는 고객을 유지하기 위해 벡터를 초기화합니다.
for (c in cols){ # 이 함수에 전달한 데이터의 모든 열에 대해
col.order <-order(data[,c],decreasing=T) # "c" 열을 내림차순으로 정렬합니다(위쪽이 더 큼).
#Order는 정렬된 실제 값이 아닌 정렬된 인덱스(예: 행 15, 3, 7, 1, ...)를 반환합니다.
idx <-head(col.order, n) #정렬된 열 C의 처음 n개를
idx.to.remove <-union(idx.to.remove,idx) #제거해야 하는 행 ID를 결합 및 중복 제거
}
return(idx.to.remove) #제거할 고객의 인덱스를 반환합니다.
}
top.custs <-top.n.custs(data,cols=3:8,n=5)
length(top.custs) #제거할 고객은 몇 명입니까?
data[top.custs,] #고객 조사
data.rm.top <-data[-c(top.custs),] #고객 삭제
set.seed(76964057) #재현성을 위해 시드를 설정합니다.
k <-kmeans(data.rm.top[,-c(1,2)], 센터=5) # 클러스터 5개 생성, 1열과 2열 제거
k$centers #클러스터 센터 표시
table(k$cluster) #각 클러스터의 데이터 포인트 수를 제공합니다.
rng<-2:20 #K 2에서 20까지
시도<-100 #K 평균 알고리즘을 100번 실행합니다.
avg.totw.ss<-integer(length(rng)) # 모든 점을 담기 위해 빈 벡터를 설정합니다.
for(v in rng){ # 범위 변수의 각 값에 대해
v.totw.ss<-integer(tries) #100번의 시도를 유지하기 위해 빈 벡터를 설정합니다.
for(i in 1:tries){
k.temp<-kmeans(data.rm.top,centers=v) #kmeans 실행
v.totw.ss[i]<-k.temp$tot.withinss#전체 내부 저장
}
avg.totw.ss[v-1]<-mean(v.totw.ss) #총 100개 이내의 평균
}
plot(rng,avg.totw.ss,type=”b”, main=”다양한 K에 의한 SS 내 총계”,
ylab="제곱합 내 평균 합계",
xlab="K의 값")
결론
이 가이드가 마음에 드셨기를 바랍니다. 우리는 그것을 간결하고 포괄적으로 유지하려고 노력했습니다. K-means 알고리즘에 대해 질문이 있으면 언제든지 문의하십시오. 귀하의 질문에 답변해 드리겠습니다.
데이터 과학에 대해 자세히 알고 싶으시면 작업 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크샵, 업계 전문가와의 멘토링, 1 - 업계 멘토와 일대일, 400시간 이상의 학습 및 최고의 기업과의 취업 지원.
K-means 사용의 단점은 무엇입니까?
이상값은 중심을 끌어낼 수 있으며 이상값은 무시되지 않고 자체 클러스터가 제공될 수 있습니다. K-평균은 확률적이므로 전역 최적 클러스터링 솔루션을 찾을 수 없습니다. 실제로 이상값과 잡음이 있는 데이터는 알고리즘을 매우 민감하게 만들 수 있습니다. 그룹화하기 전에 이상치를 제거하거나 제거하는 것을 고려하십시오. 다양한 크기와 밀도로 데이터를 그룹화할 때 K-평균에는 어려움이 있습니다. 이러한 데이터를 클러스터링하려면 K-평균을 일반화해야 합니다. 분명히 동일한 클러스터에 속하더라도 k-means 알고리즘은 멀리 떨어져 있는 데이터 포인트가 동일한 클러스터를 공유하는 것을 허용하지 않습니다.
K-means의 팔꿈치 방법은 무엇입니까?
k-평균 방법은 적절한 클러스터 수를 찾는 데 크게 의존합니다. Elbow Approach는 최상의 K 값을 결정하기 위해 널리 사용되는 방법입니다. 엘보우 기법은 그래프의 K 값 범위에 대한 데이터 세트에서 K-평균 클러스터링을 수행한 다음 각 K 값에 대한 모든 클러스터의 평균 점수를 계산합니다. 왜곡 점수는 각 점에서 제곱 거리의 합입니다. 할당된 중심으로 기본적으로 계산됩니다. 데이터 세트를 특성화하기 위한 주요 구성 요소의 수와 같은 다른 데이터 기반 모델은 동일한 기술을 활용하여 매개변수의 수를 결정할 수 있습니다.
K-평균에서 이상치를 어떻게 찾을 수 있습니까?
K-평균 클러스터링의 이상값은 거리 기반 및 클러스터 기반 기술을 모두 사용하여 발견될 수 있습니다. 계층적 클러스터링의 경우 덴드로그램을 사용하여 이상값을 발견합니다. 프로젝트의 목표는 클러스터링을 보다 정확하게 만들기 위해 이상값을 발견하고 제거하는 것입니다. 데이터는 K-means 기반 이상값 식별 접근 방식에서 가장 가까운 클러스터 센터에 할당하여 K 그룹으로 분할됩니다. 그런 다음 각 항목과 해당 클러스터 중심 간의 거리 또는 비유사성을 계산하고 거리가 가장 큰 이상값을 선택할 수 있습니다. 극단값은 평균에 빠르게 영향을 줄 수 있으므로 K-평균 클러스터링 방법은 이상값에 민감합니다.