incastle의 콩나물

[Data Mining] Introduction to Data Mining -4- (Data Preprocess, 전처리) 본문

19-1 대학 수업/데이터마이닝

[Data Mining] Introduction to Data Mining -4- (Data Preprocess, 전처리)

incastle 2019. 5. 2. 01:56

데이터 마이닝 진창호 교수님 (19-1)

 

전처리 방법들, 각각을 설명할 수 있는지 체크하기

- Aggregation : object 두 개를 하나로 합치기!

- Sampling : 데이터 양이 너무 많아~ 계산 비용을 줄이기 위해서 샘플링!

- Dimensionality Reduction : sampling 하고 같은 목적 + data를 visualizing 해서 insight 얻기 +불필요한 feature 줄이기 + noise 줄이기

- Feature subset selection : 차원 축소하는 방법 중 하나임

- Feature creation

- Discretization and Binarization(이산화 이진화) : certain algorithms requires certain form of attributes 

- Attribute Transformation : log(x)를 취하는 등 변형을  함

 

하나하나 자세히 살펴보자

Aggregation

- 아까 두 개를 합친다고 했다. 

- 가령 transaction data에서 price를 전부 합친다라던가

- 목적

>> 데이터양 자체를 줄이자 => less memory, 시간 절약

>> scale을 바꾼다 => 도시를 합치면 지역이, 주, 나라가 된다.

>> more 'stable' data => aggregated data는 less variability 한 경향이 있다. (아이스크림 판매량을 일별 -> 월별 -> 연별  : 들쭉날쭉하는 게 점점 줄어든다.)

 

* data를 통합하면 key 값도 변경될 수 있다.

- 아이스크림 a 판매량(key :  아이스크림) => A마트에서 전체 아이스크림 판매량(key : store) => 지역 AA 전체 아이스크림 판매량(key : region)

* 무엇을 통합하느냐에 따라 방법이 달라진다.

- Quantative attribute(정량적인) : 가격, 판매량 => sum이나 average

- Qualitative attribute(정성적인) : 판매 품목

1) ommited : 판매된 item의 set(집합) => 우유가 100개 팔려도 1 or 0으로만 표기 

2) summarized :  상위 판매 물건 set만 보여준다, 대분류만 보여준다. 

 

Sampling

- 예비 분석, final 분석 모두 사용됨

- 목적은 역시 계산 비용을 줄이기 위해서 

- key principle

1) sample은 원본 데이터셋과 거의 동일한 특징을 갖는다. 

2) sample이 원본을 잘 대변하고 있다면, sample을 사용하는 건 전체 데이터 셋을 사용하는 것과 유사한 효과를 얻는 것.

 

Sampling의 종류

- ㄱ냥 랜덤, 모두 동일한 확률

- 비 복원 추출  // 복원 추출

- stratified with replacement : 계층을 나눈 뒤 각 층에서 샘플(target값이 asymmetric 일 때 사용하면 좋겠지?)

 

Dimensionality Reduction

- 목적

1) 차원의 저주를 피하기 위해서(sparse는 싫어!)

2) 계산량 줄이기

3) 시각화의 용이성

4) 불필요한 feature, noise를 줄이기 위해서 

예시 : PCA

- data의 분산을 가장 잘 설명하는(data를 투영시켰을 때 분산을 가장 잘 설명하는) 새로운 축을 찾는 것

- 새로운 축을 찾는다 = Find the eigenvectors of the covariance matrix

- the egienvenctors define the new space

 

Feature Subset Selection

- 차원을 축소하는  방법 중 하나

- 삭제 대상

1) Redundant features(불필요한 feature를 삭제) : 다른 attr로 생성 가능한 feature 삭제 (가격 => tax)

2) irrelevant features : contain no information that is useful for the data mining task (Ex. student ID)

 

Feature Creation

- 의미 있는 새로운 attr 생성

- 방법론 세 가지

1) Feature Extraction : 사진 데이터(고차원) => 모든 attr 사용 x => 눈, 코, 입 등을 확인할 수 있는 핵심 attr만 추출해서 분석

2) Mapping Data to New Space : 푸리에 변환 (잘 모름...), 어떤 주파수를 분리해서 보는 것??

3) Feature Construction : density => mass/volume

>> 원래 feature가 algorithm에 넣기 부적절한 형태여서 실행

>> 도메인 지식에 의존한다. 

>> 간단한 수학 지식으로 쉨킷쉨킷

 

Discretization and Binarization

- 목적 : 앞에서 말했듯이 특정 분석에는 특정한 형태를 요구할 수 있음

1) 이산화(discretization) : continuous attribute를 categorical attribute로 바꾼다.

2) 이진화(binarization) : continuous + discrete attribute 모두를 binary로 바꾼다. (0과 1로만 하는 건 아니다. (0~4 => short // 5~10 => long)

 

Binarization(ordinal variable일 때)

예시 : awful, poor, ok, good, great

1) 변수를 [0, m-1]까지 맵핑함 (m=변수의 수) : m=5

2) log2_M만큼의 variable이 생길 것이다. (2는 밑, M은 지수) : log2_5 = 2.xxx  => 3개의 변수가 생성되겠군!

3) 게임 끝

categorical value integer value x1 x2 x3
awful 0 0 0 0
poor 1 0 0 1
ok 2 0 1 0
good 3 0 1 1
great 4 1 0 0

- 총 3개의 변수로 만들어짐

- x3는 2^0, x2는 2^1, x1은 2^2

- good = 2^1*1 + 2^0*1 = 3

- 장점 : binarization이면서, 위계라는 정보를 유지했음

- 그냥 0~4로 하면 안 되냐? => 분석 방법에 따라 베르누이 분포를 input으로 하는 모델이 있을 수 있다. 

- 그런데 지금 x2 변수에 대해서 ok에도 1이고 good에도 1이기 때문에 ok과 good에 상관관계가 존재한다고 해석될 수 있음

 

Asymmetric Binary Attribute

- 연관 분석은 asymmetric binary attribute를 필요 (사건이 발생했다 안 했다로 평가해야 하니까) => 사건이 발생했다는 1의 정보가 중요

categorical value integer value x1 x2 x3 x4 x5
awful 0 1 0 0 0 0
poor 1 0 1 0 0 0
ok 2 0 0 1 0 0
good 3 0 0 0 1 0
great 4 0 0 0 0 1

- 사실 지금 같은 경우는 위계가 있으니까 부적절하다고 볼 수 있음

- 성별 같은 nominal attribute일 때 적절

 

Discretization of Continuous Attribute (연속성 변수에서는 어떻게 이산화 할까?)

- 몇 개의 카테고리로 나눌지 결정

- 기존 value를 어떻게 맵핑할지 결정

>> continuous attribute를 정렬한다.

>> 쪼개고 파트별로 category 부여한다. 

 

Attribute Transformation

1) log 취하는 skill, 왜 쓰지?

- 정규성을 높이자! 큰 값의 편차를 줄여서 왜도와 줄일 수 있기 때문에 정규성이 높아진다. 

- 큰 수를 같은 비율의 작은 수로 바꿔주는 것 

 

2) Standardization and Normalization (표준화 & 정규화)

- 표준화 :  Z = (X - 평균)/표준 편차 

- median을 사용하기 => robust 하다. => outlier에 민감하다.

 

Measures of Similarity and Dissimilarity

- Similarity (유사성)

>> Numerical measure

>> dissimilarity와 값만 반대, 둘 중 뭔지 구별하려면 문맥!

>> 비슷하면 값이 커진다. 

 

- Dissimilarity (비유 사성)

>> Numerical measure

>> 비슷할 때 값이 낮다.

- 둘을 교환하기

>> d=1-s (반대되는 거임 그냥, 뭐를 뭐로 정의하느냐에 따라 달라짐)

>> d = -s

 

유사도를 변환하기

- 0과 1 사이로 보내는 방법은 굉장히 많음 => 목적에 맞는 것을 사용한다. 

- s' = (s-min_s) / (max_s - min_s)

- d' = d/(1+d)

>> 같은 비율로 보내는 게 아니라 뒤로 갈수록 작은 차이가 생기도록 만든다.

>> (0, 0.5, 2, 10, 100, 1000) => (0, 0.33, 0.67, 0.90, 0.99, 0.999)

>> 앞의 구간에서의 차이가 더 의미가 있음

 

유사도/비 유사도 for simple attribute

type 1-1 : single nominal attribute

>> 같으면 1, 다르면 0. 매우 심플하다.

 

type 1-2 : single ordinal attribute

>> 각각의 value를 숫자에 맵핑한다.

>> {poor = 0, fair = 1, OK=2, good=3, wonderful = 4} P1 = fair, P2=good

>> d(P1, P2) = 3-2 =1

>> d(P1, P2) = ( (3-2) - 0) / (4 - 0) = 0.25   ===> 0과 1 사이로 보내기

>> 유사하면 값이 커진다고 했으니 이 경우는 비 유사도를 구한 것

>> 유사도로 바꾸려면 s=1-d

 

type 1-3 : interval or ratio attribute

>> 차이를 구한다 => 그것이 비 유사도(차이가 크면 클수록 비 유사도가 커지니까)

* 정리

type 2 : multiple attribute

- 유클리디안 거리 사용하자

- 표준화가 필요하면 표준화하고

 

Similarity Between Binary Vectors

- x, y가 binary attribute로만 이루어진 상황일 때 유사도 측정

f10, f01 = 다름

f11 = 같음

f00 = 같긴 같은데 좀 애매하게 같음

 

- SMC(Simple Matching Coefficient) = number of matches / number of attributes 

>> (f11 + f00) / (f10+f01+ f11+ f00)

>> f00으로 같은 것까지 찐땡으로 쳐줌

>> 마트 물건 구매한 사람 유사도 측정할 때 정말 이상하게 돼버림

 

- Jaccard Coefficient

>> 마트 예시처럼 asymmetric binary attribute일 때 사용

>> f11/(f11+f01+f10)

>> f00을 삭제함

 

Cosine Similarity

- if D1 and D2 are two document vectors, then

Correlation : tendency for variables

- 기준점이 0이 아니고 평균이다. => 평균을 기준으로 증가/감소하는 패턴이 얼마나 유사하냐?

- 두 회사 주가의 평균은 다름 => 증감의 경향성을 볼 때 사용한다. 

- 두 회사의 correlation이 동일하다 = 평균을 기준으로 증감이 동일하다. 

상관관계는 객체의 속성 간의 선형 관계를 측정한다. 

- 즉 얼마나 linear 하냐?라는 걸 본다.

- 선형이 아니고 이상한 형태이면 correlation이 없다고 측정이 될 것이다. 

 

Issues in Proximity Calculation

- attribute의 scale이 다르거나 correlated 하면 어떡하냐?

>> scale이 다르면 표준화, correlated하면 feature Subset 하면 되지 않을까?(내 생각)

>> 마할라노비스 거리 : 분산을 고려해서 길이를 측정한다. 

- 두 개의 데이터 타입이 다르면 어떡하냐? ( 정량적+정성적 )

>> 0과 1로 바꿔버리기

>> 종류별로 묶어서 연산하고 마지막에 합친다. 

- 두 개의 데이터를 합칠 때 중요도가 다르다면 weight를 준다. 

 

 

 

 

 

 

Comments