How to Use t-SNE Effectively
distill.pub
distill.pub
To me, the canonical example of people using t-SNE this way is visualizing word embeddings, like this: http://metaoptimize.s3.amazonaws.com/cw-embeddings-ACL2010/e...
Also, some lovely examples of using t-SNE to visualize conv net representations: http://cs.stanford.edu/people/karpathy/cnnembed/
I think people have found it very useful as one of the main tools for understanding what deep models are doing (along with optimization-based feature visualization) and to just check that your model is learning. I haven't really heard about people using it to pick input features, but that's probably mostly because I don't really work with anyone doing feature engineering.
I was wondering if t-SNE could be used to know the "goodness" of your selected features for the prediction task. In the sense, t-SNE could be used as an indicator for feature selection. I was wondering if some people have successfully used t-SNE for feature selection and in what cases.
Edit - Off Topic : Cool, homepage/blog.
I did not hyper optimize parameters for that visualization, so I find this post interesting. Additionally, it was pointed out afterward that I may have cheated slightly in terms of labeling by feeding the news source to the t-SNE algorithm.
t-SNE is usually used on the top N (quite commonly N = 50) principle components. This tends to give good separation of different cell types.
A few papers examples are:
http://biorxiv.org/content/early/2016/07/26/065912 http://www.cell.com/abstract/S0092-8674(15)00549-8 http://www.cell.com/cell/abstract/S0092-8674(15)00500-0
If i just scroll through the Zheng et al arxiv paper it all seems a little arbitrary to me. Selecting a 1000 features, then 50 components. They argue that it is for computation time reasons, but is there any kind of benchmark suggesting this is a better strategy than just plotting the two first components or using MDS which also has the advantage in this scenario of being convex?
I happen to have some super high-dimensional data (~100k-1m dimensions), which takes a huge amount of time to work with because i have to custom write everything, and i notice they claim all their underlying functions use sparse matrix representations. Have you tried it in a very high dimensional context?
Our field has some very arbitrary threshold for noise on single features, sounds like there is some slightly more principled strategy in single cell genomics?
"There may not be one perplexity value that will capture distances across all clusters—and sadly perplexity is a global parameter. Fixing this problem might be an interesting area for future research."
There are some suggestions in the literature for fixing this. Michel Verleysen's group suggested a "multi-scale" approach:
https://www.elen.ucl.ac.be/Proceedings/esann/esannpdf/es2014...
http://dx.doi.org/10.1016/j.neucom.2014.12.095 (more details in this one, but behind a paywall)
Their approach is to calculate the input probabilities using multiple perplexities and use the average. They also suggest tweaking the output probabilities, but it uses a free parameter that isn't present in the standard formulation of t-SNE (their suggested algorithm takes the same approach as t-SNE, but uses a different cost function and output weighting function).