누락 값(Analysis Services - 데이터 마이닝)
누락 값은 데이터와 관련된 여러 가지 사항을 나타낼 수 있습니다. 예를 들어 필드가 적용 가능하지 않았거나 이벤트가 발생하지 않았거나 데이터가 사용 가능하지 않았음을 나타낼 수 있습니다. 데이터를 입력한 사용자가 올바른 값을 알지 못했거나 필드가 입력되었는지 여부를 확인하지 않은 경우가 이에 해당합니다. 따라서 Analysis Services는 누락 값(Null 값이라고도 함)을 관리하고 계산하는 명확히 다른 두 가지 메커니즘을 제공합니다.
열이 누락 값을 갖지 못하도록 모델링하는 태스크에 지정된 경우 마이닝 구조를 정의할 때 NOT_NULL 모델링 플래그를 사용해야 합니다. 이 경우 사례 값이 적절하지 않으면 처리되지 않습니다. 모델을 처리할 때 오류가 발생하면 오류를 기록한 다음 모델에 제공된 데이터를 수정할 수 있습니다. 적절한 값을 유추하고 채울 수 있는 도구에는 여러 가지가 있는데, SQL 예제에 따라 채우기 도구의 조회 변환이나 데이터 프로파일러 태스크 또는 Excel용 데이터 마이닝 추가 기능에서 제공하는 예제별 채우기 도구 등이 여기에 포함됩니다.
그러나 누락 값이 중요한 정보를 제공하는 데이터 마이닝 시나리오도 많이 있습니다. 일반적으로 Analysis Services는 누락 값이 유용한 정보를 제공한다고 간주하고 누락 값을 계산에 통합하도록 확률을 조정합니다. 이렇게 하면 모델 간의 균형이 맞춰지므로 기존 사례에 지나치게 중점을 두지 않을 수 있습니다. 이 섹션에서는 Null 값을 허용하는 모델에서 누락 값으로 정의되고 계산되는 방식에 대해 설명합니다. 이 항목에서는 또한 모델을 만들 때 데이터 마이닝 알고리즘이 이러한 Missing 값을 처리하고 사용하는 방법에 대해서도 설명합니다.
[!참고]
타사 플러그 인을 통해 얻을 수 있는 사용자 지정 알고리즘을 비롯한 각 알고리즘은 누락 값을 다르게 처리할 수 있습니다.
모델에서 누락 값 사용
데이터 마이닝 알고리즘에서 누락 값은 유용한 정보를 제공합니다. 사례 테이블에서 Missing은 다른 상태와 마찬가지로 유효한 상태입니다. 또한 데이터 마이닝 모델은 다른 값을 사용하여 값이 누락되었는지 여부를 예측할 수도 있습니다. 즉, 값이 누락되었다는 사실이 오류로 처리되지 않습니다.
데이터 마이닝 모델을 만들 때 모든 불연속 열에 대해 Missing 상태가 모델에 자동으로 추가됩니다. 예를 들어 성별에 대한 입력 열에 사용할 수 있는 값이 남성과 여성 두 가지일 때 Missing 값을 나타내는 세 번째 값이 자동으로 추가되며, 해당 열의 모든 값에 대한 분포를 보여 주는 히스토그램에는 Missing 값을 갖는 사례 수가 항상 표시됩니다. 성별 열에 누락 값이 없을 경우 누락 상태인 사례가 0개로 히스토그램에 표시됩니다.
데이터가 모든 가능한 값에 대한 예를 포함하고 있지 않다고 간주되는 경우와 데이터에 예가 없기 때문에 모델에서 이러한 가능성을 배제하고 싶지 않은 경우 기본적으로 Missing 상태를 포함시킬 수 있습니다. 예를 들어 한 상점의 판매 데이터를 분석한 결과 특정 제품을 구매한 고객이 모두 여성인 것으로 나타났다고 해서 해당 제품은 여성만 구매하는 것으로 예측하는 모델을 만들고 싶지는 않을 것입니다. 대신 Analysis Services에서는 가능한 다른 상태를 제공하는 한 가지 방법으로 알 수 없는 추가 값(Missing이라고 함)에 대한 자리 표시자를 추가합니다.
예를 들어 다음 표는 Bike Buyer 자습서용으로 만들어진 의사 결정 트리 모델의 (모든) 노드 값 분포를 보여 줍니다. 예로 든 시나리오에서 [Bike Buyer] 열은 예측 가능한 특성으로, 1은 "예"를 나타내고 0은 "아니요"를 나타냅니다.
값 |
사례 |
---|---|
0 |
9296 |
1 |
9098 |
Missing |
0 |
이 분포에 따르면 고객의 절반은 자전거를 구매했고 나머지 절반은 자전거를 구매하지 않았습니다. 이 데이터 집합은 매우 명확하므로 모든 사례의 [Bike Buyer] 열에 값이 있으며 Missing 값의 수는 0개입니다. 그러나 [Bike Buyer] 필드가 Null인 사례가 있는 경우 Analysis Services는 해당 행을 Missing 값이 있는 사례로 간주합니다.
입력이 연속 열일 경우 모델은 두 개의 가능한 특성 상태인 Existing 및 Missing을 표로 만듭니다. 즉, 열이 몇 가지 숫자 데이터 형식의 값을 포함하거나 값을 전혀 포함하지 않습니다. 값이 있는 사례의 경우 모델이 평균, 표준 편차 및 기타 의미 있는 통계를 계산합니다. 값이 없는 사례의 경우 모델이 Missing 값의 수를 제공하고 이에 따라 예측을 조정합니다. 예측을 조정하는 방법은 알고리즘에 따라 달라지며 이에 대해서는 다음 섹션에서 설명합니다.
[!참고]
중첩 테이블의 특성에 대한 누락 값은 유용한 정보를 제공하지 않습니다. 예를 들어 고객이 제품을 구매하지 않은 경우 중첩 테이블 Products에 해당 제품에 해당하는 행이 없으므로 마이닝 모델은 누락된 제품에 대한 특성을 만들지 않습니다. 그러나 특정 제품을 구매하지 않은 고객에 관심이 있다면 모델 필터에 NOT EXISTS 문을 사용하여 중첩 테이블에 해당 제품이 존재하지 않는 경우에 대해 필터링되는 모델을 만들 수 있습니다. 자세한 내용은 방법: 마이닝 모델에 필터 적용을 참조하십시오.
누락 값에 대한 확률 조정
Analysis Services는 값의 개수를 계산하는 것 외에도 데이터 집합 전체에서 값에 대한 확률을 계산합니다. Missing 값의 경우도 마찬가지입니다. 예를 들어 다음 표는 위 예에 사용된 사례에 대한 확률을 보여 줍니다.
값 |
사례 |
확률 |
---|---|---|
0 |
9296 |
50.55% |
1 |
9098 |
49.42% |
Missing |
0 |
0.03% |
사례 수가 0개일 때 Missing 값의 확률이 0.03%로 계산된 점이 이상하게 보일 수 있습니다. 사실 이 동작은 의도적인 것으로 모델이 알 수 없는 값을 적절하게 처리하도록 하기 위한 조정을 나타냅니다.
일반적으로 확률은 적합한 사례를 가능한 모든 사례로 나눈 값입니다. 이 예에서 알고리즘은 특정 조건([Bike Buyer] = 1 또는 [Bike Buyer] = 0)을 충족하는 사례의 합계를 계산한 다음 이 값을 총 행 수로 나눕니다. 그러나 Missing 사례를 설명하기 위해 가능한 모든 사례 수에 1을 더했습니다. 따라서 알 수 없는 사례에 대한 확률은 0이 아닌 매우 작은 값이며 이는 해당 상태가 발생할 가능성이 전혀 없다는 것이 아니라 발생할 가능성이 희박하다는 것을 나타냅니다.
작은 Missing 값을 더해도 예측 결과는 달라지지 않지만, 기록 데이터에 가능한 일부 결과가 포함되지 않는 시나리오를 보다 잘 모델링할 수 있게 됩니다.
[!참고]
데이터 마이닝 공급자는 누락 값을 처리하는 방식이 서로 다릅니다. 예를 들어 일부 공급자의 경우 중첩 열의 누락 데이터는 드물게 나타나지만 비중첩 문자열의 누락 데이터는 무작위로 누락되었다고 가정합니다.
모든 결과가 데이터에 지정되어 있어 확률 조정을 원치 않는 경우 마이닝 구조의 열에 NOT_NULL 모델링 플래그를 설정해야 합니다.
의사 결정 트리 모델에서 누락 값 특수 처리
Microsoft 의사 결정 트리 알고리즘은 다른 알고리즘과 다르게 누락 값에 대한 확률을 계산합니다. 의사 결정 트리 알고리즘은 총 사례 수에 1을 더하는 대신 약간 다른 수식을 사용하여 누락 상태를 조정합니다.
의사 결정 트리 모델에서 누락 상태에 대한 확률은 다음과 같이 계산됩니다.
StateProbability = (NodePriorProbability)* (StateSupport + 1) / (NodeSupport + TotalStates
또한 SQL Server 2008 Analysis Services에서 의사 결정 트리 알고리즘은 모델에 대한 필터의 존재를 보상할 수 있도록 추가 조정을 제공합니다. 따라서 학습 중에는 대부분의 상태가 제외됩니다.
SQL Server 2008에서 학습 중 상태가 존재하지만 특정 노드에서 0을 지원하기 위해 발생한 경우 표준 조정이 수행됩니다. 그러나 학습 중 상태가 발생하지 않은 경우 이 알고리즘은 확률을 정확히 0으로 설정합니다. 이 조정은 누락 상태뿐 아니라 학습 데이터에 존재하지만 모델 필터링의 결과로 0을 지원하는 상태에도 적용됩니다.
이 추가 조정에 대한 수식은 다음과 같습니다.
StateProbability = 0.0 (학습 집합에서 상태가 0을 지원하는 경우)
ELSE StateProbability = (NodePriorProbability)* (StateSupport + 1) / (NodeSupport + TotalStatesWithNonZeroSupport
이 조정은 근본적으로 트리의 안정성에 영향을 미칩니다.