Não sei se estou certo em meu pensamento, mas..
O fato de ensinarmos a máquina com exemplos (dados) e marcações e então chamar predict(), no fundo, em termos de código, poderia ser substituído por vários IFs.
Porém, o problema seria de OCP pois, assim que novas características para classificar um porco surgissem, deveríamos alterar a classe adicionando mais IFs.
Entretanto, todos esses IFs acontecem por baixo dos panos, dentro da função predict().
Na prática, em minha opinião, não chega a ser inteligente, mas tão somente uma "tabela reativa".
Estou certo até aqui ?
Chego a pensar que essa geração tem tentando re-inventar a roda as vezes, dando nomes novos para coisas que já existiam. Apenas porque se recusou a olhar para trás.