기본 문제
기본 문제는 다음과 같습니다. 매우 치우친 변수가 포함 된 데이터 세트를 개수로 묶으려고합니다. 변수는 많은 0을 포함하므로 클러스터링 절차에 대한 정보가 많지 않습니다. k- 평균 알고리즘 일 가능성이 큽니다.
예를 들어, 제곱근, 박스 콕스 또는 로그를 사용하여 변수를 변환하면됩니다. 그러나 내 변수는 범주 형 변수를 기반으로하기 때문에 변수를 범주 형 변수의 한 값을 기준으로 처리하여 다른 변수를 (범주 형 변수의 다른 값을 기준으로) 남겨두면 편향이 발생할 수 있습니다. .
좀 더 자세히 살펴 보겠습니다.
데이터 세트
내 데이터 세트는 품목 구매를 나타냅니다. 항목의 범주는 파란색, 빨간색 및 녹색과 같이 서로 다릅니다. 그런 다음 구매는 고객별로 그룹화됩니다. 이러한 각 고객은 데이터 집합의 한 행으로 표시되므로 고객에 대한 구매를 집계해야합니다.
내가하는 방법은 구매 횟수를 세는 것입니다. 항목은 특정 색상입니다. 그래서 그 대신 하나의 변수로 color
, 나는 세 개의 변수와 끝까지 count_red
, count_blue
그리고 count_green
.
다음은 예입니다.
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 12 | 5 | 0 |
-----------------------------------------------------------
c1 | 3 | 4 | 0 |
-----------------------------------------------------------
c2 | 2 | 21 | 0 |
-----------------------------------------------------------
c3 | 4 | 8 | 1 |
-----------------------------------------------------------
사실, 나는 결국 절대 카운트를 사용하지 않고 비율 (고객 당 구매 한 모든 항목의 녹색 품목의 비율)을 사용합니다.
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 0.71 | 0.29 | 0.00 |
-----------------------------------------------------------
c1 | 0.43 | 0.57 | 0.00 |
-----------------------------------------------------------
c2 | 0.09 | 0.91 | 0.00 |
-----------------------------------------------------------
c3 | 0.31 | 0.62 | 0.08 |
-----------------------------------------------------------
결과는 같습니다 : 예를 들어 녹색 (녹색을 좋아하지 않는 사람)과 같은 내 색상 중 하나에 대해 많은 0을 포함하는 왼쪽으로 치우친 변수가 나타납니다. 결과적으로 k- 평균은이 변수에 대한 좋은 분할을 찾지 못합니다.
반면에 변수를 표준화하면 (평균 빼기, 표준 편차로 나눔) 녹색 변수는 작은 분산으로 인해 "파열"되고 다른 변수보다 훨씬 더 큰 범위에서 값을 가져옵니다. 실제보다 k- 평균에 중요합니다.
다음 아이디어는 sk (r) ewed 녹색 변수를 변환하는 것입니다.
치우친 변수 변환
제곱근을 적용하여 녹색 변수를 변형하면 조금 덜 왜곡됩니다. (여기서 녹색 변수는 혼란을 보장하기 위해 빨간색과 녹색으로 표시됩니다.)
빨간색 : 원래 변수; 파란색 : 제곱근으로 변환됩니다.
이 변환의 결과에 만족한다고 가정 해 봅시다 (0은 여전히 분포를 크게 왜곡하기 때문에 그렇지 않습니다). 분포가 양호 해 보이지만 이제 빨강 및 파랑 변수를 스케일해야합니까?
결론
다시 말해서, 한 가지 방법으로 녹색을 처리하면서 클러스터링 결과를 왜곡하지만 빨간색과 파란색을 전혀 처리하지 않습니까? 결국 세 가지 변수가 모두 속해 있으므로 같은 방식으로 처리하면 안됩니까?
편집하다
명확히하기 위해 : 나는 k- 평균이 카운트 기반 데이터 로 갈 수 있는 방법이 아니라는 것을 알고 있습니다. 그러나 내 질문은 실제로 종속 변수 처리에 관한 것입니다. 올바른 방법을 선택하는 것은 별개의 문제입니다.
내 변수의 본질적인 제약은
count_red(i) + count_blue(i) + count_green(i) = n(i)
여기서 n(i)
고객의 총 구매 수는 어디 입니까 i
?
(또는 count_red(i) + count_blue(i) + count_green(i) = 1
상대 카운트를 사용할 때도 동일 합니다.)
변수를 다르게 변환하면 제약 조건의 세 항에 다른 가중치를 부여하는 것과 같습니다. 내 목표가 고객 그룹을 최적으로 분리하는 것이라면이 제약 조건을 위반해야합니까? 아니면 "끝이 수단을 정당화합니까?"
count_red
, count_blue
및 count_green
데이터는 계산이다. 권리? 그렇다면 행은 무엇입니까? 그리고 당신은 품목을 묶을 것입니까?