특징 선택(Feature Selection)이란? AI에 필요한 입력 변수만 남기는 방법
TL;DR
특징 선택(Feature Selection)은 원래 입력 특징의 값을 새로 만들지 않고, 모델 학습에 쓸 특징의 일부만 골라 남기는 전처리입니다. 고객 이탈 예측표에서 고객 번호처럼 의미 없는 열, 거의 같은 값을 가진 열, 다른 열과 정보가 겹치는 후보를 검토해 제외하는 식입니다. 필터 방식은 통계 점수로 빠르게 고르고, 래퍼 방식은 특징 조합별 모델 성능을 비교하며, 내장 방식은 모델 학습 과정에서 얻은 계수나 중요도를 활용합니다. 선택 기준은 훈련 데이터에서만 학습하고 검증 데이터로 성능·안정성·집단별 영향을 다시 확인해야 합니다.
핵심 3줄 요약
- 핵심 1
원래 특징 가운데 일부를 남깁니다. 특징 선택은 새 축을 만드는 대신 기존 열을 보존하거나 제외합니다. - 핵심 2
선택 기준에 따라 결과가 달라집니다. 필터·래퍼·내장 방식은 보는 신호와 계산 비용이 서로 다릅니다. - 핵심 3
검증 분리를 지켜야 합니다. 전체 데이터로 특징을 먼저 고르면 테스트 정보가 학습에 새어 들어갈 수 있습니다.
이 글에서 다룰 내용
- 특징 선택의 한 문장 정의
- 고객 이탈 예측표로 이해하는 쉬운 예시
- 입력 수·학습 비용·설명 가능성과 연결되는 이유
- 필터·래퍼·내장 방식의 작동 차이
- 특성 중요도·피처 엔지니어링·차원 축소와의 구분
- 실전 적용 순서와 체크리스트
- 데이터 누수·상관 특징·선택 불안정성의 주의점
특징 선택을 한 문장으로 정의하면 무엇인가요?
특징 선택은 주어진 입력 특징 집합에서 예측 목적에 유용하다고 판단한 일부를 골라 모델 학습에 사용하는 과정입니다.
TensorFlow의 머신러닝 전처리 안내는 특징 선택을 입력 특징의 일부를 고르고 관련 없거나 중복된 특징을 무시하는 작업으로 설명합니다. scikit-learn은 특징 선택 도구를 모델 정확도 개선 가능성과 고차원 데이터의 처리 성능 향상에 활용할 수 있다고 안내합니다.
특징 선택의 영어 표현은 Feature Selection입니다. 문헌에서는 Variable Selection 또는 변수 선택이라는 말도 만날 수 있습니다. 여기서 변수와 특징은 모델에 넣을 후보 입력을 가리키지만, 분야와 문서에 따라 용어 선택이 달라질 수 있습니다.
한 줄 정리: 특징 선택은 모델이 볼 입력 후보를 줄이되, 남긴 특징의 원래 의미와 값을 유지하는 작업입니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 온라인 서비스의 다음 달 고객 이탈을 예측한다고 가정해 보겠습니다. 원본 표에는 고객 번호, 가입 기간, 최근 접속 후 지난 일수, 최근 30일 사용 횟수, 문의 횟수, 결제 금액, 거주 지역과 이탈 여부가 있습니다.
고객 번호는 각 사람을 구분할 뿐 이탈 원인을 설명하는 값으로 설계되지 않았습니다. 모든 행에서 같은 서비스 코드도 모델이 사례를 구분하는 데 도움이 되지 않습니다. 반면 최근 접속 후 지난 일수와 사용 횟수는 이탈 정답과 함께 검토할 후보가 됩니다.
분산 기준으로 모든 값이 같은 열을 먼저 빼고, 각 후보와 정답의 통계적 관계를 점수로 비교할 수 있습니다. 이후 상위 후보만 넣은 모델과 전체 후보를 넣은 기준 모델을 같은 검증 데이터에서 비교합니다. 열 수가 줄어도 검증 성능이 유지되고 운영에서 필요한 데이터 수집도 줄어든다면 선택 결과를 채택할 근거가 생깁니다.
쉬운 예시: 전체 입력표에서 쓸모없는 열을 지우는 것만이 아니라, 남길 열을 훈련 데이터로 고르고 별도 데이터에서 효과를 확인하는 과정 전체가 특징 선택입니다.
왜 AI를 만들 때 특징 선택이 중요한가요?
관련 없는 입력이 만드는 잡음을 줄입니다
특징이 많으면 모델이 더 많은 정보를 받지만, 그 정보가 모두 유용한 것은 아닙니다. 우연히 정답과 함께 움직인 식별자나 수집 오류가 많은 열은 학습 데이터에서는 그럴듯한 패턴처럼 보일 수 있습니다. 처음 보는 데이터에서 같은 관계가 사라지면 성능이 흔들립니다.
학습과 추론 비용을 줄일 수 있습니다
입력 열이 수만 개라면 저장 공간, 전처리 시간, 메모리와 모델 계산량이 커질 수 있습니다. JMLR의 특징 선택 개론은 예측 성능 개선과 함께 더 빠르고 비용 효율적인 예측기를 만드는 일을 주요 목표로 설명합니다.
원래 입력 이름을 남겨 검토하기 쉽습니다
특징 선택은 보통 기존 열의 일부를 남기므로 어떤 정보가 모델에 들어가는지 설명하기 쉽습니다. 의료 검사 항목이나 센서 이름처럼 원래 의미가 중요한 데이터에서는 선택 목록 자체가 검토 자료가 됩니다.
핵심 인사이트: 특징 수를 줄이는 일이 목표가 아니라, 더 적고 관리 가능한 입력으로 검증 성능과 운영 품질을 지키는 일이 목표입니다.
특징 선택은 어떤 방식으로 작동하나요?
필터 방식은 모델 밖의 통계 기준으로 고릅니다
필터 방식은 각 특징의 분산이나 정답과의 통계적 관계를 먼저 계산해 후보를 거릅니다. scikit-learn의 VarianceThreshold는 분산이 기준보다 낮은 특징을 제거합니다. SelectKBest와 SelectPercentile은 점수가 높은 특징 수나 비율을 정해 남깁니다.
래퍼 방식은 특징 조합별 모델 성능을 비교합니다
래퍼 방식은 실제 모델을 반복해 학습하며 어떤 특징 묶음이 검증 점수를 높이는지 찾습니다. 순차 선택은 빈 집합에서 특징을 하나씩 더하거나 전체 집합에서 하나씩 빼는 방식으로 후보를 탐색합니다.
모델 성능을 직접 기준으로 삼는 장점이 있지만 후보가 많으면 학습 횟수와 계산 비용이 크게 늘어납니다. 한 번의 검증 분할에 맞춘 선택을 피하려면 교차 검증과 별도 테스트 데이터가 필요합니다.
내장 방식은 모델 학습 과정의 신호를 씁니다
내장 방식은 모델이 학습하면서 만든 계수나 특징 중요도를 선택 기준으로 활용합니다. scikit-learn의 SelectFromModel은 중요도 값이 정한 임계값 이상인 특징을 남기며 최대 특징 수도 제한할 수 있습니다.
L1 규제를 쓴 선형 모델처럼 일부 계수를 0으로 만드는 모델이나 트리 기반 모델의 중요도를 활용할 수 있습니다. 선택 결과는 바탕 모델과 임계값에 의존하므로 다른 모델로 바꾸면 남는 특징도 달라질 수 있습니다.
RFE는 덜 중요한 특징을 반복해서 제거합니다
재귀적 특징 제거(RFE)는 처음에 전체 특징으로 모델을 학습하고 중요도가 낮은 특징을 일부 제거한 뒤 다시 학습합니다. 이 과정을 원하는 특징 수에 이를 때까지 반복합니다. RFECV는 교차 검증 점수를 이용해 선택할 특징 수까지 조정합니다.
RFE는 한 번 계산한 순위로 끝내지 않고 특징 집합이 바뀔 때 중요도를 다시 구한다는 점이 특징입니다. 대신 반복 학습 비용이 들고, 바탕 모델이 신뢰할 만한 계수나 중요도를 제공해야 합니다.
작동 정리: 필터는 통계 점수, 래퍼는 반복 검증 성능, 내장 방식은 학습된 모델의 계수·중요도를 중심으로 특징을 고릅니다.
특징 선택과 헷갈리는 용어는 무엇이 다른가요?
피처 엔지니어링과 특징 선택의 차이
피처 엔지니어링은 원시 데이터를 모델용 입력으로 고르고, 변환하고, 조합해 새 특징을 만드는 넓은 과정입니다. 특징 선택은 그 과정에서 후보 가운데 일부를 남기는 작업입니다. 기존 피처 엔지니어링 글이 입력 설계 전체를 설명한다면 특징 선택은 후보 축소의 기준과 검증에 집중합니다.
특성 중요도와 특징 선택의 차이
특성 중요도는 모델이 어떤 입력을 많이 활용했는지 나타내는 점수나 설명 결과입니다. 특징 선택은 그 점수 또는 다른 기준을 이용해 실제 학습 입력을 줄이는 결정입니다. 중요도를 계산했다고 자동으로 열이 삭제되는 것은 아니며, 낮은 중요도만 보고 바로 제외해서도 안 됩니다.
차원 축소와 특징 선택의 차이
특징 선택은 원래 특징의 일부를 그대로 남깁니다. PCA 같은 차원 축소는 여러 원래 특징을 조합해 더 적은 새 축을 만듭니다. 둘 다 입력 차원을 줄일 수 있지만 결과의 의미와 역추적 가능성이 다릅니다.
특징 추출과 특징 선택의 차이
특징 추출은 원시 입력에서 새로운 표현을 만듭니다. 이미지 모델의 중간 층에서 임베딩을 꺼내거나 텍스트를 벡터로 바꾸는 일이 예입니다. 특징 선택은 이미 준비된 후보 표현 가운데 일부만 사용합니다.
규제와 특징 선택의 차이
규제는 모델이 지나치게 복잡해지지 않도록 손실 함수나 학습 규칙에 제약을 더하는 방법입니다. L1 규제는 일부 계수를 0으로 만들어 선택 효과를 낼 수 있지만 모든 규제가 명시적인 특징 목록을 만드는 것은 아닙니다. L2 규제는 보통 계수를 줄일 뿐 특징을 직접 제거하지 않습니다.
비교 정리: 특징 선택은 기존 입력을 남기거나 버리고, 특징 추출과 차원 축소는 새 표현을 만들며, 특성 중요도는 선택에 참고할 점수를 제공합니다.
실전에서는 어디에 쓰이나요?
표 형태 예측 모델의 입력 정리
고객 이탈, 수요 예측, 이상 거래 탐지처럼 열이 많은 표 데이터에서 씁니다. 식별자, 중복 열, 결측 비율이 지나치게 높은 열, 수집 시점이 불명확한 열을 먼저 검토하고 통계·모델 기반 선택을 이어 갑니다.
업무 지식으로 반드시 남겨야 할 특징과 법적·운영상 사용하면 안 되는 특징은 자동 점수와 별도로 관리해야 합니다. 모델 점수가 높다는 이유만으로 민감한 변수를 허용할 수는 없습니다.
텍스트의 고차원 단어 특징 축소
단어 빈도나 n-gram을 특징으로 쓰면 열 수가 매우 커질 수 있습니다. 거의 등장하지 않거나 정답과 관련이 약한 후보를 줄이면 메모리와 학습 시간을 아낄 수 있습니다. 선택 기준은 훈련 말뭉치에서만 계산해야 합니다.
센서와 생명정보 데이터의 변수 검토
센서 채널이나 유전자 측정값처럼 변수 수가 사례 수보다 훨씬 많은 데이터에서도 특징 선택을 사용합니다. JMLR 논문은 텍스트 처리, 유전자 발현 분석과 조합화학처럼 수많은 변수가 있는 분야를 주요 배경으로 설명합니다.
표본이 적고 특징이 많으면 선택 결과가 작은 데이터 변화에도 크게 달라질 수 있습니다. 재표집이나 교차 검증에서 반복해서 선택되는지 확인하고 외부 검증 데이터가 있다면 별도로 시험해야 합니다.
운영 비용과 데이터 수집 항목 줄이기
모델에 쓰지 않는 센서, 외부 데이터 구매 항목, 수동 입력 필드를 줄이면 수집과 유지 비용이 낮아질 수 있습니다. 다만 과거 데이터에서 중요도가 낮았다는 이유만으로 원천 수집을 바로 중단하면 나중에 모델을 다시 설계할 때 필요한 정보를 잃을 수 있습니다.
먼저 모델 입력에서 제외해 영향을 관찰하고, 데이터 보존 정책과 다른 업무의 사용 여부까지 확인한 뒤 수집 중단을 결정하는 편이 안전합니다.
실전 팁: 특징 수, 검증 점수, 추론 지연 시간, 데이터 수집 비용과 선택 목록을 같은 실험 기록에 남기면 줄인 이유를 나중에 확인하기 쉽습니다.
특징 선택은 어떤 순서로 적용하나요?
1. 목표와 예측 시점을 정합니다
무엇을 언제 예측할지 먼저 정하고 그 시점에 실제로 얻을 수 있는 특징만 후보로 둡니다. 정답이 나온 뒤 생성되는 값과 미래 정보는 점수가 높아도 제외해야 합니다.
2. 훈련·검증·테스트 데이터를 먼저 나눕니다
특징 선택기를 전체 데이터에 맞춘 뒤 데이터를 나누면 검증과 테스트 정보가 선택 기준에 섞입니다. 먼저 데이터를 분리하고 선택기의 분산, 점수, 중요도와 임계값을 훈련 데이터에서 학습합니다.
3. 기준 모델과 선택 방법을 정합니다
전체 특징을 쓴 기준 모델의 성능·학습 시간·추론 시간을 기록합니다. 그다음 분산 기준, 단변량 점수, SelectFromModel, RFE처럼 목적에 맞는 방법과 남길 특징 수의 후보를 정합니다.
4. 파이프라인 안에서 함께 검증합니다
scikit-learn은 특징 선택을 실제 학습 전 전처리 단계로 Pipeline에 넣는 방식을 안내합니다. 교차 검증의 각 훈련 폴드에서 선택기를 새로 맞추면 검증 폴드 정보가 선택에 먼저 쓰이는 일을 막을 수 있습니다.
특징 수나 임계값도 하이퍼파라미터처럼 검증 범위 안에서 비교합니다. 테스트 데이터는 최종 선택과 모델 설정을 확정한 뒤 마지막 평가에 사용합니다.
5. 선택 목록과 운영 입력을 함께 고정합니다
채택한 특징 이름, 순서, 자료형, 전처리 기준, 선택기 버전과 학습 데이터 기간을 저장합니다. 서비스에서는 학습 때 남긴 열과 같은 열을 같은 순서로 공급해야 합니다.
새 데이터에서 열이 사라지거나 의미가 바뀌면 조용히 0으로 채우기보다 검증 오류를 내고 원인을 확인하는 편이 안전합니다. 정기 재학습 때는 선택 결과의 변화도 모델 성능과 함께 기록합니다.
한 줄 정리: 데이터를 나눈 뒤 훈련 구간에서만 특징을 고르고, 선택과 모델 학습을 하나의 검증 파이프라인으로 묶으세요.
사용할 때 무엇을 주의해야 하나요?
첫째, 전체 데이터로 먼저 선택하지 않습니다. 정답과의 점수, 분산 기준, 중요도와 임계값은 훈련 데이터에서 계산해야 합니다. 테스트 데이터는 선택이 끝난 뒤 최종 성능을 확인하는 데 남겨 둡니다.
둘째, 상관된 특징의 순위를 단독으로 믿지 않습니다. 비슷한 정보를 담은 열이 여러 개면 한 열만 높게 나오거나 중요도가 나뉠 수 있습니다. 한 특징의 낮은 순위가 정보 자체의 무가치를 뜻하지는 않습니다.
셋째, 선택 결과의 안정성을 확인합니다. 데이터 분할이나 시기를 조금 바꿨을 때 남는 특징이 계속 달라진다면 표본 수, 잡음, 강한 상관관계와 선택 기준을 다시 살펴야 합니다.
넷째, 검증 점수 하나만 보지 않습니다. 전체 평균 성능이 같아도 특정 고객군이나 드문 클래스의 재현율이 떨어질 수 있습니다. 중요한 집단과 오류 유형을 나눠 비교합니다.
다섯째, 운영에서 얻을 수 있는 입력인지 확인합니다. 학습 데이터에는 있지만 실시간 서비스에서 늦게 도착하거나 비용이 큰 특징이라면 실제 모델에 안정적으로 공급하기 어렵습니다.
여섯째, 선택된 특징을 원인으로 단정하지 않습니다. 예측에 유용한 상관 신호와 업무의 인과관계는 다릅니다. 정책 변경이나 사람에 대한 판단에는 별도의 도메인 검토와 영향 평가가 필요합니다.
주의: 특징 선택은 입력 수를 줄이는 자동 정답지가 아닙니다. 데이터 분할, 선택 기준, 바탕 모델과 평가 지표가 바뀌면 결과도 달라집니다.
자주 묻는 질문
Q1. 특징이 많으면 무조건 일부를 선택해야 하나요?
아닙니다. 충분한 데이터와 적절한 규제가 있고 모델이 많은 특징을 안정적으로 처리한다면 전체 후보가 나을 수 있습니다. 기준 모델과 선택 모델을 같은 검증 절차로 비교해 결정하세요.
Q2. 특징 선택과 특성 중요도는 같은 말인가요?
아닙니다. 특성 중요도는 입력별 영향이나 활용 정도를 나타내는 점수이고, 특징 선택은 어떤 입력을 실제로 남길지 정하는 과정입니다. 중요도는 선택 기준 가운데 하나일 뿐입니다.
Q3. PCA도 특징 선택 방법인가요?
보통은 구분합니다. PCA는 여러 원래 특징을 조합해 새로운 주성분 축을 만드는 차원 축소입니다. 특징 선택은 원래 열의 일부를 그대로 남깁니다.
Q4. 정답 라벨 없이도 특징을 고를 수 있나요?
가능합니다. VarianceThreshold처럼 입력값의 분산만 보는 방법은 정답을 사용하지 않습니다. 다만 정답을 보지 않은 선택이 예측 목표에 유용한 특징을 반드시 남긴다는 보장은 없으므로 모델 검증이 필요합니다.
Q5. RFE와 SelectFromModel은 무엇이 다른가요?
RFE는 모델을 반복해서 학습하며 덜 중요한 특징을 단계적으로 제거합니다. SelectFromModel은 학습한 모델의 계수나 중요도를 임계값과 비교해 특징을 고릅니다. RFE는 반복 비용이 더 들 수 있습니다.
Q6. 선택한 특징 목록은 배포 후에도 그대로 써야 하나요?
같은 모델 버전을 서비스하는 동안에는 학습 때 선택한 이름, 순서와 전처리를 그대로 적용해야 합니다. 재학습으로 목록을 바꾸면 모델·선택기·입력 스키마를 함께 버전 관리하고 배포 전 호환성을 시험하세요.
출처
마무리
특징 선택은 이미 준비된 입력 후보에서 모델에 사용할 일부를 골라 남기는 전처리입니다. 필터·래퍼·내장 방식은 선택 기준과 계산 비용이 다르며, RFE처럼 모델을 반복해서 학습하며 후보를 줄이는 방법도 있습니다.
초보자라면 세 가지를 기억하면 충분합니다. 먼저 데이터를 나누고, 훈련 데이터에서만 선택 기준을 학습하며, 전체 특징을 쓴 기준 모델과 별도 검증 데이터에서 비교하세요. 남긴 특징의 이름과 순서까지 모델과 함께 버전 관리하면 실험의 선택 결과를 실제 서비스에 안전하게 이어갈 수 있습니다.
