What is Feature Engineering?

Feature engineering is the process of deriving informative input attributes that can be passed to a machine learning algorithm in order to learn their associations with the target variable. In the majority of machine learning problems, the original data in its raw state is not suitable to use directly in an algorithm. For instance, text fields are not viable predictors most of the time, and an example of feature engineering on such a field would be to extract substrings out of the full text to create meaningful features out of the original string.  Feature engineering is often more of an art than a science, and domain knowledge is often most beneficial for guiding a data scientist towards creating the most useful predictors. This is a key step in any modeling endeavor, as the data that is fed into a model often influences its ultimate performance more so than the particular algorithm chosen.