본 포스팅은 충남대 이종률 교수님의 강의자료를 바탕으로 작성한 글입니다.
Faithfulness, 충실성
데이터가 현실성을 얼마나 잘 포착할 것인가에 대한 내용이다.
1. 내 데이터가 비현실적이거나 잘못된 값을 가지고 있는가?
ex), 오타, 큰 이상치, 비존재하는 것, 잘못 기록된 날짜 등..
2. 내 데이터가 명백한 종속성을 위반하는가?
ex), 출생년도와 나이가 맞지 않는 경우
3. 손으로 입력한 것인가?
ex) 스펠 오류, 칸 밀려씀, 필수 항목을 빼놓진 않았는지
4. 데이터 위조의 근거가 있는지?
ex) 같은 이름이 여러 개, 이상한 이메일 주소 등
5. 잘린 데이터, 철자 오류, 시간 불일치, 중복된 행 또는 열, 단위가 특정되지 않거나 불일치, NaN/Null
-> 이런 경우의 이상한 데이터를 사용하는 분석에서의 결과를 사용하는 것은 조심해야 한다.
-> 데이터가 어떻게 수집됐는지에 대한 잠재적 영향을 이해해야 한다.
그럼, 이런 이상한 혹은 누락된 데이터를 어떻게 복원할까?
1. 그 데이터를 아예 날려버리는 방법. 일반적이진 않다. 그리고 그 데이터의 영향을 무시하게 된다.
따라서 그 데이터의 내용에서 관심있는 것이 있진 않는지, 이 데이터를 날림으로써 편향이 생기진 않을지 등등을 고려해야 한다.
2. 아니면 그냥 누락된 상태 그대로, NaN으로 둔다.
3. Imputation/Interpolation, 데이터의 값을 추론해서 채워넣는다. 뭐 평균이나, 근접한 데이터에서 가져오거나 등등.
어떻게 되든, 자료의 편향이나 불확실한 정량화에 영향을 끼칠 것이다.
그리고 뭐.. 결측치가 적다면 셋 중 뭘 선택해도 비슷하게 괜찮을 것이다.
1번은 관측치 수가 줄 것, 2번은 관측치를 연결하면 끊기는 부분이 있을 것이고, 3번은 원래 데이터인지 interpolated된 데이터인지 잘 모를 것이다.
그렇다면, 우리는 필수적으로 왜 이 데이터가 결측치가 되었는지를 알아보아야 할 것이다.
Data Cleaning
1. Binning method
- 우선 데이터를 정렬해서 구간(bin)별로 나눈다.
- 각 bin의 평균/중앙값/경계값 등을 이용해 데이터를 스무스하게 만든다.
- 데이터 이산화를 위해 쓰이기도 한다.
-> 사소한 관측 오차의 영향을 줄이는 데 이용된다.
2. Regression
- 데이터를 회귀식에 적합함으로써 부드럽게 만든다
3. Clustering
- 이상치를 탐지하고 없앤다
4. 컴퓨터&인체 검사 결합
- 의심스러운 값을 감지한 후, 사람이 이를 확인한다.
Data Integration(통합)
여러 종류의 데이터들을 일관되게 결합하는 것.
Schema integration을 이용해 모음.
하지만 여기엔 개체를 식별하는 데 문제가 있을 수 있다. 중복의 문제 때문!
만약 같은 환경에서 데이터를 추출했더라도, 어떤 그룹에서 추출했느냐에 따라 데이터가 다르다.
ex) 같은 한국이지만, 40대의 쇼핑 금액 조사와 10대 쇼핑 금액 조사는 다름.
카이제곱 검정(Chi-Square Test)
상관관계 분석에 이용되며, 빈도를 사용하는 검정이다.
[(관측값-기댓값)^2/기댓값]의 합으로 계산되며,
관측값은 실제 관찰된 빈도, 기댓값은 두 변수가 독립일 때 기대되는 빈도이다.
이런식으로 계산하면 되고,
따라서 카이제곱 값이 크다는 것은 독립적이지 않다는, 두 변수간 상관관계가 높다는 뜻이다.
카이제곱 값이 크냐에 대한 threshold는 자유도와 p-value에 따라 결정된다.
예를 들어, 자유도가 1이고 p-value가 0.001이면 threshold는 10.828로 주어진다.
* 주의해야 할 점은, 상관관계가 있다고 인과관계가 있다는 뜻은 아니다.
Data Reduction
1. 차원 축소, Dimensionality Reduction
차원의 저주
- 차원이 증가하면 데이터가 드문드문 존재하게 된다.
- 데이터간 깊이/거리 차이의 의미 감소
차원 축소
- 차원의 저주를 피하고, 관련 없는 특성 없애고 노이즈 제거
- 시간/공간 줄이고 더 쉽게 보이게 함.
차원 축소 기술
- Wavelet transforms, Principal Component Analysis, Supervised and nonlineat techniques
Wavelet transform이란,
신호를 서로 다른 주파수 그룹으로 나누는 건데, 개체 간 상대적 거리는 유지하게 한다.
자연적인 군집들을 더 비교하기 쉽게 하고, 이는 이미지 압축에 쓰인다.
압축을 어떻게 하냐면, 특정 방법으로 웨이블릿 계수를 구해 가장 강한 것만 저장하면 된다!
discrete Fourier transform(DFT)와 비슷하지만, 이건 손실이 적다.
Wavelet transform 중 가장 기본적인 haar wavelet transform을 보겠다.
압축시 중요하지 않은 부분은 0으로 바뀌고 중요한 부분만 남는다.
원래 데이터에서 앞의 두 개씩 합/2을 구해 압축하고, 차/2를 구해 압축한다.
예시를 보면,
이렇게 Averages와 Detail Coefficients(Difference)로 압축하고, Detail Coefficients를 긴 애들부터 뒤에 놓아 압축한다.
근데.. 지금 보면 0인 애들이 그렇게 많지 않은데 뭐가 압축된 거지? 한다면,
여기서 또 어떤 규칙을 적용해야 한다. 두 가지 규칙이 있다.
1. 뒷부분이 앞부분보다 영향을 작게 끼치기 때문에, 뒤에서부터 일정구간을 모두 0으로 만들어버린다.
2. magnitude값의 절댓값이 1보다 작거나 같은 경우를 모두 0으로 만들어버린다. (magnitude는 초기 계산된 결과값)
아까 뒷부분이 끼치는 영향이 작다고 했는데, 따라서 이를 계층구조로 나타내보면 이렇게 된다.
그럼 Wavelet Transform을 왜 쓰는 것이냐? 하면,
hat-shape 필터를 사용함으로써 포인트가 되는 군집 영역을 강조하고, 경계쪽의 약한 정보는 억제시킨다.
또 이상치 제거에 효율적이고, 시간복잡도가 낮으며, 다양한 규모에서 임의의 군집을 찾을 수 있다.
다만, 일일히 계산해야 하기에, 낮은 차원의 데이터에만 사용 가능하다는 단점이 있다.
Feature Engineering
원래 있던 feature를 조금 변형시키는 짓이다.
예를 들어 엄청나게 많은 정보가 있었는데 그 중 주제에 맞는 특성만 남긴다거나,
수치형이 아닌 데이터들을 모델에 적용시킬 수 있게 변형하거나,
비선형관계를 선형모델로 나타낼 수 있도록 하거나 등등..
예를 들어, 만약 hp라는 feature가 있는데 이를 제곱한 hp^2 feature를 생성한 후 모델 적합을 시켜본다.
그리고 이렇게 바뀐 feature를 원랜 X였지만, 변경 후엔 엡실론 기호를 써서 표현한다.
몇 제곱을 하거나 루트를 씌우는 등등의 방법으로!
제곱항들 여러 개를 더해서 모델을 만들면, MSE가 낮아진다.
물론 어느 정도를 넘어가면 MSE는 비슷하고, 모델이 복잡해지기만 한다.
또, 아까 말한 수치형이 아닌 데이터는 원-핫 인코딩으로 feature를 늘려 선형결합이 가능하도록 만든다.
차원이 많이 증가한다는 단점이 있긴 하다.
근데 이렇게 파라미터를 증가시킬 수록 MSE가 낮아지면, 그냥 되는 대로 파라미터를 엄청 증가시키면 되지 않을까?
이건 너무 잘못된 생각이다!
우리가 모델을 만드는 이유를 생각해보면, 새로운 데이터에 대해 어떻게 될지 예측하려고 모델을 만드는 것인데,
파라미터를 엄청 증가시켜서 현재 데이터에 완전 꼭맞는 모델을 만들면 새로운 데이터를 예측하기는 쉽지 않을 것이다.
아무리 MSE가 0인 모델을 만든다고 해도, train data에만 맞는 모델은 쓸모가 없다는 것이다.
이걸 과적합이라고 한다. train 데이터에 너-무 적합된 상태인 것이다.
파라미터가 너무 많아지면 모델이 엄청나게 복잡해지고, 모델의 분산이 커진다. 다른 말로 데이터 민감도라고도 한다.
즉, 모델의 복잡도와 분산은 비례하고, training 오류는 반비례하는 관계인 것이다.
적당한 모델 복잡도는 sweet spot이라고 하고, 이걸 찾는 것은 나중에 다룰 것이다.
'AI > 데이터과학' 카테고리의 다른 글
분류(K-Means, Agglomerative Clustering, DBSCAN) (3) | 2024.10.21 |
---|---|
Association Rule Mining (0) | 2024.10.21 |
상관관계 분석과 가설 검정 (0) | 2024.10.21 |
데이터 시각화 (0) | 2024.10.19 |
정규표현식 (Regular Expression) (0) | 2024.10.19 |