{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/efficient-algorithms-for-t-distributed","title":"Efficient Algorithms for t-distributed Stochastic Neighborhood Embedding","arxiv_id":"1712.09005","date":"2017-12-25","proceeding":null,"authors":["George C. Linderman","Manas Rachh","Jeremy G. Hoskins","Stefan Steinerberger","Yuval Kluger"],"abstract":"t-distributed Stochastic Neighborhood Embedding (t-SNE) is a method for\ndimensionality reduction and visualization that has become widely popular in\nrecent years. Efficient implementations of t-SNE are available, but they scale\npoorly to datasets with hundreds of thousands to millions of high dimensional\ndata-points. We present Fast Fourier Transform-accelerated Interpolation-based\nt-SNE (FIt-SNE), which dramatically accelerates the computation of t-SNE. The\nmost time-consuming step of t-SNE is a convolution that we accelerate by\ninterpolating onto an equispaced grid and subsequently using the fast Fourier\ntransform to perform the convolution. We also optimize the computation of input\nsimilarities in high dimensions using multi-threaded approximate nearest\nneighbors. We further present a modification to t-SNE called \"late\nexaggeration,\" which allows for easier identification of clusters in t-SNE\nembeddings. Finally, for datasets that cannot be loaded into the memory, we\npresent out-of-core randomized principal component analysis (oocPCA), so that\nthe top principal components of a dataset can be computed without ever fully\nloading the matrix, hence allowing for t-SNE of large datasets to be computed\non resource-limited machines.","url_abs":"http://arxiv.org/abs/1712.09005v1","url_pdf":"http://arxiv.org/pdf/1712.09005v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/KlugerLab/pyFIt-SNE","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/KlugerLab/t-SNE-Heatmaps","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/NicolasBizzozzero/clus","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/NicolasBizzozzero/clustering","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/huguyuehuhu/fasttsne","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/klugerlab/FIt-SNE","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/pavlin-policar/fastTSNE","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"efficient-algorithms-for-t-distributed","repo_url":"https://github.com/pavlin-policar/openTSNE","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}}],"tasks":[{"task_slug":"dimensionality-reduction","task_name":"Dimensionality Reduction"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1712.09005","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1712.09005"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/klugerlab/FIt-SNE","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/NicolasBizzozzero/clus","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/NicolasBizzozzero/clustering","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pavlin-policar/openTSNE","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/KlugerLab/t-SNE-Heatmaps","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pavlin-policar/fastTSNE","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/huguyuehuhu/fasttsne","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/KlugerLab/pyFIt-SNE","reach":{"status":"unanswered"}}],"summary":{"unverified":6},"by_repo_kind":{"listed":{"samples":6,"ran":0,"repositories":2}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":1,"samples":[{"code_sha256_prefix":"c681693da3fc5019","entry":"fast_tsne","repo":"klugerlab/FIt-SNE","repo_kind":"listed","path":"fast_tsne.py","file_url":"https://github.com/klugerlab/FIt-SNE/blob/HEAD/fast_tsne.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c681693da3fc5019"}},{"code_sha256_prefix":"2ccb934ef9ef60ed","entry":"get_fashion_mnist","repo":"huguyuehuhu/fasttsne","repo_kind":"listed","path":"benchmarks/benchmark_tsne.py","file_url":"https://github.com/huguyuehuhu/fasttsne/blob/HEAD/benchmarks/benchmark_tsne.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"2ccb934ef9ef60ed"}},{"code_sha256_prefix":"923ed39e937ce5e1","entry":"get_mnist","repo":"huguyuehuhu/fasttsne","repo_kind":"listed","path":"benchmarks/benchmark_tsne.py","file_url":"https://github.com/huguyuehuhu/fasttsne/blob/HEAD/benchmarks/benchmark_tsne.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"923ed39e937ce5e1"}},{"code_sha256_prefix":"3ba70c08fd5acbd3","entry":"get_mouse_60k","repo":"huguyuehuhu/fasttsne","repo_kind":"listed","path":"benchmarks/benchmark_tsne.py","file_url":"https://github.com/huguyuehuhu/fasttsne/blob/HEAD/benchmarks/benchmark_tsne.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"3ba70c08fd5acbd3"}},{"code_sha256_prefix":"97be0a10f2002613","entry":"kl_divergence_bh","repo":"huguyuehuhu/fasttsne","repo_kind":"listed","path":"fastTSNE/tsne.py","file_url":"https://github.com/huguyuehuhu/fasttsne/blob/HEAD/fastTSNE/tsne.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"97be0a10f2002613"}},{"code_sha256_prefix":"a61c6faaa7af1630","entry":"kl_divergence_fft","repo":"huguyuehuhu/fasttsne","repo_kind":"listed","path":"fastTSNE/tsne.py","file_url":"https://github.com/huguyuehuhu/fasttsne/blob/HEAD/fastTSNE/tsne.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"a61c6faaa7af1630"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}