<p>According to <a href="https://tsfresh.readthedocs.io/en/latest/text/feature_filtering.html" rel="nofollow noreferrer">that page</a> in their documentation, what they do is:</p>

<ol>
<li>they extract a whole set of features</li>
<li>they individually test the different features for significance (in a supervised setting, so the test is something like "is this feature useful to predict that output?") and keep the most significant ones using a procedure called the Benjamini-Yekutieli procedure</li>
</ol>

<p>The references they provide should be of interest:</p>

<p>[1] Christ, M., Kempa-Liehr, A.W. and Feindt, M. (2016). Distributed and parallel time series feature extraction for industrial big data applications. ArXiv e-prints: 1610.07717 URL: <a href="http://adsabs.harvard.edu/abs/2016arXiv161007717C" rel="nofollow noreferrer">http://adsabs.harvard.edu/abs/2016arXiv161007717C</a></p>

<p>[2] Benjamini, Y. and Yekutieli, D. (2001). The control of the false discovery rate in multiple testing under dependency. Annals of statistics, 1165–1188</p>

<p>where [1] is the paper describing <code>tsfresh</code> and [2] is the reference for the multiple testing procedure (called Benjamini-Yekutieli procedure above).</p>
The algorithm behind tsfresh select_features method
<p>I recently started to use <code>tsfresh</code> library to extract features from time-series data.</p>

<p>It's very cool that I can get the bag of features in few lines of code but I have doubt about the logic behind the <code>select_features</code> method. I looked into the official documents and googled it, but I couldn't find which algorithm is used for this. I want to know how it works, so that I can decide what to do on the feature selection phase after data processing in <code>tsfresh</code>.</p>