전진·후진·단계적 변수 선택법과 PCA, SVD, NMF 같은 차원 축소 기법, 파생변수 생성, Box-Cox 변환, 불균형 데이터 처리와 인코딩 기법을 정리한 문서.
aistatisticsfeature-engineeringpreprocessing
변수 선택
기본적으로 데이터와 이를 특정 짓는 변수는 많으면 좋다. 분석모형을 구성하고 사용하는 데 지속적으로 필요 이상의 많은 데이터를 요구할 수 있다.
변수별 모형의 분류
전체 모형 (Full Model, FM) : 모든 독립변수를 사용한 모형으로 정의한다.
축소 모형(Reduced Model, RM) : 전체 모형에서 사용된 변수의 개수를 줄여서 얻은 모형이다.
영 모형(Null Model, NM) : 독립변수가 하나도 없는 모형을 의미한다.
변수의 선택 방법, 래퍼 기법
1. 전진 선택법, Forward Selection
영모형에서 시작해 모든 독립 변수 중 종속변수와 단순 상관계수의 절댓값이 가장 큰 변수를 분석 모형에 포함시키는 것을 의미한다. 한 번 추가된 변수는 제거하지 않는 것이 원칙이다.
부분 F 검정을 통해 유의성 검증을 시행하고 유의한 경우는 가장큰 F 통계량을 가지는 모형을 선택하고 유의하지 않은 경우에는 변수 선택 없이 과정을 중단한다.
2. 후진 선택법, Backward Selection
전체모델에서 시작해 모든 독립 변수 중 종속변수와 단순 상관계수의 절댓값이 가장 작은 변수를 분석 모형에 제외시키는 것을 의미한다. 한 번 제거된 변수는 추가하지 않는다.
부분 F 검정을 통해 유의성 검증을 시행, 유의하지 않은 경우는 변수를 제거하고 유의한 경우는 변수제거 없이 과정을 중단한다.
3. 단계적 선택법, Stepwise Selection
전진 선택법과 후진 선택법의 보완방법이다. 전진 선택법을 사용하여 가장 유의한 변수를 포함 후 나머지 변수들에 대해서 후진 선택법을 적용하여 새롭게 유의하지 않은 변수들은 제거한다.
제거된 변수는 다시 모형에 포함하지 않으며 유의한 설명 변수가 존재하지 않을때까지 과정을 반복한다.
유의성 검증
유의적의 의미는 우연이라고 보기 어려울 정도로 의미가 있는이라는 뜻이다. 유의성 검증은 통계적 추정값의 신뢰도를 확인하기 위해 통계적 이론에 근거하여 추론
차원 축소
자료의 차원은 분석하는 데이터의 종류의 수를 의미힌다. 차원의 축소는 어떤 목적에 따라 변수, 데이터의 종류의 양을 줄이는 작업을 의미한다.
차원 축소의 필요성
1. 복잡도의 축소
데이터를 분석하는데 있어서 분석 시간의 증가와 저장변수 양의 증가를 고려시 동일한 품질을 나타낼 수 있다면 효율적 측면에서 데이터 종류의 수를 줄여야 한다.
2. Overfit, 과적합의 방지
과적합은 분석모형의 정확도 저하를 발생시키는데, 과적합 분석모형의 주입되는 데이터의 상관관계가 명확하기 때문에 새로운 데이터의 상관관계와 정확도를 저하시킬 수 있다. 작은 차원만으로 결과를 도출할 수 있다면 많은 차원을 다루는것보다 효율적이다.
Overfitting
모델이 학습 데이터의 일반적인 패턴뿐 아니라 우연한 노이즈나 특이한 패턴까지 지나치게 학습한 상태를 의미하며, 학습 데이터에는 매우 잘 맞지만, 보지 못한 새로운 데이터에서는 유용한 예측을 하지 못하는 상태를 과적합이라고 설명합니다.
3. 해석력, Interpretability의 확보
차원이 작은 간단한 모델일수록 내부구조 이해가 용이하고 해석이 쉬워져 명확한 결과 도출에 많은 도움을 준다.
4. Curse of Dimesionality
데이터 분석 및 알고리즘을 통한 학습을 위해 차원이 증가하면서 학습데이터의 수가 차원의 수보다 적어져 성능이 저하되는 현상을 의미한다.
학습데이터의 수 < 차원의 수
해결을 위해서는 차원을 줄이거나 데이터의 수를 늘리는 방법을 이용해야 한다.
데이터의 양이 증가하는 것은 일반적으로 분석에 도움이 되지만, 변수를 많이 생성하는 것이 항상 성능 향상으로 이어지지는 않는다. 특히 불필요한 변수가 많아져 차원이 과도하게 커지면 차원의 저주와 과적합으로 인해 모델의 예측 성능과 일반화 성능이 저하될 수 있다.
차원 축소의 방법
1. 요인 분석
다수의 변수들 간의 관계, 상관관계를 분석하여 공통차원을 축약하는 통계분석 과정이다. 요인 분석의 목적은 다음과 같다
변수 축소 : 다수의 변수들의 정보손실을 억제하면서 소수의 요인으로 축약하는 것
변수 제거
변수특성 파악 : 관련된 변수들이 군집함으로써 요인 간의 상호 독립성 파악이 용이해진다.
타당성 평가
파생변수
앞서 이야기한 분석은 독립변수, 종속변수 개념이 없다. 주로 기술 통계에 의한 방법을 이용한다.
요인 분석은 다수의 변수들 간의 관계, 상관관계를 분석하여 공통차원을 축약하는 통계분석 과정이다.
독립변수, 종속변수, 개념이 없다. 주로 기술통계에 의한 방법을 사용한다.
요인에 대한 중요도를 파악하고 필요가 없다면 제거하는 것도 필요하다.
관련된 변수들을 군집화함으로써 요인 간의 상호 독립성 및 변수의 특성을 파악한다.
"특정 상황에만 의미성 부여가 아닌 보편적이고 전 데이터구간에 대표성을 가지는 변수 생성을 위해서 노력해야 한다" 는 주성분에 해당하는 설명이라는 것을 헷갈리지 말자
주성분(Principal Component) 분석
분포된 데이터들의 특성을 설명할 수 있는 하나 또는 복수 개의 특성, 주성분을 찾는 것을 의미한다.
PCA 라고 축약하여 부른다
2차원 좌표평면에 n개의 점 데이터들이 타원형으로 분포되어 있을 때, 두 개의 벡터로 데이터 분포를 설명하는 것이다. PCA는 데이터 하나하나의 성분을 분석하는 것이 아니라, 여러 데이터들이 모여 하나의 분포를 이룰 때, 이 분포의 주성분을 분석하는 방법이다.
차원 축소에 폭넓게 사용된다. 어떠한 사전적 분포 가정의 요구가 없다.
가장 큰 분산의 방향들이 주요 관심이다.
본래 변수들이 서로 상관이 있을때만 가능하다.
스케일에 대한 영향이 크다. PCA 수행을 위해서는 변수들 간의 스케일링이 필수이다
3. 특이값 분해, Singular Value Decomposition, SVD
M을 3개의 행렬로 쪼개는 방법이다. 데이터의 중요한 정보를 많이 담고 있는 방향부터 순서대로 찾아내는 방법이다. 큰 특이값에 해당하는 정보만 남겨 차원축소가 가능하다.
요소
시험에서 기억할 의미
M
원래 데이터 행렬
U
왼쪽 특이벡터
Σ
**특이값(Singular Value)**이 들어 있는 대각행렬
VT
오른쪽 특이벡터의 전치행렬
특히 Σ가 중요합니다. 특이값이 클수록 해당 방향이 데이터의 중요한 정보를 많이 가지고 있다고 이해해야 한다. 큰 몇개의 특이값을 가지고도 충분히 유용한 정보를 유지할 수 있다.
말 그대로 음수를 포함하지 않은 행렬 V를 음수를 포함하지 않은 두 행렬의 곱으로 분해하는 알고리즘이다.
행렬 곱셈에서 곱해지는 행렬은 결과행렬보다 훨씬 적은 차원을 가지기 때문에 NMF 가 차원을 축소할 수 있다.
파생변수의 생성
데이터 분석 시 주어진 원데이터를 그대로 활용하기 보다는 분석의 목표에 적합하게 계속해서 데이터 형태를 수정보완할 필요가 있다.
데이터마트는 데이터 웨어하우스로부터 복제 또는 자체 수집된 데이터모임의 중간층이지만 분석을 위한 기본단계변수가 모여지는 단계로 요약변수와 파생변수들의 모임이라고 볼 수 있다.
파생변수
사용자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여하는 변수로 매우 주관적일 수 있으므로 논리적 타당성을 갖출 필요가 있다. 특정상황에만 유의미하지 않게 대표성을 나타나게 할 필요가 있다.
요약변수
수집된 정보를 분석에 맞춰 종합한 변수를 요약변수라고 한다.
요약변수 처리시의 유의점 : 범주화시에는 정구간이 아닌 의미 있는 구간을 찾도록 해야 하고 처리 방법에 따라 결측치의 처리 및 이상값 처리에 유의해야 한다.
파생변수 생성 및 처리시의 유의점 : 특정 상황에만 의미성 부여가 아닌 보편적이고 전 데이터구간에 대표성을 가지는 파생변수 생성을 위해 노력해야 한다.
생성방법
한 값으로부터 특징을 추출 -> 레코드 내의 값들을 결합 -> 다수의 필드내에 시간 종속적인 데이터를 선택 -> 레코드 또는 중요 필드를 요약
교호작용은 변수 간의 상호작용을 의미하며 두 개 이상의 독립변수가 함께 작용하여 종속변수에 영향을 미치는 경우, 종속변수와 독립변수의 교호작용을 사용하는 것은 피해야 한다.
변수 변환
데이터를 분석하기 좋은 형태로 바꾸는 작업을 말한다. 수학적 의미로 변환은 기존의 변수 없는 사실을 변환하여 해석이 용이해지거나 취급이 단순해지는 장점이 있다.
변수 변환의 방법
1. 범주형 변환
연속형 변수 중에서 변수자체로의 분석보다는 분석결과의 명료성 및 정확성을 배가시키기 위해 범주형으로 변환 시키면 좋은 경우가 있다.
"소득이 100만원 늘 때마다 사교육비 지출이 10만원 증가한다" 보다는 "상위 10% 소득가정의 사교육비 지출이 하위 10%보다 10배 많다" 가 좋은 설명이다.
2. 정규화
데이터가 가진 스케일이 심하게 차이가 나는 경우 그 차이를 그대로 반영하기보다는 상대적 특성이 반영된 데이터로 변환하는 것이 필요하다.
일반 정규화 : 수치로 된 값들을 여러 개 사용할 때 각 수치의 범위가 다르면 같은 범위로 변환해서 사용한다.
ex) A 과목은 만점이 10점 만점, B는 50점 만점일 경우 A에서 8점, B에서 20점일 경우 0.8, 0.6 와 같이 변환 시킨다.
Min-Max Normalization : 모든 feature 에 대해 최소값 0, 최대값 1로 그리고 다른 값들은 0과 1사이의 값으로 변환하는 방법이다.
Max−Min(X−min)
Min-Max Normalization 의 단점으로 outlier, 이상치의 영향을 많이 받는다는 점을 유의해야 한다.
z-점수 정규화 : 이상치 문제를 피하는 데이터 정규화 전략이다. 데이터 값이 평균과 일치한다면 0으로 정규화되고, 평균보다 작으면 음수, 평균보다 크면 양수로 나타낸다. 이상치를 잘 정리하지만, 정확히 동일한 척도로 정규화된 데이터를 생성하지 않는다는 점을 유의해야 한다.
3. 로그 변환
어떤 수치 값을 그대로 사용하지 않고 여기에 로그를 취한 값을 사용하는 것을 이야기한다. 로그를 취하면 그 분포가 정규 분포에 가깝게 분포하는 경우가 있다. 이 경우 로그정규 분포를 가진다고 한다.
4. 역수변환
데이터를 역수로 변환
5. 지수변환
지수를 사용하여 선형적인 특성을 가지게끔 해서 의미 해석이 쉬워지는 경우
6. 제곱근변환
제곱근를 사용하여 선형적인 특성을 가지게끔 해서 의미 해석이 쉬워지는 경우
7. 분포형태별 정규분포로의 변환
모집단의 분포형태별로 사용가능한 변수변환이 다르다. 최종적으로 정규분포 형태를 지향한다.
정규 분포를 시각화할 경우 위와 같이 평균값을 기준으로 대칭을 이루는 그래프를 그리게 된다.
데이터 분호의 형태를 눈으로 확인할 수 있지만 샤피로텟트 또는 큐큐 플롯을 이용해 확인이 가능하며, 결과에 따라 적당한 변수변환식을 사용하여 정규분포 형태로 변환이 가능할 수 있다.
Box-Cox 변환과 Shapiro-Wilk검정
1.Box-Cox변환
y(λ)=⎩⎨⎧λyλ−1,ln(y),λ=0λ=0
데이터의 분포를 정규분포에 가깝게 만들고 분산을 안정화하기 위한 거듭제곱 변환 방법이다.
y는 원래 데이터이며, 반드시 양수여야 한다.
람다는 변환의 정도를 결정하는 파라미터이며, λ=1 이면 변환이 없는 경우, λ=0 이면 로그 변환과 동일하다.
최대우도는 λ 후보 중에서 변환된 데이터가 정규분포에 가장 잘 맞도록 만드는 λ 값을 의미한다.
Shapiro-Wilk 검정 활용, 샤피로 윌크
정규성 검정의 p-value 가 최대가 되는 λ값을 선택, 표본이 정규분포를 따르는 지 여부를 평가하는 대표적인 정규성 검정 방법이다. 표본의 크기가 작을 때 강력한 검정력을 가진다.
검정의 목적은 "이 데이터는 정규분포에서 나온 데이터라고 볼 수 있는가?"를 확인하는 것이다.
귀무가설 H0: 데이터가 정규분포를 따른다.
대립가설 H1: 데이터가 정규분포를 따르지 않는다.
p-value 해석
p≥0.05 → 귀무가설을 기각하지 못함 → 정규성을 위반한다고 볼 근거가 부족
p < 0.05 → 귀무가설 기각 → 정규분포를 따른다고 보기 어려움
Box-Cox 변환과 Shapiro-Wilk 검정의 결합
Box-Cox 변환은 데이터를 정규분포에 가깝게 만들기 위해 사용, Shapiro Wilk 는 어떤 λ값이 정규성을 가장 잘 개선하는지 확인한다.
적용절차
데이터가 양수인지 확인한다. 필요한 경우 상수를 더해 양수로 변환한다.
λ값의 후보 범위를 설정한다. 일반적으로 [−2,2] 범위를 사용한다.
각 λ값에 대해 Box-Cox 변환을 수행한다.
변환된 데이터에 대해 Shapiro-Wilk 검정을 실시한다.
p-value가 가장 큰 λ 값을 선택한다.
MLE 기준과 Shapiro-Wilk 기준 비교
MLE = 이 데이터가 정규분포에 나왔다고 가정했을 때, 이를 통계학적으로 가장 그럴듯하게 보이게 만드는 λ는 무엇인가?
확률을 기반으로 가장 가능성이 높은 λ를 선택하는 모형
Shapiro-Wilk 기준 : 변환된 데이터의 실제 모양이 종 모양의 정규분포 형상과 얼마나 완벽하게 닮아 있는가?
p-value를 가장 크게 만드는 λ를 선택
Q-Q plot을 통한 시각적 검토 병행
p-value 만으로 판단하는 것의 한계로 인해 Q-Q plot 과 같은 시각적 검토를 병행하는 것이 바람직한다.
불균형 데이터 처리
어떤 데이터에서 각 클래스가 갖고 있는 데이터의 양에 차이가 큰 경우, 클래스 불균형이 있다고 말한다. 예를들어 병원에서 질병이 있는 사람과 질병이 없는 사람의 데이터를 수집했을때 일반적으로 질병이 있는 사람이 없는 사람에 비해 적다.
데이터 클래스의 비율이 너무 차이가 날 경우 단순히 우세한 클래스를 택하는 모형의 정확도가 높아지므로 모형의 성능판별이 어려워진다.
정확도가 높아도 데이터의 개수가 적은 클래스의 재현율이 급격히 작아진다.
데이터 클래스 비율이 너무 차이가 나면 단순히 우세한 클래스를 택하는 모형의 정확도가 높아지기 때문에 모형의 성능 판별이 어려워진다. 즉, 정확도가 높아도 데이터 개수가 적은 클래스의 재현율이 급격히 작아지는 현상이 나타날 수 있다.
클래스에 속한 데이터의 개수의 차이에 의해 발생하는 문제들을 불균형 데이터 문제 또는 비대칭 데이터 문제라고 한다.
recall-rate : 클래스의 재현율
불균형 데이터의 처리 방법
1. 가중치 균형방법
데이터에서 손실을 계산할 때 특정 클래스의 데이터에 더 큰 loss 값을 갖도록 하는 방법이다. 데이터 클래스의 균형이 필요한 경우 각 클래스별 특정 비율로 가중치를 주어서 분석하거나 결과를 도출하는 것으로 정의한다.
고정 비율 이용 : 클래스의 비율이 1:5 라면 가중치를 5:1로 줌으로써 전체 손실에 동일하게 기여하도록 한다.
최적 비율 이용 : 분야와 최종 성능을 고려해 가중치 비율의 최적 세팅을 찾으면서 가중치를 찾아가는 방법이다.
2. Undersampling, Oversampling
비대칭 데이터는 다수 클래스 데이터에서 일부만 사용하는 = Undersampling
대표 클래스의 일부만을 선택하고, 소수클래스는 최대한 많은 데이터를 사용하는 방법이다. 이때 언더샘플링이 된 데이터가 원본 데이터와 비교해 대표성이 있어야 한다.
소수 클래스 데이터를 증가시키는 = Oversampling
소스클래스의 복사본을 만들어, 대표 클래스의 수만큼 데이터를 만들기 때문에 새로운 데이터는 기존의 데이터와 같은 성질을 갖는다.
인코딩
범주형 데이터를 수치형으로 변환하여 머신러닝 모델에 적용 가능하게 하는 기법이다.
1. Label Encoding, 레이블 인코딩
각 범주에 순차적인 정수 레이블을 할당하여 데이터를 변환한다. 주로 순서나 크기에 의미가 없는 범주형 데이터를 변환할때 사용한다. 예를들어 옷의 사이즈를 S,M,L 와 같은 데이터를 인코딩할 수 있다.
주의해야 하는 점은 숫자 값에 의도적으로 순서나 크기를 부여하게 될 수 있으므로 인코딩 대상의 데이터는 순서나 계층 구조가 없는 데이터에서 사용되어야 한다는 것이다.
2. One-Hot Encoding
각 범주에 해당하는 인덱스만 1이고 나머지는 0인 이진 백터로 변환한다. 범주형 데이터를 이해하기 쉬운 형태로 변환한다.
ex) 사과: [1, 0, 0], 바나나: [0, 1, 0], 딸기: [0, 0, 1]
3. Target Encoding
분류 문제에서 사용이 된다. 각 범주에 대한 종속 변수, 타깃의 평균 값을 인코딩으로 사용하는 방식이다. "범주형 변수와 종속 변수의 관계를 수치화한다"
사용자
직업 job
구매 여부 target
A
개발자
1
B
개발자
1
C
개발자
0
D
교사
0
E
교사
0
F
학생
1
G
학생
0
1은 구매한 경우 0은 구매하지 않았을 경우 타겟 인코딩을 수행하면
직업
Target 평균
개발자
0.667
교사
0
학생
0.5
위와 같이 표현이 되며 이 직업을 가진 사람이 실제로 구매한 비율이 어느 정도였는가? 를 확인할 수 있다.