Notice
Recent Posts
반응형
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
바로가기

Jin's IT Story

데이터 전처리 종류 동작 원리 구현 방법 본문

DevBasics: 개발 개념 기초 다지기

데이터 전처리 종류 동작 원리 구현 방법

JinBytes 2025. 11. 11. 00:36

목차


    반응형

    데이터가 정제되어 구조화된 흐름으로 코드로 이어지는 전처리의 시각적 상징

     

    데이터 분석과 머신러닝 모델링 과정에서 가장 많은 시간이 소요되는 단계는 모델 설계도, 알고리즘 코드 작성도 아닙니다.  실제 프로젝트에서 가장 많은 시간과 노력이 투입되는 단계는 바로 데이터 전처리입니다.

     

    전처리란 데이터를 분석하거나 학습하기 좋은 상태로 만드는 과정입니다. 모델의 성능 차이는 종종 알고리즘이 아니라 데이터의 품질에서 발생합니다.

     

    아무리 뛰어난 모델이라도 불완전한 데이터를 학습하면 정확한 예측을 수행할 수 없습니다. 예를 들어 결측치가 많거나 이상치가 존재하거나 단위가 제각각이거나 텍스트가 정제되지 않은 상태라면 모델은 안정적으로 작동하지 않습니다. 따라서 전처리는 데이터 분석의 기초이자 성능 향상의 핵심이라고 할 수 있습니다.

     

    전처리 과정에서는 데이터를 정리하고 불완전한 부분을 보완하고, 필요하다면 새로운 데이터를 생성하여 모델이 더 잘 이해할 수 있도록 도와줍니다.

     

    이 글에서는 가장 많이 사용되는 전처리 종류, 각각의 동작 원리 그리고 대표적인 구현 방법에 대해 체계적으로 정리합니다.

     

    결측치 처리(Missing Value Handling)

    결측치는 비어 있는 데이터입니다. 결측치는 다양한 이유로 발생합니다. 설문 응답 누락, 시스템 로그 누락, 파일의 일부 손상 등 여러 원인이 존재합니다. 결측치를 처리하지 않고 분석이나 모델링을 진행하면 잘못된 해석으로 이어질 수 있습니다.

     

    결측치 처리 방식

    1. 삭제 방식: 결측치가 포함된 행 또는 열을 삭제하는 방식입니다. 결측치 비율이 낮고 데이터 손실이 분석에 미치는 영향이 적을 때 사용됩니다.
    2. 대체 방식: 데이터를 삭제하지 않고 적절한 값으로 채웁니다. 대표적인 방식은 평균, 중앙값, 최빈값 대체입니다. 예를 들어 수치형 데이터는 평균 또는 중앙값으로 채우고, 범주형 데이터는 최빈값을 사용합니다.
    3. 예측 기반 보간: 기계 학습을 이용하여 결측치를 예측하는 방식입니다. kNN이나 회귀 모델을 사용하여 결측치를 보완할 수 있습니다.

    구현 예시

    df.dropna()
    df.fillna(df.mean())

    이상치 처리(Outlier Handling)

    이상치는 다른 데이터와 동떨어진 값입니다. 이상치는 센서 오류, 입력 실수 또는 실제 희귀한 현상을 의미할 수 있습니다. 이상치를 그대로 사용하면 평균이나 회귀 모델에 큰 영향을 미칠 수 있습니다.

     

    이상치 탐지 대표 방식

    • 통계 기반: IQR(Interquartile Range) 방식
    • 표준편차 기반: 평균에서 ±3표준편차 벗어난 데이터 탐지
    • 모델 기반: Isolation Forest, DBSCAN

    IQR 방식 예시

    Q1 = df['value'].quantile(0.25)
    Q3 = df['value'].quantile(0.75)
    IQR = Q3 - Q1
    df = df[~((df['value'] < (Q1 - 1.5 * IQR)) | (df['value'] > (Q3 + 1.5 * IQR)))]

    데이터 스케일링(Normalization / Standardization)

    수치형 데이터의 스케일이 다르면 모델이 특정 변수에 과도하게 영향을 받을 수 있습니다. 예를 들어 키는 170, 몸무게는 65라는 값이 있다고 할 때, 값의 크기가 비슷하지 않다면 거리 기반 알고리즘은 값이 큰 쪽에 영향을 크게 받습니다.

     

    주요 스케일링 방식

    방식 설명
    Min-Max Normalization 값을 0~1 사이로 정규화
    Standardization 평균 0, 표준편차 1인 형태로 변환
     

    구현 예시

    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    scaled = scaler.fit_transform(df[['col1', 'col2']])

     

     

    범주형 데이터 인코딩(Categorical Encoding)

    범주형 데이터는 텍스트나 라벨형 데이터로 구성되어 있습니다. 모델은 문자열을 직접 해석할 수 없기 때문에 숫자로 변환해야 합니다.

     

    대표적 방식

    방식 특징
    Label Encoding 범주를 0, 1, 2 같은 숫자로 변환
    One-Hot Encoding 각 범주별로 새로운 컬럼을 생성하여 0 또는 1로 표현

     

    예시:

    from sklearn.preprocessing import OneHotEncoder
    encoder = OneHotEncoder(sparse=False)
    result = encoder.fit_transform(df[['category']])

     

    텍스트 데이터 전처리(Text Preprocessing)

    텍스트는 숫자가 아니기 때문에 전처리 과정이 꼭 필요합니다. 텍스트 전처리에서 중요한 과정은 불필요한 문자를 제거하고 의미 있는 단어만 남기는 것입니다.

     

    주요 처리 단계

    • 정제: 특수문자, 공백, HTML 태그 제거
    • 토큰화: 문장을 단어로 분리
    • 불용어 제거: 분석에 의미가 없는 단어 제거
    • 벡터화: TF-IDF, Word2Vec 등을 이용하여 숫자 데이터로 변환

    구현 예시:

    from sklearn.feature_extraction.text import TfidfVectorizer
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(df['text'])
     

    날짜 및 시간 데이터 처리

    날짜 데이터는 단순한 문자열이 아니라 시간의 흐름에 따른 패턴을 포함합니다. 날짜 데이터를 분해하여 연, 월, 요일, 분기, 주차 등 의미 있는 피처로 변환할 수 있습니다.

     

    예시:

    df['date'] = pd.to_datetime(df['date'])
    df['year'] = df['date'].dt.year
    df['month'] = df['date'].dt.month

     

     

     

    피처 엔지니어링 및 피처 선택

    모델 성능 향상을 위해 기존 데이터를 결합하거나 새로운 변수를 만들거나 중요도가 낮은 피처를 제거하는 단계입니다.

     

    대표 예시:

    from sklearn.feature_selection import SelectFromModel
    model = RandomForestClassifier()
    model.fit(X_train, y_train)
    selector = SelectFromModel(model, prefit=True)
    X_new = selector.transform(X)

     

    전처리는 데이터 분석과 머신러닝에서 가장 중요한 과정입니다. 전처리를 어떻게 수행하느냐에 따라 모델의 성능과 분석 결과는 극적으로 달라질 수 있습니다.

     

    결측치 처리, 이상치 탐지, 스케일링, 인코딩, 텍스트 정제, 날짜 데이터 처리까지 모든 과정은 데이터를 더 정확하고 안정적으로 만들기 위한 필수 단계입니다. 좋은 전처리는 좋은 데이터 품질을 만들고, 이는 결국 좋은 분석 결과를 만들어냅니다.

     

    전처리는 반복적이고 시간이 많이 들지만, 가장 큰 가치를 만들어내는 작업입니다.

    반응형