Answers.Body: <p>No, feature engineering is not an important step for deep learning (<strong>EDIT</strong>: compared to other techniques) provided that you have enough data. If your dataset is big enough (which varies from task to task), you can perform what is called an <a href="https://towardsdatascience.com/e2e-the-every-purpose-ml-method-5d4f20dafee4" rel="nofollow noreferrer">end-to-end learning</a>.</p>
  <p>To further clarify, according to <a href="https://arxiv.org/abs/2012.00152" rel="nofollow noreferrer">this article</a>, deep neural nets trained with backpropagation algorithm are basically doing an automated feature engineering.</p>
  <blockquote>
  <p>I feel like with enough regularization, the deep learning models don't need feature engineering compared to some machine learning models (SVMs, random forests, etc.)</p>
  </blockquote>
  <p>That is basically correct. Beware, you need a large dataset. When a large dataset is not available, you will do some manual work (feature engineering).</p>
  <p>Nevertheless, it is always a good idea to look at your data first!</p>
  <p><strong>EDIT</strong></p>
  <p>I would also like to quote <a href="http://incompleteideas.net/IncIdeas/BitterLesson.html" rel="nofollow noreferrer">Rich Sutton</a> here:</p>
  <blockquote>
  <p>We want AI agents that can discover like we can, not which contain
  what we have discovered. Building in our discoveries only makes it
  harder to see how the discovering process can be done.</p>
  </blockquote>
  <p>Perhaps this statement is more true with Deep Learning than with previous techniques, but we are not quite there yet. And as user nbro rightfully pointed out in the comments below, you may still need to normalise your data, pre-process it, remove outliers, etc. Thus in practice, you may still need to transform your data to a certain degree, depending on many factors.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-13T00:50:30.957Z
Answers.Text: Thank you for the two articles and for your answer.
Answers.UserDisplayName: Daviiid
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-18T13:50:04.753Z
Answers.Text: End-to-end learning is somehow orthogonal to what the OP means by "feature engineering". If e.g. your neural network trained "end-to-end" (which simply means that you have only one net, so you don't have intermediate steps, or training procedures, etc.) is not learning anything, you may need to analyse your data, look at the histograms, find anomalies, no matter how much data you have. So, I think that this answer is misleading, and saying that "feature engineering" is not important is actually wrong. The more interesting question would be: when is feature engineering required?
Answers.UserDisplayName: nbro
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-19T10:29:29.050Z
Answers.Text: @nbro I think we don't have a common language here. "Feature engineering is the process of using domain knowledge to extract features from raw data" (Wikipedia). End-to-end in contrast will not require using domain knowledge. For example, in computer vision people would traditionally do Gabor filters (domain knowledge). Today, people tend to avoid that as the filters are learned automatically by a convnet. Moreover, the filters learned automatically tend to be more efficient compared to handcrafted ones. Please also check this out http://incompleteideas.net/IncIdeas/BitterLesson.html
Answers.UserDisplayName: penkovsky
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-19T10:32:13.173Z
Answers.Text: @penkovsky Even if you use a ConvNet, you may still need to normalise your data, pre-process it, remove outliers, etc. So, yeah, ConvNets learn features, but that doesn't mean that you cannot have a feature engineering step where you actually improve your (raw) data so that learning can happen faster.
Answers.UserDisplayName: nbro
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-19T10:34:04.493Z
Answers.Text: "> you may need to analyse your data, look at the histograms, find anomalies, no matter how much data you have. <"
  
  I also specifically wrote "Nevertheless, it is always a good idea to look at your data first!" However, I don't really see any reason to elaborate on that point since data analysis and visualisation have been discussed exhaustively.
Answers.UserDisplayName: penkovsky
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-11T11:21:05.937Z
Answers.LastActivityDate: 2021-03-19T11:03:58.403Z
Answers.LastEditDate: 2021-03-19T11:03:58.403Z
Answers.UserDisplayName: penkovsky
Answers.Body: <p>From what I believe, feature engineering is important, it's a part of the job of ML network designer.</p>
  <p>Network designing involves</p>
  <ul>
  <li>Feature engineering: What should be in the input to the network, as processed from similar or totally different data</li>
  <li>Deciding network shape, layer shapes, types of neurons in layers, etc.</li>
  <li>Feature engineering again (but labels), in the output, what should the output be, either regression values or classes</li>
  </ul>
  <p>And possibly also tasks rather simple as mentioned in the question: filling missing values, normalising data, create pre-feeding normalisation steps in code, etc.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-13T00:54:34.313Z
Answers.Text: Thank your for your answer and sorry for my late reply. I see. I think I didn't provide enough details in my question, but for example with images, I think it's better to feed them directly to the neural network, provided they work well with this type of data like CNNs, than to feed some other features like HOG descriptors.
Answers.UserDisplayName: Daviiid
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-03-10T11:52:21.817Z
Answers.LastActivityDate: 2021-03-13T04:40:18.613Z
Answers.LastEditDate: 2021-03-13T04:40:18.613Z
Answers.UserDisplayName: Dan D.
Body: <p>I'd like to ask you if feature engineering is an important step for a deep learning approach.</p>
  <p>By feature engineering I mean some advanced preprocessing steps, such as looking at histogram distributions and try to make it look like a normal distribution or, in the case of time series, make it stationary first (not filling missing values or normalizing the data).</p>
  <p>I feel like with enough regularization, the deep learning models don't need feature engineering compared to some machine learning models (SVMs, random forests, etc.), but I'm not sure.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-03-19T11:37:46.763Z
Comments.Text: [Here](https://ai.stackexchange.com/q/25771/2444) is an older related (if not duplicate) question.
Comments.UserDisplayName: nbro
Tags: <machine-learning><deep-learning><data-preprocessing><feature-engineering>
Title: Is feature engineer an important step for a deep learning approach?
UserDisplayName: Daviiid
ThreadText: # Is feature engineer an important step for a deep learning approach?
  
  (Asked by: username_0 on 2021-03-10)
  
  I'd like to ask you if feature engineering is an important step for a deep learning approach.
  
  By feature engineering I mean some advanced preprocessing steps, such as looking at histogram distributions and try to make it look like a normal distribution or, in the case of time series, make it stationary first (not filling missing values or normalizing the data).
  
  I feel like with enough regularization, the deep learning models don't need feature engineering compared to some machine learning models (SVMs, random forests, etc.), but I'm not sure.
  
  **Tags:** machine-learning, deep-learning, data-preprocessing, feature-engineering
  
  > **Comments:**
  > **username_1**: [Here](https://ai.stackexchange.com/q/25771/2444) is an older related (if not duplicate) question.  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2021-03-11. Score: 0 | Accepted answer
  
  No, feature engineering is not an important step for deep learning (**EDIT**: compared to other techniques) provided that you have enough data. If your dataset is big enough (which varies from task to task), you can perform what is called an [end-to-end learning](https://towardsdatascience.com/e2e-the-every-purpose-ml-method-5d4f20dafee4).
  
  To further clarify, according to [this article](https://arxiv.org/abs/2012.00152), deep neural nets trained with backpropagation algorithm are basically doing an automated feature engineering.
  
  > I feel like with enough regularization, the deep learning models don't need feature engineering compared to some machine learning models (SVMs, random forests, etc.)
  
  That is basically correct. Beware, you need a large dataset. When a large dataset is not available, you will do some manual work (feature engineering).
  
  Nevertheless, it is always a good idea to look at your data first!
  
  **EDIT**
  
  I would also like to quote [Rich Sutton](http://incompleteideas.net/IncIdeas/BitterLesson.html) here:
  
  > We want AI agents that can discover like we can, not which contain
  > what we have discovered. Building in our discoveries only makes it
  > harder to see how the discovering process can be done.
  
  Perhaps this statement is more true with Deep Learning than with previous techniques, but we are not quite there yet. And as user username_1 rightfully pointed out in the comments below, you may still need to normalise your data, pre-process it, remove outliers, etc. Thus in practice, you may still need to transform your data to a certain degree, depending on many factors.
  
  > **Comments:**
  > **username_0**: Thank you for the two articles and for your answer.  
  > **username_1**: End-to-end learning is somehow orthogonal to what the OP means by "feature engineering". If e.g. your neural network trained "end-to-end" (which simply means that you have only one net, so you don't have intermediate steps, or training procedures, etc.) is not learning anything, you may need to analyse your data, look at the histograms, find anomalies, no matter how much data you have. So, I think that this answer is misleading, and saying that "feature engineering" is not important is actually wrong. The more interesting question would be: when is feature engineering required?  
  > **username_2**: @username_1 I think we don't have a common language here. "Feature engineering is the process of using domain knowledge to extract features from raw data" (Wikipedia). End-to-end in contrast will not require using domain knowledge. For example, in computer vision people would traditionally do Gabor filters (domain knowledge). Today, people tend to avoid that as the filters are learned automatically by a convnet. Moreover, the filters learned automatically tend to be more efficient compared to handcrafted ones. Please also check this out http://incompleteideas.net/IncIdeas/BitterLesson.html  
  > **username_1**: @username_2 Even if you use a ConvNet, you may still need to normalise your data, pre-process it, remove outliers, etc. So, yeah, ConvNets learn features, but that doesn't mean that you cannot have a feature engineering step where you actually improve your (raw) data so that learning can happen faster.  
  > **username_2**: "> you may need to analyse your data, look at the histograms, find anomalies, no matter how much data you have. <"  I also specifically wrote "Nevertheless, it is always a good idea to look at your data first!" However, I don't really see any reason to elaborate on that point since data analysis and visualisation have been discussed exhaustively.  
  
  ---
  
  ### Answer by username_3 on 2021-03-10. Score: 1
  
  From what I believe, feature engineering is important, it's a part of the job of ML network designer.
  
  Network designing involves
  
  * Feature engineering: What should be in the input to the network, as processed from similar or totally different data
  * Deciding network shape, layer shapes, types of neurons in layers, etc.
  * Feature engineering again (but labels), in the output, what should the output be, either regression values or classes
  
  And possibly also tasks rather simple as mentioned in the question: filling missing values, normalising data, create pre-feeding normalisation steps in code, etc.
  
  > **Comments:**
  > **username_0**: Thank your for your answer and sorry for my late reply. I see. I think I didn't provide enough details in my question, but for example with images, I think it's better to feed them directly to the neural network, provided they work well with this type of data like CNNs, than to feed some other features like HOG descriptors.  
  
  ---
  
  