머신러닝(ML)이 요즘 화두입니다.
그리고 지도 ML이 많은 관심을 받고 있습니다. 여기에는 화려한 신경망, Naive Bayes 분류기 및 기타 유용한 방법이 많이 있습니다(이 중 일부는 다음에서 다뤘습니다). 여기 JMP 블로그가 있습니다. ).
그러나 감독 ML에는 레이블 또는 진실 데이터가 필요합니다. 고양이가 언제 옳고 그른지 알 수 없다면 컴퓨터에게 고양이가 무엇인지 알려달라고 요청할 수 없습니다. 불행하게도 특정 데이터 세트에서는 라벨을 찾기가 어렵습니다. 사람들은 정지 신호가 있는 각 사진을 클릭하도록 요청하는 CAPTCHA나 Google의 유명한 Quick Draw 애플리케이션과 같이 레이블이 지정된 데이터를 저렴하게 얻을 수 있는 독창적인 방법을 생각해냈습니다. 그러나 대규모 데이터 세트에 레이블을 지정하는 데 비용이 많이 들 수 있습니다.
종종 우리는 라벨이나 진실을 갖고 있지 않지만 데이터를 갖고 있습니다. 이러한 경우에는 다음을 사용해야 합니다. 유엔 감독된 기계 학습. 감독되지 않은 ML은 무엇이 옳고 그른지 말할 수 없기 때문에 그렇게 명명되었습니다. 집안의 규칙을 모르는 새로운 베이비시터처럼 감독되지 않는 ML 알고리즘에는 올바른 답이 없습니다. 우리는 알고리즘이 뭔가 잘못되었을 때 알고리즘을 "수정"할 수 없습니다. 왜냐하면 명확한 정답이나 오답이 없기 때문입니다.
비지도 ML의 유일한 유형은 아니지만 클러스터링은 매우 널리 사용되는 유형입니다. 데이터에 대해 미리 설정된 그룹이 없을 때 우리의 자연스러운 본능은 종종 해당 그룹을 직접 만드는 것입니다. 일반적으로 클러스터링은 서로 가까이 있는 데이터 포인트를 동일한 그룹으로 그룹화하고, 서로 멀리 있는 데이터 포인트를 서로 다른 그룹으로 그룹화하는 것을 목표로 합니다. 이것은 ... 불리운다 응집력 (비슷한 점이 함께 있음) 및 분리 (다른 점은 그렇지 않습니다). 비교할 레이블이 없기 때문에 클러스터/그룹이 얼마나 응집력 있고 분리되어 있는지에 따라 클러스터/그룹의 "성공"을 판단하는 경우가 많습니다.
K-평균
이라는 대형 백화점의 작은 데이터 세트를 살펴보겠습니다. 라 피셔스 . Fisher's는 새로운 3단계 보상 프로그램을 구현하려고 합니다. 하지만 직원은 3단계 각각에 대해 어떤 종류의 제안을 해야 하는지 알아야 합니다.
그들은 30명의 고객을 대상으로 평균 구매 횟수와 각 구매의 평균 품목 수에 대한 파일럿 데이터를 수집했습니다. 데이터는 아래에 그래프로 표시되어 있습니다.
우리는 고객을 세 그룹으로 나누어 각 고객에게 적합한 계층을 구성하려고 합니다. 그래서 우리는 고객의 연간 평균 여행 횟수와 여행당 평균 구매 품목 수를 기준으로 고객을 세 그룹으로 나누기 위해 k-평균을 사용하기로 결정했습니다.
k-평균의 첫 번째 단계는 k를 선택하는 것입니다. 우리는 3개를 선택했습니다. 그런 다음 데이터에서 무작위로 k개의 점을 선택합니다. 우리는 이러한 데이터 포인트를 세 클러스터의 중심으로 취급할 것입니다.
그런 다음 각 데이터 포인트를 가장 가까운 포인트의 클러스터에 할당합니다. 예를 들어, 상단의 이 지점은 파란색 지점에 가장 가깝기 때문에 파란색 클러스터에 위치하게 됩니다.
이런 방식으로 각 포인트를 클러스터에 할당합니다.
이제 세 개의 클러스터가 있으므로 각 클러스터의 새 중심을 다시 계산할 수 있습니다.
그런 다음 각 지점을 가장 가까운 새 클러스터에 다시 할당합니다.
그런 다음 클러스터 구성원(또는 센터)이 변경되지 않을 때까지 이러한 단계를 반복합니다.
- 센터 계산
- 포인트 재할당
이 상태에 도달하면 우리 모델은 수렴 , 이러한 클러스터 멤버십을 최종 클러스터 할당으로 사용합니다.
이제 클러스터를 사용하여 Fisher's를 위한 세 가지 고객 계층을 생성할 수 있습니다. 여행 횟수가 적고 품목을 많이 구매하지 않는 빨간색 그룹이 하나 있는 것 같습니다. 매장에서 더 자주 구매하실 수 있도록 화요일마다 15% 할인 혜택을 제공합니다.
녹색 그룹은 적당한 양의 여행을 하지만 여행을 할 때 많은 양의 물품을 구입합니다. 이러한 고객의 요구에 부응하기 위해 당사의 실버 등급에는 매주 한 품목에 대해 60% 할인 쿠폰을 포함하여 이러한 고객을 더 자주 방문하게 할 것입니다.
마지막으로 골드 등급은 정기적으로 매장을 방문하지만 몇 가지 품목만 구매하는 블루 그룹을 대상으로 합니다. 이 계층에는 고객이 더 많은 품목을 구매하도록 유도하기 위해 1개 구매 1개 50% 할인을 제공하는 2년마다 열리는 이벤트가 포함됩니다.
K-평균은 데이터를 그룹으로 분리하는 좋은 방법입니다. 그리고 우리의 예에는 두 가지 차원(여행과 항목)만 있었지만 k-평균은 더 높은 차원의 데이터에 잘 작동할 수 있습니다. 블로그 게시물에 결과를 표시하는 것이 더 어렵습니다…
앞서 나는 비지도 학습에는 결과를 비교할 수 있는 "올바른" 답이 없다고 언급했습니다. 정확도나 민감도를 계산할 수 없습니다. 그러나 우리는 응집력과 분리력의 척도를 계산할 수 있습니다. 가장 일반적인 것은 실루엣 점수 . 실루엣 점수의 범위는 -1에서 1 사이이며 점수가 높을수록 좋습니다. 일체 포함) 데이터 포인트 사이의 평균 거리입니다. 클러스터의 다른 모든 데이터 포인트. 이는 응집력, 즉 클러스터의 데이터 포인트가 서로 얼마나 가까운지를 측정합니다. 단단히 짜여진 클러스터는 작은 크기를 갖습니다. a(i)s .
b(i) 사이의 최소 평균 거리입니다. 나 그리고 다른 클러스터의 각 포인트. 이는 분리, 즉 클러스터가 서로 얼마나 분리되어 있는지를 측정합니다. 잘 정의된 클러스터는 높은 값을 갖습니다. b(i) .
전체적으로, 다른 클러스터 포인트에서는 멀리 떨어져 있지만 자체 클러스터의 포인트에 가까운 포인트에 대한 실루엣 점수는 높고 긍정적인 실루엣 점수를 갖습니다. 자체 포인트보다 다른 클러스터의 포인트에 더 가까운 포인트는 작고 심지어 음수 실루엣 점수를 갖습니다.
각 데이터 포인트에 대한 실루엣 점수의 평균을 취하여 클러스터가 데이터에 얼마나 "잘 맞는지" 파악할 수 있습니다. 고객 클러스터의 실루엣 점수(예: 10배 빠르다…)는 0.614입니다. 이는 클러스터가 상대적으로 응집력 있고 분리되어 있음을 의미합니다.
높은 평균 실루엣 점수를 얻으면 우리는 어떤 종류의 것을 발견했다고 믿습니다. 잠재 구조 데이터에서. 클러스터가 자체적으로 비슷하고 다른 클러스터와 다른 경우 이러한 그룹은 데이터에 강제로 적용한 것이 아니라 자연적으로 발생하는 것처럼 보입니다.
기대값 최대화(가우스 혼합 사용)
K-평균은 데이터 클러스터링을 위한 상대적으로 빠르고 더러운 알고리즘입니다. 배우기도 빠르고 구현하기도 빠릅니다. 그러나 여기에는 두 가지 잠재적인 단점이 있습니다. 첫째, 구형성을 가정합니다. 즉, 클러스터가 다차원 구체 모양이라는 의미입니다. 실제로 이는 대략 모든 특성이 등분산을 갖는다고 가정한다는 의미인데, 이는 종종 사실이 아닙니다. 하루 평균 야옹 횟수와 길이(센티미터)를 기준으로 고양이를 클러스터링하는 방법을 생각해 보세요. 이 두 가지는 동일한 분산을 가질 가능성이 거의 없습니다.
두 번째 문제는 k-평균이 다음을 제공한다는 것입니다. 딱딱한 클러스터 할당. 각 포인트는 정확히 하나의 클러스터에 속합니다. 때로는 특히 클러스터 가장자리 주변에서 점이 두 클러스터 중 하나의 일부일 수 있다는 사실을 설명하고 싶을 수도 있습니다. 여기 이 지점처럼요. 파란색일 수도 있어요 또는 녹색.
따라서 우리가 서로 다른 특성의 분산이 동일하지 않다고 생각하거나 알고 있을 때, 또는 부드러운 클러스터 할당을 통해 k-평균의 널리 사용되는 일반화인 기대 최대화 또는 줄여서 EM을 살펴볼 수 있습니다.
기대 최대화는 종종 다차원 정규 분포라고도 불리는 가우스 혼합으로 구현됩니다. 좀 복잡하기 때문에 이 기술을 JMP에서 보통 혼합물이라고 부르겠습니다. 우리는 우리가 관찰하는 모든 데이터가 다음에서 나온다고 가정합니다. 케이 다차원 정규 분포가 있으며 우리는 그 분포가 무엇인지 알아내고 싶습니다.
k-평균과 마찬가지로 정규 혼합은 무작위 시작점을 사용하지만 중심만 선택하는 대신 각 k 분포에 대해 무작위 평균과 공분산을 선택합니다. 처음에는 조금 이상해 보일 수도 있지만, 계속해서 지켜봐 주세요.
이것이 기대(E) 단계입니다. 그런 다음 각 점이 각 분포에 속할 확률을 계산합니다. 각 데이터 포인트를 하나의 클러스터에 하드 할당하는 대신, 해당 데이터 포인트가 다음에 속한다고 말합니다. 모든 특정 확률을 가진 클러스터.
다음은 M스텝입니다. k-평균에서 새 중심을 계산한 것과 마찬가지로 분포 매개변수를 다시 계산합니다. 모든 데이터 포인트는 일정 확률로 모든 클러스터에 속하기 때문에 모든 포인트를 사용하여 새로운 분포 매개변수를 계산하고 해당 그룹에 속할 확률에 따라 가중치를 부여합니다. 클러스터 A에 속할 확률이 0.01%에 불과한 포인트는 클러스터 A의 평균 및 공분산 계산에 큰 영향을 미치지 않습니다. 적어도 클러스터 A에 속할 확률이 75%인 포인트와 비교되지는 않습니다.
수학에 관심이 있다면 새로운 평균과 공분산에 대한 공식은 다음과 같습니다.



이 공식은 평균과 공분산을 계산하는 데 일반적으로 사용하는 공식과 거의 동일하지만 하나가 추가됩니다. 이는 데이터 포인트가 k번째 분포에 속할 가능성에 따라 계산에 대한 데이터 포인트의 기여도를 평가합니다.
k개의 분포 각각에 대한 새로운 매개변수가 확보되면 E 단계를 다시 수행하고 각 점이 각 분포에 속할 확률을 다시 계산합니다.
그런 다음에는 물론 M 단계가 오고, 또 다른 E 단계가 오고 분포가 "수렴"될 때까지 계속됩니다. 이는 E 및 M 단계를 반복할 때마다 아무것도 변경되지 않거나 적어도 상황이 너무 많이 변경되지 않음을 의미합니다. 일반적으로 우리는 로그 가능성을 살펴보고 상대적으로 안정적인지 확인합니다.
이제 각 데이터 포인트가 각 클러스터에 속할 확률이 있습니다. 하드 클러스터 할당이 필요한 경우 각 데이터 포인트가 가장 높은 확률로 클러스터에 속하도록 선택할 수 있습니다. 그러나 EM의 좋은 점은 클러스터 멤버십의 모호함을 수용할 수 있다는 것입니다. 데이터 포인트를 보고 클러스터 B에 속할 가능성이 가장 높지만 클러스터 D에도 속할 가능성이 높다는 사실을 고려할 수 있습니다. 이는 또한 클러스터 사이에 명확한 경계가 없을 수 있다는 사실도 고려합니다. 이러한 그룹은 겹치는 다차원 분포로 구성되므로 명확한 절단선을 그리는 것이 항상 최선의 솔루션은 아닐 수도 있습니다.
JMP의 클러스터링
JMP 클러스터링이 놀라울 정도로 간단해졌습니다. 분석 메뉴 > 클러스터링으로 이동하기만 하면 됩니다. K-평균과 가우스 혼합이 포함된 EM(메뉴에서 일반 혼합이라고 함)이 모두 제공됩니다.


다음 중 하나를 선택하세요. K-평균 또는 일반 혼합물 에서 클러스터링하려는 열을 선택하고 찾으려는 클러스터 수를 선택합니다. 딸깍 하는 소리 가다 , 그러면 출력이 표시됩니다! 클러스터 할당을 저장하려면 클러스터 분석 옆에 있는 빨간색 삼각형을 클릭하고 클러스터 저장 !
클러스터 플롯을 보려면 빨간색 삼각형을 클릭하고 Biplot 선택 .
한 번에 여러 k를 시도하려면 간단히 범위 K-평균 또는 정규 혼합물 플랫폼의 상자. 이제 출력에 각 k에 대한 정보가 표시됩니다! JMP가 가장 적합한 k를 선택합니다. 클러스터 비교 메뉴.
k-평균의 경우 SAS와 같은 JMP는 Cubic Cluster Criterion(CCC의 약자)을 사용하여 데이터에 가장 적합한 k를 선택합니다. CCC 값이 높을수록 더 좋으며 실루엣 점수와 유사하게 클러스터가 데이터에 잘 맞는다는 것을 나타냅니다. JMP는 CCC 값이 가장 높은 k를 최적의 클러스터로 선택합니다. CCC에 대한 자세한 내용은 다음을 참조하세요. 여기 .

정규 혼합물의 경우 JMP는 AICc(수정된 아카이케 정보 기준) 및 BIC(베이지안 정보 기준)를 사용하여 최상의 k를 선택합니다. AIC와 BIC(예: 실루엣 점수 및 CCC)는 모델(여기서는 클러스터)이 데이터에 얼마나 잘 맞는지 측정합니다. AIC 및 BIC 값이 작으면 모형 적합성이 양호하므로 JMP는 다음을 제공하는 k를 선택합니다. 가장 낮은 AIC/BIC 값(데이터 세트가 작기 때문에 일부 AICc 값이 누락됨)
결론
이제 사용법을 아셨죠? JMP k-평균과 가우스 혼합 모델(또는 JMP의 정규 혼합)을 사용하여 데이터를 클러스터링합니다! 따라서 레이블이나 진실 데이터가 없는 매우 멋진 데이터 세트를 얻은 경우에도 비지도 ML을 사용하여 꽤 멋진 통찰력을 생성할 수 있습니다.