Skip to Content

머신러닝을 위한 데이터 전처리란?

머신러닝(ML)을 위한 데이터 전처리는 원시 데이터를 준비하고 ML 모델 트레이닝에 적합한 형식으로 변환하는 것을 의미합니다. 이는 모델의 성능과 정확성에 직접적인 영향을 미치기 때문에 ML(또는 AI) 파이프라인에서 필수적인 단계입니다.

데이터 전처리에는 누락된 값을 처리하기 위한 데이터 정리, 이상치 제거, 특징 확장, 범주형 변수 인코딩, 데이터를 트레이닝 및 테스트 세트로 분할하는 등 여러 기법이 포함됩니다. 이러한 기술은 데이터가 ML 알고리즘에 일관되고 사용 가능한 형식으로 유지되도록 하는 데 핵심적인 역할을 합니다.

이 문서에서는 머신러닝을 위한 데이터 전처리에 대해 알아야 할 모든 것을 다룹니다. 여기에는 머신러닝의 정의, 이점, 단계 및 예시가 포함됩니다. 

데이터 전처리란? 

데이터 전처리는 원시 데이터를 분석 및 모델 트레이닝에 더 적합하고 의미 있는 형식으로 변환하는 것입니다. 데이터 전처리는 데이터의 누락 값, 노이즈, 불일치 및 이상치와 같은 문제를 해결하여 ML 모델의 품질과 효율성을 향상시키는 데 중요한 역할을 합니다.

머신러닝을 위한 데이터 전처리의 장점

머신러닝을 위한 데이터 전처리에는 많은 이점이 있으며, 이러한 이점은 데이터 전처리와 관련된 단계와 동일합니다. 한 번 살펴보겠습니다. 

1. 데이터 정리

데이터 정리는 머신러닝의 데이터 전처리 파이프라인에서 필수적인 부분입니다. 데이터 세트의 오류 또는 불일치를 식별하고 수정하여 데이터가 고품질이며 분석 또는 모델 트레이닝에 적합한지 확인하는 작업이 포함됩니다. 

데이터 청소에는 일반적으로 다음이 포함됩니다.

누락된 값 처리

결측값은 실제 데이터 세트에서 흔히 발생하는 문제이며 ML 모델의 성능에 부정적인 영향을 미칠 수 있습니다. 누락된 가치를 파악하고 처리하려면:

  • 기술 통계 또는 시각화를 사용하여 누락된 값이 있는 열/기능을 식별합니다. 결측값의 일반적인 지표에는 NaN(숫자가 아님) 또는 NULL 값이 포함됩니다.
  • 분석 또는 모델에 대한 결측치의 영향을 파악하세요. 각 열의 결측치 백분율과 전체 데이터 세트에 대한 그 중요성을 고려하십시오.
  • 누락된 값의 백분율이 적고 해당 행이나 열이 중요하지 않은 경우, 판다의 dropna() 또는 다른 도구의 유사한 함수와 같은 방법을 사용하여 제거할 수 있습니다.
  • 수치 기능의 경우 평균, 중앙값 또는 모드 대치(판다의 fillna() 방법)와 같은 기법을 사용하여 결측값을 대치할 수 있습니다. 범주형 기능의 경우 가장 빈번한 범주로 대체할 수 있습니다.

또한 회귀 대치, k-근접 이웃 대치 또는 ML 모델을 사용하여 다른 기능을 기반으로 누락 값을 예측하는 것과 같은 고급 대치 방법을 고려할 수 있습니다.

이상치 처리

이상치는 데이터 세트의 다른 관찰과 크게 다른 데이터 포인트로, 통계 분석 또는 머신러닝 모델을 왜곡할 수 있습니다. 

이상치를 감지하고 처리하려면:

  • 박스 플롯, 히스토그램 또는 산포도를 사용하여 수치 특징의 분포를 시각화하고 잠재적인 이상치를 시각적으로 식별합니다.
  • 평균, 표준 편차, 사분위수 및 사분위수 범위(IQR)와 같은 요약 통계를 계산합니다. 이상치는 종종 Q1 - 1.5 * IQR 미만 또는 Q3 + 1.5 * IQR 초과인 데이터 포인트로 정의됩니다.
  • 경우에 따라 이상치를 제거하는 것이 적절할 수 있습니다. 특히 데이터 입력 오류나 이상에 의한 경우 더욱 그렇습니다. 통계 임계값에 기반한 필터링 기법을 사용하여 이상치를 제거합니다.
  • 로그 변환, 제곱근 변환 또는 Box-Cox 변환과 같은 변환을 적용하여 데이터를 보다 정상적으로 분산시키고 이상치의 영향을 줄입니다.
  • 지원 벡터 머신(SVM), 랜덤 포레스트 또는 앙상블 방법과 같이 이상치에 덜 민감한 강력한 머신러닝 모델을 사용하는 것을 고려해 보세요.

중복 처리

중복된 기록은 특정 패턴이나 편향을 부풀려 분석 및 모델 트레이닝을 왜곡할 수 있습니다. 

중복을 감지하고 처리하려면:

  • 팬더에서 복제()와 같은 기능을 사용하여 특정 열 또는 전체 행을 기반으로 중복 행을 식별합니다.
  • 중복 레코드가 중복되고 추가 정보를 제공하지 않는 경우, pandas의 drop_duplicates() 함수 또는 다른 툴의 유사한 방법을 사용하여 해당 레코드를 제거할 수 있습니다.
  • 경우에 따라 여러 항목으로 인해 중복이 발생할 수 있지만 고유한 식별자가 있습니다. 중복 레코드를 구분하는 고유 식별자 또는 키 열을 보유해야 합니다.

이러한 단계를 따르고 적절한 기법을 사용하면 머신러닝 작업을 위해 데이터를 효과적으로 정리하고 전처리하여 모델 예측의 품질과 안정성을 향상시킬 수 있습니다.

2. 데이터 정규화

정규화는 데이터 세트 내의 기능 값을 확장하고 표준화하는 데 사용되는 데이터 전처리 기법입니다. 정규화의 주요 목표는 모든 피처 값을 값 범위의 차이를 왜곡하지 않고 유사한 범위로 만드는 것입니다. 이는 많은 머신러닝 알고리즘이 입력 기능이 유사한 규모로 분포되어 있을 때 더 나은 성능을 발휘하거나 더 빠르게 수렴하기 때문에 중요합니다.

정규화의 장점은 다음과 같습니다.

  • 모델 트레이닝 중에 대규모 기능이 소규모 기능을 지배하는 것을 방지합니다. 
  • 그라데이션 하강과 같은 알고리즘은 기능이 정상화되면 더 빠르게 수렴되어 트레이닝 시간이 더 빨라집니다. 
  • 모든 값을 제한 범위 내에서 가져와 이상치의 영향을 줄입니다. 정규화된 데이터는 다양한 기능을 보다 쉽게 해석하고 비교할 수 있습니다.

정규화 기법

최소-최대 확장 

  • 공식:Xnorm =Xmax −Xmin /Xmax −Xmin
  • 범위: 값을 0~1의 범위로 변환합니다.

 

예:

Z-점수 정규화(표준화):

  • 공식: Xstd =σX/μ
  • 범위: 평균 0 및 표준 편차 1로 값을 변환합니다.

 

예:

정규화 적용 지침

최소-최대 확장: 최소-최대 스케일링은 신경망 및 지원 벡터 머신과 같은 입력 기능이 특정 범위 내에 있어야 하는 알고리즘에 적합합니다. 확장에 영향을 미칠 수 있으므로 이상치가 적절하게 처리되었는지 확인하십시오.

Z점수 정규화 : 이는 k-평균 클러스터링, 선형 회귀 및 로지스틱 회귀와 같은 알고리즘에 적합합니다. 그 결과, 표준편차가 1인 약 0의 분산이 발생하므로, 정규 분산 데이터를 가정하는 알고리즘에 이상적입니다.

희소 데이터: 희소 데이터 세트(대부분의 값이 0인 경우)의 경우, 정규화를 위해 MaxAbsScaler 또는 RobustScaler와 같은 기법을 사용하는 것을 고려하십시오.

범주형 데이터: 범주형 기능의 경우, 의미 있는 확장을 보장하기 위해 정규화 전에 원-핫 인코딩과 같은 기법을 고려하십시오.

정규화 기법의 선택은 데이터의 특정 특성과 사용 계획인 머신러닝 알고리즘의 요구사항에 따라 달라진다는 점에 유의해야 합니다. 모델 성능에 미치는 영향을 실험하고 이해하는 것은 정규화를 효과적으로 적용하기 위한 핵심 요소입니다.

3. 기능 확장

기능 확장은 데이터 세트의 독립 변수 또는 기능의 범위를 표준화하는 데 사용되는 데이터 전처리 기법입니다. 기능 확장의 목표는 모델 트레이닝 또는 분석 중에 한 기능이 다른 기능보다 우세하지 않도록 모든 기능을 유사한 스케일 또는 범위로 만드는 것입니다. 기능 확장은 최적화 알고리즘의 컨버전스 속도를 개선하고 특정 기능이 모델에 과도한 영향을 미치지 않도록 방지할 수 있습니다.

데이터 전처리에서 기능 확장의 역할

스케일링 기능은 ML 알고리즘이 모든 기능을 동일하게 처리하도록 하여, 더 큰 스케일의 기능에 대한 편향을 방지합니다. 또한 기능 확장 시 많은 최적화 알고리즘(예: 경사 하강)이 더 빠르게 수렴되어 모델 트레이닝이 더 빨라지기 때문에 수렴을 향상시킵니다. 또한, 기능 크기의 큰 차이로 인해 발생할 수 있는 수치적 불안정성 문제를 방지할 수 있습니다. 마지막으로, 확장을 통해 모델의 예측에 미치는 기능의 영향을 보다 쉽게 해석할 수 있습니다.

기능 확장 방법

위에서 설명한 최소-최대 스케일링 및 Z-스코어 정규화 외에도 다음과 같은 기능도 있습니다.

MaxAbsScaler: 이렇게 하면 각 피처가 최대 절대값으로 스케일링되므로, 결과값의 범위는 -1~1입니다. 텍스트 분류 또는 추천 시스템과 같이 제로 엔트리를 보존하는 것이 중요한 희소 데이터에 적합합니다.

견고한 스케일러: 이는 중앙값 및 사분위수 범위(IQR)와 같이 이상치에 견고한 통계를 사용하여 기능을 확장합니다. 이상치나 왜곡된 분산이 포함된 데이터 세트에 적합합니다.

기능 확장 적용 지침

기능 확장을 적용하려면:

  • 데이터가 정규 분포를 따르거나 선형 회귀, 로지스틱 회귀 또는 k-평균 클러스터링과 같은 알고리즘을 사용할 때 표준화(Z-점수 정규화)를 적용합니다.
  • 신경망 또는 지원 벡터 머신과 같은 특정 범위 내에 데이터가 있어야 하는 경우 정규화(최소-최대 스케일링)를 적용합니다.
  • 텍스트 데이터 또는 고차원 희소 기능과 같은 희소 데이터를 처리할 때 MaxAbsScaler를 사용하십시오.
  • 이상치 또는 정상적으로 분산되지 않는 기능이 포함된 데이터 세트를 처리할 때는 RobustScaler를 사용하십시오.

범주형 기능은 특히 명목상(주문 없는 범주)인 경우, 기능 확장을 적용하기 전에 인코딩(예: 원-핫 인코딩)이 필요할 수 있습니다.

4. 범주형 데이터 처리

범주형 변수는 그룹 또는 범주를 나타내며, 종종 숫자가 아닌 성격을 지니며, 모델 트레이닝 중에 다음과 같은 문제를 야기합니다.

  • 숫자가 아닌 표현: 범주형 변수는 일반적으로 문자열 또는 레이블을 사용하여 표시되며, 대부분의 머신러닝 알고리즘은 이를 직접 처리할 수 없습니다. 알고리즘은 트레이닝 및 예측을 위해 숫자 입력이 필요합니다.
  • 서수 대 공칭 변수: 범주형 변수는 서수(의미 있는 순서로) 또는 공칭(특정 순서 없이)일 수 있습니다. 서수 변수를 공칭 또는 그 반대로 처리하면 잘못된 모델 해석 또는 편향된 예측으로 이어질 수 있습니다.
  • 차원의 저주: 범주형 데이터 처리를 위한 일반적인 기술인 원-핫 인코딩은 데이터 세트의 차원을 증가시킬 수 있으며, 특히 다수의 고유한 카테고리에서 그러합니다. 이는 모델 성능에 영향을 미치고 컴퓨팅 복잡성을 증가시킬 수 있습니다.

범주형 변수 인코딩 기법

범주형 변수 인코딩 기법은 다음과 같습니다.

라벨 인코딩: 레이블 인코딩은 범주형 변수의 각 카테고리에 고유한 숫자 레이블을 할당합니다. 카테고리 간에 의미 있는 순서가 있는 서수 변수에 적합합니다.

Python의 scikit-learn을 사용한 예는 다음과 같습니다.

sklearn.preprocessing에서 LabelEncoder 가져오기

le = LabelEncoder()

인코딩된_라벨 = le.fit_transform(['cat', 'dog', 'rabbit', 'dog'])

원핫 인코딩: 원-핫 인코딩은 범주형 변수에서 각 카테고리에 대한 바이너리 열을 생성하며, 각 열은 해당 카테고리의 유무를 나타냅니다. 카테고리 간에 특정 순서가 없는 공칭 변수에 적합합니다.

다음은 판다를 사용하는 예입니다.

판다를 pd로 가져오기

df = pd.DataFrame({'category': ['A', 'B', 'C', 'A']})

one_hot_encoded = pd.get_dummies(df['category'], prefix='category')

더미 인코딩: 더미 인코딩은 1-핫 인코딩과 유사하지만 선형 모델에서 멀티콜로리니티 문제를 방지하기 위해 바이너리 열 중 하나를 떨어뜨립니다. 한 카테고리가 참조 카테고리로 사용되는 회귀 모델에서 일반적으로 사용됩니다.

다음은 판다를 사용하는 예입니다.

dummy_encoded = pd.get_dummies(df['category'], prefix='category', drop_first=True)

범주형 데이터 취급 지침

범주형 데이터를 올바르게 처리하려면 다음을 수행해야 합니다.

변수 유형 이해: 적절한 인코딩 기법을 선택하기 위해 범주형 변수가 서수형인지 공칭인지 여부를 결정합니다.

서수적 오해 방지: 공칭 변수에 라벨 인코딩을 사용할 때는 데이터에 의도하지 않은 관례가 발생할 수 있으므로 주의하십시오.

높은 카디널리티를 처리하세요. 고유 카테고리가 많은 범주형 변수의 경우, 주파수 인코딩, 타겟 인코딩 또는 PCA와 같은 차원 감소 기법과 같은 기법을 고려하십시오.

이는 이미 언급된 결측치의 처리 및 수치 데이터의 정규화와는 별도로 이루어집니다. 

5. 불균형한 데이터 처리

불균형한 데이터를 처리하는 것은 머신러닝, 특히 한 클래스(소수 클래스)의 인스턴스 수가 다른 클래스(대수 클래스)보다 훨씬 적은 분류 작업에서 흔히 발생하는 과제입니다. 불균형한 데이터는 모델 트레이닝 및 평가에 상당한 영향을 미칠 수 있으며, 이로 인해 편향된 모델이 과반수 클래스에 유리하고 소수 클래스에서 성능이 저하될 수 있습니다. 

불균형한 데이터와 이를 처리하는 기법에 대한 몇 가지 핵심 사항은 다음과 같습니다.

불균형 데이터가 모델 성능에 미치는 영향

불균형한 데이터에 대해 훈련된 모델은 소수 집단을 소홀히 하면서 대다수 집단의 정확성을 우선시하는 경향이 있습니다. 이는 소수 집단 예측에서 성능 저하로 이어질 수 있습니다. 또한, 정확성과 같은 지표는 불균형한 데이터 세트에서 오해의 소지가 있을 수 있습니다. 높은 정확도는 소수 집단을 무시하면서 과반수 집단을 정확하게 예측함으로써 발생할 수 있습니다. 정밀도, 회상, F1-score 및 ROC 곡선하 면적(AUC-ROC)과 같은 평가 지표는 정확도 단독에 비해 불균형한 데이터 세트에 더 유용합니다.

불균형한 데이터 처리 기법

불균형한 데이터를 처리하는 가장 일반적인 기법은 오버샘플링과 언더샘플링입니다. 오버샘플링은 소수 집단의 인스턴스 수를 증가시켜 대수 집단과 균형을 이루도록 합니다. 저샘플링은 소수 집단과 균형을 이루기 위해 대수 집단의 인스턴스 수를 줄이는 것을 포함합니다. 오버샘플링과 언더샘플링을 결합하여 하이브리드 접근 방식을 취할 수도 있습니다.

또한, 모델 트레이닝 중에 클래스 가중치를 조정하여 소수 클래스의 오류를 대다수 클래스의 오류보다 더 많이 페널리징할 수 있는 클래스 가중치가 있습니다. 이는 로지스틱 회귀 또는 지원 벡터 머신과 같이 클래스 가중치를 지원하는 알고리즘에만 유용합니다.

불균형 데이터 취급 지침

불균형한 데이터를 처리하려면 다음을 수행해야 합니다.

데이터 배포 이해: 데이터 세트의 클래스 분포를 분석하여 불균형 심각도를 결정합니다.

적절한 기법을 선택하세요. 데이터 세트 크기, 불균형 비율 및 컴퓨팅 리소스에 따라 오버샘플링, 과소샘플링 또는 하이브리드 기술을 선택합니다.

지표 평가: 정밀성, 회상, F1-score 또는 AUC-ROC 곡선과 같은 적절한 평가 지표를 사용하여 두 클래스 모두에서 모델 성능을 평가합니다.

교차 검증: 데이터 유출을 방지하고 신뢰할 수 있는 모델 성능 추정치를 얻기 위해 교차 검증 접기 내에 기술을 적용하세요.

결론

데이터 전처리는 ML 모델이 고품질의 적절한 형식의 데이터에 대한 교육을 받을 수 있도록 지원하며, 이는 모델의 성능, 정확성 및 일반화 능력에 직접적인 영향을 미칩니다. 데이터 전처리는 결측치, 이상치, 범주형 변수 및 클래스 불균형과 같은 문제를 해결함으로써 모델이 더 많은 정보에 입각하고 정확한 예측을 할 수 있도록 지원하여 실제 애플리케이션에서 더 나은 의사 결정을 내릴 수 있도록 합니다.

ML 실무자는 적절한 데이터 전처리를 통해 데이터의 잠재력을 최대한 활용하고, 여러 도메인에 걸쳐 다양한 애플리케이션에 대해 보다 정확하고 신뢰할 수 있는 예측 모델을 구축할 수 있습니다.

그러나 실제로 이를 실현하기 위해서는 먼저 AI 및 머신러닝을 가속화하고 엔터프라이즈 AI 이니셔티브에 앞서가는 데 도움이 되는 퓨어스토리지와 같은 유연한 데이터 스토리지 솔루션이 필요합니다. AI

03/2024
High-Performance AI for State and Local Government
AI has the potential to transform national, state, and local governments. Here’s how AIRI, AI-ready infrastructure by Pure Storage and NVIDIA, can help.
솔루션 브리프
4 페이지
연락처
질문하기

퓨어스토리지 제품이나 인증 관련 질문이나 코멘트가 있으신가요?   저희가 도와드립니다.

데모 예약

라이브 데모를 예약하고 퓨어스토리지가 데이터를 어떻게 강력한 결과로 전환해주는지 직접 확인해 보세요. 

연락하기: +82 2 6001-3330

언론홍보팀:  pr@purestorage.com

 

퓨어스토리지코리아 주소

30F 아셈타워,

517 영동대로,

강남구, 서울

대한민국

korea@purestorage.com

닫기
지원하지 않는 브라우저입니다.

오래된 브라우저는 보안상 위험을 초래할 수 있습니다. 최상의 경험을 위해서는 다음과 같은 최신 브라우저로 업데이트하세요.