>백엔드 개발 >파이썬 튜토리얼 >기능 엔지니어링: 우수한 기계 학습 모델을 위한 데이터의 힘 활용

기능 엔지니어링: 우수한 기계 학습 모델을 위한 데이터의 힘 활용

WBOY
WBOY원래의
2024-08-21 22:24:43506검색

Feature Engineering: Unlocking the Power of Data for Superior Machine Learning Models

특성 엔지니어링은 원시 데이터를 기계 학습, 주로 지도 학습에서 사용할 수 있는 특성으로 선택, 조작 및 변환하는 프로세스입니다. 이는 기능 생성, 변환, 기능 추출, 탐색적 데이터 분석 및 벤치마킹의 5가지 프로세스로 구성됩니다. 이러한 맥락에서 '특징'은 예측 모델에 사용할 수 있는 측정 가능한 입력입니다. 그것은 동물의 소리일 수도 있고, 색깔일 수도 있고, 누군가의 목소리일 수도 있습니다.

이 기술을 사용하면 데이터 과학자는 데이터에서 가장 가치 있는 통찰력을 추출하여 보다 정확한 예측과 실행 가능한 통찰력을 보장할 수 있습니다.

기능 종류

위에서 설명한 것처럼 특성은 예측 모델에 사용할 수 있는 측정 가능한 지점입니다. 머신러닝을 위한 피쳐 엔지니어링의 종류를 살펴보겠습니다-

  • 수치적 특징: 이러한 특징은 척도로 측정할 수 있는 연속 변수입니다. 예: 나이, 체중, 키, 소득. 이러한 기능은 머신러닝에서 직접 사용할 수 있습니다.

  • 범주형 특성: 범주로 그룹화할 수 있는 개별 값입니다. 여기에는 성별, 우편번호, 색상이 포함됩니다. 기계 학습의 범주형 기능은 일반적으로 기계 학습 알고리즘에서 사용되기 전에 숫자 기능으로 변환되어야 합니다. 원-핫, 라벨, 서수 인코딩을 사용하면 쉽게 이 작업을 수행할 수 있습니다.

  • 시계열 기능: 이러한 기능은 시간에 따라 측정된 측정값입니다. 시계열 기능에는 주가, 날씨 데이터, 센서 판독값이 포함됩니다. 이러한 기능은 미래 가치를 예측하거나 데이터의 패턴을 식별할 수 있는 기계 학습 모델을 교육하는 데 사용할 수 있습니다.

  • 텍스트 기능: 단어, 구 또는 문장을 나타낼 수 있는 텍스트 문자열입니다. 텍스트 기능의 예로는 제품 리뷰, 소셜 미디어 게시물, 의료 기록 등이 있습니다. 텍스트 기능을 사용하면 텍스트의 의미를 이해하거나 텍스트를 다양한 카테고리로 분류할 수 있는 머신러닝 모델을 훈련할 수 있습니다.

  • 머신러닝 파이프라인에서 가장 중요한 프로세스 중 하나는 특성 선택입니다. 이는 모델 학습을 용이하게 하기 위해 데이터세트에서 가장 관련성이 높은 특성을 선택하는 프로세스입니다. 모델의 예측 성능과 견고성을 향상시켜 훈련 데이터에 과적합될 가능성을 줄입니다. 이 프로세스는 과적합을 줄이고, 모델 해석성을 향상시키며, 정확성을 높이고, 훈련 시간을 단축하는 데 도움이 되므로 매우 중요합니다.

특성공학 기법

대체

이 기술은 누락된 값/데이터 처리를 다룹니다. 이는 정리 및 표준화를 위해 데이터를 준비할 때 직면하게 되는 문제 중 하나입니다. 이는 주로 개인 정보 보호 문제, 사람의 실수, 심지어 데이터 흐름 중단으로 인해 발생합니다. 두 가지 범주로 분류할 수 있습니다.

  • 범주형 대치: 누락된 범주형 변수는 일반적으로 다른 레코드(모드)에서 가장 일반적으로 발생하는 값으로 대체됩니다. 숫자 값과 범주형 값 모두에서 작동합니다. 그러나 기능 상관관계는 무시됩니다. 이 대치 방법에는 Scikit-learn의 'SimpleImputer' 클래스를 사용할 수 있습니다. 이 클래스는 아래 표시된 것처럼 평균 및 중앙값 접근 방식을 통한 대치에도 작동합니다.
# impute Graduated and Family_Size features with most_frequent values

from sklearn.impute import SimpleImputer
impute_mode = SimpleImputer(strategy = 'most_frequent')
impute_mode.fit(df[['Graduated', 'age']])

df[['Graduated', 'age']] = impute_mode.transform(df[['Graduated', 'age']])
  • 수치 대치: 누락된 숫자 값은 일반적으로 다른 기록에 있는 해당 값의 평균으로 대체됩니다. 평균에 의한 대치라고도 합니다. 이 방법은 간단하고 빠르며 소규모 데이터 세트에 잘 작동합니다. 그러나 이 방법에는 열의 이상값이 결과 평균을 왜곡시켜 ML 모델의 정확도에 영향을 줄 수 있는 등 몇 가지 제한 사항이 있습니다. 또한 누락된 값을 대치하는 동안 기능 상관 관계를 고려하지 못합니다. 'fillna' 함수를 사용하여 열 평균의 누락된 값을 대치할 수 있습니다.
# Impute Work_Experience feature by its mean in our dataset

df['Work_Experience'] = df['Work_Experience'].fillna(df['Work_Experience'].mean())

인코딩

범주형 데이터를 수치(연속형) 데이터로 변환하는 과정입니다. 다음은 기능 인코딩 기술 중 일부입니다.

  • 레이블 인코딩: 레이블 인코딩은 데이터세트의 변수나 기능을 인코딩하는 방법입니다. 여기에는 범주형 변수를 수치형 변수로 변환하는 작업이 포함됩니다.

  • 원-핫 인코딩: 원-핫 인코딩은 범주형 변수를 ML 알고리즘에서 사용할 수 있는 형식으로 변환하는 프로세스입니다.

  • 바이너리 인코딩: 바이너리 인코딩은 바이너리 코드를 사용하여 데이터를 인코딩하는 프로세스입니다. 바이너리 인코딩에서는 각 문자가 0과 1의 조합으로 표현됩니다.

크기 조정 및 정규화

특성 스케일링은 데이터의 독립 변수나 특성의 범위를 정규화하는 데 사용되는 방법입니다. 데이터 처리에서는 데이터 정규화라고도 하며 일반적으로 데이터 전처리 단계에서 수행됩니다. 예를 들어 연령, 급여, 키와 같은 여러 독립 변수가 있는 경우 범위가 각각 (18~100년), (25,000~75,000유로), (1~2미터)인 경우 특성 크기 조정을 통해 모두 동일한 범위(예: 0을 중심으로 하거나 범위 내)에 있도록 할 수 있습니다. (0,1)은 스케일링 기술에 따라 다릅니다.

정규화는 값의 범위가 0과 1 사이가 되도록 값을 이동하고 다시 조정하는 조정 기술입니다. 최소-최대 조정이라고도 합니다. 여기서 Xmax와 Xmin은 각각 특성의 최대값과 최소값입니다.

비닝

비닝(버킷팅이라고도 함)은 다양한 수치 하위 범위를 그룹화하거나 버킷으로 그룹화하는 기능 엔지니어링 기술입니다. 많은 경우 비닝은 숫자 데이터를 범주형 데이터로 변환합니다. 예를 들어, 가장 낮은 값이 15이고 가장 높은 값이 425인 X라는 특성을 생각해 보세요. 구간화를 사용하면 다음 5개의 구간으로 X를 나타낼 수 있습니다.

  • 빈 1: 15~34
  • 빈 2: 35~117
  • 빈 3: 118~279
  • 빈 4: 280~392
  • 빈 5: 393~425

Bin 1의 범위는 15~34이므로 15~34 사이의 모든 X 값은 Bin 1에 속합니다. 이러한 Bin에 대해 학습된 모델은 두 값이 모두 Bin에 있으므로 X 값 17과 29에 다르게 반응합니다. 1.

차원성 감소

이것은 원본 데이터의 의미 있는 속성을 캡처하면서 더 적은 수의 특성(예: 차원)을 사용하여 주어진 데이터세트를 표현하는 방법입니다.1 이는 관련이 없거나 중복되는 특성 또는 단순히 노이즈가 있는 데이터를 제거하여 모델을 만드는 것과 같습니다. 더 적은 수의 변수로. 기본적으로 고차원 데이터를 저차원 데이터로 변환합니다. 차원 축소에는 두 가지 주요 접근 방식이 있습니다.

  • 기능 선택: 기능 선택에는 당면한 문제와 가장 관련성이 높은 원래 기능의 하위 집합을 선택하는 작업이 포함됩니다. 목표는 가장 중요한 기능을 유지하면서 데이터 세트의 차원을 줄이는 것입니다. 기능 선택에는 필터 방법, 래퍼 방법, 임베디드 방법 등 여러 가지 방법이 있습니다. 필터 방법은 대상 변수와의 관련성을 기준으로 특성의 순위를 매기고, 래퍼 방법은 모델 성능을 특성 선택 기준으로 사용하며, 임베디드 방법은 특성 선택과 모델 학습 프로세스를 결합합니다.

  • 특성 추출: 특성 추출에는 원래 특성을 결합하거나 변환하여 새로운 특성을 생성하는 작업이 포함됩니다. 목표는 저차원 공간에서 원본 데이터의 본질을 포착하는 기능 세트를 만드는 것입니다. 특징 추출에는 주성분 분석(PCA), 선형 판별 분석(LDA), t-분포 확률적 이웃 임베딩(t-SNE) 등 여러 가지 방법이 있습니다. PCA는 분산을 최대한 유지하면서 원래의 특징을 낮은 차원 공간에 투영하는 인기 있는 기술입니다.

자동화된 기능 엔지니어링 도구

특성 추출을 자동화하는 데 사용되는 여러 도구가 있는데 그 중 일부를 살펴보겠습니다.

FeatureTools - 자동화된 기능 엔지니어링을 위한 인기 있는 오픈 소스 Python 프레임워크입니다. 여러 관련 테이블에서 작동하며 기능 생성을 위해 다양한 변환을 적용합니다. 전체 프로세스는 엔터티 세트 전체에 변환을 반복적으로 적용하여 복잡한 기능을 생성하는 "심층 기능 합성"(DFS)이라는 기술을 사용하여 수행됩니다.

Autofeat - AutoFeatRegressorAutoFeatClassifier와 같은 모델과 함께 자동화된 기능 엔지니어링 및 기능 선택을 제공하는 Python 라이브러리입니다. 이는 많은 과학적 계산을 통해 구축되었으며 우수한 계산 능력이 필요합니다. 다음은 라이브러리의 일부 기능입니다.

  • fit(), fit_transform(), 예측() 및 점수().
  • One hot 인코딩으로 범주형 기능을 처리할 수 있습니다.
  • 적절한 기능을 선택하기 위한 기능 선택기 클래스가 포함되어 있습니다.
  • 기능의 물리적 단위가 전달될 수 있으며 관련 기능은 계산됩니다.
  • Buckingham Pi 정리 포함 - 무차원 계산에 사용됨 수량. 표 형식 데이터에만 사용됩니다.
  • 테이블 형식 데이터에만 사용됩니다.

AutoML - 간단히 말해서 자동 기계 학습은 ML 파이프라인의 각 구성 요소에 대한 최적의 솔루션을 찾기 위한 전문 검색 알고리즘을 사용하는 검색 개념으로 정의할 수 있습니다. 여기에는 자동화된 기능 엔지니어링, 자동화된 하이퍼파라미터 최적화, 신경 아키텍처 검색(NAS

)이 포함됩니다.

특성 공학의 일반적인 문제 및 모범 사례

일반적인 문제

  • 관련 없는 특성 무시: 관련 없는 특성은 출력에 기여하지 않고 데이터에 노이즈를 추가할 수도 있으므로 모델의 예측 성능이 저하될 수 있습니다. 이러한 실수는 서로 다른 데이터 세트와 대상 변수 간의 관계에 대한 이해와 분석이 부족하여 발생합니다.

머신러닝을 사용해 월간 매출을 예측하려는 기업을 상상해 보세요. 직원 수, 사무실 규모 등 판매량과 관련이 없는 데이터를 입력합니다.
수정: 철저한 기능 분석을 수행하여 어떤 데이터 변수가 필요한지 파악하고 그렇지 않은 변수는 제거하여 이 문제를 방지하세요.

  • 너무 많은 특성으로 인한 과적합: 모델은 훈련 데이터에 대해 완벽한 성능을 보일 수 있지만(데이터를 효과적으로 '기억'했기 때문에) 새로운, 보이지 않는 데이터에 대해서는 성능이 낮을 수 있습니다. 이를 과적합이라고 합니다. 이 실수는 대개 "더 많을수록 좋다"는 오해에서 비롯됩니다. 모델에 너무 많은 기능을 추가하면 복잡성이 커지고 모델을 해석하기가 더 어려워질 수 있습니다.

모델에 100개의 특성을 입력하지만 대부분이 중복되는 정보를 공유하는 미래 사용자 성장을 예측하는 앱을 생각해 보세요.
수정: 차원 축소 및 기능 선택과 같은 전략을 사용하여 입력 수를 최소화함으로써 이에 대응하고 모델 복잡성을 줄입니다.

  • 특성을 정규화하지 않음: 알고리즘은 규모가 큰 특성에 더 많은 가중치를 부여할 수 있으며, 이로 인해 부정확한 예측이 발생할 수 있습니다. 이 실수는 기계 학습 알고리즘의 작동 방식에 대한 이해 부족으로 인해 자주 발생합니다. 모든 기능이 비슷한 규모일 때 대부분의 알고리즘은 더 나은 성능을 발휘합니다.

의료 서비스 제공자가 환자의 연령과 소득 수준을 사용하여 특정 질병의 위험을 예측하지만 척도가 다른 이러한 특성을 정규화하지 않는다고 상상해 보세요.
수정: 이 문제를 방지하려면 기능 확장 기술을 적용하여 모든 변수를 비슷한 규모로 가져옵니다.

  • 결측값 처리 무시 누락된 값이 있을 때 모델은 예측할 수 없는 동작을 할 수 있으며 때로는 잘못된 예측으로 이어질 수 있습니다. 이러한 함정은 종종 누락된 값이 있어도 모델에 부정적인 영향을 미치지 않을 것이라는 가정이나 감독으로 인해 발생합니다.

예를 들어 고객 이탈을 예측하는 온라인 소매업체는 구매 내역 데이터를 사용하지만 구매 데이터가 없는 경우는 처리하지 않습니다.
수정: 누락된 값을 통계적 추정치로 바꾸는 데이터 대치 등 누락된 값을 처리하는 전략을 구현합니다.

모범 사례

  • 입력 기능에서 누락된 데이터를 처리해야 합니다. 프로젝트가 주택 가격을 예측하는 것을 목표로 하는 실제 사례에서는 모든 데이터 항목에 주택 연식에 대한 정보가 없을 수도 있습니다. 이러한 항목을 삭제하는 대신 데이터 세트에서 집 연식의 평균 값을 사용하는 "평균 대체"와 같은 전략을 사용하여 누락된 데이터를 대체할 수 있습니다. 누락된 데이터를 그냥 버리는 대신 올바르게 처리하면 모델이 학습할 데이터가 더 많아지고, 이는 모델 성능을 향상시킬 수 있습니다.

  • 범주형 데이터에 원-핫 인코딩 사용: 예를 들어 자동차에 대한 데이터세트에 "빨간색", "파란색", "녹색" 값을 사용할 수 있는 "색상" 기능이 있는 경우 이를 "is_red", "is_blue" 및 "is_green"이라는 세 가지 별도의 이진 특성으로 변환합니다. 이 전략을 사용하면 모델이 범주형 데이터를 올바르게 해석하여 모델의 결과 및 예측 품질을 향상시킬 수 있습니다.

  • 특성 확장 고려: 실제 예로 질병 예측을 위한 데이터 세트에는 연령(1100)과 혈당 수준 측정값(70180)이 있을 수 있습니다. 스케일링은 이 두 기능을 동일한 스케일에 배치하여 각각이 KNN(K-Nearest Neighbors) 알고리즘과 같이 거리 계산에 동일하게 기여할 수 있도록 합니다. 기능 확장은 많은 기계 학습 알고리즘의 성능을 향상시켜 더 효율적으로 렌더링하고 계산 시간을 단축할 수 있습니다.

  • 관련된 상호작용 기능 만들기: 주택 가격 상호작용 예측이 포함될 수 있으며 이는 유익할 수 있습니다. 욕실 수에 총 면적을 곱하는 새로운 기능을 생성하면 모델에 귀중한 새 정보를 제공할 수 있습니다. 상호 작용 기능은 선형 모델이 볼 수 없는 데이터의 패턴을 포착하여 잠재적으로 모델 성능을 향상시킬 수 있습니다.

  • 관련 없는 기능 제거: 스마트폰 가격을 예측해야 하는 문제에서 스마트폰의 색상은 예측에 거의 영향을 미치지 않아 빠질 수 있습니다. 관련 없는 특징을 제거하면 모델을 단순화하고, 더 빠르고, 해석하기 쉽게 만들고, 과적합 위험을 줄일 수 있습니다.

특성 추출은 단순한 기계 학습의 전처리 단계가 아닙니다. 이는 모델의 성공을 좌우할 수 있는 근본적인 측면입니다. 잘 설계된 기능은 더 정확한 예측과 더 나은 일반화로 이어질 수 있습니다. 데이터 표현: 기능은 기계 학습 알고리즘이 작동하는 기반 역할을 합니다. 데이터를 효과적으로 표현함으로써 기능 엔지니어링을 통해 알고리즘은 의미 있는 패턴을 식별할 수 있습니다. 따라서 야심 차고 경험이 풍부한 데이터 과학자, 기계 학습 애호가 및 엔지니어는 데이터에서 의미 있는 통찰력을 추출하는 데 기능 엔지니어링이 수행하는 중추적인 역할을 인식해야 합니다. 기능 엔지니어링 기술을 이해하고 이를 잘 적용함으로써 기계 학습 알고리즘의 진정한 잠재력을 활용하고 다양한 영역에 걸쳐 영향력 있는 솔루션을 추진할 수 있습니다.

질문이 있거나 기사를 개선할 수 있는 방법이 있으면 댓글 섹션에 남겨주세요. 감사합니다!

위 내용은 기능 엔지니어링: 우수한 기계 학습 모델을 위한 데이터의 힘 활용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.