Najprostszym przykładem użytym do zilustrowania tego jest problem XOR (patrz obrazek poniżej). Wyobraź sobie, że otrzymujesz dane zawierające i y skoordynowane oraz klasę binarną do przewidzenia. Można oczekiwać, że algorytm uczenia maszynowego sam odkryje prawidłową granicę decyzyjną, ale jeśli wygenerowano dodatkową funkcję z = x y , problem staje się trywialny, ponieważ z > 0 daje prawie idealne kryterium decyzyjne dla klasyfikacji i zastosowałeś po prostu prosty arytmetyka!xyz= x yz> 0
Podczas gdy w wielu przypadkach można oczekiwać od algorytmu znalezienia rozwiązania, alternatywnie, dzięki inżynierii funkcji, można uprościć problem. Proste problemy są łatwiejsze i szybsze do rozwiązania i wymagają mniej skomplikowanych algorytmów. Proste algorytmy są często bardziej niezawodne, wyniki są często bardziej interpretowalne, są bardziej skalowalne (mniej zasobów obliczeniowych, czas na szkolenie itp.) I przenośne. Więcej przykładów i wyjaśnień można znaleźć we wspaniałym przemówieniu Vincenta D. Warmerdama, wygłoszonym na konferencji PyData w Londynie .
Co więcej, nie wierz we wszystko, co mówią ci specjaliści od uczenia maszynowego. W większości przypadków algorytmy nie „uczą się same”. Zwykle masz ograniczony czas, zasoby, moc obliczeniową, a dane mają zwykle ograniczony rozmiar i są hałaśliwe, co nie pomaga.
Biorąc to do skrajności, możesz podać swoje dane jako zdjęcia odręcznych notatek z wyniku eksperymentu i przekazać je do skomplikowanej sieci neuronowej. Najpierw nauczyłby się rozpoznawać dane na zdjęciach, a następnie nauczyć się je rozumieć i przewidywać. Aby to zrobić, potrzebujesz potężnego komputera i dużo czasu na szkolenie i dostrajanie modelu oraz potrzebujesz ogromnych ilości danych z powodu korzystania ze skomplikowanej sieci neuronowej. Dostarczenie danych w formacie czytelnym dla komputera (jako tabele liczb) znacznie upraszcza problem, ponieważ nie potrzebujesz całego rozpoznawania znaków. Możesz myśleć o inżynierii obiektów jako o kolejnym kroku, w którym przekształcasz dane w taki sposób, aby uzyskać sensfunkcje, dzięki czemu algorytm ma jeszcze mniej do rozwiązania. Aby dać analogię, to tak, jakbyś chciał przeczytać książkę w języku obcym, więc najpierw musisz nauczyć się języka, a nie przeczytać go przetłumaczonego na język, który rozumiesz.
W przykładzie danych Titanic Twój algorytm musiałby dowiedzieć się, że sumowanie członków rodziny ma sens, aby uzyskać funkcję „wielkości rodziny” (tak, personalizuję ją tutaj). Jest to oczywista cecha dla człowieka, ale nie jest oczywiste, jeśli widzisz dane jako tylko niektóre kolumny liczb. Jeśli nie wiesz, które kolumny mają znaczenie, gdy rozważymy je razem z innymi kolumnami, algorytm może to ustalić, wypróbowując każdą możliwą kombinację takich kolumn. Jasne, mamy sprytne sposoby na zrobienie tego, ale o wiele łatwiej jest, jeśli informacje są przekazywane algorytmowi od razu.