incastle의 콩나물
[Data Mining] Introduction to Data Mining -4- (Data Preprocess, 전처리) 본문
[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를 준다.
'19-1 대학 수업 > 데이터마이닝' 카테고리의 다른 글
[Data Mining] Classification : Basic Concepts (0) | 2019.05.02 |
---|---|
[Data Mining] Introduction to Data Mining -3- (Data Quality) (0) | 2019.05.01 |
[Data Mining] Introduction to Data Mining -2- (Data란?) (0) | 2019.05.01 |
[Data Mining] Introduction to Data Mining -1- (0) | 2019.04.26 |