Basically you have two approaches:
-
hand crafting your features with your domain knowledge. This works often well with classic ML and < 20 features, see also: W1_Quiz_Large NN Models vs Traditional Learning - #4 by Christian_Simonis
-
using deep learning which kind of automates feature engineering using lots of data. This often suits with big and unstructured data, see also this thread. With these tons of data the model can learn abstract patterns: Deep Learning models with advanced architectures (like transformers but also architecture w/ convolutional | pooling layers) are designed to perform well on very large datasets and also process highly unstructured data like pictures or videos in a scalable way: basically the more data, the merrier! Compared to classic ML models DNNs possess less structure and can learn more complex and abstract relationships given sufficient amount of data, see also this thread: Why traditional Machine Learning algorithms fail to produce accurate predictions compared to Deep Learning algorithms? - #2 by Christian_Simonis
There are several reasons why feature engineering is key. Couple of them are:
-
performance: e.g. you can model non-linearity already in your features and make it easy for your ML model for fit the data well. So whenever you can model „distilled knowledge“ in features this is valuable for modelling
-
costs: often this also helps you in terms of requiring less data for a good model which often reduces your costs, especially when labels are expensive to create
-
interpretability: often features have a nice domain interpretation (e.g. a physical meaning or an aggregation of knowledge) which also helps for plausibility checks and interpreting (or explaining model results to your stakeholders).
Hope that helps, @vasyl.delta.
Best regards
Christian