#title 통계학적인 세분화 방법 2가지 [[TableOfContents]] 예를 들어, 고객이 1백만 명이 있다고 하자. 1백 만명은 적어도 1회 이상을 자사의 상품(서비스 포함)을 구매하였다. 하지만 각각의 고객에 대해 마케팅 전략을 세운다던지 각각의 고객의 특성을 파악하여 대응하는 방법은 가능하기는 하나 불가능하다. 사실 가능하기야 하지만 손해를 보면서까지 실행할 바보는 없으므로 실현 불가능이나 다름없다. 그래서 고객세분화라든지 하는 Segramentation 작업을 하게 된다. 대표적으로 학교에서 수, 우, 미, 양, 가로 학생들을 구분하고, 수에 가까울수록 '우수'한 특성을 가졌다고 판단한다. 학교에서는 10점 단위로 쪼개었지만 기업에서는 10점 단위로 쪼개에 데이터의 특성을 파악한다는 것은 매우 어려운 일이다. 또한 데이터의 분포가 매우 넓으므로 작은 단위로 쪼개었다가는 쪼개어진 그룹이 너무 많아 분석 자체가 어려울 것이다. 그러다고 주관적인 관점에서 분류하기에도 데이터의 분석이 어려워진다. 이 문서에서는 이러한 주관적인 판단을 사용하지 않고, 통계학적인 방법으로 Segmentation하는 방법을 2가지를 소개하도록 하겠다. ==== 도수분포표(히스토그램) ==== 어떤 데이터가 전체 중에 차지하는 위치를 알아내기 위해서는 전체 경향을 파악하는 일이 매우 중요하다. 전체 경향을 파악하는데는 도수분포표가 매우 유용하다. 도수분포표는 다음과 같은 방법으로 만들 수 있다. 1. 데이터의 최대, 최소값을 구한다. 1. 자료의 크기에 따라 적당한 계급의 수를 정한다.(이상치는 제거한다.([이상치 제거 방법])) 1. 중복되지 않게 계급의 크기를 정한다. 1. 각 계급에 속하는 도수(데이터 수)를 구한다. 1. 계급은 연속으로 표시한다. 1. 상대도수를 구한다. (상대도수 = 해당 계급의 도수 / 전체 도수) ==== 스튜아지스 방법 ==== 스튜아지스의 방법은 통계학 책의 거의 처음 부분에 나오는 내용이다. 스튜아지스는 계급의 수[* 몇 개로 쪼갤 것인가]를 결정하는 방법으로 다음과 같은 공식을 만들었다. * 계급의 수 k {{{=}}} 1 + (log,,10,,N / log,,10,,2) (N; 자료의 수) = {{{1 + (LOG10(N) / LOG10(2))}}} * 계급의 범위 R = (Max값 - Min값) / k 분류하는 방법은 위의 공식을 이용하여 다음과 같은 순서로 구하면 된다. 1. 데이터의 총 개수, Max값, Min값을 구한다. 이 때 Max값, Min값을 구할 때는 이상치를 제거하는 것이 좋다. 2. 스튜아지스의 방법을 이용하여 계급의 수(k)를 구한다. 3. 윗 단계에서 구해진 계급의 수 k를 이요하여 값의 범위를 구한다. 4. 구해진 범위로 데이터를 구분한다. 다음은 SQL Server 2005에서 T-SQL 구현한 예이다. {{{ DECLARE @k int , @r bigint , @avg bigint , @sigma bigint , @min bigint , @max bigint , @cnt int , @min_real bigint , @max_real bigint --1 + (LOG10(N) / LOG10(2)) SELECT @sigma = STDEV(Score) , @avg = AVG(Score) , @min_real = MIN(Score) , @max_real = MAX(Score) FROM #Score -- 이상치 제거후 구간을 구한다.: 평균 - (1.5 * 표준편차) ~ 평균 + (1.5 * 표준편차) SELECT @r = (MAX(Score) - MIN(Score)) / (1 + (LOG10(COUNT(*)) / LOG10(2))) , @k = (1 + (LOG10(COUNT(*)) / LOG10(2))) , @cnt = COUNT(*) , @min = MIN(Score) , @max = MAX(Score) FROM #Score WHERE Score > @avg - (3 * @sigma) AND Score < @avg + (3 * @sigma) ;WITH Dumy(Seq) AS ( SELECT 1 Seq UNION ALL SELECT Seq + 1 FROM Dumy WHERE Seq + 1 <= @k ), Grade AS ( SELECT (@k - Seq ) + 1 Grade , @min + ((Seq-1) * @r) BeginScore , @min + (Seq * @r) EndScore FROM Dumy ), RealGrade AS ( SELECT Grade, BeginScore, EndScore FROM Grade UNION ALL SELECT Grade + 1, @min_real, EndScore + 1 FROM Grade WHERE Grade = (SELECT MAX(Grade) FROM Grade) UNION ALL SELECT Grade - 1, BeginScore + 1, @max_real FROM Grade WHERE Grade = (SELECT MIN(Grade) FROM Grade) ) SELECT B.Grade , COUNT(*) AccountCnt , SUM(NetAMT) NetAMT FROM #Score A INNER JOIN RealGrade B ON A.Score BETWEEN B.BeginScore AND B.EndScore GROUP BY B.Grade ORDER BY 1 }}} ==== 표준편차를 이용하는 방법 ==== 표준편차를 이용하면 단순히 우수, 보통, 취약 이렇게 3개의 그룹으로 나눌 수 있다. 예를 들어, 50명이 정원인 한 학급에서 학생들의 키에 대한 평균치가 170Cm이고, 표준편차가 7Cm였을 때에 다음과 같이 나뉠 수 있다. (σ[* 시그마]: 표준편차, μ[* 뮤]: 평균) * 취약: 163Cm 미만 (μ - σ) * 보통: 163 ~ 177Cm (68.3%) * 우수: 177Cm 초과 (μ + σ) 표준편차는 자료의 특성을 매우 잘 나타내는 지표로 정규분포의 15.85% 정도의 하위, 상위를 나타내므로 취약과 우수를 판단하는데에는 매우 큰 도움이 된다. 3개의 그룹대신 {(μ - 3σ) ~ (μ + 3σ)} 과 같이 6개의 구간으로 나눌 수도 있다. attachment:normal_distribution.jpg {{{표준정규분포}}} 참고로 '6시그마'의 시그마는 위의 그림과 같은 뜻을 내포하고 있다. 6시그마는 (μ - 6σ) ~ (μ + 6σ)의 구간을 뜻을 나타낸다. ==== 5단계 평가 ==== 위의 정규분포에서 다음과 같이 5개의 구간으로 나눌 수도 있다. ||구분||범위||범위(%)|| ||E||(최소값) ~ (m - 1.5σ)||7%|| ||D||(m - 1.5σ) ~ (m - 0.5σ)||24%|| ||C||(m - 0.5σ) ~ (m + 0.5σ)||38%|| ||B||(m + 0.5σ) ~ (m + 1.5σ)||24%|| ||A||(m + 1.5σ) ~ (최대값)||7%|| ==== 기타 ==== * [기준치와 편차치] 도 세분화에 참고할 만하다.