[데이터사이언스기초] Feature Extraction

 

Feature Extraction

지난 포스팅에서는 머신러닝 모델 구축 과정에서 중요한 모델 선택과 데이터 전처리에 대해 알아보았다. 오늘은 데이터 분석의 핵심 단계 중 하나인 Feature Extraction(특징 추출)에 대해 자세히 알아보겠다. 효과적인 Feature Engineering은 머신러닝 모델의 성능을 크게 향상시킬 수 있는 중요한 요소다.

1. Feature Extraction (특징 추출)

Feature Extraction은 raw data에서 모델 학습에 유용한 정보를 추출하는 과정이다. 텍스트, 이미지, 음성 등 다양한 형태의 데이터에서 의미 있는 특징을 찾아내는 것은 머신러닝 모델의 성능을 높이는 데 중요한 역할을 한다.

1.1. DictVectorizer: Dictionary 데이터를 Feature Array로 변환

DictVectorizer는 Python의 Dictionary 형태로 표현된 데이터를 머신러닝 알고리즘에서 사용할 수 있는 숫자 형태의 Feature Array로 변환하는 데 사용된다. 특히, 범주형 데이터(Categorical Data)를 One-Hot Encoding 방식(각 단어는 하나의 벡터로 1:1 매칭)으로 변환하는 데 유용하다.

예를 들어, 영화 데이터베이스에서 각 영화의 장르와 개봉 연도를 Dictionary 형태로 저장했다고 가정해 보자. DictVectorizer를 사용하면 이러한 데이터를 머신러닝 모델 학습에 사용할 수 있는 형태로 쉽게 변환할 수 있다.

DictVectorizer

1.2. Text Feature Extraction: 텍스트 데이터에서 특징 추출하기

텍스트 데이터는 자연어 처리(Natural Language Processing, NLP) 분야에서 중요한 역할을 한다. 하지만 텍스트 데이터는 그대로 머신러닝 알고리즘에 입력할 수 없으므로, 숫자 형태의 특징 벡터(Feature Vector)로 변환해야 한다.

텍스트 데이터에서 특징을 추출하는 일반적인 과정은 다음과 같다.

  1. Tokenization (토큰화): 텍스트를 단어 또는 문구 단위로 분할
  2. Counting (카운팅): 각 토큰의 빈도수를 계산
  3. Normalization (정규화): 텍스트 길이 등에 따른 영향을 줄이기 위해 빈도수를 조정

Bag-of-Words (BoW)는 텍스트 데이터를 단어 빈도수 벡터로 표현하는 간단하면서도 효과적인 방법이다. 하지만 단어의 순서 정보를 고려하지 않는다는 단점이 있다. 이를 보완하기 위해 N-gram 모델을 사용하여 단어 시퀀스 정보를 함께 고려할 수 있다.

* BoW는 각각의 단어를 하나의 토큰으로
* N-gram은 N개의 단어를 하나의 토큰으로

Scikit-learn countVectorizer

1.3. Image Feature Extraction: 이미지 데이터에서 특징 추출하기

이미지 데이터는 컴퓨터 비전(Computer Vision) 분야에서 중요한 역할을 한다. 이미지 데이터에서 특징을 추출하는 방법에는 다양한 방법이 있지만, Scikit-learn에서는 extract_patches_2d 함수를 사용하여 이미지에서 패치(patch)를 추출할 수 있다. 패치는 이미지의 작은 부분 영역으로, 이미지의 특징을 나타내는 데 사용될 수 있다.

예를 들어, 얼굴 인식 모델을 학습시키기 위해 이미지에서 눈, 코, 입 등의 패치를 추출하여 특징 벡터로 사용할 수 있다.

extract patches

마무리하며

이번 포스팅에서는 Feature Extraction의 개념과 다양한 데이터 유형에서 특징을 추출하는 방법에 대해 알아보았다. Feature Extraction은 머신러닝 모델의 성능을 높이는 데 중요한 역할을 하므로, 데이터의 특성에 맞는 적절한 방법을 선택하는 것이 중요하다. 다음 포스팅에서는 Feature Selection에 대해 자세히 알아보겠다. Feature Selection은 많은 특징 중에서 모델 학습에 유용한 특징을 선택하는 과정으로, 모델의 복잡도를 줄이고 과적합을 방지하는 데 도움을 줄 것이다.

추천글 :
[데이터사이언스기초] Introduction to Machine learning
(https://hyeonb.blogspot.com/2024/06/introduction-to-machine-learning.html)
[데이터사이언스기초] Machine learning process
(
https://hyeonb.blogspot.com/2024/06/machine-learning-process.html)

hyeon_B

안녕하세요! AI 기술을 이용해 더 나은 세상을 만들어 나가고 싶은 과기원생 Hyeon이라고 합니다. 저는 앞으로 인공지능 시대에는 지식을 '활용'하는 능력이 중요해질 것이라고 생각합니다. 대부분의 일들은 인공지능이 뛰어난 모습을 보이지만, 인공지능은 데이터로 부터 연관관계를 학습하기 때문에 지식들을 새로 통합해서 활용하는 능력이 부족합니다. 인공지능이 뉴턴 전에 만들어졌다면 사과가 떨어지는 이유에 대답하지 못했을 것이고, 아인슈타인 전에 만들어졌다면 중력이 어떻게 생기는지 설명하지 못했을 것입니다. 따라서 앞으로 우리는 '본질'을 탐구하고 그 본질로부터 다른 곳에 적용하며 인공지능을 현명하게 활용해야 할 것입니다. 함께 인공지능 시대를 준비합시다!

댓글 쓰기

다음 이전

POST ADS1

POST ADS 2