피쳐 엔지니어링에 사용되는 상위 6가지 기술 [머신 러닝]

게시 됨: 2021-03-12

목차

소개

피쳐 엔지니어링은 모든 데이터 과학 프로젝트에서 가장 중요한 측면 중 하나입니다. 피쳐 엔지니어링은 원시 데이터에서 피쳐를 추출하고 정제하는 데 사용되는 기술을 말합니다. 피쳐 엔지니어링 기술은 모델에 대한 적절한 입력 데이터를 생성하고 모델의 성능을 개선하는 데 사용됩니다.

모델은 필요한 출력을 제공하기 위해 원시 데이터에서 파생된 기능을 기반으로 훈련되고 구축됩니다. 우리가 가지고 있는 데이터가 모델이 데이터에서 무언가를 배울 만큼 충분하지 않을 수 있습니다. 근본적인 문제에 대한 솔루션을 찾는 기능을 도출할 수 있다면 데이터를 잘 표현할 수 있을 것입니다. 더 나은 데이터 표현, 더 나은 모델 적합성 및 더 나은 결과가 모델에 의해 표시됩니다.

모든 데이터 과학 프로젝트의 워크플로는 일회성 프로세스가 아닌 반복 프로세스입니다. 대부분의 데이터 과학 프로젝트에서 기본 모델은 원시 데이터에서 기능을 만들고 수정한 후 생성됩니다. 기본 모델의 결과를 얻으면 일부 기존 기능을 조정할 수 있으며 일부 새로운 기능은 모델 결과를 최적화하기 위해 데이터에서 파생됩니다.

피처 엔지니어링

피쳐 엔지니어링 프로세스에 사용된 기술은 모든 알고리즘 및 데이터 세트에 대해 동일한 방식으로 결과를 제공할 수 있습니다. 피쳐 엔지니어링 프로세스에서 사용되는 몇 가지 일반적인 기술은 다음과 같습니다.

1. 가치 전환

기능의 값은 대수 함수, 근 함수, 지수 함수 등과 같은 매개변수를 사용하여 다른 메트릭으로 변환할 수 있습니다. 이러한 함수에는 몇 가지 제한 사항이 있으며 모든 유형의 데이터 세트에 사용되지 않을 수 있습니다. 예를 들어, 음수 값을 포함하는 피처에는 루트 변환 또는 로그 변환을 적용할 수 없습니다.

가장 일반적으로 사용되는 함수 중 하나는 로그 함수입니다. 로그 함수는 한쪽 끝으로 치우칠 수 있는 데이터의 왜도를 줄이는 데 도움이 될 수 있습니다. 로그 변환은 데이터를 정규화하여 모델 성능에 대한 이상값의 영향을 줄이는 경향이 있습니다.

또한 피처 값의 크기를 줄이는 데 도움이 됩니다. 이것은 더 큰 값을 가진 피처를 다른 피처보다 더 중요하게 여기는 일부 알고리즘을 사용할 때 유용합니다.

2. 데이터 전가

데이터 전가는 데이터 세트의 누락된 값을 일부 통계 값으로 채우는 것을 말합니다. 이 기술은 일부 알고리즘이 다른 알고리즘을 사용하도록 제한하거나 이러한 누락된 값을 전가하는 누락된 값에 대해 작동하지 않기 때문에 중요합니다. 기능에서 누락된 값의 백분율이 더 적은 경우(약 5-10%) 사용하는 것이 선호되며 그렇지 않으면 데이터 분포에서 더 많은 왜곡이 발생합니다. 수치 및 범주 기능에 대해 이를 수행하는 다양한 방법이 있습니다.

지정된 범위 내의 임의의 값 또는 평균, 중앙값 등과 같은 통계적 측정을 사용하여 수치적 특징의 누락된 값을 전가할 수 있습니다. 이러한 전가는 통계적 측정이 모델의 성능을 오히려 저하시키는 이상값이 발생하기 쉽기 때문에 신중하게 이루어져야 합니다. . 범주형 기능의 경우 누락된 값을 데이터 세트에서 누락된 추가 범주로 전가하거나 범주를 알 수 없는 경우 단순히 누락된 것으로 전가할 수 있습니다.

전자는 올바른 범주를 찾기 위해 좋은 도메인 지식이 필요하지만 후자는 일반화에 대한 대안입니다. 모드를 사용하여 범주형 기능을 대치할 수도 있습니다. 데이터를 모드로 대치하면 결측값의 수가 너무 많은 경우 가장 빈번한 레이블이 과도하게 표시될 수도 있습니다.

세계 최고의 대학에서 온라인으로 인공 지능 과정 (석사, 대학원 대학원 프로그램, ML 및 AI 고급 인증 프로그램)에 참여하여 경력을 빠르게 추적하십시오 .

3. 범주형 인코딩

많은 알고리즘의 요구 사항 중 하나는 입력 데이터가 본질적으로 숫자여야 한다는 것입니다. 이것은 그러한 알고리즘에서 범주형 기능을 사용하기 위한 제약으로 밝혀졌습니다. 범주형 특징을 숫자로 나타내려면 범주형 인코딩을 수행해야 합니다. 범주형 기능을 숫자로 변환하는 몇 가지 방법은 다음과 같습니다.

1. 원-핫 인코딩: – 원-핫 인코딩은 범주형 기능의 각 레이블에 대해 값(0 또는 1)을 취하는 새로운 기능을 생성합니다. 이 새로운 기능은 범주의 레이블이 각 관찰에 대해 존재하는지 여부를 나타냅니다. 예를 들어 범주형 기능에 4개의 레이블이 있다고 가정하고 원-핫 인코딩을 적용하면 4개의 부울 기능이 생성됩니다.

모든 기능이 0을 포함하는 것처럼 3개의 기능으로 동일한 양의 정보를 추출할 수도 있고 범주형 기능의 값은 4번째 레이블이 됩니다. 이 방법을 적용하면 데이터 세트에 많은 수의 레이블이 있는 범주형 기능이 많이 있는 경우 기능 공간이 늘어납니다.

2. 빈도 인코딩: – 이 방법은 범주형 기능에 있는 각 레이블의 개수 또는 백분율을 계산하고 동일한 레이블에 매핑합니다. 이 방법은 데이터 세트의 기능 공간을 확장하지 않습니다. 이 방법의 한 가지 단점은 두 개 이상의 레이블이 데이터 세트에서 동일한 개수를 갖는 경우 모든 레이블에 대해 동일한 번호를 맵에 제공한다는 것입니다. 이것은 중요한 정보의 손실로 이어질 것입니다.

3. 서수 인코딩: – 레이블 인코딩이라고도 하는 이 방법은 범주형 기능의 고유한 값을 0에서 n-1 사이의 숫자로 매핑하며 n은 기능의 고유한 레이블 수입니다. 이 방법은 데이터 세트의 기능 공간을 확장하지 않습니다. 그러나 피쳐의 레이블 내에서 서수 관계를 생성합니다.

4. 이상값 처리

이상치는 값이 나머지 로트와 매우 다른 데이터 포인트입니다. 이러한 이상값을 처리하려면 먼저 감지해야 합니다. Python에서 상자 그림 및 산점도와 같은 시각화를 사용하여 감지하거나 사분위수 범위(IQR)를 사용할 수 있습니다. 사분위수 범위는 1분기(25번째 백분위수)와 3분기(75번째 백분위수) 간의 차이입니다.

(Q1 – 1.5*IQR) 및 (Q3 + 1.5*IQR) 범위에 속하지 않는 값을 이상값이라고 합니다. 이상값을 감지한 후에는 데이터 세트에서 이상값을 제거하고, 일부 변환을 적용하고, 누락된 값으로 처리하여 일부 방법을 사용하여 대치하는 등의 방법으로 이상값을 처리할 수 있습니다.

5. 기능 확장

기능 스케일링은 기능의 값을 변경하고 범위 내로 가져오는 데 사용됩니다. 값의 크기에 민감한 SVM, 선형 회귀, KNN 등과 같은 알고리즘을 사용하는 경우 이 프로세스를 적용하는 것이 중요합니다. 기능을 확장하기 위해 표준화, 정규화, 최소-최대 확장을 수행할 수 있습니다. 정규화는 기능 범위의 값을 -1에서 1로 재조정합니다. 이는 각 관측치와 해당 기능의 최대값과 최소값을 뺀 평균에 대한 빼기의 비율입니다. 즉, [X – 평균(X)]/[최대(X) – 최소(X)].

최소-최대 스케일링에서는 평균 대신 특성의 최소값을 사용합니다. 이 방법은 특성의 최종 값만 고려하므로 이상값에 매우 민감합니다. 표준화는 특성 값을 0에서 1로 재조정합니다. 데이터 분포를 정규화하지 않는 반면 전자의 방법은 정규화를 수행합니다.

6. 날짜 및 시간 변수 다루기

날짜와 시간을 다양한 형식으로 나타내는 많은 변수를 접하게 됩니다. 월, 요일/월, 연도, 주말 여부, 날짜 간의 차이 등과 같은 날짜에서 더 많은 기능을 도출할 수 있습니다. 이를 통해 데이터 세트에서 보다 통찰력 있는 정보를 추출할 수 있습니다. 시간 기능에서 시, 분, 초 등과 같은 정보를 추출할 수도 있습니다.

대부분의 사람들이 간과하는 한 가지는 모든 날짜 및 시간 변수가 주기적 기능이라는 것입니다. 예를 들어 수요일(3)과 토요일(7) 사이의 어느 요일이 일요일(1)에 더 가까운지 확인해야 한다고 가정합니다. 이제 우리는 토요일이 더 가깝다는 것을 알지만 수치적으로는 3과 1 사이의 거리가 7과 1의 거리보다 작기 때문에 수요일이 될 것입니다. 시간 형식이 24시간 형식인 경우에도 동일하게 적용될 수 있습니다.

이 문제를 해결하기 위해 이러한 변수를 sin 및 cos 함수의 표현으로 표현할 수 있습니다. '분' 기능의 경우 NumPy를 사용하여 sin 및 cos 함수를 적용하여 다음과 같이 순환 특성으로 나타낼 수 있습니다.

min_feature_sin = np.sin(df['분_특성']*(2*π/60))

min_feature_cos = np.cos(df['분_특성']*(2*π/60))

(참고: 1시간은 60분이므로 60으로 나눈다. 몇 개월 단위로 하고 싶으면 12로 나누는 식으로)

이러한 기능을 산점도에 표시하면 이러한 기능이 그들 사이에 순환 관계를 나타내는 것을 알 수 있습니다.

더 읽어보기: 기계 학습 프로젝트 아이디어 및 주제

결론

이 기사는 기능 엔지니어링 프로세스에서 사용되는 몇 가지 일반적인 기술을 인용하면서 기능 엔지니어링의 중요성에 초점을 맞췄습니다. 위에 나열된 모든 기술 중 어떤 기술이 더 나은 통찰력을 제공할지 결정하는 것은 알고리즘과 데이터에 따라 다릅니다.

그러나 그것은 정말 어려운 일이며 데이터 세트가 다를 수 있고 데이터에 사용되는 알고리즘도 다를 수 있으므로 가정하는 것이 안전하지 않습니다. 더 나은 접근 방식은 무모하게 기능 엔지니어링을 수행하는 것보다 점진적 접근 방식을 따르고 결과와 함께 구축된 모델을 추적하는 것입니다.

머신 러닝에 대해 자세히 알아보려면 IIIT-B & upGrad의 기계 학습 및 AI 경영자 PG 프로그램을 확인하세요. 이 프로그램은 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT를 제공합니다. -B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

평균 중앙값 기반 데이터 대치 기술을 사용할 때의 단점은 무엇입니까?

평균 대치를 사용할 때 변수 간의 연결 및 상관 관계가 유지되지 않습니다. 그러나 평균을 대입하면 관찰된 데이터의 평균이 유지됩니다. 결과적으로 모든 데이터가 무작위로 누락되더라도 평균 추정치는 편향되지 않은 상태로 유지됩니다. 전가된 변수의 분산은 평균 전가를 사용하여 감소됩니다. 평균 전가는 표준 오차를 줄여 대부분의 가설 검정과 신뢰 구간 계산을 부정확하게 만듭니다. 이처럼 1종 오류는 무의식적으로 만들어집니다.

특징 추출이 필요한 이유는 무엇입니까?

특징 추출은 분류기의 효율성을 향상시키기 위해 가장 작고 가장 유익한 특징 모음(고유 패턴)을 찾는 데 사용됩니다. 특징 추출은 데이터 수집에서 불필요한 데이터를 줄여 관련 정보와 특징에만 중점을 둡니다. 마지막으로, 데이터를 줄이면 기계가 더 적은 노력으로 모델을 개발하기가 더 쉬울 뿐만 아니라 기계 학습 프로세스에서 학습 및 일반화 프로세스의 속도가 빨라집니다. 특징 공학의 가장 중요한 응용 프로그램은 특징 추출이 중요한 요소인 생물 의학 신호 분류에 있습니다. 특징을 신중하게 선택하지 않으면 분류 성능이 저하될 수 있기 때문입니다.

특징 추출 기법을 사용할 때의 단점이 있습니까?

기능 추출은 일반 사람들이 읽거나 이해할 수 없는 몇 가지 새로운 기능을 제공합니다. 확장성은 특징 추출 중에 직면하는 또 다른 과제입니다. 데이터 세트가 크면 일부 기능 추출 기술을 실행할 수 없습니다. 특히 복잡한 비선형 특징 추출 접근 방식은 구현이 불가능합니다. 대부분의 기술은 특정 상황에서 정확한 문제를 해결할 수 없는 기능 선택 문제를 효율적으로 처리하기 위해 어떤 형태의 근사에 의존합니다.