5분 만에 데이터 과학 및 ML을 위한 특성 엔지니어링 알아보기
머신러닝과 데이터 과학에서 핵심적인 특성 추출 기법을 알아볼 준비가 되셨나요? 여러분은 지금 올바른 곳에 와 있습니다!
특성 엔지니어링은 데이터에서 가치 있는 정보를 뽑아내는 데 필수적인 기술입니다. 이 가이드에서는 복잡한 과정을 이해하기 쉽도록 세분화하여 설명합니다. 이제 특성 추출의 전문가가 되기 위한 여정을 시작해 봅시다!
특성 엔지니어링이란 무엇일까요?

비즈니스 또는 연구 과제와 관련된 머신러닝 모델을 만들 때, 우리는 일반적으로 학습 데이터를 열과 행의 형태로 제공합니다. 데이터 과학 및 머신러닝 개발 분야에서는 이러한 열을 '특성' 또는 '변수'라고 부릅니다.
각 열 아래에 상세하게 기록된 데이터, 즉 행은 '관측' 또는 '인스턴스'라고 칭합니다. 열 또는 속성은 원시 데이터 세트의 기본 구성 요소인 '특성'을 나타냅니다.
하지만 이러한 원시 특성들은 머신러닝 모델을 훈련시키는 데 최적의 상태가 아닐 수 있습니다. 수집된 데이터에서 불필요한 노이즈를 제거하고 유용한 신호를 극대화하기 위해서는 특성 엔지니어링을 통해 데이터 열을 유의미한 특성으로 변환하거나 가공해야 합니다.
예시 1: 재무 모델링

위의 예시 데이터 세트 이미지에서 A부터 G까지의 열들은 각각 '특성'에 해당합니다. 이름, 예금액, 예금년도, 이자율 등 각 행에 나열된 값이나 텍스트 문자열들은 '관측' 값들입니다.
머신러닝 모델링에서는 데이터의 의미 있는 특성을 생성하고 전체 모델 훈련 데이터베이스의 크기를 줄이기 위해 데이터를 삭제, 추가, 결합 또는 변환하는 과정이 필요합니다. 이러한 과정 전체를 통틀어 '특성 엔지니어링'이라고 합니다.

앞서 언급한 데이터 세트 예시에서 '총 재직 기간' 및 '총 이자액'과 같은 특성은 모델 학습에 불필요한 정보가 될 수 있습니다. 이는 단순히 더 많은 공간을 차지하고 머신러닝 모델을 복잡하게 만들 수 있습니다. 따라서 총 7개 특성 중 2개를 제거할 수 있습니다.
머신러닝 모델 데이터베이스에는 수천 개의 열과 수백만 개의 행이 포함될 수 있으므로, 단 두 개의 특성을 줄이는 것만으로도 프로젝트에 상당한 영향을 줄 수 있습니다.
예시 2: AI 음악 재생 목록 생성기
경우에 따라 여러 기존 특성을 결합하여 완전히 새로운 특성을 만들 수 있습니다. 예를 들어, 사용자의 이벤트, 선호도, 기분 등에 따라 음악 재생 목록을 자동으로 생성하는 인공지능 모델을 개발한다고 가정해 봅시다.
다양한 소스에서 음악 데이터를 수집하여 다음 데이터베이스를 생성했습니다.

위 데이터베이스에는 7가지 특성이 있습니다. 하지만 우리의 목표는 머신러닝 모델을 훈련시켜 특정 이벤트에 적합한 음악을 결정하는 것이므로, 장르, 평점, 비트, 템포, 속도와 같은 특성을 '적합성'이라는 새로운 특성으로 통합할 수 있습니다.

이제 특정 음악 특성을 결합하여 어떤 음악이 어떤 이벤트에 적합한지 결정할 수 있습니다. 예를 들어, 재즈 장르, 4.9점 평점, X3 비트, Y3 템포, Z1 속도의 음악은 사용자가 수면용 음악을 검색할 때 사용자의 재생 목록에 추가되어야 함을 머신러닝 모델에 알려줍니다.
머신러닝에서의 특성 유형
범주형 특성
범주형 특성은 고유한 범주나 레이블을 나타내는 데이터 속성을 의미합니다. 이 유형은 정성적 데이터 세트에 태그를 지정하는 데 사용됩니다.
#1. 순서형 범주형 특성
순서형 특성은 의미 있는 순서를 갖는 범주를 나타냅니다. 예를 들어, 학력(고등학교, 학사, 석사 등)은 분명한 순서가 있지만 양적인 차이는 없습니다.
#2. 명목형 범주형 특성
명목형 특성은 고유한 순서가 없는 범주를 나타냅니다. 예를 들어, 색상, 국가, 동물 유형 등이 있으며, 질적인 차이만 존재합니다.
배열 특성
배열 특성은 배열이나 목록으로 구성된 데이터를 나타냅니다. 데이터 과학자 및 머신러닝 개발자는 배열 특성을 사용하여 시퀀스를 처리하거나 범주형 데이터를 포함하는 경우가 많습니다.
#1. 임베딩 배열 특성
임베딩 배열은 범주형 데이터를 밀집된 벡터로 변환합니다. 자연어 처리 및 추천 시스템에서 일반적으로 사용됩니다.
#2. 목록 배열 특성
목록 배열은 항목 목록이나 작업 기록과 같은 순서가 있는 데이터 시퀀스를 저장합니다.
수치형 특성
수치형 특성은 정량적 데이터를 나타내며 수학적 연산을 수행하는 데 사용됩니다.
#1. 구간 수치형 특성
구간 특성은 값 사이에 일관된 간격이 있지만 실제 영점이 없는 특성입니다(예: 온도 데이터). 여기서 0은 어는점을 의미하지만 속성은 여전히 유지됩니다.
#2. 비율 수치형 특성
비율 특성은 값과 실제 영점 사이에 일관된 간격을 갖습니다. 예로는 나이, 키, 소득 등이 있습니다.
머신러닝 및 데이터 과학에서 특성 엔지니어링의 중요성
- 효과적인 특성 추출은 모델 정확도를 향상시켜 의사 결정에 대한 예측의 신뢰성과 가치를 높입니다.
- 신중한 특성 선택은 관련이 없거나 중복되는 속성을 제거하여 모델을 단순화하고 계산 자원을 절약합니다.
- 잘 설계된 특성은 데이터 패턴을 밝혀 데이터 과학자가 데이터 세트 내의 복잡한 관계를 이해하는 데 도움을 줍니다.
- 특정 알고리즘에 맞게 특성을 조정하면 다양한 머신러닝 방법에서 모델 성능을 최적화할 수 있습니다.
- 잘 설계된 특성을 통해 모델 학습 속도가 빨라지고 계산 비용이 절감되어 머신러닝 워크플로가 간소화됩니다.
다음으로 특성 엔지니어링의 단계별 과정을 살펴보겠습니다.
특성 엔지니어링 프로세스 단계별

- 데이터 수집: 초기 단계에서는 데이터베이스, 파일, API 등 다양한 소스에서 원시 데이터를 수집합니다.
- 데이터 정리: 데이터를 확보한 후에는 오류, 불일치, 이상값을 식별하고 수정하여 데이터를 정리해야 합니다.
- 누락된 값 처리: 누락된 값은 머신러닝 모델의 특성 저장소를 혼란스럽게 만들 수 있으며, 이를 무시하면 모델이 편향될 수 있습니다. 따라서 결측값을 채우거나 신중하게 생략하기 전에 더 많은 조사를 거쳐야 합니다.
- 범주형 변수 인코딩: 머신러닝 알고리즘을 위해서는 범주형 변수를 숫자 형식으로 변환해야 합니다.
- 스케일링 및 정규화: 스케일링은 수치형 특성이 일관된 스케일을 유지하도록 보장하여 큰 값을 가진 특성이 머신러닝 모델을 지배하지 않도록 방지합니다.
- 특성 선택: 이 단계에서는 가장 관련성이 높은 특성을 식별하고 유지하여 차원을 줄이고 모델 효율성을 높이는 데 도움이 됩니다.
- 특성 생성: 때로는 기존 특성을 조합하여 새로운 특성을 만들어 귀중한 정보를 얻을 수 있습니다.
- 특성 변환: 로그 변환이나 제곱 변환과 같은 변환 기술을 사용하면 데이터를 모델링에 더 적합하게 만들 수 있습니다.
다음으로 특성 추출 방법을 살펴보겠습니다.
특성 엔지니어링 방법
#1. 주성분 분석 (PCA)

PCA는 상관관계가 없는 새로운 특성을 찾아 복잡한 데이터를 단순화합니다. 이를 주성분이라고 하며, 차원을 줄이고 모델 성능을 향상시키는 데 사용됩니다.
#2. 다항식 특성
다항식 특성을 생성한다는 것은 기존 특성에 더 높은 차수의 연산을 적용하여 데이터의 복잡한 관계를 포착하는 것을 의미합니다. 이는 모델이 비선형 패턴을 이해하는 데 도움이 됩니다.
#3. 이상값 처리
이상값은 모델 성능에 영향을 미칠 수 있는 비정상적인 데이터 포인트입니다. 왜곡된 결과를 방지하려면 이상값을 식별하고 관리해야 합니다.
#4. 로그 변환
로그 변환은 편향된 분포의 데이터를 정규화하는 데 도움이 됩니다. 이는 극단값의 영향을 줄여 데이터를 모델링에 더 적합하게 만듭니다.
#5. t-분산 확률적 이웃 임베딩 (t-SNE)

t-SNE는 고차원 데이터를 시각화하는 데 유용합니다. 데이터 구조를 유지하면서 차원을 줄이고 클러스터를 더욱 명확하게 만듭니다.
이 방법은 데이터 포인트를 저차원 공간의 점으로 표현합니다. 유사한 데이터 포인트를 원래의 고차원 공간에 가까이 배치하여 저차원 표현에서도 서로 가깝게 모델링합니다.
데이터 포인트 간의 구조와 거리를 유지한다는 점에서 다른 차원 축소 방법과 차별화됩니다.
#6. 원-핫 인코딩
원-핫 인코딩은 범주형 변수를 이진 형식(0 또는 1)으로 변환합니다. 각 범주에 대해 새로운 이진 열이 생성되어 머신러닝 알고리즘에 적합한 범주형 데이터를 만듭니다.
#7. 카운트 인코딩
카운트 인코딩은 범주형 값을 데이터 세트에 나타나는 횟수로 대체합니다. 이를 통해 범주형 변수에서 유용한 정보를 얻을 수 있습니다.
이 특성 엔지니어링 방법에서는 원래의 범주 레이블 대신 각 범주의 빈도 또는 개수를 새로운 수치형 특성으로 사용합니다.
#8. 특성 표준화

더 큰 값의 특성이 작은 값의 특성을 지배하는 경향이 있어 머신러닝 모델이 쉽게 편향될 수 있습니다. 표준화는 머신러닝 모델에서 이러한 편향의 원인을 방지합니다.
표준화 과정에는 일반적으로 다음 두 가지 기술이 포함됩니다.
- Z-점수 표준화: 이 방법은 평균이 0이고 표준 편차가 1이 되도록 각 특성을 변환합니다. 각 데이터 포인트에서 해당 특성의 평균을 빼고 그 결과를 표준 편차로 나눕니다.
- 최소-최대 스케일링: 최소-최대 스케일링은 데이터를 일반적으로 0과 1 사이의 특정 범위로 변환합니다. 각 데이터 포인트에서 특성의 최소값을 빼고 그 결과를 범위로 나눕니다.
#9. 정규화
정규화를 통해 수치형 특성은 일반적으로 0과 1 사이의 공통 범위로 조정됩니다. 이는 값 간의 상대적인 차이를 유지하고 모든 특성이 공평하게 학습에 기여할 수 있도록 보장합니다.

#1. Featuretools
Featuretools는 시간 및 관계형 데이터 세트에서 특성을 자동으로 생성하는 오픈 소스 파이썬 프레임워크입니다. 머신러닝 파이프라인 개발에 이미 사용하고 있는 도구와 함께 사용할 수 있습니다.
이 솔루션은 심층 특성 합성을 사용하여 특성 엔지니어링을 자동화합니다. 특성 생성을 위한 하위 수준 함수 라이브러리가 있으며, 정확한 시간 처리에 유용한 API를 제공합니다.
#2. CatBoost
여러 의사결정 트리를 결합하여 강력한 예측 모델을 생성하는 오픈 소스 라이브러리를 찾고 있다면, CatBoost를 고려해 보십시오. 이 솔루션은 기본 매개변수를 사용하여 정확한 결과를 제공하므로 매개변수를 미세 조정하는 데 많은 시간을 소비할 필요가 없습니다.
CatBoost를 사용하면 숫자가 아닌 요소도 사용하여 훈련 결과를 향상시킬 수 있으며, 보다 정확한 결과와 빠른 예측을 기대할 수 있습니다.
#3. Feature-engine
Feature-engine은 머신러닝 모델에 사용할 수 있는 여러 변환기와 선택 기능을 포함한 파이썬 라이브러리입니다. 여기에 포함된 변환기는 변수 변환, 변수 생성, 날짜/시간 기능, 전처리, 범주형 인코딩, 이상값 제한 또는 제거, 누락된 데이터 대체 등에 사용할 수 있습니다. 숫자형, 범주형, 날짜/시간 변수를 자동으로 인식할 수 있습니다.
특성 엔지니어링 학습 자료
온라인 강좌 및 가상 수업

#1. Python을 이용한 머신러닝 특성 엔지니어링: Datacamp
Datacamp의 Python을 이용한 머신러닝 특성 엔지니어링 과정에서는 머신러닝 모델의 성능을 향상시키는 새로운 특성을 생성하는 방법을 배울 수 있습니다. 정교한 머신러닝 애플리케이션 개발을 위한 특성 엔지니어링 및 데이터 통합 방법을 알려줍니다.
#2. 머신러닝 특성 엔지니어링: Udemy
머신러닝 특성 엔지니어링 과정에서는 대치, 변수 인코딩, 특성 추출, 이산화, 날짜/시간 특성, 이상값 처리 등 다양한 주제를 다룹니다. 또한 편향된 변수 사용, 드물고 보이지 않는 범주 처리 방법 등도 배울 수 있습니다.
#3. 특성 엔지니어링: Pluralsight
Pluralsight 학습 경로에는 총 6개의 과정이 포함되어 있습니다. 이 과정은 머신러닝 워크플로에서 특성 추출의 중요성, 해당 기술을 적용하는 방법, 텍스트 및 이미지에서 특성을 추출하는 방법을 배우는 데 도움이 됩니다.
#4. 머신러닝 특성 선택: Udemy
Udemy의 이 과정을 통해 특성 셔플링, 필터, 래퍼 및 임베디드 방법, 재귀 특성 제거, 철저한 검색 등을 배울 수 있습니다. 또한 파이썬, Lasso, 의사결정 트리를 포함한 특성 선택 기술도 배울 수 있으며, 5.5시간의 주문형 비디오와 22개의 기사가 포함되어 있습니다.
#5. 머신러닝 특성 엔지니어링: Great Learning
Great Learning의 이 과정은 오버샘플링과 언더샘플링을 포함한 특성 추출 방법을 소개합니다. 또한 모델 튜닝 실습도 제공합니다.
#6. 특성 엔지니어링: Coursera
Coursera에서 BigQuery ML, Keras, TensorFlow를 사용하여 특성 추출을 수행하는 방법을 배울 수 있습니다. 이 중급 과정에서는 고급 특성 엔지니어링 실습도 다룹니다.
디지털 또는 하드커버 도서

#1. 머신러닝을 위한 특성 엔지니어링
이 책은 특성을 머신러닝 모델의 형식으로 변환하는 방법을 알려줍니다.
또한 연습 문제를 통해 특성 엔지니어링 원리와 실제 적용 사례를 제공합니다.
#2. 특성 엔지니어링 및 선택
이 책을 읽으면 다양한 단계에서 예측 모델을 개발하는 방법을 배울 수 있습니다.
모델링에 가장 적합한 예측 표현을 찾는 기술을 학습할 수 있습니다.
#3. 쉬운 특성 엔지니어링
이 책은 머신러닝 알고리즘의 예측력을 향상시키는 방법을 안내합니다.
데이터에 대한 심층적인 통찰력을 제공하여 머신러닝 기반 애플리케이션을 위한 효과적인 특성을 설계하고 생성하는 방법을 가르쳐줍니다.
#4. 특성 엔지니어링 북캠프
이 책은 더 나은 머신러닝 결과와 업그레이드된 데이터 핸들링을 위한 특성 엔지니어링 기술을 가르치는 실용적인 사례 연구를 제공합니다.
이 책을 통해 머신러닝 매개변수를 미세 조정하는 데 많은 시간을 들이지 않고도 향상된 결과를 얻을 수 있습니다.
#5. 특성 공학의 기술
이 책은 모든 데이터 과학자 또는 머신러닝 엔지니어에게 필수적인 참고 자료입니다.
다양한 도메인 접근 방식을 사용하여 그래프, 텍스트, 시계열, 이미지 및 사례 연구를 다룹니다.
결론
이것이 바로 특성 추출을 수행하는 방법입니다. 이제 정의, 단계별 과정, 방법 및 학습 자료를 알았으므로, 머신러닝 프로젝트에 적용하여 성공을 거두시길 바랍니다!
다음으로 강화 학습에 관한 기사를 확인해 보세요.