가. 확률의 정의
확률이란 '특정사건이 일어날 가능성의 척도'라고 정의할 수 있다. 통계적 실험을 실시할 때 나타날 수 있는 모든 결과들의 집합을 표본공간(sample space, Ω)이라 하고, 사건(event)이란 표본공간의 부분집합을 말한다. 사건 중에서 오직 한 개의 원소로만 이루어진 사건을 근원사건이라 한다.
나. 조건부 확률과 독립사건
사건 A가 일어났다는 가정하의 사건 B의 확률은 조건부 확률(conditional probability)
다. 확률변수와 확률분포
특정 사건에 대해 실수값을 갖는 변수를 정의하면, 특정사건이 일어날 확률은 그 변수가 특정값을 가질 확률로 표현할 수 있다. 이와 같이 특정값이 나타날 가능성의 확률적으로 주어지는 변수를 확률변수(random variable)라고 한다. 수학적으로 표현하면, 확률변수는 정의역(domain)이 표본 공간이고 치역(range)이 실수 값인 함수다. 확률변수에는 이산형 확률변수(discrete random variable)와 연속형 확률변수(continuous random variable)가 있다.
- 이산형 확률변수: 사건의 확률이 그 사건들이 속한 점들의 확률의 합으로 표현할 수 있는 확률변수를 말한다. 따라서 이산형 확률변수는 확률이 0 보다 큰 값을 갖는 점들로 확률을 표현할 수 있다, 즉 이와 같이 각 이산점에 있어서 확률의 크기를 표현하는 함수를 확률질량함수(probability mass function)라고 한다.
- 연속형 확률변수: 사건의 확률이 그 사건 위에서 어떤 0보다 큰 값을 갖는 함수의 면적으로 표현될 수 있는 확률변수를 말한다. 이 때, 이 함수 f(x)를 확률밀도함수(probability density function)라고 한다. 사건의 확률이 확률밀도함수의 면적으로 표현되므로 한 점에서의 확률은 0이되고, 0보다 큰값을 갖는 사건은 구간에서의 확률값이 된다.
- 결합확률분포(joint probability distribution): 두 확률변수 X, Y의 결합확률분포는 이산형인 경우에 다음과 같의 정의한다.
연속형인 경우에는 f(x,y) 라고 정의하며, 각각 결합확률질량함수(joint probability mass function)와 결합확률밀도함수(joint probability density function)라고 한다.
통계 분석에서 자료를 수집하고 그 수집된 자료로부터 어떤 정보를 얻고자 하는 경우에는 항상 수집된 자료가 특정한 확률분포를 따른다고 가정한다. 그 분포는 이산형 확률분포와 연속형 확률변수로 구분할 수 있다. 먼저 이산형 확률변수에는 베르누이 확률분포(Bernoulli distribution), 이항분포(binomial distibution), 기하분포(geometric distribution), 다항분포(multinomial distribution), 포아송분포(Poisson distibution) 등이 있다.
라. 확률변수의 기댓값과 분산
확률변수X의 기대값은 다음과 같이 정의된다.
2018년 1월 17일 수요일
2018년 1월 16일 화요일
2. 통계 분석
통계 분석(statistical analysis)이란 특정한 집단이나 불확실한 현상을 대상으로 자료를 수집해 대상집단에 대한 정보를 구하고, 적절한 통계 분석 방법을 이용해 의사결정을 하는 과정을 말한다. 이러한 의사결졍을 통계학에서는 통계적 추론(statistical inference)이라고 한다. 대상 집단에 대한 정보란 자료를 요약.정리한 결과로 숫자 또는 그림으로 정리된 각종 통계를 의미한다. 또한 통계적추론이란 수집된 자료를 이용해 대상 집단(모집단)에 대해 의사결정을 하는 것이다. '대상 집단의 특성값(모수)이 무엇일까?'를 추측하는 추정(estimation)과 대상 집단에 대해 특정한 가설을 설정한 후에 그 가설의 채택여부를 결정하는 가설검정(hypothesis test)이 있다. 그 외에도 미래의 의 북확실성을 해결해 효율적인 의사결정을 하기 위해 수행하는 예측(forecasting)이 있다.
통계적 추론 이외에도 수집된 자료를 정리.요약하기 위해 사용되는 기초적인 통계를 기술통계( descriptive statistic)라고 한다. 기술 통계는 평균, 표준편차, 중위수, 최빈값, %와 같이 숫자로 표현하는 방식과 막대그래프, 원그래프, 꺽은선그래프 같이 그림으로 표현하는 방식이 있다. 신문이나 잡지에서 흔히 볼 수 있는 표, 그래프, 차트를 만드는 것은 모두 기술통계에 속한다. 기술통계는 그 자체로도 여러 용도에 쓰일 수 있지만, 대개는 보다 자세한 통계적 분석을 위한 사전단계의 역할을 하게 마련이다.
통계적 추론 이외에도 수집된 자료를 정리.요약하기 위해 사용되는 기초적인 통계를 기술통계( descriptive statistic)라고 한다. 기술 통계는 평균, 표준편차, 중위수, 최빈값, %와 같이 숫자로 표현하는 방식과 막대그래프, 원그래프, 꺽은선그래프 같이 그림으로 표현하는 방식이 있다. 신문이나 잡지에서 흔히 볼 수 있는 표, 그래프, 차트를 만드는 것은 모두 기술통계에 속한다. 기술통계는 그 자체로도 여러 용도에 쓰일 수 있지만, 대개는 보다 자세한 통계적 분석을 위한 사전단계의 역할을 하게 마련이다.
1. 통계 분석 개요
가. 통계학의 정의
우리는 일상생활에서각종 통계를 접하며 살고 있다. 일상적으로 접하는 통계는 매일 발표되는 일기예보와 물가.실업률.GNP 등과 같은 경제통계, 각 정당에 대한 지지도 조사나 가족법 개정에 대한 의식조사와 같은 사회조사 분석통계, 새로운 희귀병 치표제의 임상실험 결과와 같은 실험결과 분석통계 등 다양한 형태를 갖고 있다. 통계학을 한마디로 정의하기는 어렵지만 통계학은 자료로부터 유용한 정보를 이끌어 내는 학문이라는 데 대부분의 통계학자들이 동의할 것이다. 유용한 정보를 이끌어 내는 작업에는 자료의 수집과 정리, 그리고 이를 해석하는 방법 등을 모두 포함한다.
나. 모집단과 표본
자료로부터 유용한 정보를 이끌어 낼 때 해당 정보에 대한 대상이 있다. 정당에 대한 지지도에 관해 논의한다면 구체적으로 대한민국 전체 국민들의 지지도, 유권자들의 지지도, 또는 서울에 거주하는 유권자의 지지도를 일컫는 것인지를 확실하게 하는 것은 매우 중요하다. 이 때 유용한 정보의 대상이 되는 것을 모집단이라고 한다. 즉 모집단은 우리가 알고자 하는 전체를 의미한다. 모집단을 구성하는 개체를 추출단위 혹은 원소라고 한다.
모집단에 대해 조사하는 방법에는 총조사(census)와 표본조서로 나눈다. 충조사는 모집단의 개체 모두를 조사하는 방법으로 많은 비용과 시간이 소요되므로 '인구주택총조사'등 특별한 경우를 제외하고는 실시되지 않는다. 따라서 일부분만 조사하여 모집단에 대해 추론하는 것이 보통인데, 이런한 조사를 표본조사라고 하고 이 때 조사하는 모집단의 일부분을 표본(sample)이라 한다. 모집단에 대해 알고자 하는 값을 모수(parameter)라고 하고, 모수를 추론하기 위해 구하는 표본의 값들을 통계량(statistic)이라 한다.
모집단은 유한 모집단과 무한 모집단으로 나뉜다. 유한 모집단은 유한 개의 개체로 이루어진 모집단이고, 무한 모집단은 무한 개의 개체로 이루어진 모집단으로 보통 개념적으로 상정된 모집단을 지칭한다.
다. 표본추출의 방법
총조사가 아닌 표본조사를 바탕으로 분석한 결과를 사용하거나 이해할 때는 모집단의 정의, 표본의 크기, 조사방법(면접조사, 우편조사, 전화조사, 이메일 조사 등), 조사기간, 표본추출 방법을 명확하게 밝히거나 확인해야 한다. 이러한 사항들에 따라 분석 결과의 해석은 큰 차이가 발생할 수 있다. 이중에서도 표본조사에서 가장 주용한 것은 모집단을 대표할 수 있는 표본 추출이다. 표본을 추출하는 방법에는 여러 가지가 있지만 가장 대표적인 방법으로는 단순랜덤추출법(simple random sampling), 계통추출법(systematic sampling), 집락추출법(stratifiied sampling)등이 있다. 실무에서는 이 방법들을 혼합해 사용하고 있다.
- 단순랜덤추출법: N개의 원소로 구성된 모집단에서 n개(n<= N)의 표본을 추출할 때 각 원소에 1, 2, 3, ....N까지의 번호를 부여한다. 여기서 n 개의 번호를 임의로 선택해 그 번호에 해당하는 원소를 표본으로 추출한다.
-계통추출법:모집단의 모든 원소들에게 1, 2, 3, .....N의 일련번호를 부여하고 이를 순서대로 나영한 후에 K개(K=N/n)씩 n개의 구간으로 나눈다. 첫 구간(1, 2, 3,..,K)에서 하나를 임의로선택한 후에 K개씩 뛰어서 표본을 추출한다.
- 집락추출법: 모집단이 몇 개의 집락(cluster)이 결합된 형태로 구성돼 있고, 각 집단에서 원소들에게 일련번호를 부여할 수 있는 경우에 이용된다. 일부 집락을 랜덤으로 선택된 각 집락에서 표본을 임의로 선택한다.
- 층화추출법: 상당이 이질적인 원소들로 구성된 모집단에서 각 계층을 고루 대표할 수있도록 표본을 추출하는 방법이다. 이질적인 모집단의 원소들을 서로 유사한 것끼리 몇 개의 층(stratum)으로 나눈 후, 각 층에서 표본을 랜덤하게 추출한다.
표본조사 이외에 자료를 수집하는 방법으로 실험이 있다. 표본조사가 대상 집단의 일부를 추출해 어떤 현상을 관측 또는 조사해 자료를 수집하는 방법인데 비해, 실험이란 특정 목적 하에서 실험 대상에게 처리를 가한 후에 그 결과를 관측해 자료를 수집하는 방법이다. 새로운 강의방법이 기존의 강의방법에 비해 쇼과적인지를 확인하기 위해 임의의 2개 학급을 선정해 새로운 강의방법과 기존 강의방법으로 일정기간 강의한 후 시험을 보고 성적을 조사한다.새로운 암 치료제의 효과를 분석하기 위해 암환자 20명을 임의적으로 10명씩 두 집단으로 나누고, 한 집단에는 새로운 암 치료제를 투여하고 다른 집단에는 아무 효과가 없는 가짜약을 투여한 후에 치료효과를 분석하는 등의 방식으로 실험이 실시되고 있다.
라. 자료의 종류
표본조사나 실험을 실시하는 과정에서 추출된 원소들이나 실험 단위로붜 주어진 목적에 적합하도록 관측해 자료를 얻는 것을 측정(measurement)이라고 한다. 측정방법은 크게 명목철도(nominal scale), 순서척도(ordinal scale), 구간척도(interval scale), 비율척도(ration scale)로 구분할 수 있다. 명목척도와 순서척도로 측정된 자료를 질적 자료(qualitative data)라고 하고, 구간척도와 비율척도를 측정된 자료를 양적자료(quantitative data)라고 정의한다.
- 명목철도: 측정 대상이 어느 집단에 속하는지 분퓨할 때 사용되는 척도로, 성별(남, 여) 구분, 출생지(서울특별시, 부산광역시, 경기도 등) 구분 등이 명목척도에 해당된다.
- 순서척도: 측정 대상의 특성이 가지는 서열관계를 관측하는 척도로, 선택사항이 일정한 순서로 돼 있다. 특정 서비스의 선호도를 (아주 좋아한다, 좋아한다, 그저 그렇다, 싫어한다, 아주 싫어한다)로 구분해 묻는 경우에 관측된 자료가 순서척도에 해당된다.
- 구간척도: 측정 대상이 갖고 있는 속성의 양을 측정하는 것으로 측정결과가 숫자로 표현되나 해당 속성이 전혀 없는 상태인 절대적인 원점이 없다. 따라서 두 관측값 사이의 비율은 별 의미가 없게 되는 척도로 온도, 지수 등이 구간척도에 해당된다.
- 비율척도: 절대적 기준인 0값이 존재하고 모든 사칙연산이 가능하며 제일 많은 정보를 가지고 있는 척도이다. 무게, 나이, 연간소득, 제품가격 등 숙자로 관측 되는 일반적인 자료의 특성이 비율척도에 해당 된다.
우리는 일상생활에서각종 통계를 접하며 살고 있다. 일상적으로 접하는 통계는 매일 발표되는 일기예보와 물가.실업률.GNP 등과 같은 경제통계, 각 정당에 대한 지지도 조사나 가족법 개정에 대한 의식조사와 같은 사회조사 분석통계, 새로운 희귀병 치표제의 임상실험 결과와 같은 실험결과 분석통계 등 다양한 형태를 갖고 있다. 통계학을 한마디로 정의하기는 어렵지만 통계학은 자료로부터 유용한 정보를 이끌어 내는 학문이라는 데 대부분의 통계학자들이 동의할 것이다. 유용한 정보를 이끌어 내는 작업에는 자료의 수집과 정리, 그리고 이를 해석하는 방법 등을 모두 포함한다.
나. 모집단과 표본
자료로부터 유용한 정보를 이끌어 낼 때 해당 정보에 대한 대상이 있다. 정당에 대한 지지도에 관해 논의한다면 구체적으로 대한민국 전체 국민들의 지지도, 유권자들의 지지도, 또는 서울에 거주하는 유권자의 지지도를 일컫는 것인지를 확실하게 하는 것은 매우 중요하다. 이 때 유용한 정보의 대상이 되는 것을 모집단이라고 한다. 즉 모집단은 우리가 알고자 하는 전체를 의미한다. 모집단을 구성하는 개체를 추출단위 혹은 원소라고 한다.
모집단에 대해 조사하는 방법에는 총조사(census)와 표본조서로 나눈다. 충조사는 모집단의 개체 모두를 조사하는 방법으로 많은 비용과 시간이 소요되므로 '인구주택총조사'등 특별한 경우를 제외하고는 실시되지 않는다. 따라서 일부분만 조사하여 모집단에 대해 추론하는 것이 보통인데, 이런한 조사를 표본조사라고 하고 이 때 조사하는 모집단의 일부분을 표본(sample)이라 한다. 모집단에 대해 알고자 하는 값을 모수(parameter)라고 하고, 모수를 추론하기 위해 구하는 표본의 값들을 통계량(statistic)이라 한다.
모집단은 유한 모집단과 무한 모집단으로 나뉜다. 유한 모집단은 유한 개의 개체로 이루어진 모집단이고, 무한 모집단은 무한 개의 개체로 이루어진 모집단으로 보통 개념적으로 상정된 모집단을 지칭한다.
다. 표본추출의 방법
총조사가 아닌 표본조사를 바탕으로 분석한 결과를 사용하거나 이해할 때는 모집단의 정의, 표본의 크기, 조사방법(면접조사, 우편조사, 전화조사, 이메일 조사 등), 조사기간, 표본추출 방법을 명확하게 밝히거나 확인해야 한다. 이러한 사항들에 따라 분석 결과의 해석은 큰 차이가 발생할 수 있다. 이중에서도 표본조사에서 가장 주용한 것은 모집단을 대표할 수 있는 표본 추출이다. 표본을 추출하는 방법에는 여러 가지가 있지만 가장 대표적인 방법으로는 단순랜덤추출법(simple random sampling), 계통추출법(systematic sampling), 집락추출법(stratifiied sampling)등이 있다. 실무에서는 이 방법들을 혼합해 사용하고 있다.
- 단순랜덤추출법: N개의 원소로 구성된 모집단에서 n개(n<= N)의 표본을 추출할 때 각 원소에 1, 2, 3, ....N까지의 번호를 부여한다. 여기서 n 개의 번호를 임의로 선택해 그 번호에 해당하는 원소를 표본으로 추출한다.
-계통추출법:모집단의 모든 원소들에게 1, 2, 3, .....N의 일련번호를 부여하고 이를 순서대로 나영한 후에 K개(K=N/n)씩 n개의 구간으로 나눈다. 첫 구간(1, 2, 3,..,K)에서 하나를 임의로선택한 후에 K개씩 뛰어서 표본을 추출한다.
- 집락추출법: 모집단이 몇 개의 집락(cluster)이 결합된 형태로 구성돼 있고, 각 집단에서 원소들에게 일련번호를 부여할 수 있는 경우에 이용된다. 일부 집락을 랜덤으로 선택된 각 집락에서 표본을 임의로 선택한다.
- 층화추출법: 상당이 이질적인 원소들로 구성된 모집단에서 각 계층을 고루 대표할 수있도록 표본을 추출하는 방법이다. 이질적인 모집단의 원소들을 서로 유사한 것끼리 몇 개의 층(stratum)으로 나눈 후, 각 층에서 표본을 랜덤하게 추출한다.
표본조사 이외에 자료를 수집하는 방법으로 실험이 있다. 표본조사가 대상 집단의 일부를 추출해 어떤 현상을 관측 또는 조사해 자료를 수집하는 방법인데 비해, 실험이란 특정 목적 하에서 실험 대상에게 처리를 가한 후에 그 결과를 관측해 자료를 수집하는 방법이다. 새로운 강의방법이 기존의 강의방법에 비해 쇼과적인지를 확인하기 위해 임의의 2개 학급을 선정해 새로운 강의방법과 기존 강의방법으로 일정기간 강의한 후 시험을 보고 성적을 조사한다.새로운 암 치료제의 효과를 분석하기 위해 암환자 20명을 임의적으로 10명씩 두 집단으로 나누고, 한 집단에는 새로운 암 치료제를 투여하고 다른 집단에는 아무 효과가 없는 가짜약을 투여한 후에 치료효과를 분석하는 등의 방식으로 실험이 실시되고 있다.
라. 자료의 종류
표본조사나 실험을 실시하는 과정에서 추출된 원소들이나 실험 단위로붜 주어진 목적에 적합하도록 관측해 자료를 얻는 것을 측정(measurement)이라고 한다. 측정방법은 크게 명목철도(nominal scale), 순서척도(ordinal scale), 구간척도(interval scale), 비율척도(ration scale)로 구분할 수 있다. 명목척도와 순서척도로 측정된 자료를 질적 자료(qualitative data)라고 하고, 구간척도와 비율척도를 측정된 자료를 양적자료(quantitative data)라고 정의한다.
- 명목철도: 측정 대상이 어느 집단에 속하는지 분퓨할 때 사용되는 척도로, 성별(남, 여) 구분, 출생지(서울특별시, 부산광역시, 경기도 등) 구분 등이 명목척도에 해당된다.
- 순서척도: 측정 대상의 특성이 가지는 서열관계를 관측하는 척도로, 선택사항이 일정한 순서로 돼 있다. 특정 서비스의 선호도를 (아주 좋아한다, 좋아한다, 그저 그렇다, 싫어한다, 아주 싫어한다)로 구분해 묻는 경우에 관측된 자료가 순서척도에 해당된다.
- 구간척도: 측정 대상이 갖고 있는 속성의 양을 측정하는 것으로 측정결과가 숫자로 표현되나 해당 속성이 전혀 없는 상태인 절대적인 원점이 없다. 따라서 두 관측값 사이의 비율은 별 의미가 없게 되는 척도로 온도, 지수 등이 구간척도에 해당된다.
- 비율척도: 절대적 기준인 0값이 존재하고 모든 사칙연산이 가능하며 제일 많은 정보를 가지고 있는 척도이다. 무게, 나이, 연간소득, 제품가격 등 숙자로 관측 되는 일반적인 자료의 특성이 비율척도에 해당 된다.
2018년 1월 15일 월요일
제3절 결측값 처리와 이상값 검색
데이터를 다루다 보면 결측값이나 이상값이 존재한다. 이러한 경우에 효율적인 방법으로 처리하여 데이터의 정보가 손실되거나 왜곡되는 것을 피해야 한다.
1. 데이터 탐색
데이터를 본격 분석하기 전에 대략의 데이터의 특성을 파악하고, 데이터에 대한 통찰을 얻기 위해 다각도로 접근하도록 한다.
가. 데이터 기초 통계
summary 함수를 통해 연속형 변수의 경우 4분위수, 최소값, 최대값, 중앙값, 평균 등을 출력하고 범주형 변수의 경우 각 범부에 대한 빈도수를 출력하여 데이터의 분포를 파악한다. 연속형 변수의 경우 cov와 cor함수를 통해 공분산행렬과 상관계수행렬을 출력하여 변수 간의 선형 상관관계의 강도를 확인한다.
2. 결측값 처리
결측값(Missing data) 처리를 위해 시간을 많이 쓰는 것은 비효율적이다. 가능하면 결측값은 제외하고 처리하는 게 적합하지만 결측값 자체가 의미가 있는 경유도 있다. 결측값을 어떻게 처리하느냐는 전체 작업속도에 많은 영향을 주기 때문에 이 부분을 자동화 하면 업무 효율성이 매우 향상돈다. R에서 결측값 처리 관련 패키지는 Amelia 2, Mice, mistools 등 여러 가지가 있는데, 여기서는 Amelia 패키지를 사용했다.
우선 결측값을 확인하는 방법과 제외하는 간단한 방법부터 알아보자. R에서는 결측값을 NA(not avaliable)로 처리한다. 불가능한 값(예를 들면 dividing by zero)은 NaN(not a number)으로 처리된다.
결측값을 입력하는 방법은 NA를 이용하면 되고, is.na를 이용해 결측값인지 여부를 확인할 수 있다.
3. 이상값 검색
이상값(Outlier) 검색은 분석에서 전처리를 어떻게 할지를 결정할 때와 부정사용방지 시스템(Fraud Detection System, FDS)에서 규칙을 발견하는 데 사용할 수 있다. 이상값은 의도하지 않게 잘못 입력한 경우(a1), 의도하지 않게 입력됐으나 분석 목적에 부합되지 않아 제거해야 하는 경우(a2), 의도되지 않은 현상이지만 부석에 포함해야 하는 경우(a3)가 있다. 그리고 의도된 이상값(b1)인 경우가 있는데, b1의 경우는 대부분 사기(fraud)이다. 특히 a1, a2는 bad data라고 할 수 있고 a3, b1이 이상값이라고 할 수 있다.
관련 알고리즘으로는 ESD(Extreme Studentized Deviation), MADM등이 있는데 ESD가 가장 잘 알려져 있다. 평균으로부터 k*표준편차만큼 떨어져 있는 값들을 이상값으로 판단하고 일반적으로 k는 3으로 한다.
그러나 이 방법조차도 이상값으로부터 매우 민감한 단점이 있다.
실전에서 이상값을 찾기 위해 너무 많은 시간을 쓰는것은 추천하지 않느다. 변수들에 대해 summary 정도로 평균과 중위수 값을 파악해 제 1 사분위수 (Q1)와 제 3 사분위수 (Q3)을 보면 1차 판단을 하고, 좀 더 ㅅ간이 된다면 주요 변수(dimension)별로 플롯해보면서 특성을 파악할 수 있다. 단 부정사용방지 프로젝트(fraud detection project)에서는 많은 시간을 여기에 할당해야 한다.
a2 경우의 대표전인 경우로 POS 데이터에서 수작업으로 일정 시간에 일괄적으로 거래정보를 입력하는 경우 시간대별 매출 분석에서는 제외해야 되고, 고객 행동분석에서는 a3에 해당돼 포함해서 분석을 해야한다. 그러나 이러한 경우의 조합이 다양해져 변수가 많아지면 표준 데이터를 기준으로 작업하지 못하고 경우에 따라 데이터가 달라지므로 의사결정을 해야 한다.
또 다른 대표적인 경우로 불량이나 분실로 발생된 상품을 별도 고객명으로 가상 입력하는 경우이다. 특정 고객이 매우 많은 상품을 구매한 것으로 잘못 처리돼 전체 분석에 영향을 미치는 경우도 있다. 미리 상세하게 담당자에게 문의하지 않으면 알 수 없는 다양한 비즈니스 규칙도 있고, 물어도 고의로 대답을 안 하거나 모르는 경우가 크게 영향을 미칠 수 있다. 결국 일정 시간을 할애 분석 기준을 수립하고, 해당 기준에 의거해 드러나지 않는 것은 무시하고 진행해야 된다. 그렇지 않으면 분석 데이터와 결과 자체가 모두 엉망이 돼 관리가 불가능해진다.
1. 데이터 탐색
데이터를 본격 분석하기 전에 대략의 데이터의 특성을 파악하고, 데이터에 대한 통찰을 얻기 위해 다각도로 접근하도록 한다.
가. 데이터 기초 통계
summary 함수를 통해 연속형 변수의 경우 4분위수, 최소값, 최대값, 중앙값, 평균 등을 출력하고 범주형 변수의 경우 각 범부에 대한 빈도수를 출력하여 데이터의 분포를 파악한다. 연속형 변수의 경우 cov와 cor함수를 통해 공분산행렬과 상관계수행렬을 출력하여 변수 간의 선형 상관관계의 강도를 확인한다.
2. 결측값 처리
결측값(Missing data) 처리를 위해 시간을 많이 쓰는 것은 비효율적이다. 가능하면 결측값은 제외하고 처리하는 게 적합하지만 결측값 자체가 의미가 있는 경유도 있다. 결측값을 어떻게 처리하느냐는 전체 작업속도에 많은 영향을 주기 때문에 이 부분을 자동화 하면 업무 효율성이 매우 향상돈다. R에서 결측값 처리 관련 패키지는 Amelia 2, Mice, mistools 등 여러 가지가 있는데, 여기서는 Amelia 패키지를 사용했다.
우선 결측값을 확인하는 방법과 제외하는 간단한 방법부터 알아보자. R에서는 결측값을 NA(not avaliable)로 처리한다. 불가능한 값(예를 들면 dividing by zero)은 NaN(not a number)으로 처리된다.
결측값을 입력하는 방법은 NA를 이용하면 되고, is.na를 이용해 결측값인지 여부를 확인할 수 있다.
3. 이상값 검색
이상값(Outlier) 검색은 분석에서 전처리를 어떻게 할지를 결정할 때와 부정사용방지 시스템(Fraud Detection System, FDS)에서 규칙을 발견하는 데 사용할 수 있다. 이상값은 의도하지 않게 잘못 입력한 경우(a1), 의도하지 않게 입력됐으나 분석 목적에 부합되지 않아 제거해야 하는 경우(a2), 의도되지 않은 현상이지만 부석에 포함해야 하는 경우(a3)가 있다. 그리고 의도된 이상값(b1)인 경우가 있는데, b1의 경우는 대부분 사기(fraud)이다. 특히 a1, a2는 bad data라고 할 수 있고 a3, b1이 이상값이라고 할 수 있다.
관련 알고리즘으로는 ESD(Extreme Studentized Deviation), MADM등이 있는데 ESD가 가장 잘 알려져 있다. 평균으로부터 k*표준편차만큼 떨어져 있는 값들을 이상값으로 판단하고 일반적으로 k는 3으로 한다.
그러나 이 방법조차도 이상값으로부터 매우 민감한 단점이 있다.
실전에서 이상값을 찾기 위해 너무 많은 시간을 쓰는것은 추천하지 않느다. 변수들에 대해 summary 정도로 평균과 중위수 값을 파악해 제 1 사분위수 (Q1)와 제 3 사분위수 (Q3)을 보면 1차 판단을 하고, 좀 더 ㅅ간이 된다면 주요 변수(dimension)별로 플롯해보면서 특성을 파악할 수 있다. 단 부정사용방지 프로젝트(fraud detection project)에서는 많은 시간을 여기에 할당해야 한다.
a2 경우의 대표전인 경우로 POS 데이터에서 수작업으로 일정 시간에 일괄적으로 거래정보를 입력하는 경우 시간대별 매출 분석에서는 제외해야 되고, 고객 행동분석에서는 a3에 해당돼 포함해서 분석을 해야한다. 그러나 이러한 경우의 조합이 다양해져 변수가 많아지면 표준 데이터를 기준으로 작업하지 못하고 경우에 따라 데이터가 달라지므로 의사결정을 해야 한다.
또 다른 대표적인 경우로 불량이나 분실로 발생된 상품을 별도 고객명으로 가상 입력하는 경우이다. 특정 고객이 매우 많은 상품을 구매한 것으로 잘못 처리돼 전체 분석에 영향을 미치는 경우도 있다. 미리 상세하게 담당자에게 문의하지 않으면 알 수 없는 다양한 비즈니스 규칙도 있고, 물어도 고의로 대답을 안 하거나 모르는 경우가 크게 영향을 미칠 수 있다. 결국 일정 시간을 할애 분석 기준을 수립하고, 해당 기준에 의거해 드러나지 않는 것은 무시하고 진행해야 된다. 그렇지 않으면 분석 데이터와 결과 자체가 모두 엉망이 돼 관리가 불가능해진다.
2018년 1월 14일 일요일
CHAPTER 1 소개(파이센 라이브러를 활요한 머신러닝)
머신러닝은 데이터에서 지식을 추출하는 작업.
1.1 왜 머신러닝인가?
직접 규칙 생성시 두가지 커다란 단점.(규칙 기반 전물가 시스템, 3세대 인공지능)
- 결정에 필요한 로직은 한 분야나 작업에 국한.(작업이 조금만 변경되더라도 전체 시스템을 다시 개발해야 할 수 있음)
- 규칙을 설계하려면 그 분야 전문가들이 내리른 결정 방식 참조
1.1.1 머신러닝으로 풀 수 있는 문제
지도학습 알고리즘 : 이미 알려진 사례를 바탕으로 일반화된 모델을 만들어 의사 결정 프로세스를 자동화하는 것
비지도학습 알고리즘 : 입력은 주어지지만 출력은 제공되니 않음.
샘플(sample) 또는 데이터포인트(data point): 하나의 개체 혹은 행
특성: 샘플의 속성
1.1.2 문제와 데이터 이해하기
머신러닝 프로세스에서 가장 중요한 과정은 사용할 데이터를 이해하고 그 데이터가 해결해야 할 문제가 어떤 관련이 있는지를 이해하는 일.
1.2 왜 파이썬인가?
범용 프로그램 언어로서 파이썬은 복잡한 그래픽 사용자 인터페이스(GUI)나 웹 서비스도 만들 수 있고 기존 시스템과 통합하기도 쉽다.
1.3 scikit-learn(http://scikit-learn.org/stable/user_guide.html , http://sckikit-learn.org/stable/modules/classes.html)
오픈소스인 skikit-learn은 자유롭게 사용 및 배포
산업 현장이나 하계에도 널리 사용
많은 튜토리얼과 예제코드를 쉽게 접할 수 있음.
1.3.1 scikit-learn 설치
Anaconda (http://www.continuum.io/annaconda-overview)
대용량 데이터 처리, 예측 분석, 과학 계산용 파이썬 배포판
Enthought coanopy(http://www.ehthought.com/products/canopy/)
무료버젼에는 scujut-learn이 비 포함, 학생과 학위 수여가 되는 기관 종사자는 Enthought Canopy의 유료 버젼을 무료로 받을수 있음.
Python(x,y) (http://python-xy.github.io/)
원도우 환경을 위한 과학 계산용 무료 파이씬 배포판
1.4 필수 라이브러리와 도구들
scikit-learn: 파이썬 과학 라이브러리
NumPy, SciPy, matplotib
1.4.1 주피터 노트북
1.4.2 NumPy
NumPy(http://numpy.org/): 과학 계산을 필요한 패키지. 다차원 배열을 위한 기능과 선형 대수 연산과 푸리에 변환 같은 고수준 수학 함수와 유사 난수 생성기를 포함.
1.4.3 SciPy(http://www.scipy.org/scipylib)
SciPy는 과학 계산용 함수를 모아놓은 파이썬 패키지
1.1 왜 머신러닝인가?
직접 규칙 생성시 두가지 커다란 단점.(규칙 기반 전물가 시스템, 3세대 인공지능)
- 결정에 필요한 로직은 한 분야나 작업에 국한.(작업이 조금만 변경되더라도 전체 시스템을 다시 개발해야 할 수 있음)
- 규칙을 설계하려면 그 분야 전문가들이 내리른 결정 방식 참조
1.1.1 머신러닝으로 풀 수 있는 문제
지도학습 알고리즘 : 이미 알려진 사례를 바탕으로 일반화된 모델을 만들어 의사 결정 프로세스를 자동화하는 것
비지도학습 알고리즘 : 입력은 주어지지만 출력은 제공되니 않음.
샘플(sample) 또는 데이터포인트(data point): 하나의 개체 혹은 행
특성: 샘플의 속성
1.1.2 문제와 데이터 이해하기
머신러닝 프로세스에서 가장 중요한 과정은 사용할 데이터를 이해하고 그 데이터가 해결해야 할 문제가 어떤 관련이 있는지를 이해하는 일.
1.2 왜 파이썬인가?
범용 프로그램 언어로서 파이썬은 복잡한 그래픽 사용자 인터페이스(GUI)나 웹 서비스도 만들 수 있고 기존 시스템과 통합하기도 쉽다.
1.3 scikit-learn(http://scikit-learn.org/stable/user_guide.html , http://sckikit-learn.org/stable/modules/classes.html)
오픈소스인 skikit-learn은 자유롭게 사용 및 배포
산업 현장이나 하계에도 널리 사용
많은 튜토리얼과 예제코드를 쉽게 접할 수 있음.
1.3.1 scikit-learn 설치
Anaconda (http://www.continuum.io/annaconda-overview)
대용량 데이터 처리, 예측 분석, 과학 계산용 파이썬 배포판
Enthought coanopy(http://www.ehthought.com/products/canopy/)
무료버젼에는 scujut-learn이 비 포함, 학생과 학위 수여가 되는 기관 종사자는 Enthought Canopy의 유료 버젼을 무료로 받을수 있음.
Python(x,y) (http://python-xy.github.io/)
원도우 환경을 위한 과학 계산용 무료 파이씬 배포판
1.4 필수 라이브러리와 도구들
scikit-learn: 파이썬 과학 라이브러리
NumPy, SciPy, matplotib
1.4.1 주피터 노트북
1.4.2 NumPy
NumPy(http://numpy.org/): 과학 계산을 필요한 패키지. 다차원 배열을 위한 기능과 선형 대수 연산과 푸리에 변환 같은 고수준 수학 함수와 유사 난수 생성기를 포함.
1.4.3 SciPy(http://www.scipy.org/scipylib)
SciPy는 과학 계산용 함수를 모아놓은 파이썬 패키지
2. sqldf를 이용한 데이터 분석
R에서 sqldf는 표준 SQL에서 사용되는 문장이 모두 가능하고, 데이터 이름에 "."같은 특수문자가 들어간 경우 ''로 묶어주면 테이블처럼 간단히 처리할 수 있다.
3. plyr
plyr은 데이터를 분리하고처리한 다음, 다시 결합하는 등 가장 필수적인 데이터 처리기능을 제공한다.
apply 함수와 muti-core 사용 함수를 이용하면 for loop를 사용하지 않고 매우 간단하고 빠르게 처리할 수 있다. plyr은 apply 함수에 기반해 데이터와 출력변수를 동시에 배열로 치환하여 처리하는 패키지이다. 예를 들어 ddply 함수는 데이터 프레임 데이터를 가공해 데이터 프레임으로 돌려준다. 데이터별 plyr함수들은 아래와 같다.
- d = 데이터 프레임 (data.frame)
- a = 배열 (array)
- l = 리스트 (list)
따라서 ddply는 데이터 프레임을 입력 받아서, 그것을 분리(split)하거나 그 외 어떤 처리를 한 후 데이터 프레임으로 출력하게 한다. 일반적으로 데이터 프레임을 많이 다루기 때문에 ddply를 많이 쓴다. 마찬가지로 ldply는 리스트를 입력받아서 어떤 처리를 한 후에 데이터 프레임으로 출력하게 한다. 이러한 관계를 다음표로 요약할 수 있다. 여기에서 열(column)은 입력되는 데이터 형태를 말하며, 행(row)는 출력되는 데이터 형태를 말한다.
입력되는 데이터 형태
데이터 프레임 리스트 배열
(data.frame) (list) (array)
데이터 프레임(data.frame) ddply ldply adply
리스트 (list) dlply llply alply
배열 (array) daply laply aaply
4. 데이터 테이블
데이터 테이블(data.table)은 데이터 프레임과 유사하지만 보다 빠른 그룹화(grouping)와 순서화 (ordering), 짧은 문장 지원 측면에서 데이터 프레임보다 매력적이다. 하지만 무조건 빠른 것이 아니므로 특성에 맞게 사용해야 한다. 특히 64비트 환경에서 RAM이 충분히 많을 때는 효율적이다.
3. plyr
plyr은 데이터를 분리하고처리한 다음, 다시 결합하는 등 가장 필수적인 데이터 처리기능을 제공한다.
apply 함수와 muti-core 사용 함수를 이용하면 for loop를 사용하지 않고 매우 간단하고 빠르게 처리할 수 있다. plyr은 apply 함수에 기반해 데이터와 출력변수를 동시에 배열로 치환하여 처리하는 패키지이다. 예를 들어 ddply 함수는 데이터 프레임 데이터를 가공해 데이터 프레임으로 돌려준다. 데이터별 plyr함수들은 아래와 같다.
- d = 데이터 프레임 (data.frame)
- a = 배열 (array)
- l = 리스트 (list)
따라서 ddply는 데이터 프레임을 입력 받아서, 그것을 분리(split)하거나 그 외 어떤 처리를 한 후 데이터 프레임으로 출력하게 한다. 일반적으로 데이터 프레임을 많이 다루기 때문에 ddply를 많이 쓴다. 마찬가지로 ldply는 리스트를 입력받아서 어떤 처리를 한 후에 데이터 프레임으로 출력하게 한다. 이러한 관계를 다음표로 요약할 수 있다. 여기에서 열(column)은 입력되는 데이터 형태를 말하며, 행(row)는 출력되는 데이터 형태를 말한다.
입력되는 데이터 형태
데이터 프레임 리스트 배열
(data.frame) (list) (array)
데이터 프레임(data.frame) ddply ldply adply
리스트 (list) dlply llply alply
배열 (array) daply laply aaply
4. 데이터 테이블
데이터 테이블(data.table)은 데이터 프레임과 유사하지만 보다 빠른 그룹화(grouping)와 순서화 (ordering), 짧은 문장 지원 측면에서 데이터 프레임보다 매력적이다. 하지만 무조건 빠른 것이 아니므로 특성에 맞게 사용해야 한다. 특히 64비트 환경에서 RAM이 충분히 많을 때는 효율적이다.
1. R reshape를 활용한 데이터 마트 개발
데이터 마트란 데이터의 한 부분으로서 특정 사용자가 관심을 갖는 데이터들을 담은 비교적 작은 규모의 데이터 웨어하우스이다. 즉, 일반적인 데이터베이스 형태로 갖고 있는 다양한 정보를 사용자의 요구 항목에 따라 체계적으로 분석하여 기업의 경영 활동을 돕기 위한 시스템
데이터 마트는 전체적인 데이터 웨어하우스에 있는 일부 데이터를 가지고 특정 사용자를 대상으로 한다.
데이터 웨어하우스와 데이터 마트의 구분은 사용자의 기능 및 제공 범위를 기준으로 한다.
데이터 마트 개발에 대해 논하기에 앞서 데이터의 reshape에 대해서 간단하게 설명하고자 한다. 어떤 데이터는 여러 개층 또는 수준으로 그룹화를 시킬 수 있거나 다양한 관점에서 살펴볼 필요가 있다. 예를 들면 같은 데이터를 반복 측정한 경우 수집된 데이터를 관측하고자 하는 변수 기준으로 살펴볼 수도 있고 매 회의 반복을 기준으로 살펴볼 수도 있는 것과 같은 원리이다. 이런 방식의 데이터 탐색을 용일하게 수행하기 위해서는 데이터 셋에 대한 일종의 변형이 필요하다. 어떤 변형을 어떻게 수행해야 할 것인지 정확하게 정의 내리긴 어려울지 몰라도 분석에 임하는 사람들이라면 기존의 데이터 셋과는 다른 새로운 무언가가 필요하다고 직관적으로 느낄 것이다. resphape는 이와 같이 데이터 재정렬을 위한 기법의 하나이다. reshape와 비견될 수 있는 개념 중 하나는 밀집화(aggregation)인데 reshape보다는 밀집화가 우리에게 좀 더 친숙하고 쉽게 수행되고 있는 방법이다. 밀집화 기법을 이용하면 복잡한 데이터를 더 단순하고 사용하기 편리한 상태로 축소하거나 재정렬 할 수 있다. 가장 대표적으로 사용되는 밀집화 기법의 하나가 Excel의 Pivot Table 기능이다. 그러나 이런 밀집화 기법을 사용하면 데이터가 간단명료하게 표시되기는 하지만 기존 데이터가 가지고 있던 더 많은 정보들을 손실하게 된다. 이와 달리 reshape는 데이터 재정렬을 수행하되, 원래 데이터가 가지고 있는 모든 정보들을 그대로 유지한다는 것이 차이점이다. R에는 다양한 방식으로 reshape를 수행할 수 있는 명령어들이 여럿 존재하지만, 적재적소에 올바른 명령어를 사용하기에 어려움이 많았다. 'reshape' 패키지는 이러한 문제를 극복한 reshape방법의 하나로서 이 장에서는 데이터 마트 개발에 바로 이 'reshape'패키지를 이용해보고자 한다. 한편, 여기에서 설치한 reshape패키지는 R에 미리 내재되어 있는 명령문 reshape(Resahpe Grouped Data)와는 다르다는 것을 유념하길 바란다.
- reshape
reshape패키지는 단지 melt와 cast만을 사용하여 데이터를 재구성하거나 밀집화된 데이터를 유연하게 생성해준다. reshape는 기존 데이터 구조를 column-wise하게 전환하는데, 크게 melt와 cast 단계로 구분된다.
데이터 마트는 전체적인 데이터 웨어하우스에 있는 일부 데이터를 가지고 특정 사용자를 대상으로 한다.
데이터 웨어하우스와 데이터 마트의 구분은 사용자의 기능 및 제공 범위를 기준으로 한다.
데이터 마트 개발에 대해 논하기에 앞서 데이터의 reshape에 대해서 간단하게 설명하고자 한다. 어떤 데이터는 여러 개층 또는 수준으로 그룹화를 시킬 수 있거나 다양한 관점에서 살펴볼 필요가 있다. 예를 들면 같은 데이터를 반복 측정한 경우 수집된 데이터를 관측하고자 하는 변수 기준으로 살펴볼 수도 있고 매 회의 반복을 기준으로 살펴볼 수도 있는 것과 같은 원리이다. 이런 방식의 데이터 탐색을 용일하게 수행하기 위해서는 데이터 셋에 대한 일종의 변형이 필요하다. 어떤 변형을 어떻게 수행해야 할 것인지 정확하게 정의 내리긴 어려울지 몰라도 분석에 임하는 사람들이라면 기존의 데이터 셋과는 다른 새로운 무언가가 필요하다고 직관적으로 느낄 것이다. resphape는 이와 같이 데이터 재정렬을 위한 기법의 하나이다. reshape와 비견될 수 있는 개념 중 하나는 밀집화(aggregation)인데 reshape보다는 밀집화가 우리에게 좀 더 친숙하고 쉽게 수행되고 있는 방법이다. 밀집화 기법을 이용하면 복잡한 데이터를 더 단순하고 사용하기 편리한 상태로 축소하거나 재정렬 할 수 있다. 가장 대표적으로 사용되는 밀집화 기법의 하나가 Excel의 Pivot Table 기능이다. 그러나 이런 밀집화 기법을 사용하면 데이터가 간단명료하게 표시되기는 하지만 기존 데이터가 가지고 있던 더 많은 정보들을 손실하게 된다. 이와 달리 reshape는 데이터 재정렬을 수행하되, 원래 데이터가 가지고 있는 모든 정보들을 그대로 유지한다는 것이 차이점이다. R에는 다양한 방식으로 reshape를 수행할 수 있는 명령어들이 여럿 존재하지만, 적재적소에 올바른 명령어를 사용하기에 어려움이 많았다. 'reshape' 패키지는 이러한 문제를 극복한 reshape방법의 하나로서 이 장에서는 데이터 마트 개발에 바로 이 'reshape'패키지를 이용해보고자 한다. 한편, 여기에서 설치한 reshape패키지는 R에 미리 내재되어 있는 명령문 reshape(Resahpe Grouped Data)와는 다르다는 것을 유념하길 바란다.
- reshape
reshape패키지는 단지 melt와 cast만을 사용하여 데이터를 재구성하거나 밀집화된 데이터를 유연하게 생성해준다. reshape는 기존 데이터 구조를 column-wise하게 전환하는데, 크게 melt와 cast 단계로 구분된다.
피드 구독하기:
글 (Atom)