이를 설명하는 가장 간단한 예는 XOR 문제입니다 (아래 이미지 참조). 및 y 좌표와 예측할 이진 클래스가 포함 된 데이터가 있다고 가정합니다 . 머신 러닝 알고리즘이 자체적으로 올바른 의사 결정 경계를 찾을 것으로 예상 할 수 있지만 추가 기능 z = x y 를 생성하면 z > 0 이 분류에 대한 거의 완벽한 의사 결정 기준을 제공하고 단순하게 사용 하므로 문제가 사소 해집니다. 산수!xyz=xyz>0
따라서 많은 경우 알고리즘에서 솔루션을 찾기를 기대할 수 있지만, 기능 엔지니어링을 통해 문제를 단순화 할 수 있습니다. 간단한 문제는 더 쉽고 빠르게 해결되며 덜 복잡한 알고리즘이 필요합니다. 간단한 알고리즘은 종종 더 강력하고 결과는 더 해석하기 쉬우 며 확장 성이 뛰어나고 (계산 리소스, 훈련 시간 등) 이식성이 뛰어납니다. 런던의 PyData 컨퍼런스에서 제공 한 Vincent D. Warmerdam 의 멋진 이야기에서 더 많은 예제와 설명을 찾을 수 있습니다 .
또한 머신 러닝 마케팅 담당자가 말하는 모든 것을 믿지 마십시오. 대부분의 경우 알고리즘은 "자체적으로 학습"하지 않습니다. 일반적으로 시간, 리소스, 계산 능력이 제한적이며 데이터의 크기가 제한적이며 시끄 럽습니다.
이것을 극단으로 가져 가면 실험 결과에 대한 필기 노트의 사진으로 데이터를 제공하고 복잡한 신경망에 전달할 수 있습니다. 먼저 그림의 데이터를 인식하고 그것을 이해하고 예측하는 법을 배웁니다. 이를 위해서는 강력한 컴퓨터와 모델 훈련 및 튜닝을위한 많은 시간이 필요하며 복잡한 신경망을 사용하기 때문에 많은 양의 데이터가 필요합니다. 컴퓨터에서 읽을 수있는 형식 (숫자 표)으로 데이터를 제공하면 모든 문자 인식이 필요하지 않으므로 문제를 엄청나게 단순화합니다. 피처 엔지니어링을 다음 단계로 생각하면 의미있는 데이터를 생성하는 방식으로 데이터를 변환 할 수 있습니다.알고리즘은 독자적으로 알아내는 것이 훨씬 적습니다. 유추하기 위해, 당신은 외국어로 책을 읽고 싶었던 것이므로, 당신이 이해하는 언어로 번역 된 것을 읽는 것보다 먼저 언어를 배워야했습니다.
타이타닉 데이터 예제에서, 알고리즘은 "가족 규모"기능을 얻기 위해 가족 구성원을 합산하는 것이 합리적이라는 것을 알아 내야합니다 (예, 여기에서 개인화하고 있습니다). 이것은 사람에게는 명백한 기능이지만 데이터를 숫자의 일부 열로 볼 경우 분명하지 않습니다. 다른 열과 함께 고려할 때 어떤 열이 의미가 있는지 모르는 경우 알고리즘은 해당 열의 가능한 각 조합을 시도하여 열을 파악할 수 있습니다. 물론, 우리는 이것을하는 영리한 방법을 가지고 있지만, 여전히 정보가 알고리즘에 제공된다면 훨씬 쉽습니다.