<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn><issn pub-type="ppub">0868-4952</issn><issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFOR491</article-id>
<article-id pub-id-type="doi">10.15388/22-INFOR491</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>Geometric MDS Performance for Large Data Dimensionality Reduction and Visualization</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Dzemyda</surname><given-names>Gintautas</given-names></name><email xlink:href="gintautas.dzemyda@mif.vu.lt">gintautas.dzemyda@mif.vu.lt</email><xref ref-type="aff" rid="j_infor491_aff_001"/><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>G. Dzemyda</bold> received the doctoral degree in technical sciences (PhD) in 1984, and the degree of Doctor Habilius in 1997 from Kaunas University of Technology. He was conferred the title of professor at Kaunas University of Technology (1998) and Vilnius University (2018). Recent employment is at Vilnius University, Institute of Data Science and Digital Technologies, as the director of the Institute, the head of Cognitive Computing Group, professor and principal researcher. The research interests cover visualization of multidimensional data, optimization theory and applications, data mining, multiple criteria decision support, neural networks, image analysis. He is the author of more than 260 scientific publications, two monographs, five textbooks.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Sabaliauskas</surname><given-names>Martynas</given-names></name><email xlink:href="martynas.sabaliauskas@mif.vu.lt">martynas.sabaliauskas@mif.vu.lt</email><xref ref-type="aff" rid="j_infor491_aff_001"/><bio>
<p><bold>M. Sabaliauskas</bold> was awarded the doctor of technical sciences degree at Vilnius University in 2017. At present, he is an assistant professor at Vilnius University Institute of Data Science and Digital Technologies. His research interests include the problems of multidimensional scaling, computational mathematics, graph theory, and game theory.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Medvedev</surname><given-names>Viktor</given-names></name><email xlink:href="viktor.medvedev@mif.vu.lt">viktor.medvedev@mif.vu.lt</email><xref ref-type="aff" rid="j_infor491_aff_001"/><bio>
<p><bold>V. Medvedev</bold> is a senior researcher at the Institute of Data Science and Digital Technologies, Vilnius University. He received the doctoral degree in computer science (PhD) from Institute of Mathematics and Informatics jointly with Vilnius Gediminas Technical University in 2008. His research interests include artificial intelligence, neural networks, multidimensional data, dimensionality reduction, image processing, data mining, and parallel computing.</p></bio>
</contrib>
<aff id="j_infor491_aff_001">Institute of Data Science and Digital Technologies, <institution>Vilnius University</institution>, <country>Lithuania</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2022</year></pub-date><pub-date pub-type="epub"><day>14</day><month>6</month><year>2022</year></pub-date><volume>33</volume><issue>2</issue><fpage>299</fpage><lpage>320</lpage><history><date date-type="received"><month>2</month><year>2022</year></date><date date-type="accepted"><month>6</month><year>2022</year></date></history>
<permissions><copyright-statement>© 2022 Vilnius University</copyright-statement><copyright-year>2022</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>Multidimensional scaling (MDS) is a widely used technique for mapping data from a high-dimensional to a lower-dimensional space and for visualizing data. Recently, a new method, known as Geometric MDS, has been developed to minimize the MDS stress function by an iterative procedure, where coordinates of a particular point of the projected space are moved to the new position defined analytically. Such a change in position is easily interpreted geometrically. Moreover, the coordinates of points of the projected space may be recalculated simultaneously, i.e. in parallel, independently of each other. This paper has several objectives. Two implementations of Geometric MDS are suggested and analysed experimentally. The parallel implementation of Geometric MDS is developed for multithreaded multi-core processors. The sequential implementation is optimized for computational speed, enabling it to solve large data problems. It is compared with the SMACOF version of MDS. Python codes for both Geometric MDS and SMACOF are presented to highlight the differences between the two implementations. The comparison was carried out on several aspects: the comparative performance of Geometric MDS and SMACOF depending on the projection dimension, data size and computation time. Geometric MDS usually finds lower stress when the dimensionality of the projected space is smaller.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>dimensionality reduction</kwd>
<kwd>multidimensional scaling</kwd>
<kwd>Geometric MDS</kwd>
<kwd>large-scale data</kwd>
<kwd>multi-core implementation</kwd>
<kwd>SMACOF</kwd>
<kwd>Python codes</kwd>
</kwd-group>
<funding-group><funding-statement>This research has received funding from the Research Council of Lithuania (LMTLT), agreement No. S-MIP-20-19.</funding-statement></funding-group>
</article-meta>
</front>
<body>
<sec id="j_infor491_s_001">
<label>1</label>
<title>Introduction</title>
<p>Every day we receive an enormous amount of data, information, and knowledge. Data becomes information when it is contextualised and related to a specific problem or solution. Data mining is an important part of knowledge discovery processes in various fields and sectors, such as medicine, economics, finance, telecommunications. Data mining helps uncover hidden information from vast amounts of data, which is valuable for recognising important facts, relationships, trends, and patterns. As data sets become increasingly large, more efficient ways of visualizing, analysing and interpreting the information they contain are needed. Comprehension of data is challenging, especially when the data relates to a complex object, a phenomenon that is described by many parameters, attributes, or features. Such data are called multidimensional, and the main goal is to make some visual insight into the data set being analysed. Visual information can be perceived much faster than textual information. For human perception, the multidimensional data must be represented in a low-dimensional space, usually two or three dimensions.</p>
<p>The main task in dimensionality reduction is to represent objects with a smaller set of more “compressed” features. Another reason for reducing the dimensionality or visualization of the data is to reduce the computational load for further data processing. Dimensionality reduction techniques enable the extraction of meaningful information hidden in the data. In addition, one of the most important purposes of data visualization is to get an idea of how close or far away certain points of the analysed multidimensional data are from each other.</p>
<p>Consider the multidimensional data set as an array <inline-formula id="j_infor491_ineq_001"><alternatives><mml:math>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$X=\{{X_{i}}=({x_{i1}},\dots ,{x_{in}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_002"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$i=1,\dots ,m\}$]]></tex-math></alternatives></inline-formula> of <italic>n</italic>-dimensional data points <inline-formula id="j_infor491_ineq_003"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>⩾</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[${X_{i}}\in {\mathbb{R}^{n}},\hspace{2.5pt}n\geqslant 3$]]></tex-math></alternatives></inline-formula>. A data point <inline-formula id="j_infor491_ineq_004"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${X_{i}}$]]></tex-math></alternatives></inline-formula> is the result of an observation of some object or phenomenon that depends on <italic>n</italic> features. Dimensionality reduction means finding a set of coordinates (locations) of points <inline-formula id="j_infor491_ineq_005"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{i}}=({y_{i1}},\dots ,{y_{id}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_006"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$i=1,\dots ,m$]]></tex-math></alternatives></inline-formula>, in a lower-dimensional space <inline-formula id="j_infor491_ineq_007"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(d<n)$]]></tex-math></alternatives></inline-formula>, where the particular point <inline-formula id="j_infor491_ineq_008"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${X_{i}}\in {\mathbb{R}^{n}}$]]></tex-math></alternatives></inline-formula> is represented by <inline-formula id="j_infor491_ineq_009"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${Y_{i}}\in {\mathbb{R}^{d}}$]]></tex-math></alternatives></inline-formula>. If <inline-formula id="j_infor491_ineq_010"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>⩽</mml:mo>
<mml:mn>3</mml:mn></mml:math><tex-math><![CDATA[$d\leqslant 3$]]></tex-math></alternatives></inline-formula>, then dimensionality reduction results can be presented visually for more convenient human decision-making.</p>
<p>Dimensionality reduction or data visualization techniques play an important role in machine learning (Murphy, <xref ref-type="bibr" rid="j_infor491_ref_038">2022</xref>; Zhou, <xref ref-type="bibr" rid="j_infor491_ref_054">2021</xref>; Ray <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_044">2021</xref>; Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>; Dos Santos and Brodlie, <xref ref-type="bibr" rid="j_infor491_ref_010">2004</xref>; Buja <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_007">2008</xref>). Such visualization is useful, especially in exploratory analysis: they provide insights into similarity relationships in high-dimensional data that would be unlikely to be obtained without visualization (Lee and Verleysen, <xref ref-type="bibr" rid="j_infor491_ref_032">2007</xref>; Van Der Maaten <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_051">2009</xref>; Markeviciute <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_034">2022</xref>; Xu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_053">2019</xref>; Bernatavičienė <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_004">2007</xref>; Kurasova and Molyte, <xref ref-type="bibr" rid="j_infor491_ref_031">2011</xref>; Borg and Groenen, <xref ref-type="bibr" rid="j_infor491_ref_005">2005</xref>; Dzemyda and Kurasova, <xref ref-type="bibr" rid="j_infor491_ref_011">2006</xref>; Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>; Jolliffe, <xref ref-type="bibr" rid="j_infor491_ref_027">2002</xref>; Karbauskaitė and Dzemyda, <xref ref-type="bibr" rid="j_infor491_ref_028">2015</xref>, <xref ref-type="bibr" rid="j_infor491_ref_029">2016</xref>; Groenen <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_021">1995</xref>). The classical dimensionality reduction methods for data visualization include linear principal component analysis (PCA) (Jolliffe, <xref ref-type="bibr" rid="j_infor491_ref_027">2002</xref>; Jackson, <xref ref-type="bibr" rid="j_infor491_ref_026">1991</xref>) and multidimensional scaling (MDS) (Torgerson, <xref ref-type="bibr" rid="j_infor491_ref_048">1958</xref>; Borg and Groenen, <xref ref-type="bibr" rid="j_infor491_ref_005">2005</xref>; Borg <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_006">2018</xref>). PCA seeks to reduce the dimensionality of the data by finding orthogonal linear combinations (principal components) of the original variables with the highest variance (Jackson, <xref ref-type="bibr" rid="j_infor491_ref_026">1991</xref>; Medvedev <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_037">2011</xref>). The interpretation of principal components can sometimes be complex. PCA cannot cover non-linear structures consisting of arbitrarily shaped clusters or manifolds because it describes the data in terms of a linear subspace. Since global methods such as PCA and MDS cannot represent the local non-linear structure, there have been developed methods that preserve the raw local distances, i.e. the values of distances between nearest neighbours. Isomap, Local Linear Embedding (LLE), Hessian Local Linear Embedding and Laplacian Eigenmaps are traditional methods that attempt to preserve local Euclidean distances from the original space (Wang <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_052">2021</xref>; Espadoto <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_020">2021</xref>). More recent methods that focus on local structure preservation are t-Distributed Stochastic Neighbour Embedding (t-SNE) (Van der Maaten and Hinton, <xref ref-type="bibr" rid="j_infor491_ref_050">2008</xref>) and UMAP (McInnes <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_036">2018</xref>). A comprehensive review of dimensionality reduction methods is presented in Murphy (<xref ref-type="bibr" rid="j_infor491_ref_038">2022</xref>), Espadoto <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor491_ref_020">2021</xref>), Wang <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor491_ref_052">2021</xref>), Vachharajani and Pandya (<xref ref-type="bibr" rid="j_infor491_ref_049">2022</xref>), Dzemyda <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>), Lee and Verleysen (<xref ref-type="bibr" rid="j_infor491_ref_032">2007</xref>), Van Der Maaten <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor491_ref_051">2009</xref>), Xu <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor491_ref_053">2019</xref>).</p>
<p>Artificial neural networks can also be applied to reduce dimensionality and visualize data (Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_017">2007</xref>). A feedforward neural network is used for a topographic, structure-preserving, dimension-reducing transformation of data, with the additional ability to incorporate various degrees of related subjective information. There is also a neural network architecture developed specifically for topographic mapping, known as a Self-Organizing Map (SOM) (Kohonen, <xref ref-type="bibr" rid="j_infor491_ref_030">2001</xref>; Stefanovic and Kurasova, <xref ref-type="bibr" rid="j_infor491_ref_047">2011</xref>), which uses implicit lateral connections in the output layer of neurons. SOM is a technique used for both clustering and data dimensionality reduction (Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_017">2007</xref>, <xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>). In addition, there is a special learning rule, similar to backpropagation, which allows an ordinary feedforward artificial neural network to learn the Sammon mapping, which is a special case of metric MDS, in an unsupervised way. The learning rule for this type of neural network is known as SAMANN (Mao and Jain, <xref ref-type="bibr" rid="j_infor491_ref_033">1995</xref>; Ivanikovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_025">2007</xref>; Medvedev <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_037">2011</xref>; Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_017">2007</xref>).</p>
<p>An alternative view of dimensionality reduction is offered by multidimensional scaling (Borg and Groenen, <xref ref-type="bibr" rid="j_infor491_ref_005">2005</xref>). Multidimensional scaling (MDS) is a classical non-linear approach that maps an original high-dimensional data set onto a lower-dimensional data set, but does so in an attempt to preserve the proximities between the corresponding data points. It is one of the most popular methods for multidimensional data visualization (Murphy, <xref ref-type="bibr" rid="j_infor491_ref_038">2022</xref>; Borg <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_006">2018</xref>; Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>). Despite the fact that MDS demonstrates great versatility, it is computationally demanding. This can be challenging when the data amount increases. Traditional MDS approaches are limited when analysing very large data sets, as they require long computational time and large amounts of memory. Until now, there have been various studies aimed at creating a new solution or modifying the MDS to analyse large amounts of data and speed up the visualization process (Orts <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_039">2019</xref>; Qiu and Bae, <xref ref-type="bibr" rid="j_infor491_ref_043">2012</xref>; Pawliczek <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_041">2014</xref>; Ingram <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_024">2008</xref>; Medvedev <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_037">2011</xref>; Ivanikovas <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_025">2007</xref>).</p>
<p>The input data for MDS is a symmetric <inline-formula id="j_infor491_ineq_011"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$m\times m$]]></tex-math></alternatives></inline-formula> matrix <inline-formula id="j_infor491_ineq_012"><alternatives><mml:math>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\mathbf{D}=\{{d_{ij}},i,j=1,\dots ,m\}$]]></tex-math></alternatives></inline-formula> of proximities (similarities or dissimilarities) between the pairs of objects. More often, the dissimilarities are used to represent the proximities, however, the formulation of the multidimensional scaling problem and its solving methods remain the same in both cases. A lower dissimilarity value means that the objects are more similar. As dissimilarity, <inline-formula id="j_infor491_ineq_013"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${d_{ij}}$]]></tex-math></alternatives></inline-formula> can be a distance between points <inline-formula id="j_infor491_ineq_014"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${X_{i}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_015"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo></mml:math><tex-math><![CDATA[${X_{j}},$]]></tex-math></alternatives></inline-formula> <inline-formula id="j_infor491_ineq_016"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$i,j=1,\dots ,m$]]></tex-math></alternatives></inline-formula> (Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>). The smaller the distance, the closer the points are.</p>
<p>One of the most popular algorithms for MDS is SMACOF (De Leeuw, <xref ref-type="bibr" rid="j_infor491_ref_008">1977</xref>; De Leeuw and Mair, <xref ref-type="bibr" rid="j_infor491_ref_009">2009</xref>). The algorithm is based on the majorization approach (Groenen <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_021">1995</xref>), which iteratively replaces the original objective function with an auxiliary majorization function that is much easier to optimize. Majorization is not just an algorithm, it is more of a prescription for constructing optimization algorithms. The principle of majorization consists in constructing a auxiliary function that majorizes a certain objective function (De Leeuw and Mair, <xref ref-type="bibr" rid="j_infor491_ref_009">2009</xref>). Experimental studies have shown that SMACOF is the most accurate algorithm compared to others (Orts <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_039">2019</xref>; Ingram <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_024">2008</xref>). There are a number of popular software implementations of SMACOF (De Leeuw and Mair, <xref ref-type="bibr" rid="j_infor491_ref_009">2009</xref>; Pedregosa <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_042">2011</xref>; Orts <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_039">2019</xref>; MATLAB, <xref ref-type="bibr" rid="j_infor491_ref_035">2012</xref>).</p>
<p>An alternative to SMACOF the Geometric MDS proposed in Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_012">2020</xref>) and Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_013">2021a</xref>), and developed in Sabaliauskas and Dzemyda (<xref ref-type="bibr" rid="j_infor491_ref_045">2021</xref>), Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_014">2021b</xref>, <xref ref-type="bibr" rid="j_infor491_ref_015">2021c</xref>), Dzemyda <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor491_ref_019">2022</xref>), Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_016">2022</xref>). This will be discussed in more detail further in the paper. Figure <xref rid="j_infor491_fig_001">1</xref> illustrates the visualization using Geometric MDS of 10, 50, and 100-dimensional datasets generated with Gaussian and Ellipsoidal cluster generators (Handl and Knowles, <xref ref-type="bibr" rid="j_infor491_ref_023">2005</xref>). The dimensionality of the multidimensional data has been reduced to 2 (<inline-formula id="j_infor491_ineq_017"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>). The Gaussian cluster generator is based on a standard cluster model using multivariate normal distributions, and the ellipsoidal cluster generator creates ellipsoidal clusters with the major axis at an arbitrary orientation. For each cluster, data points are generated at a Gaussian distributed distance from a uniformly random point on the major axis, in a uniformly random direction, and are rejected if they lie outside the boundary (Handl and Knowles, <xref ref-type="bibr" rid="j_infor491_ref_023">2005</xref>). As the datasets are generated using cluster generators for large high-dimensional data sets with large numbers of clusters, some noisy data may be included. The example in Fig. <xref rid="j_infor491_fig_001">1</xref> illustrates the use of visualization techniques to identify outliers, patterns in data in the form of clusters, relationships, and trends. The figure clearly shows clusters of analysed data and the location of individual multidimensional data among the rest.</p>
<fig id="j_infor491_fig_001">
<label>Fig. 1</label>
<caption>
<p>Examples of dimensionality reduction results obtained using Geometric MDS.</p>
</caption>
<graphic xlink:href="infor491_g001.jpg"/>
</fig>
<p>The novelty of this paper consists in the experimental investigation of parallelization of recently developed Geometric Multidimensional Scaling. The process of parallelization can lead to faster dimensionality reduction and data visualization process and to the possibility to process a large-scale multidimensional data. Theoretically proved properties of Geometric MDS are applied in parallelization. In addition, Geometric MDS is also experimentally compared with SMACOF, which is one of the most popular implementations of MDS. It was found that Geometric MDS is superior to the SMACOF in most cases.</p>
</sec>
<sec id="j_infor491_s_002">
<label>2</label>
<title>Geometric MDS: Multidimensional Scaling From a Geometric Point of View</title>
<p>MDS looks for coordinates of points <inline-formula id="j_infor491_ineq_018"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{i}}$]]></tex-math></alternatives></inline-formula> representing <inline-formula id="j_infor491_ineq_019"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${X_{i}}$]]></tex-math></alternatives></inline-formula> in the lower-dimensional Euclidean space <inline-formula id="j_infor491_ineq_020"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathbb{R}^{d}}$]]></tex-math></alternatives></inline-formula> by minimizing the stress function (Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>). There are several MDS implementations with different stress functions (see review in Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_018">2013</xref>). However, their minimization is rather complicated. In Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_012">2020</xref>), Sabaliauskas and Dzemyda (<xref ref-type="bibr" rid="j_infor491_ref_045">2021</xref>), Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_013">2021a</xref>, <xref ref-type="bibr" rid="j_infor491_ref_015">2021c</xref>) a new approach, called Geometric MDS, with low computational complexity is proposed, making metric MDS applicable to large-scale data. This method is valuable and advantageous because the stress function and the multidimensional scaling have been considered from a geometrical point of view. The new interpretation of the stress function allows us to find the proper step size and direction of descent forward to the minimum of the stress function analytically, if we consider and move a single point of the projected space. A special property of the new approach is that there is no need for an analytical expression of the stress function. Even more, no linear search, which is used for local descent in optimization, is needed. Theoretical investigation showed that the step direction determined by Geometric MDS coincides with the direction of the steepest descent method (Dzemyda and Sabaliauskas, <xref ref-type="bibr" rid="j_infor491_ref_013">2021a</xref>). The step size found analytically is such that it guarantees stress reduction in that direction.</p>
<p>A Geometric MDS has the advantage that it can use the simplest stress function, and there is no need to normalize it based on the number of data points and the scale of proximities. In Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_013">2021a</xref>) it is shown that Geometric MDS does not depend on the scale of proximities and can therefore use a simple stress function, such as a raw stress function: 
<disp-formula id="j_infor491_eq_001">
<label>(1)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ S({Y_{1}},\dots ,{Y_{m}})={\sum \limits_{i=1}^{m}}{\sum \limits_{j=i+1}^{m}}{\big({d_{ij}}-{d_{ij}^{\ast }}\big)^{2}},\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor491_ineq_021"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${d_{ij}^{\ast }}$]]></tex-math></alternatives></inline-formula> is the Euclidean distance between points <inline-formula id="j_infor491_ineq_022"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{i}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_023"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> in a lower-dimensional space: 
<disp-formula id="j_infor491_eq_002">
<label>(2)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msqrt>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {d_{ij}^{\ast }}=\sqrt{{\sum \limits_{l=1}^{d}}{({y_{il}}-{y_{jl}})^{2}}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The optimization problem is to find the minimum of the function <inline-formula id="j_infor491_ineq_024"><alternatives><mml:math>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$S(\cdot )$]]></tex-math></alternatives></inline-formula> (<xref rid="j_infor491_eq_001">1</xref>), and the optimal coordinates of the points <inline-formula id="j_infor491_ineq_025"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{i}}=({y_{i1}},\dots ,{y_{id}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_026"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$i=1,\dots ,m$]]></tex-math></alternatives></inline-formula>: 
<disp-formula id="j_infor491_eq_003">
<label>(3)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:munder>
<mml:mrow>
<mml:mo movablelimits="false">min</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo movablelimits="false">…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:munder>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo movablelimits="false">…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ \underset{{Y_{1}},\dots ,{Y_{m}}\in {\mathbb{R}^{d}}}{\min }S({Y_{1}},\dots ,{Y_{m}}).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Let there be some initial configuration of points <inline-formula id="j_infor491_ineq_027"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula>. The simplest way to minimize the stress <inline-formula id="j_infor491_ineq_028"><alternatives><mml:math>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$S(\cdot )$]]></tex-math></alternatives></inline-formula> by Geometric MDS is a consecutive changing of positions of separate points <inline-formula id="j_infor491_ineq_029"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> many times (iterations). This realization is denoted by GMDS1. One iteration of GMDS1 changes all points <inline-formula id="j_infor491_ineq_030"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{i}}=({y_{i1}},\dots ,{y_{id}})$]]></tex-math></alternatives></inline-formula> in consecutive order when <italic>i</italic> runs from 1 to <italic>m</italic> once. Here we compute a new position <inline-formula id="j_infor491_ineq_031"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{i}^{\ast }}=({y_{i1}^{\ast }},\dots ,{y_{id}^{\ast }})$]]></tex-math></alternatives></inline-formula> of <inline-formula id="j_infor491_ineq_032"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{i}}=({y_{i1}},\dots ,{y_{id}})$]]></tex-math></alternatives></inline-formula> when the positions of remaining points <inline-formula id="j_infor491_ineq_033"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{j-1}},{Y_{j+1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> are fixed, and update <inline-formula id="j_infor491_ineq_034"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> by <inline-formula id="j_infor491_ineq_035"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula> then. So, Geometric MDS recalculates the coordinates of a single <italic>d</italic>-dimensional point <inline-formula id="j_infor491_ineq_036"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> at each step, and one of its iterations consists of <italic>m</italic> steps. The result is a new point <inline-formula id="j_infor491_ineq_037"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>. The stopping condition may be the number of iterations or the value of decrease of the stress function (<xref rid="j_infor491_eq_001">1</xref>). Convergence of this algorithm to the local minimum of the stress is proved.</p>
<p>The core formula of Geometric MDS, when defining the transition from <inline-formula id="j_infor491_ineq_038"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> to the new position <inline-formula id="j_infor491_ineq_039"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>, is as follows: 
<disp-formula id="j_infor491_eq_004">
<label>(4)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mtable rowspacing="0" columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {Y_{j}^{\ast }}=\frac{1}{m-1}{\sum \limits_{\begin{array}{c}i=1\\ {} i\ne j\end{array}}^{m}}{A_{ij}},\]]]></tex-math></alternatives>
</disp-formula> 
where the point <inline-formula id="j_infor491_ineq_040"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${A_{ij}}$]]></tex-math></alternatives></inline-formula> lies on the line between <inline-formula id="j_infor491_ineq_041"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{i}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_042"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_043"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi></mml:math><tex-math><![CDATA[$i\ne j$]]></tex-math></alternatives></inline-formula>, at a distance <inline-formula id="j_infor491_ineq_044"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${d_{ij}}$]]></tex-math></alternatives></inline-formula> from <inline-formula id="j_infor491_ineq_045"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{i}}$]]></tex-math></alternatives></inline-formula> (see Dzemyda and Sabaliauskas, <xref ref-type="bibr" rid="j_infor491_ref_012">2020</xref>; Dzemyda and Sabaliauskas, <xref ref-type="bibr" rid="j_infor491_ref_013">2021a</xref>; Sabaliauskas and Dzemyda, <xref ref-type="bibr" rid="j_infor491_ref_045">2021</xref>): 
<disp-formula id="j_infor491_eq_005">
<label>(5)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {A_{ij}}={Y_{i}}+({Y_{j}}-{Y_{i}})\frac{{d_{ij}}}{{d_{ij}^{\ast }}}.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Let’s consider a generalized way to update the entire set of points <inline-formula id="j_infor491_ineq_046"><alternatives><mml:math>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$Y=\{{Y_{1}},\dots ,{Y_{m}}\}$]]></tex-math></alternatives></inline-formula> to <inline-formula id="j_infor491_ineq_047"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[${Y^{\ast }}=\{{Y_{1}^{\ast }},\dots ,{Y_{m}^{\ast }}\}$]]></tex-math></alternatives></inline-formula>. The main equation of Geometric MDS (<xref rid="j_infor491_eq_004">4</xref>) is used for defining the transition from <inline-formula id="j_infor491_ineq_048"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> to the new position <inline-formula id="j_infor491_ineq_049"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>. The raw stress function (<xref rid="j_infor491_eq_001">1</xref>) decreases after <inline-formula id="j_infor491_ineq_050"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> goes to <inline-formula id="j_infor491_ineq_051"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>, that is, moving any of the projected points by the Geometric MDS method reduces the stress (Dzemyda and Sabaliauskas, <xref ref-type="bibr" rid="j_infor491_ref_013">2021a</xref>). But in the generalized scenario, all points <inline-formula id="j_infor491_ineq_052"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> change their coordinates to <inline-formula id="j_infor491_ineq_053"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{1}^{\ast }},\dots ,{Y_{m}^{\ast }}$]]></tex-math></alternatives></inline-formula> simultaneously and independently of each other during a single iteration of stress minimization. Therefore, we perform a simultaneous repositioning of all points <inline-formula id="j_infor491_ineq_054"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> of the projected space in the directions determined by the Geometric MDS strategy for individual points. We update <inline-formula id="j_infor491_ineq_055"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> by <inline-formula id="j_infor491_ineq_056"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{1}^{\ast }},\dots ,{Y_{m}^{\ast }}$]]></tex-math></alternatives></inline-formula> after all the points <inline-formula id="j_infor491_ineq_057"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{1}^{\ast }},\dots ,{Y_{m}^{\ast }}$]]></tex-math></alternatives></inline-formula> are computed, only. This realization is denoted by GMDS<italic>m</italic>. One iteration of GMDS<italic>m</italic> changes all points <inline-formula id="j_infor491_ineq_058"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{i}}=({y_{i1}},\dots ,{y_{id}})$]]></tex-math></alternatives></inline-formula> simultaneously once. The convergence is proved theoretically in Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_016">2022</xref>).</p>
</sec>
<sec id="j_infor491_s_003">
<label>3</label>
<title>Multi-Core Implementation of Geometric MDS</title>
<p>The GMDS<italic>m</italic> version of the Geometric MDS updates all points <inline-formula id="j_infor491_ineq_059"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> in a lower dimension simultaneously and independently of each other. This enables the use of parallel computing for updating each <inline-formula id="j_infor491_ineq_060"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{i}}$]]></tex-math></alternatives></inline-formula> independently, i.e. in parallel (see Algorithm <xref rid="j_infor491_fig_002">1</xref>). Such possibility of parallelization has been investigated further in this paper utilising multi-core processing. The computational resources of a single personal computer were used in this work. Experiments using different number of CPU threads were performed to obtain preliminary estimates of the efficiency of multi-core implementation of GMDS<italic>m</italic>.</p>
<fig id="j_infor491_fig_002">
<label>Algorithm 1</label>
<caption>
<p>A parallel Geometric MDS algorithm for simultaneous calculation of new points <inline-formula id="j_infor491_ineq_061"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula> in the projected space</p>
</caption>
<graphic xlink:href="infor491_g002.jpg"/>
</fig>
<p>The purpose of the experiment is to compare the time required to compute new points <inline-formula id="j_infor491_ineq_062"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{1}^{\ast }},\dots ,{Y_{m}^{\ast }}$]]></tex-math></alternatives></inline-formula> in the projected space from <inline-formula id="j_infor491_ineq_063"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula>, when using a sequential programming implementation of GMDS<italic>m</italic> with the computing power of one CPU core (single thread), and respectively when using a parallel algorithm using 2, 4, 6, 8, 10, 12 CPU threads. Here each point <inline-formula id="j_infor491_ineq_064"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula> is computed using Eq. (<xref rid="j_infor491_eq_004">4</xref>), and all points <inline-formula id="j_infor491_ineq_065"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> change their coordinates to <inline-formula id="j_infor491_ineq_066"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{1}^{\ast }},\dots ,{Y_{m}^{\ast }}$]]></tex-math></alternatives></inline-formula> at once simultaneously and independently of each other during a single iteration. One iteration is a recalculation (optimal updating) of all points <inline-formula id="j_infor491_ineq_067"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{i}}=({y_{i1}},\dots ,{y_{id}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_068"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$i=1,\dots ,m$]]></tex-math></alternatives></inline-formula> once. The pseudo-code of the algorithm used for experiments is provided in Algorithm <xref rid="j_infor491_fig_002">1</xref> (Dzemyda <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_019">2022</xref>). Note that only the time taken to compute the new coordinates was measured during the experiments (see the part of Algorithm <xref rid="j_infor491_fig_002">1</xref> that is marked as running in parallel). The California Housing dataset (Pace and Barry, <xref ref-type="bibr" rid="j_infor491_ref_040">1997</xref>) was used for the experiments. The dataset consists of data collected in the 1990 California Census, it has 20640 examples of block groups, each containing an average of 1425.5 people living in a geographically compact area. There are 10 different features per example: 8 numeric attributes, one predictive attribute and the target. For preliminary experiments and due to limited computing resources, only part of the data was used (see Table <xref rid="j_infor491_tab_001">1</xref>), i.e. data of 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500 and 5000 observations were analysed, and the dimensionality of the multidimensional data was reduced to 2. This increase in data size reveals a trend which demonstrates that with further increases in data size, the use of parallel computing becomes more efficient. The experiments resulted in an average dependence of the time to calculate new point coordinates (without taking into account the full visualization process) on the size of the data when using different numbers of CPU threads for parallel processing. Each experiment was repeated 10 times to obtain more reliable data, so Table <xref rid="j_infor491_tab_001">1</xref> presents the average value of the generalized data. For the experiments we used an AMD Ryzen 5 2600 processor, 4000 MHz (6 cores, 12 threads) with high multiprocessor performance, with 16GB of DDR4-2666 1333 MHz RAM, and the Python-Anaconda (Anaconda, <xref ref-type="bibr" rid="j_infor491_ref_002">2022</xref>) environment was used as the software.</p>
<table-wrap id="j_infor491_tab_001">
<label>Table 1</label>
<caption>
<p>Average dependence of the computation time of new coordinates (not considering the complete visualization process) on the data size when using different numbers of CPU threads for parallel processing, <inline-formula id="j_infor491_ineq_069"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>8</mml:mn></mml:math><tex-math><![CDATA[$n=8$]]></tex-math></alternatives></inline-formula>; the dimensionality of multidimensional data was reduced to 2 (<inline-formula id="j_infor491_ineq_070"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>).</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="3" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Number of points, <italic>m</italic></td>
<td rowspan="3" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Sequential algorithm</td>
<td colspan="6" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Number of CPU threads (parallel processing)</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">2</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">6</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">8</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">10</td>
<td style="vertical-align: top; text-align: center; border-bottom: solid thin">12</td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">100</td>
<td style="vertical-align: top; text-align: left">0.0445</td>
<td style="vertical-align: top; text-align: left">0.6492</td>
<td style="vertical-align: top; text-align: left">0.7018</td>
<td style="vertical-align: top; text-align: left">0.8365</td>
<td style="vertical-align: top; text-align: left">1.0246</td>
<td style="vertical-align: top; text-align: left">1.2450</td>
<td style="vertical-align: top; text-align: left">1.3315</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">500</td>
<td style="vertical-align: top; text-align: left">1.1770</td>
<td style="vertical-align: top; text-align: left">1.1783</td>
<td style="vertical-align: top; text-align: left">0.9902</td>
<td style="vertical-align: top; text-align: left">1.0372</td>
<td style="vertical-align: top; text-align: left">1.2384</td>
<td style="vertical-align: top; text-align: left">1.4430</td>
<td style="vertical-align: top; text-align: left">1.5087</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">1000</td>
<td style="vertical-align: top; text-align: left">4.8455</td>
<td style="vertical-align: top; text-align: left">2.9246</td>
<td style="vertical-align: top; text-align: left">1.9148</td>
<td style="vertical-align: top; text-align: left">1.7087</td>
<td style="vertical-align: top; text-align: left">1.9091</td>
<td style="vertical-align: top; text-align: left">2.0435</td>
<td style="vertical-align: top; text-align: left">2.0459</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">1500</td>
<td style="vertical-align: top; text-align: left">10.8324</td>
<td style="vertical-align: top; text-align: left">5.8416</td>
<td style="vertical-align: top; text-align: left">3.4209</td>
<td style="vertical-align: top; text-align: left">2.8879</td>
<td style="vertical-align: top; text-align: left">2.9647</td>
<td style="vertical-align: top; text-align: left">3.0228</td>
<td style="vertical-align: top; text-align: left">3.0353</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2000</td>
<td style="vertical-align: top; text-align: left">19.1812</td>
<td style="vertical-align: top; text-align: left">9.8804</td>
<td style="vertical-align: top; text-align: left">5.5490</td>
<td style="vertical-align: top; text-align: left">4.3496</td>
<td style="vertical-align: top; text-align: left">4.3921</td>
<td style="vertical-align: top; text-align: left">4.4029</td>
<td style="vertical-align: top; text-align: left">4.3415</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2500</td>
<td style="vertical-align: top; text-align: left">30.3274</td>
<td style="vertical-align: top; text-align: left">15.3864</td>
<td style="vertical-align: top; text-align: left">8.2581</td>
<td style="vertical-align: top; text-align: left">6.2743</td>
<td style="vertical-align: top; text-align: left">6.3550</td>
<td style="vertical-align: top; text-align: left">6.2527</td>
<td style="vertical-align: top; text-align: left">6.2111</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">3000</td>
<td style="vertical-align: top; text-align: left">43.6203</td>
<td style="vertical-align: top; text-align: left">21.5616</td>
<td style="vertical-align: top; text-align: left">11.6450</td>
<td style="vertical-align: top; text-align: left">8.7684</td>
<td style="vertical-align: top; text-align: left">8.7479</td>
<td style="vertical-align: top; text-align: left">8.6064</td>
<td style="vertical-align: top; text-align: left">8.2878</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">3500</td>
<td style="vertical-align: top; text-align: left">59.4401</td>
<td style="vertical-align: top; text-align: left">28.9800</td>
<td style="vertical-align: top; text-align: left">15.8067</td>
<td style="vertical-align: top; text-align: left">11.5609</td>
<td style="vertical-align: top; text-align: left">11.2593</td>
<td style="vertical-align: top; text-align: left">11.0542</td>
<td style="vertical-align: top; text-align: left">10.6939</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">4000</td>
<td style="vertical-align: top; text-align: left">79.0386</td>
<td style="vertical-align: top; text-align: left">37.7887</td>
<td style="vertical-align: top; text-align: left">20.7712</td>
<td style="vertical-align: top; text-align: left">15.1054</td>
<td style="vertical-align: top; text-align: left">14.3880</td>
<td style="vertical-align: top; text-align: left">14.3113</td>
<td style="vertical-align: top; text-align: left">13.4704</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">4500</td>
<td style="vertical-align: top; text-align: left">99.2351</td>
<td style="vertical-align: top; text-align: left">47.8711</td>
<td style="vertical-align: top; text-align: left">25.8535</td>
<td style="vertical-align: top; text-align: left">18.8063</td>
<td style="vertical-align: top; text-align: left">18.0433</td>
<td style="vertical-align: top; text-align: left">17.4048</td>
<td style="vertical-align: top; text-align: left">16.8381</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">5000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">124.6468</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">59.0778</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">31.7166</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">23.1730</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">22.3510</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">21.3549</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">20.6990</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="j_infor491_fig_003">
<label>Fig. 2</label>
<caption>
<p>Average dependence of the computation time of new coordinates (not taking into account the complete visualization process) on the size of the data, when using different numbers of CPU threads for parallel processing, <inline-formula id="j_infor491_ineq_071"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>8</mml:mn></mml:math><tex-math><![CDATA[$n=8$]]></tex-math></alternatives></inline-formula>.</p>
</caption>
<graphic xlink:href="infor491_g003.jpg"/>
</fig>
<p>The results obtained (see Table <xref rid="j_infor491_tab_001">1</xref> and Fig. <xref rid="j_infor491_fig_003">2</xref>) demonstrate that even using two CPU threads for parallel processing, it is possible to achieve significant process speedup (on average up to 2 times) compared to sequential computing. The results obtained conclude that when using more than two processor threads for parallel computing, it is possible to increase the speed of the process of calculating new coordinates in the projected space on average up to 6 times. It is also worth noting that the difference in time increases with increasing the size of the analysed data, that is, the larger the size of the data used for visualization, the more efficient the process of parallel computing (see Fig. <xref rid="j_infor491_fig_003">2</xref>). It should be noted that these data were obtained as a result of initial experiments, using the computational power of a personal computer. Consider also that the CPU used for the experiments had 6 cores and 12 threads, so, as can be seen from the results, the efficiency of calculations using more than 6 threads is not high. The results are promising, which indicates the feasibility of using Geometric MDS to visualize large-scale multidimensional data using the computing power of a supercomputer or cluster for parallel computing.</p>
</sec>
<sec id="j_infor491_s_004">
<label>4</label>
<title>Sequential Implementation of Geometric MDS</title>
<p>Although MDS demonstrates great versatility, it is computationally expensive and not scalable, and requires handling the entire data distance or other proximity matrix. This can be challenging when we deal with large-scale data. In this section, we propose the optimized Python implementation of GMDS<italic>m</italic> for sequential computations.</p>
<p>MDS-type algorithms require to update a matrix of <inline-formula id="j_infor491_ineq_072"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$m\times m$]]></tex-math></alternatives></inline-formula> of all pairwise Euclidean distances <inline-formula id="j_infor491_ineq_073"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${d_{ij}^{\ast }}$]]></tex-math></alternatives></inline-formula> between points <inline-formula id="j_infor491_ineq_074"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{i}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_075"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula>, i.e. for <italic>m</italic> points a <inline-formula id="j_infor491_ineq_076"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$m\times m$]]></tex-math></alternatives></inline-formula> matrix is required, each entry of which defines a non-negative distance between the pair of points. Calculations of Euclidean distance occur frequently in machine learning and computer vision (Albanie, <xref ref-type="bibr" rid="j_infor491_ref_001">2019</xref>; Song <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_046">2016</xref>). The element of the distance matrix is defined by (<xref rid="j_infor491_eq_002">2</xref>).</p>
<p>However, as noted in Albanie (<xref ref-type="bibr" rid="j_infor491_ref_001">2019</xref>), the Euclidean distance matrix can be computed in another way, which is equivalent to (<xref rid="j_infor491_eq_002">2</xref>): 
<disp-formula id="j_infor491_eq_006">
<label>(6)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">‖</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">‖</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">‖</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">‖</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\big({d_{ij}^{\ast }}\big)^{2}}=({Y_{i}}-{Y_{j}}){({Y_{i}}-{Y_{j}})^{T}}=\| {Y_{i}}{\| ^{2}}-2{Y_{i}}{Y_{j}^{T}}+\| {Y_{j}}{\| ^{2}},\]]]></tex-math></alternatives>
</disp-formula> 
where the first and last terms are the norms of vectors and can be calculated separately.</p>
<p>This method defined by (<xref rid="j_infor491_eq_006">6</xref>) of calculating the Euclidean distance matrix has been implemented and used in Geometric MDS Python programming implementation. Applying (<xref rid="j_infor491_eq_006">6</xref>) allows to speed up the visualization significantly because of much simpler calculations, and also allows to extend the dimensionality reduction for relatively large-scale data. Python function code for calculating distance matrix from a given <inline-formula id="j_infor491_ineq_077"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi></mml:math><tex-math><![CDATA[$m\times d$]]></tex-math></alternatives></inline-formula> matrix <inline-formula id="j_infor491_ineq_078"><alternatives><mml:math>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Y=({Y_{i}}=({y_{i1}},\dots ,{y_{id}}),i=1,\dots ,m)$]]></tex-math></alternatives></inline-formula> is presented in Listing <xref rid="j_infor491_fig_004">1</xref>. This code can be used to compute a <inline-formula id="j_infor491_ineq_079"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$m\times m$]]></tex-math></alternatives></inline-formula> distance matrix from <inline-formula id="j_infor491_ineq_080"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi></mml:math><tex-math><![CDATA[$m\times n$]]></tex-math></alternatives></inline-formula> matrix <inline-formula id="j_infor491_ineq_081"><alternatives><mml:math>
<mml:mi mathvariant="italic">X</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$X=({X_{i}}=({x_{i1}},\dots ,{x_{in}}))$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_082"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$i=1,\dots ,m$]]></tex-math></alternatives></inline-formula>, too.</p>
<fig id="j_infor491_fig_004">
<label>Listing 1</label>
<caption>
<p>Python function code for calculating distance matrix.</p>
</caption>
<graphic xlink:href="infor491_g004.jpg"/>
</fig>
<fig id="j_infor491_fig_005">
<label>Listing 2</label>
<caption>
<p>Python function code for calculating new points <inline-formula id="j_infor491_ineq_083"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[${Y^{\ast }}=\{{Y_{1}^{\ast }},\dots ,{Y_{m}^{\ast }}\}$]]></tex-math></alternatives></inline-formula> in a low-dimensional space using Geometric MDS.</p>
</caption>
<graphic xlink:href="infor491_g005.jpg"/>
</fig>
<fig id="j_infor491_fig_006">
<label>Listing 3</label>
<caption>
<p>Python function code for calculating new points <inline-formula id="j_infor491_ineq_084"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[${\hat{Y}^{\ast }}=\{{\hat{Y}_{1}^{\ast }},\dots ,{\hat{Y}_{m}^{\ast }}\}$]]></tex-math></alternatives></inline-formula> in a low-dimensional space using SMACOF (optimized version of SMACOF, referred to as SMACOF-Fast).</p>
</caption>
<graphic xlink:href="infor491_g006.jpg"/>
</fig>
<p>The algorithm in Listing <xref rid="j_infor491_fig_004">1</xref> returns <inline-formula id="j_infor491_ineq_085"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${10^{-5}}$]]></tex-math></alternatives></inline-formula> values on the diagonal of the proximity matrix and in other situations when points among <inline-formula id="j_infor491_ineq_086"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${X_{i}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_087"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${X_{j}}$]]></tex-math></alternatives></inline-formula> coincide (the coincidence is only possible before Geometric MDS starts). This avoids dividing by zero for further calculations.</p>
<p>The Geometric MDS and SMACOF programming implementation code for Python has been optimized for computational speed. The Geometric MDS stress minimization method as well as the SMACOF implementation are featured by the fact that all points in low-dimensional space change their coordinates simultaneously and independently of each other during one iteration of stress minimization. We provide a function code implemented to calculate new coordinates of points in <italic>d</italic>-dimensional space in one iteration using Geometric MDS and SMACOF (see Listings <xref rid="j_infor491_fig_005">2</xref> and <xref rid="j_infor491_fig_006">3</xref>), as well as the code of a fully working Python program that implements the sequential Geometric MDS algorithm (see Listing <xref rid="j_infor491_fig_007">4</xref>), where the stopping condition for stress (<xref rid="j_infor491_eq_001">1</xref>) minimization is either the iteration number or the accuracy. In one iteration (see Listings <xref rid="j_infor491_fig_005">2</xref> and <xref rid="j_infor491_fig_006">3</xref>), the coordinates of all points in the projected space are recalculated once. Listing <xref rid="j_infor491_fig_006">3</xref> presents the function code for calculating new coordinates using SMACOF, adapted from the scikit-learn library (Pedregosa <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_042">2011</xref>) and updated to improve computation speed (this implementation is denoted as SMACOF-Fast). In this implementation, the stress majorization, which is also known as the Guttman transform, guarantees monotonic stress convergence and is more powerful than traditional methods such as gradient descent.</p>
<fig id="j_infor491_fig_007">
<label>Listing 4</label>
<caption>
<p>Main program of Geometric MDS.</p>
</caption>
<graphic xlink:href="infor491_g007.jpg"/>
</fig>
<p>Geometric MDS becomes the main competitor of SMACOF. We would like to highlight the main differences between the two algorithms. More detailed theoretical comparison of them is provided in Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_016">2022</xref>).</p>
<p>At first, we define a Geometric MDS step from point <inline-formula id="j_infor491_ineq_088"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> to <inline-formula id="j_infor491_ineq_089"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_090"><alternatives><mml:math>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$j=1,\dots ,m$]]></tex-math></alternatives></inline-formula> that calculates new coordinates of point <inline-formula id="j_infor491_ineq_091"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>: 
<disp-formula id="j_infor491_eq_007">
<label>(7)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {Y_{j}^{\ast }}={Y_{j}}+\frac{1}{m-1}{\sum \limits_{i=1}^{m}}({Y_{i}}-{Y_{j}}){f_{ij}},\hspace{1em}{f_{ij}}=1-\frac{{d_{ij}}}{{d_{ij}^{\ast }}},\hspace{1em}{f_{ii}}=0.\]]]></tex-math></alternatives>
</disp-formula> 
SMACOF is an iterative procedure that calculates the Guttman transform (Guttman, <xref ref-type="bibr" rid="j_infor491_ref_022">1968</xref>) at each iteration and updates simultaneously the coordinates of <italic>m</italic> points <inline-formula id="j_infor491_ineq_092"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${Y_{j}}=({y_{j1}},\dots ,{y_{jd}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_093"><alternatives><mml:math>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$j=1,\dots ,m$]]></tex-math></alternatives></inline-formula>: 
<disp-formula id="j_infor491_eq_008">
<label>(8)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mi mathvariant="italic">B</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\hat{Y}^{\ast }}=\frac{1}{m}B(Y)Y,\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor491_ineq_094"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[${\hat{Y}_{j}^{\ast }}=({\hat{y}_{j1}^{\ast }},\dots ,{\hat{y}_{jd}^{\ast }}),\hspace{2.5pt}j=1,\dots ,m$]]></tex-math></alternatives></inline-formula> are new points, <italic>Y</italic> and <inline-formula id="j_infor491_ineq_095"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\hat{Y}^{\ast }}$]]></tex-math></alternatives></inline-formula> are <inline-formula id="j_infor491_ineq_096"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi></mml:math><tex-math><![CDATA[$m\times d$]]></tex-math></alternatives></inline-formula> matrices of coordinates of points <inline-formula id="j_infor491_ineq_097"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_098"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${\hat{Y}_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>, respectively, <inline-formula id="j_infor491_ineq_099"><alternatives><mml:math>
<mml:mi mathvariant="italic">B</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">B</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$B=B(Y)$]]></tex-math></alternatives></inline-formula> is <inline-formula id="j_infor491_ineq_100"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$m\times m$]]></tex-math></alternatives></inline-formula> matrix with elements 
<disp-formula id="j_infor491_eq_009">
<label>(9)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="2em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mtable rowspacing="0" columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {B_{ij}}=-\frac{{d_{ij}}}{{d_{ij}^{\ast }}},\hspace{2em}{B_{ii}}=-{\sum \limits_{\begin{array}{c}j=1\\ {} j\ne i\end{array}}^{m}}{B_{ij}},\hspace{1em}i,j=1,\dots ,m.\]]]></tex-math></alternatives>
</disp-formula> 
It is easy to check that SMACOF works very similarly to Geometric MDS. By calculating coordinates of point <inline-formula id="j_infor491_ineq_101"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${\hat{Y}_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_102"><alternatives><mml:math>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$j=1,\dots ,m$]]></tex-math></alternatives></inline-formula>, (<xref rid="j_infor491_eq_008">8</xref>) and (<xref rid="j_infor491_eq_009">9</xref>) can be expressed as 
<disp-formula id="j_infor491_eq_010">
<label>(10)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\hat{Y}_{j}^{\ast }}=\frac{1}{m}{\sum \limits_{i=1}^{m}}\frac{({Y_{j}}-{Y_{i}}){d_{ij}}}{{d_{ij}^{\ast }}}.\]]]></tex-math></alternatives>
</disp-formula> 
It is proved in Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_016">2022</xref>) that both Geometric MDS and SMACOF make a step from the point <inline-formula id="j_infor491_ineq_103"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> to its new position <inline-formula id="j_infor491_ineq_104"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor491_ineq_105"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${\hat{Y}_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>, respectively in the same direction with different step size. The step size by Geometric MDS is longer by <inline-formula id="j_infor491_ineq_106"><alternatives><mml:math><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[$\frac{m}{m-1}$]]></tex-math></alternatives></inline-formula> times.</p>
<p>Geometric MDS can be expressed in matrix form as well: 
<disp-formula id="j_infor491_eq_011">
<label>(11)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo>+</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle><mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {Y^{\ast }}=Y+\frac{1}{m-1}\hat{B}(Y)Y,\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor491_ineq_107"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="2.5pt"/>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}=({y_{j1}^{\ast }},\dots ,{y_{jd}^{\ast }}),\hspace{2.5pt}j=1,\dots ,m$]]></tex-math></alternatives></inline-formula> are new points, <italic>Y</italic> and <inline-formula id="j_infor491_ineq_108"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${Y^{\ast }}$]]></tex-math></alternatives></inline-formula> are <inline-formula id="j_infor491_ineq_109"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi></mml:math><tex-math><![CDATA[$m\times d$]]></tex-math></alternatives></inline-formula> matrices of coordinates of points <inline-formula id="j_infor491_ineq_110"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_111"><alternatives><mml:math>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup></mml:math><tex-math><![CDATA[${Y_{j}^{\ast }}$]]></tex-math></alternatives></inline-formula>, respectively, <inline-formula id="j_infor491_ineq_112"><alternatives><mml:math><mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
<mml:mo>=</mml:mo><mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\hat{B}=\hat{B}(Y)$]]></tex-math></alternatives></inline-formula> is <inline-formula id="j_infor491_ineq_113"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$m\times m$]]></tex-math></alternatives></inline-formula> matrix with elements 
<disp-formula id="j_infor491_eq_012">
<label>(12)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true" columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo><mml:mstyle displaystyle="true">
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mstyle>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="2em"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">∑</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mtable rowspacing="0" columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="italic">B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">ˆ</mml:mo></mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\hat{B}_{ij}}=1-\frac{{d_{ij}}}{{d_{ij}^{\ast }}},\hspace{2em}{\hat{B}_{ii}}=-{\sum \limits_{\begin{array}{c}j=1\\ {} j\ne i\end{array}}^{m}}{\hat{B}_{ij}},\hspace{1em}i,j=1,\dots ,m.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<sec id="j_infor491_s_005">
<label>4.1</label>
<title>Computation Time Cost by Geometric MDS and SMACOF</title>
<p>The dimensionality reduction performance was compared using SMACOF (from the scikit-learn library, Pedregosa <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_042">2011</xref>), SMACOF-Fast (Listing <xref rid="j_infor491_fig_006">3</xref>) and Geometric MDS algorithms (Listing <xref rid="j_infor491_fig_005">2</xref>). Experiments were carried out using:</p>
<list>
<list-item id="j_infor491_li_001">
<label>•</label>
<p>randomly generated sets of 10-dimensional data points <inline-formula id="j_infor491_ineq_114"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mi mathvariant="italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${X_{i}}=({x_{i1}},\dots ,{x_{id}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor491_ineq_115"><alternatives><mml:math>
<mml:mi mathvariant="italic">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$i=1,\dots ,m$]]></tex-math></alternatives></inline-formula>, with coordinates uniformly distributed in the interval <inline-formula id="j_infor491_ineq_116"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(0,1)$]]></tex-math></alternatives></inline-formula>;</p>
</list-item>
<list-item id="j_infor491_li_002">
<label>•</label>
<p>random proximity matrices with elements uniformly distributed in the interval <inline-formula id="j_infor491_ineq_117"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(0,1)$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
</list>
<table-wrap id="j_infor491_tab_002">
<label>Table 2</label>
<caption>
<p>Average dependency of time required to compute new coordinates and Stress function values per iteration on data size when <inline-formula id="j_infor491_ineq_118"><alternatives><mml:math>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$n=10$]]></tex-math></alternatives></inline-formula>, using SMACOF-Fast, SMACOF and Geometric MDS.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td colspan="4" style="vertical-align: top; text-align: center; border-top: solid thin; border-bottom: solid thin">Ratio</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3" style="vertical-align: top; text-align: left">Number of points, <italic>m</italic></td>
<td colspan="2" style="vertical-align: top; text-align: left">SMACOF</td>
<td colspan="2" style="vertical-align: top; text-align: left">SMACOF-Fast</td>
<td colspan="2" style="vertical-align: top; text-align: left">Geometric MDS</td>
<td colspan="2" style="vertical-align: top; text-align: left">SMACOF/SMACOF-Fast</td>
<td colspan="2" style="vertical-align: top; text-align: left">Geometric MDS/SMACOF-Fast</td>
</tr>
<tr>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Stress</td>
<td style="vertical-align: top; text-align: left">Time, s</td>
<td style="vertical-align: top; text-align: left">Stress</td>
<td style="vertical-align: top; text-align: left">Time, s</td>
<td style="vertical-align: top; text-align: left">Stress</td>
<td style="vertical-align: top; text-align: left">Time, s</td>
<td style="vertical-align: top; text-align: left">Stress ratio</td>
<td style="vertical-align: top; text-align: left">Time ratio</td>
<td style="vertical-align: top; text-align: left">Stress ratio</td>
<td style="vertical-align: top; text-align: left">Time ratio</td>
</tr>
</tbody><tbody>
<tr>
<td style="vertical-align: top; text-align: left">10</td>
<td style="vertical-align: top; text-align: left">11.6</td>
<td style="vertical-align: top; text-align: left">0.00019</td>
<td style="vertical-align: top; text-align: left">11.6</td>
<td style="vertical-align: top; text-align: left">0.00003</td>
<td style="vertical-align: top; text-align: left">11.7</td>
<td style="vertical-align: top; text-align: left">0.00003</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">7.3152985</td>
<td style="vertical-align: top; text-align: left">1.0095220</td>
<td style="vertical-align: top; text-align: left">1.2097938</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">20</td>
<td style="vertical-align: top; text-align: left">66.7</td>
<td style="vertical-align: top; text-align: left">0.00036</td>
<td style="vertical-align: top; text-align: left">66.7</td>
<td style="vertical-align: top; text-align: left">0.00005</td>
<td style="vertical-align: top; text-align: left">66.7</td>
<td style="vertical-align: top; text-align: left">0.00006</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">6.9684499</td>
<td style="vertical-align: top; text-align: left">1.0011044</td>
<td style="vertical-align: top; text-align: left">1.1193416</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">50</td>
<td style="vertical-align: top; text-align: left">479.1</td>
<td style="vertical-align: top; text-align: left">0.00056</td>
<td style="vertical-align: top; text-align: left">479.1</td>
<td style="vertical-align: top; text-align: left">0.00009</td>
<td style="vertical-align: top; text-align: left">478.8</td>
<td style="vertical-align: top; text-align: left">0.00009</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">6.3983110</td>
<td style="vertical-align: top; text-align: left">0.9992541</td>
<td style="vertical-align: top; text-align: left">1.0824801</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">100</td>
<td style="vertical-align: top; text-align: left">2128.1</td>
<td style="vertical-align: top; text-align: left">0.00093</td>
<td style="vertical-align: top; text-align: left">2128.1</td>
<td style="vertical-align: top; text-align: left">0.00016</td>
<td style="vertical-align: top; text-align: left">2127.0</td>
<td style="vertical-align: top; text-align: left">0.00017</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">5.9893883</td>
<td style="vertical-align: top; text-align: left">0.9995029</td>
<td style="vertical-align: top; text-align: left">1.0680442</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">200</td>
<td style="vertical-align: top; text-align: left">8946.6</td>
<td style="vertical-align: top; text-align: left">0.00194</td>
<td style="vertical-align: top; text-align: left">8946.6</td>
<td style="vertical-align: top; text-align: left">0.00035</td>
<td style="vertical-align: top; text-align: left">8944.1</td>
<td style="vertical-align: top; text-align: left">0.00037</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">5.5188379</td>
<td style="vertical-align: top; text-align: left">0.9997245</td>
<td style="vertical-align: top; text-align: left">1.0489429</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">500</td>
<td style="vertical-align: top; text-align: left">51188.6</td>
<td style="vertical-align: top; text-align: left">0.00885</td>
<td style="vertical-align: top; text-align: left">51188.6</td>
<td style="vertical-align: top; text-align: left">0.00246</td>
<td style="vertical-align: top; text-align: left">51183.4</td>
<td style="vertical-align: top; text-align: left">0.00267</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">3.5984986</td>
<td style="vertical-align: top; text-align: left">0.9998969</td>
<td style="vertical-align: top; text-align: left">1.0861585</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">1000</td>
<td style="vertical-align: top; text-align: left">218604.8</td>
<td style="vertical-align: top; text-align: left">0.03845</td>
<td style="vertical-align: top; text-align: left">218604.8</td>
<td style="vertical-align: top; text-align: left">0.01419</td>
<td style="vertical-align: top; text-align: left">218594.0</td>
<td style="vertical-align: top; text-align: left">0.01452</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">2.7084907</td>
<td style="vertical-align: top; text-align: left">0.9999505</td>
<td style="vertical-align: top; text-align: left">1.0227548</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2000</td>
<td style="vertical-align: top; text-align: left">894694.9</td>
<td style="vertical-align: top; text-align: left">0.18151</td>
<td style="vertical-align: top; text-align: left">894694.9</td>
<td style="vertical-align: top; text-align: left">0.06169</td>
<td style="vertical-align: top; text-align: left">894672.8</td>
<td style="vertical-align: top; text-align: left">0.06175</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">2.9422145</td>
<td style="vertical-align: top; text-align: left">0.9999753</td>
<td style="vertical-align: top; text-align: left">1.0009971</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">5000</td>
<td style="vertical-align: top; text-align: left">5106657.3</td>
<td style="vertical-align: top; text-align: left">1.15621</td>
<td style="vertical-align: top; text-align: left">5106657.3</td>
<td style="vertical-align: top; text-align: left">0.32358</td>
<td style="vertical-align: top; text-align: left">5106605.3</td>
<td style="vertical-align: top; text-align: left">0.32322</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">3.5731957</td>
<td style="vertical-align: top; text-align: left">0.9999898</td>
<td style="vertical-align: top; text-align: left">0.9988961</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">10000</td>
<td style="vertical-align: top; text-align: left">21892993.0</td>
<td style="vertical-align: top; text-align: left">5.06069</td>
<td style="vertical-align: top; text-align: left">21892993.0</td>
<td style="vertical-align: top; text-align: left">1.27452</td>
<td style="vertical-align: top; text-align: left">21892881.6</td>
<td style="vertical-align: top; text-align: left">1.26265</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">3.9706513</td>
<td style="vertical-align: top; text-align: left">0.9999949</td>
<td style="vertical-align: top; text-align: left">0.9906829</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">15000</td>
<td style="vertical-align: top; text-align: left">59857709.1</td>
<td style="vertical-align: top; text-align: left">14.66615</td>
<td style="vertical-align: top; text-align: left">59857709.1</td>
<td style="vertical-align: top; text-align: left">3.51422</td>
<td style="vertical-align: top; text-align: left">59857507.2</td>
<td style="vertical-align: top; text-align: left">3.46431</td>
<td style="vertical-align: top; text-align: left">1.0000000</td>
<td style="vertical-align: top; text-align: left">4.1733769</td>
<td style="vertical-align: top; text-align: left">0.9999966</td>
<td style="vertical-align: top; text-align: left">0.9857980</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">20000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">127201601.7</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">32.07792</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">127201601.7</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7.49513</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">127201281.2</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7.45024</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.0000000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.2798321</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.9999975</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.9940104</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="j_infor491_tab_003">
<label>Table 3</label>
<caption>
<p>Average dependence of the time required to compute new coordinates and Stress function values per iteration on the data size on random proximity matrices whose element takes uniformly distributed values in the interval (0, 1), using SMACOF-Fast, SMACOF and Geometric MDS.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"/>
<td colspan="4" style="vertical-align: top; text-align: center; border-top: solid thin; border-bottom: solid thin">Ratio</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3" style="vertical-align: top; text-align: left">Number of points, <italic>m</italic></td>
<td colspan="2" style="vertical-align: top; text-align: left">SMACOF</td>
<td colspan="2" style="vertical-align: top; text-align: left">SMACOF-Fast</td>
<td colspan="2" style="vertical-align: top; text-align: left">Geometric MDS</td>
<td colspan="2" style="vertical-align: top; text-align: left">SMACOF/SMACOF-Fast</td>
<td colspan="2" style="vertical-align: top; text-align: justify">Geometric MDS/SMACOF-Fast</td>
</tr>
<tr>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
<td colspan="2" style="vertical-align: top"><hr/></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">Stress</td>
<td style="vertical-align: top; text-align: left">Time, s</td>
<td style="vertical-align: top; text-align: left">Stress</td>
<td style="vertical-align: top; text-align: left">Time, s</td>
<td style="vertical-align: top; text-align: left">Stress</td>
<td style="vertical-align: top; text-align: left">Time, s</td>
<td style="vertical-align: top; text-align: left">Stress ratio</td>
<td style="vertical-align: top; text-align: left">Time ratio</td>
<td style="vertical-align: top; text-align: left">Stress ratio</td>
<td style="vertical-align: top; text-align: left">Time ratio</td>
</tr>
</tbody><tbody>
<tr>
<td style="vertical-align: top; text-align: left">10</td>
<td style="vertical-align: top; text-align: left">3.812807</td>
<td style="vertical-align: top; text-align: left">0.00018</td>
<td style="vertical-align: top; text-align: left">3.812807</td>
<td style="vertical-align: top; text-align: left">0.00003</td>
<td style="vertical-align: top; text-align: left">3.738581</td>
<td style="vertical-align: top; text-align: left">0.00003</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">6.20922293</td>
<td style="vertical-align: top; text-align: left">0.98053234</td>
<td style="vertical-align: top; text-align: left">1.01140901</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">20</td>
<td style="vertical-align: top; text-align: left">22.02273</td>
<td style="vertical-align: top; text-align: left">0.00036</td>
<td style="vertical-align: top; text-align: left">22.02273</td>
<td style="vertical-align: top; text-align: left">0.00006</td>
<td style="vertical-align: top; text-align: left">21.81476</td>
<td style="vertical-align: top; text-align: left">0.00006</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">6.34562798</td>
<td style="vertical-align: top; text-align: left">0.99055667</td>
<td style="vertical-align: top; text-align: left">1.02805624</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">50</td>
<td style="vertical-align: top; text-align: left">164.0261</td>
<td style="vertical-align: top; text-align: left">0.00057</td>
<td style="vertical-align: top; text-align: left">164.0261</td>
<td style="vertical-align: top; text-align: left">0.00010</td>
<td style="vertical-align: top; text-align: left">163.6571</td>
<td style="vertical-align: top; text-align: left">0.00010</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">6.00706317</td>
<td style="vertical-align: top; text-align: left">0.99774989</td>
<td style="vertical-align: top; text-align: left">1.02165017</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">100</td>
<td style="vertical-align: top; text-align: left">788.3272</td>
<td style="vertical-align: top; text-align: left">0.00112</td>
<td style="vertical-align: top; text-align: left">788.3272</td>
<td style="vertical-align: top; text-align: left">0.00017</td>
<td style="vertical-align: top; text-align: left">787.7029</td>
<td style="vertical-align: top; text-align: left">0.00017</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">6.75047562</td>
<td style="vertical-align: top; text-align: left">0.99920800</td>
<td style="vertical-align: top; text-align: left">1.02180998</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">200</td>
<td style="vertical-align: top; text-align: left">3295.794</td>
<td style="vertical-align: top; text-align: left">0.00230</td>
<td style="vertical-align: top; text-align: left">3295.794</td>
<td style="vertical-align: top; text-align: left">0.00035</td>
<td style="vertical-align: top; text-align: left">3294.927</td>
<td style="vertical-align: top; text-align: left">0.00035</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">6.49822251</td>
<td style="vertical-align: top; text-align: left">0.99973703</td>
<td style="vertical-align: top; text-align: left">0.99185505</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">500</td>
<td style="vertical-align: top; text-align: left">19294.97</td>
<td style="vertical-align: top; text-align: left">0.00888</td>
<td style="vertical-align: top; text-align: left">19294.97</td>
<td style="vertical-align: top; text-align: left">0.00272</td>
<td style="vertical-align: top; text-align: left">19293.7</td>
<td style="vertical-align: top; text-align: left">0.00286</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">3.26174940</td>
<td style="vertical-align: top; text-align: left">0.99993376</td>
<td style="vertical-align: top; text-align: left">1.04896365</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">1000</td>
<td style="vertical-align: top; text-align: left">83109.29</td>
<td style="vertical-align: top; text-align: left">0.03834</td>
<td style="vertical-align: top; text-align: left">83109.29</td>
<td style="vertical-align: top; text-align: left">0.01447</td>
<td style="vertical-align: top; text-align: left">83107.34</td>
<td style="vertical-align: top; text-align: left">0.01415</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">2.65000273</td>
<td style="vertical-align: top; text-align: left">0.99997652</td>
<td style="vertical-align: top; text-align: left">0.97795314</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2000</td>
<td style="vertical-align: top; text-align: left">339234.9</td>
<td style="vertical-align: top; text-align: left">0.17323</td>
<td style="vertical-align: top; text-align: left">339234.9</td>
<td style="vertical-align: top; text-align: left">0.05924</td>
<td style="vertical-align: top; text-align: left">339231.9</td>
<td style="vertical-align: top; text-align: left">0.05665</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">2.92438158</td>
<td style="vertical-align: top; text-align: left">0.99999104</td>
<td style="vertical-align: top; text-align: left">0.95639967</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">5000</td>
<td style="vertical-align: top; text-align: left">1940633</td>
<td style="vertical-align: top; text-align: left">1.15612</td>
<td style="vertical-align: top; text-align: left">1940633</td>
<td style="vertical-align: top; text-align: left">0.30542</td>
<td style="vertical-align: top; text-align: left">1940628</td>
<td style="vertical-align: top; text-align: left">0.29682</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">3.78540252</td>
<td style="vertical-align: top; text-align: left">0.99999716</td>
<td style="vertical-align: top; text-align: left">0.97186003</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">10000</td>
<td style="vertical-align: top; text-align: left">8348942</td>
<td style="vertical-align: top; text-align: left">5.42154</td>
<td style="vertical-align: top; text-align: left">8348942</td>
<td style="vertical-align: top; text-align: left">1.22316</td>
<td style="vertical-align: top; text-align: left">8348932</td>
<td style="vertical-align: top; text-align: left">1.23237</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">4.43240329</td>
<td style="vertical-align: top; text-align: left">0.99999878</td>
<td style="vertical-align: top; text-align: left">1.00752752</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">15000</td>
<td style="vertical-align: top; text-align: left">22765379</td>
<td style="vertical-align: top; text-align: left">15.06911</td>
<td style="vertical-align: top; text-align: left">22765379</td>
<td style="vertical-align: top; text-align: left">3.37158</td>
<td style="vertical-align: top; text-align: left">22765362</td>
<td style="vertical-align: top; text-align: left">3.44193</td>
<td style="vertical-align: top; text-align: left">1.00000000</td>
<td style="vertical-align: top; text-align: left">4.46944395</td>
<td style="vertical-align: top; text-align: left">0.99999926</td>
<td style="vertical-align: top; text-align: left">1.02086564</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">20000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">48401588</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">32.37652</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">48401588</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7.35390</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">48401562</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7.41715</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.00000000</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">4.40263131</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0.99999946</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">1.00860033</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The dimensionality was reduced to <inline-formula id="j_infor491_ineq_119"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>. After one iteration, the time taken to calculate the new coordinates of the point positions in the projected space was measured and the stress value <inline-formula id="j_infor491_ineq_120"><alternatives><mml:math>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$S(\cdot )$]]></tex-math></alternatives></inline-formula> defined by (<xref rid="j_infor491_eq_001">1</xref>) was obtained. Data with different number of points <italic>m</italic> were used: 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 15000, and 20000. In order to obtain more accurate and reliable results, each experiment was repeated 100 times. The results of these experiments are shown in Tables <xref rid="j_infor491_tab_002">2</xref> and <xref rid="j_infor491_tab_003">3</xref>. Since the number of computational operations using Geometric MDS and SMACOF-Fast is approximately the same (it can be concluded from Listing <xref rid="j_infor491_fig_005">2</xref> and Listing <xref rid="j_infor491_fig_006">3</xref>), the time required to compute new coordinates using Geometric MDS and SMACOF-Fast is about the same.</p>
<fig id="j_infor491_fig_008">
<label>Fig. 3</label>
<caption>
<p>Dependence of computation time on the number of points when reducing the dimensionality of 10-dimensional data <inline-formula id="j_infor491_ineq_121"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(n=10)$]]></tex-math></alternatives></inline-formula> to <inline-formula id="j_infor491_ineq_122"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>. The number of points (<inline-formula id="j_infor491_ineq_123"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$m=10$]]></tex-math></alternatives></inline-formula>, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 15000, and 20000) is given in a logarithmic scale. All results are averaged, as a result of each experiment being repeated 100 times to calculate one iteration.</p>
</caption>
<graphic xlink:href="infor491_g008.jpg"/>
</fig>
<fig id="j_infor491_fig_009">
<label>Fig. 4</label>
<caption>
<p>Dependence of computation time on the number of points when reducing the dimensionality of 10-dimensional data <inline-formula id="j_infor491_ineq_124"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(n=10)$]]></tex-math></alternatives></inline-formula> to <inline-formula id="j_infor491_ineq_125"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>. The time of calculation and the number of points (<inline-formula id="j_infor491_ineq_126"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$m=10$]]></tex-math></alternatives></inline-formula>, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 15000, and 20000) are given in a logarithmic scale. All results are averaged, as a result of each experiment being repeated 100 times to calculate one iteration.</p>
</caption>
<graphic xlink:href="infor491_g009.jpg"/>
</fig>
<p>The dependency of the calculation time on a number of points using Geometric MDS (see Listing <xref rid="j_infor491_fig_005">2</xref>) and SMACOF (Pedregosa <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_042">2011</xref>) is shown in Fig. <xref rid="j_infor491_fig_008">3</xref>. The number <italic>m</italic> of points (<inline-formula id="j_infor491_ineq_127"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>10</mml:mn></mml:math><tex-math><![CDATA[$m=10$]]></tex-math></alternatives></inline-formula>, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 15000, and 20000) is given in a logarithmic scale. Each experiment was repeated 100 times, so the figures summarise the results with the average time and the value of the Stress function for each case of <italic>m</italic>. In order to provide the results in a more informative form, and to emphasize the differences in the time required to calculate new coordinates using Geometric MDS (see Listing <xref rid="j_infor491_fig_005">2</xref>) and SMACOF (Pedregosa <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_042">2011</xref>), the time of calculation and the number of points are additionally given in a logarithmic scale in Fig. <xref rid="j_infor491_fig_009">4</xref>. The results demonstrate that Geometric MDS (Listing <xref rid="j_infor491_fig_005">2</xref>) outperforms the SMACOF (from the scikit-learn library, Pedregosa <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_042">2011</xref>) in all cases in terms of the computation time required to recalculate the coordinates of new points <inline-formula id="j_infor491_ineq_128"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> in the projected space. Comparing the results obtained using SMACOF, SMACOF-Fast and Geometric MDS, it can be observed that with increasing data size Geometric MDS requires less computing time and the resulting stress is smaller than that by SMACOF under the same conditions (see Fig. <xref rid="j_infor491_fig_009">4</xref>, Tables <xref rid="j_infor491_tab_002">2</xref> and <xref rid="j_infor491_tab_003">3</xref>). Meanwhile, the time required to recalculate new coordinates using Geometric MDS and SMACOF-Fast is approximately the same.</p>
<fig id="j_infor491_fig_010">
<label>Fig. 5</label>
<caption>
<p>Stress comparison between Geometric MDS and SMACOF depending on the number of points <italic>m</italic> and and the dimensionality of the projected space <italic>d</italic>.</p>
</caption>
<graphic xlink:href="infor491_g010.jpg"/>
</fig>
</sec>
<sec id="j_infor491_s_006">
<label>4.2</label>
<title>Comparative Efficiency of Geometric MDS and SMACOF</title>
<p>To compare which method, Geometric MDS or SMACOF, better reduces the MDS stress <inline-formula id="j_infor491_ineq_129"><alternatives><mml:math>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$S(\cdot )$]]></tex-math></alternatives></inline-formula> defined by (<xref rid="j_infor491_eq_001">1</xref>), we tested these methods on random proximity matrices whose elements take uniformly distributed values in the interval <inline-formula id="j_infor491_ineq_130"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(0,1)$]]></tex-math></alternatives></inline-formula>. 101 tests were performed with different <inline-formula id="j_infor491_ineq_131"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1000</mml:mn></mml:math><tex-math><![CDATA[$m=3,\dots ,1000$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor491_ineq_132"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>30</mml:mn></mml:math><tex-math><![CDATA[$d=1,\dots ,30$]]></tex-math></alternatives></inline-formula>. The experiments were carried out using the programming implementations provided earlier in this section: SMACOF-Fast based on Listing <xref rid="j_infor491_fig_006">3</xref> and Geometric MDS based on Listing <xref rid="j_infor491_fig_005">2</xref>. The results of the experiments are given in Fig. <xref rid="j_infor491_fig_010">5</xref>, which visually shows which algorithm, SMACOF or Geometric MDS, get a smaller value of the stress function <inline-formula id="j_infor491_ineq_133"><alternatives><mml:math>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$S(\cdot )$]]></tex-math></alternatives></inline-formula> after updating the points <inline-formula id="j_infor491_ineq_134"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> only once, i.e. after one iteration, depending on the number <italic>m</italic> of points and the dimensionality <italic>d</italic> of the projected space. The red colour indicates cases in which SMACOF stress was superior to Geometric MDS in all cases, the light red indicates cases in which SMACOF stress was superior to Geometric MDS in more cases, the light green indicates cases in which Geometric MDS stress was superior to SMACOF in more cases, and the green indicates cases in which Geometric MDS stress was superior to SMACOF in all cases.</p>
<p>Figure <xref rid="j_infor491_fig_010">5</xref> discloses a very interesting and essential difference between the performance of Geometric MDS and SMACOF. Geometric MDS finds smaller stress when the dimensionality of projected space is lower. This is particularly important for the multidimensional data visualization task.</p>
<fig id="j_infor491_fig_011">
<label>Fig. 6</label>
<caption>
<p>Stress comparison between Geometric MDS and SMACOF depending on the number of points <italic>m</italic> and the dimensionality <italic>n</italic>, when reducing the dimensionality to <inline-formula id="j_infor491_ineq_135"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>.</p>
</caption>
<graphic xlink:href="infor491_g011.jpg"/>
</fig>
<p>In Fig. <xref rid="j_infor491_fig_010">5</xref>, we present a curve that would allow us to choose either Geometric MDS or SMACOF in order to get a better stress after their first step and assuming that the values of the elements of the symmetric distance matrix are uniformly distributed in the interval <inline-formula id="j_infor491_ineq_136"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(0,1)$]]></tex-math></alternatives></inline-formula>. The upper part of the parabola was used to determine the distinguishing curve. The optimization package of the MAPLE software (Bernardin <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor491_ref_003">2021</xref>) was used to define the coefficients in the equation that is as follows in this particular case: 
<disp-formula id="j_infor491_eq_013">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≈</mml:mo>
<mml:mn>0.003646</mml:mn>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>0.362826</mml:mn>
<mml:msqrt>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:mo>+</mml:mo>
<mml:mn>6.782796.</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ f(m)\approx 0.003646m+0.362826\sqrt{m-3}+6.782796.\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>Particular case is <inline-formula id="j_infor491_ineq_137"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>, because it is the most used in multidimensional data visualization. Figure <xref rid="j_infor491_fig_011">6</xref> illustrates the values of the stress function <inline-formula id="j_infor491_ineq_138"><alternatives><mml:math>
<mml:mi mathvariant="italic">S</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$S(\cdot )$]]></tex-math></alternatives></inline-formula> depending on the number of points <italic>m</italic> and the dimensionality <italic>n</italic> of the analysed multidimensional data. By random generating a set of <italic>m n</italic>-dimensional points <inline-formula id="j_infor491_ineq_139"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">X</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${X_{1}},\dots ,{X_{m}}$]]></tex-math></alternatives></inline-formula>, the distance matrix <inline-formula id="j_infor491_ineq_140"><alternatives><mml:math>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>×</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi></mml:math><tex-math><![CDATA[$m\times m$]]></tex-math></alternatives></inline-formula> was calculated. Then a random set of 2-dimensional (<inline-formula id="j_infor491_ineq_141"><alternatives><mml:math>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$d=2$]]></tex-math></alternatives></inline-formula>) points <inline-formula id="j_infor491_ineq_142"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> was selected as a starting position for optimization of the stress. The coordinates of these points were recalculated in one iteration using Geometric MDS and SMACOF (see Listings <xref rid="j_infor491_fig_005">2</xref> and <xref rid="j_infor491_fig_006">3</xref>). The colours in Fig. <xref rid="j_infor491_fig_011">6</xref> were labelled using the same rules as in Fig. <xref rid="j_infor491_fig_010">5</xref>: red means that in 101 such independent trials, SMACOF gave better stress in all cases, light red means that SMACOF gave better stress in more cases than Geometric MDS, light green means that Geometric MDS gave better stress in more cases than Geometric MDS but not in all cases, and light green means that Geometric MDS gave better stress in all cases. Figure <xref rid="j_infor491_fig_011">6</xref> shows visually whether Geometric MDS or SMACOF gives lower stress depending on the number of points <italic>m</italic> and on the dimensionality <italic>n</italic> after one iteration of 101 tries. The results in Fig. <xref rid="j_infor491_fig_011">6</xref> can be useful for choosing an appropriate method when the dimensionality <italic>n</italic> of the data to be analysed and the number of points <italic>n</italic> are known.</p>
</sec>
</sec>
<sec id="j_infor491_s_007">
<label>5</label>
<title>Conclusions</title>
<p>A new Geometric MDS method with the low computational complexity has been proposed in Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_013">2021a</xref>, <xref ref-type="bibr" rid="j_infor491_ref_016">2022</xref>). Geometric MDS provides an iterative procedure to minimize MDS stress where coordinates of a particular point of the projected space are moved to a new position defined analytically. Such a change in position is easily interpreted geometrically. Moreover, the coordinates of points of the projected space may be recalculated simultaneously, i.e. in parallel, independently of each other during one iteration of stress minimization. Two implementations of Geometric MDS are suggested and analysed experimentally: parallel and sequential.</p>
<p>A parallel implementation of Geometric MDS is developed for dimensionality reduction using multithreaded multi-core processors. Based on the results obtained, we can claim that Geometric MDS allows to implement parallel computing using multithreaded multi-core processors, as a result, the time to calculate new coordinates of points in the low-dimensional space may be reduced by 6 times on average, depending on the data size.</p>
<p>The sequential implementation given in this paper is optimized for computational speed, enabling it to solve large data problems. It is compared with the SMACOF version of MDS. Python codes for both Geometric MDS and SMACOF are presented to highlight the differences between the two implementations. These codes were optimized for computational speed. The comparison was carried out on several aspects: the comparative performance of Geometric MDS and SMACOF depending on the projection dimension, data size and computation time. Geometric MDS usually finds lower stress when the dimensionality of the projected space is smaller.</p>
<p>SMACOF is an iterative procedure that calculates the Guttman transform. We discovered that the procedure of updating lower-dimensional points by Geometric MDS is a generalization of the Guttman transform. If we apply <inline-formula id="j_infor491_ineq_143"><alternatives><mml:math><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[$\frac{1}{m}$]]></tex-math></alternatives></inline-formula> instead of <inline-formula id="j_infor491_ineq_144"><alternatives><mml:math><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[$\frac{1}{m-1}$]]></tex-math></alternatives></inline-formula> in Eq. (<xref rid="j_infor491_eq_007">7</xref>) to all the lower-dimensional points <inline-formula id="j_infor491_ineq_145"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{1}},\dots ,{Y_{m}}$]]></tex-math></alternatives></inline-formula> simultaneously and independently of each other during a single iteration of stress minimization, we get the same result as with the Guttman transform. However, it is proved in Dzemyda and Sabaliauskas (<xref ref-type="bibr" rid="j_infor491_ref_016">2022</xref>) that both Geometric MDS (GMDS<italic>m</italic>) and SMACOF make a step from the point <inline-formula id="j_infor491_ineq_146"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula> to its new position in the same direction with different step size. The step size by Geometric MDS is <inline-formula id="j_infor491_ineq_147"><alternatives><mml:math><mml:mstyle displaystyle="false">
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mstyle></mml:math><tex-math><![CDATA[$\frac{m}{m-1}$]]></tex-math></alternatives></inline-formula> times longer. In both cases, the stress (<xref rid="j_infor491_eq_001">1</xref>) decreases. Moreover, Geometric MDS allows to update coordinates of a single point <inline-formula id="j_infor491_ineq_148"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">j</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${Y_{j}}$]]></tex-math></alternatives></inline-formula>, and it guarantees the decrease of the stress, too. These are the reasons for further exploring the potential of Geometric MDS and applying the advantages discovered.</p>
</sec>
</body>
<back>
<ref-list id="j_infor491_reflist_001">
<title>References</title>
<ref id="j_infor491_ref_001">
<mixed-citation publication-type="other"><string-name><surname>Albanie</surname>, <given-names>S.</given-names></string-name> (2019). <italic>Euclidean Distance Matrix Trick</italic>. Retrieved from Visual Geometry Group, University of Oxford.</mixed-citation>
</ref>
<ref id="j_infor491_ref_002">
<mixed-citation publication-type="other"><string-name><surname>Anaconda</surname></string-name> (2022). <italic>Anaconda Software Distribution</italic>. Anaconda Inc. <ext-link ext-link-type="doi" xlink:href="https://docs.anaconda.com/" xlink:type="simple">https://docs.anaconda.com/</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_003">
<mixed-citation publication-type="book"><string-name><surname>Bernardin</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Chin</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>DeMarco</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Geddes</surname>, <given-names>K.O.</given-names></string-name>, <string-name><surname>Hare</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Heal</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Labahn</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>May</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>McCarron</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Monagan</surname>, <given-names>M.</given-names></string-name> (<year>2021</year>). <source>Maple Programming Guide</source>. <publisher-name>Maplesoft, a division of Waterloo Maple Inc.</publisher-name>, <publisher-loc>Waterloo, Ontario</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_004">
<mixed-citation publication-type="chapter"><string-name><surname>Bernatavičienė</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Marcinkevičius</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Medvedev</surname>, <given-names>V.</given-names></string-name> (<year>2007</year>). <chapter-title>The problem of visual analysis of multidimensional medical data</chapter-title>. In: <source>Models and Algorithms for Global Optimization</source>. <publisher-name>Springer</publisher-name>, <publisher-loc>Boston, MA</publisher-loc>, pp. <fpage>277</fpage>–<lpage>298</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-0-387-36721-7_17" xlink:type="simple">https://doi.org/10.1007/978-0-387-36721-7_17</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_005">
<mixed-citation publication-type="book"><string-name><surname>Borg</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Groenen</surname>, <given-names>P.J.</given-names></string-name> (<year>2005</year>). <source>Modern Multidimensional Scaling: Theory and Applications</source>. <publisher-name>Springer Science &amp; Business Media</publisher-name>, <publisher-loc>New York, NY 100013, USA</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_006">
<mixed-citation publication-type="book"><string-name><surname>Borg</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Groenen</surname>, <given-names>P.J.</given-names></string-name>, <string-name><surname>Mair</surname>, <given-names>P.</given-names></string-name> (<year>2018</year>). <source>Applied Multidimensional Scaling and Unfolding</source>, <edition>2nd</edition> ed. <publisher-name>Springer</publisher-name>, <publisher-loc>Cham, Switzerland</publisher-loc>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-319-73471-2" xlink:type="simple">https://doi.org/10.1007/978-3-319-73471-2</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_007">
<mixed-citation publication-type="journal"><string-name><surname>Buja</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Swayne</surname>, <given-names>D.F.</given-names></string-name>, <string-name><surname>Littman</surname>, <given-names>M.L.</given-names></string-name>, <string-name><surname>Dean</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Hofmann</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>L.</given-names></string-name> (<year>2008</year>). <article-title>Data visualization with multidimensional scaling</article-title>. <source>Journal of Computational and Graphical Statistics</source>, <volume>17</volume>(<issue>2</issue>), <fpage>444</fpage>–<lpage>472</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1198/106186008X318440" xlink:type="simple">https://doi.org/10.1198/106186008X318440</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_008">
<mixed-citation publication-type="chapter"><string-name><surname>De Leeuw</surname>, <given-names>J.</given-names></string-name> (<year>1977</year>). <chapter-title>Application of convex analysis to multidimensional scaling</chapter-title>. In: <string-name><surname>Barra</surname>, <given-names>J.R.</given-names></string-name>, <string-name><surname>Brodeau</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Romier</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Van Cutsem</surname>, <given-names>B.</given-names></string-name> (Eds.), <source>Recent Developments in Statistics</source>. <publisher-name>North Holland PublishingCompany</publisher-name>, <publisher-loc>Amsterdam</publisher-loc>, pp. <fpage>133</fpage>–<lpage>145</lpage>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_009">
<mixed-citation publication-type="journal"><string-name><surname>De Leeuw</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Mair</surname>, <given-names>P.</given-names></string-name> (<year>2009</year>). <article-title>Multidimensional scaling using majorization: SMACOF in R</article-title>. <source>Journal of Statistical Software</source>, <volume>31</volume>(<issue>3</issue>), <fpage>1</fpage>–<lpage>30</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.18637/jss.v031.i03" xlink:type="simple">https://doi.org/10.18637/jss.v031.i03</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Dos Santos</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Brodlie</surname>, <given-names>K.</given-names></string-name> (<year>2004</year>). <article-title>Gaining understanding of multivariate and multidimensional data through visualization</article-title>. <source>Computers &amp; Graphics</source>, <volume>28</volume>(<issue>3</issue>), <fpage>311</fpage>–<lpage>325</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/j.cag.2004.03.013" xlink:type="simple">https://doi.org/10.1016/j.cag.2004.03.013</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_011">
<mixed-citation publication-type="journal"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name> (<year>2006</year>). <article-title>Heuristic approach for minimizing the projection error in the integrated mapping</article-title>. <source>European Journal of Operational Research</source>, <volume>171</volume>(<issue>3</issue>), <fpage>859</fpage>–<lpage>878</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/j.ejor.2004.09.011" xlink:type="simple">https://doi.org/10.1016/j.ejor.2004.09.011</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_012">
<mixed-citation publication-type="chapter"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name> (<year>2020</year>). <chapter-title>A novel geometric approach to the problem of multidimensional scaling</chapter-title>. In: <string-name><surname>Sergeyev</surname>, <given-names>Y.D.</given-names></string-name>, <string-name><surname>Kvasov</surname>, <given-names>D.E.</given-names></string-name> (Eds.), <source>Numerical Computations: Theory and Algorithms, NUMTA 2019</source>. <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>11974</volume>. <publisher-name>Springer</publisher-name>, <publisher-loc>Cham</publisher-loc>, pp. <fpage>354</fpage>–<lpage>361</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-030-40616-5_30" xlink:type="simple">https://doi.org/10.1007/978-3-030-40616-5_30</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_013">
<mixed-citation publication-type="journal"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name> (<year>2021</year>a). <article-title>Geometric multidimensional scaling: a new approach for data dimensionality reduction</article-title>. <source>Applied Mathematics and Computation</source>, <volume>409</volume>, <fpage>125561</fpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/j.amc.2020.125561" xlink:type="simple">https://doi.org/10.1016/j.amc.2020.125561</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_014">
<mixed-citation publication-type="chapter"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name> (<year>2021</year>b). <chapter-title>New capabilities of the geometric multidimensional scaling</chapter-title>. In: <source>WorldCIST 2021. Advances in Intelligent Systems and Computing</source>. <series><italic>Trends and Applications in Information Systems and Technologies</italic></series>, Vol. <volume>1366</volume>. <publisher-name>Springer</publisher-name>, <publisher-loc>Cham</publisher-loc>, pp. <fpage>264</fpage>–<lpage>273</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-030-72651-5_26" xlink:type="simple">https://doi.org/10.1007/978-3-030-72651-5_26</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_015">
<mixed-citation publication-type="chapter"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name> (<year>2021</year>c). <chapter-title>On the computational efficiency of geometric multidimensional scaling</chapter-title>. In: <source>2021 2nd European Symposium on Software Engineering, ESSE 2021</source>. <publisher-name>Association for Computing Machinery</publisher-name>, <publisher-loc>New York, NY, USA</publisher-loc>, pp. <fpage>136</fpage>–<lpage>141</lpage>. <isbn>9781450385060</isbn>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1145/3501774.3501794" xlink:type="simple">https://doi.org/10.1145/3501774.3501794</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_016">
<mixed-citation publication-type="other"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name> (2022). Geometric multidimensional scaling: efficient approach for data dimensionality reduction. <italic>Journal of Global Optimization</italic>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/s10898-022-01190-8" xlink:type="simple">https://doi.org/10.1007/s10898-022-01190-8</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_017">
<mixed-citation publication-type="chapter"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Medvedev</surname>, <given-names>V.</given-names></string-name> (<year>2007</year>). <chapter-title>Dimension reduction and data visualization using neural networks</chapter-title>. In: <source>Frontiers in Artificial Intelligence and Applications</source>, <series><italic>Emerging Artificial Intelligence Applications in Computer Engineering</italic></series>, Vol. <volume>160</volume>, pp. <fpage>25</fpage>–<lpage>49</lpage>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_018">
<mixed-citation publication-type="book"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Žilinskas</surname>, <given-names>J.</given-names></string-name> (<year>2013</year>). <source>Multidimensional Data Visualization: Methods and Applications</source>. <series>Springer Optimization and its Applications</series>, Vol. <volume>75</volume>. <publisher-name>Springer</publisher-name>, <publisher-loc>New York, NY</publisher-loc>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-1-4419-0236-8" xlink:type="simple">https://doi.org/10.1007/978-1-4419-0236-8</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_019">
<mixed-citation publication-type="chapter"><string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Medvedev</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name> (<year>2022</year>). <chapter-title>Multi-Core Implementation of Geometric Multidimensional Scaling for Large-Scale Data</chapter-title>. In: <source>Information Systems and Technologies. WorldCIST 2022</source>, <series><italic>Lecture Notes in Networks and Systems</italic></series>, Vol. <volume>469</volume>. <publisher-name>Springer International Publishing</publisher-name>, <publisher-loc>Cham</publisher-loc>, pp. <fpage>74</fpage>–<lpage>82</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-031-04819-7_8" xlink:type="simple">https://doi.org/10.1007/978-3-031-04819-7_8</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_020">
<mixed-citation publication-type="journal"><string-name><surname>Espadoto</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Martins</surname>, <given-names>R.M.</given-names></string-name>, <string-name><surname>Kerren</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Hirata</surname>, <given-names>N.S.T.</given-names></string-name>, <string-name><surname>Telea</surname>, <given-names>A.C.</given-names></string-name> (<year>2021</year>). <article-title>Toward a quantitative survey of dimension reduction techniques</article-title>. <source>IEEE Transactions on Visualization and Computer Graphics</source>, <volume>27</volume>(<issue>3</issue>), <fpage>2153</fpage>–<lpage>2173</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/TVCG.2019.2944182" xlink:type="simple">https://doi.org/10.1109/TVCG.2019.2944182</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_021">
<mixed-citation publication-type="journal"><string-name><surname>Groenen</surname>, <given-names>P.J.</given-names></string-name>, <string-name><surname>Mathar</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Heiser</surname>, <given-names>W.J.</given-names></string-name> (<year>1995</year>). <article-title>The majorization approach to multidimensional scaling for Minkowski distances</article-title>. <source>Journal of Classification</source>, <volume>12</volume>(<issue>1</issue>), <fpage>3</fpage>–<lpage>19</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/BF01202265" xlink:type="simple">https://doi.org/10.1007/BF01202265</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_022">
<mixed-citation publication-type="journal"><string-name><surname>Guttman</surname>, <given-names>L.</given-names></string-name> (<year>1968</year>). <article-title>A general nonmetric technique for finding the smallest coordinate space for a configuration of points</article-title>. <source>Psychometrica</source>, <volume>33</volume>, <fpage>469</fpage>–<lpage>506</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/BF02290164" xlink:type="simple">https://doi.org/10.1007/BF02290164</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_023">
<mixed-citation publication-type="journal"><string-name><surname>Handl</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Knowles</surname>, <given-names>J.</given-names></string-name> (<year>2005</year>). <article-title>Cluster generators for large high-dimensional data sets with large numbers of clusters</article-title>. <source>Dimension</source>, <volume>2</volume>, <fpage>20</fpage>. <uri>https://personalpages.manchester.ac.uk/staff/Julia.Handl/data.tar.gz</uri>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_024">
<mixed-citation publication-type="journal"><string-name><surname>Ingram</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Munzner</surname>, <given-names>T.</given-names></string-name>, <string-name><surname>Olano</surname>, <given-names>M.</given-names></string-name> (<year>2008</year>). <article-title>Glimmer: multilevel MDS on the GPU</article-title>. <source>IEEE Transactions on Visualization and Computer Graphics</source>, <volume>15</volume>(<issue>2</issue>), <fpage>249</fpage>–<lpage>261</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/TVCG.2008.85" xlink:type="simple">https://doi.org/10.1109/TVCG.2008.85</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_025">
<mixed-citation publication-type="chapter"><string-name><surname>Ivanikovas</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Medvedev</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name> (<year>2007</year>). <chapter-title>Parallel realizations of the SAMANN algorithm</chapter-title>. In: <source>International Conference on Adaptive and Natural Computing Algorithms</source>. <series><italic>Lecture Notes in Computer Science</italic></series>, Vol. <volume>4432</volume>. <publisher-name>Springer</publisher-name>, pp. <fpage>179</fpage>–<lpage>188</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-540-71629-7_21" xlink:type="simple">https://doi.org/10.1007/978-3-540-71629-7_21</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_026">
<mixed-citation publication-type="book"><string-name><surname>Jackson</surname>, <given-names>J.E.</given-names></string-name> (<year>1991</year>). <source>A User’s Guide to Principal Components</source>, Vol. <volume>587</volume>. <publisher-name>John Wiley &amp; Sons</publisher-name>, <publisher-loc>Hoboken, NJ</publisher-loc>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1002/0471725331" xlink:type="simple">https://doi.org/10.1002/0471725331</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_027">
<mixed-citation publication-type="book"><string-name><surname>Jolliffe</surname>, <given-names>I.</given-names></string-name> (<year>2002</year>). <source>Principal Component Analysis</source>, <edition>second edition</edition>. <publisher-name>Springer-Verlag</publisher-name>, <publisher-loc>New York, Berlin, Heidelberg</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_028">
<mixed-citation publication-type="journal"><string-name><surname>Karbauskaitė</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name> (<year>2015</year>). <article-title>Optimization of the maximum likelihood estimator for determining the intrinsic dimensionality of high-dimensional data</article-title>. <source>International Journal of Applied Mathematics and Computer Science</source>, <volume>25</volume>(<issue>4</issue>), <fpage>895</fpage>–<lpage>913</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1515/amcs-2015-0064" xlink:type="simple">https://doi.org/10.1515/amcs-2015-0064</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_029">
<mixed-citation publication-type="journal"><string-name><surname>Karbauskaitė</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name> (<year>2016</year>). <article-title>Fractal-based methods as a technique for estimating the intrinsic dimensionality of high-dimensional data: a survey</article-title>. <source>Informatica</source>, <volume>27</volume>(<issue>2</issue>), <fpage>257</fpage>–<lpage>281</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.15388/Informatica.2016.84" xlink:type="simple">https://doi.org/10.15388/Informatica.2016.84</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_030">
<mixed-citation publication-type="book"><string-name><surname>Kohonen</surname>, <given-names>T.</given-names></string-name> (<year>2001</year>). <source>Self-Organizing Maps</source>, <edition>3rd</edition> ed. <series>Springer Series in Information Sciences</series>. <publisher-name>Springer-Verlag</publisher-name>, <publisher-loc>Berlin, Heidelberg</publisher-loc>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-642-56927-2" xlink:type="simple">https://doi.org/10.1007/978-3-642-56927-2</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_031">
<mixed-citation publication-type="journal"><string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Molyte</surname>, <given-names>A.</given-names></string-name> (<year>2011</year>). <article-title>Quality of quantization and visualization of vectors obtained by neural gas and self-organizing map</article-title>. <source>Informatica</source>, <volume>22</volume>(<issue>1</issue>), <fpage>115</fpage>–<lpage>134</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.15388/informatica.2011.317" xlink:type="simple">https://doi.org/10.15388/informatica.2011.317</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_032">
<mixed-citation publication-type="book"><string-name><surname>Lee</surname>, <given-names>J.A.</given-names></string-name>, <string-name><surname>Verleysen</surname>, <given-names>M.</given-names></string-name> (<year>2007</year>). <source>Nonlinear Dimensionality Reduction</source>. <publisher-name>Springer Science &amp; Business Media</publisher-name>, <publisher-loc>New York, NY</publisher-loc>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-0-387-39351-3" xlink:type="simple">https://doi.org/10.1007/978-0-387-39351-3</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_033">
<mixed-citation publication-type="journal"><string-name><surname>Mao</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Jain</surname>, <given-names>A.K.</given-names></string-name> (<year>1995</year>). <article-title>Artificial neural networks for feature extraction and multivariate data projection</article-title>. <source>IEEE Transactions on Neural Networks</source>, <volume>6</volume>(<issue>2</issue>), <fpage>296</fpage>–<lpage>317</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/72.363467" xlink:type="simple">https://doi.org/10.1109/72.363467</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_034">
<mixed-citation publication-type="journal"><string-name><surname>Markeviciute</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Bernataviciene</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Levuliene</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Medvedev</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Treigys</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Venskus</surname>, <given-names>J.</given-names></string-name> (<year>2022</year>). <article-title>Attention-based and time series models for short-term forecasting of COVID-19 spread</article-title>. <source>Computers, Materials and Continua</source>, <volume>70</volume>(<issue>1</issue>), <fpage>695</fpage>–<lpage>714</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.32604/cmc.2022.018735" xlink:type="simple">https://doi.org/10.32604/cmc.2022.018735</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_035">
<mixed-citation publication-type="book"><string-name><surname>MATLAB</surname></string-name> (<year>2012</year>). <source>MATLAB and Statistics Toolbox Release 2012b</source>. <publisher-name>The MathWorks Inc.</publisher-name>, <publisher-loc>Natick, Massachusetts, United States</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_036">
<mixed-citation publication-type="journal"><string-name><surname>McInnes</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Healy</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Saul</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Großberger</surname>, <given-names>L.</given-names></string-name> (<year>2018</year>). <article-title>UMAP: uniform manifold approximation and projection</article-title>. <source>Journal of Open Source Software</source>, <volume>3</volume>(<issue>29</issue>), <fpage>861</fpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.21105/joss.00861" xlink:type="simple">https://doi.org/10.21105/joss.00861</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_037">
<mixed-citation publication-type="journal"><string-name><surname>Medvedev</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Marcinkevičius</surname>, <given-names>V.</given-names></string-name> (<year>2011</year>). <article-title>Efficient data projection for visual analysis of large data sets using neural networks</article-title>. <source>Informatica</source>, <volume>22</volume>(<issue>4</issue>), <fpage>507</fpage>–<lpage>520</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.15388/informatica.2011.339" xlink:type="simple">https://doi.org/10.15388/informatica.2011.339</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_038">
<mixed-citation publication-type="book"><string-name><surname>Murphy</surname>, <given-names>K.P.</given-names></string-name> (<year>2022</year>). <source>Probabilistic Machine Learning: An Introduction</source>. <publisher-name>MIT Press</publisher-name>, <publisher-loc>Cambridge, Massachusetts</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_039">
<mixed-citation publication-type="journal"><string-name><surname>Orts</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Filatovas</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Ortega</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Garzón</surname>, <given-names>E.M.</given-names></string-name> (<year>2019</year>). <article-title>Improving the energy efficiency of SMACOF for multidimensional scaling on modern architectures</article-title>. <source>The Journal of Supercomputing</source>, <volume>75</volume>(<issue>3</issue>), <fpage>1038</fpage>–<lpage>1050</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/s11227-018-2285-x" xlink:type="simple">https://doi.org/10.1007/s11227-018-2285-x</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_040">
<mixed-citation publication-type="journal"><string-name><surname>Pace</surname>, <given-names>R.K.</given-names></string-name>, <string-name><surname>Barry</surname>, <given-names>R.</given-names></string-name> (<year>1997</year>). <article-title>Sparse spatial autoregressions</article-title>. <source>Statistics &amp; Probability Letters</source>, <volume>33</volume>(<issue>3</issue>), <fpage>291</fpage>–<lpage>297</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/s0167-7152(96)00140-x" xlink:type="simple">https://doi.org/10.1016/s0167-7152(96)00140-x</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_041">
<mixed-citation publication-type="journal"><string-name><surname>Pawliczek</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Dzwinel</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Yuen</surname>, <given-names>D.A.</given-names></string-name> (<year>2014</year>). <article-title>Visual exploration of data by using multidimensional scaling on multicore CPU, GPU, and MPI cluster</article-title>. <source>Concurrency and Computation: Practice and Experience</source>, <volume>26</volume>(<issue>3</issue>), <fpage>662</fpage>–<lpage>682</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1002/cpe.3027" xlink:type="simple">https://doi.org/10.1002/cpe.3027</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_042">
<mixed-citation publication-type="journal"><string-name><surname>Pedregosa</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Varoquaux</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Gramfort</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Michel</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Thirion</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Grisel</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Blondel</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Prettenhofer</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Weiss</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Dubourg</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Vanderplas</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Passos</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Cournapeau</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Brucher</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Perrot</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Duchesnay</surname>, <given-names>E.</given-names></string-name> (<year>2011</year>). <article-title>Scikit-learn: machine learning in Python</article-title>. <source>Journal of Machine Learning Research</source>, <volume>12</volume>, <fpage>2825</fpage>–<lpage>2830</lpage>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_043">
<mixed-citation publication-type="journal"><string-name><surname>Qiu</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Bae</surname>, <given-names>S.-H.</given-names></string-name> (<year>2012</year>). <article-title>Performance of windows multicore systems on threading and MPI</article-title>. <source>Concurrency and Computation: Practice and Experience</source>, <volume>24</volume>(<issue>1</issue>), <fpage>14</fpage>–<lpage>28</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1002/cpe.1762" xlink:type="simple">https://doi.org/10.1002/cpe.1762</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_044">
<mixed-citation publication-type="journal"><string-name><surname>Ray</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Reddy</surname>, <given-names>S.S.</given-names></string-name>, <string-name><surname>Banerjee</surname>, <given-names>T.</given-names></string-name> (<year>2021</year>). <article-title>Various dimension reduction techniques for high dimensional data analysis: a review</article-title>. <source>Artificial Intelligence Review</source>, <volume>54</volume>(<issue>5</issue>), <fpage>3473</fpage>–<lpage>3515</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/s10462-020-09928-0" xlink:type="simple">https://doi.org/10.1007/s10462-020-09928-0</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_045">
<mixed-citation publication-type="chapter"><string-name><surname>Sabaliauskas</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Dzemyda</surname>, <given-names>G.</given-names></string-name> (<year>2021</year>). <chapter-title>Visual analysis of multidimensional scaling using GeoGebra</chapter-title>. In: <string-name><surname>Dzitac</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Dzitac</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Filip</surname>, <given-names>F.G.</given-names></string-name>, <string-name><surname>Kacprzyk</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Manolescu</surname>, <given-names>M.-J.</given-names></string-name>, <string-name><surname>Oros</surname>, <given-names>H.</given-names></string-name> (Eds.), <source>Intelligent Methods in Computing, Communications and Control</source>. <publisher-name>Springer International Publishing</publisher-name>, <publisher-loc>Cham</publisher-loc>, pp. <fpage>179</fpage>–<lpage>187</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-3-030-53651-0_15" xlink:type="simple">https://doi.org/10.1007/978-3-030-53651-0_15</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_046">
<mixed-citation publication-type="chapter"><string-name><surname>Song</surname>, <given-names>H.O.</given-names></string-name>, <string-name><surname>Xiang</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Jegelka</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Savarese</surname>, <given-names>S.</given-names></string-name> (<year>2016</year>). <chapter-title>Deep metric learning via lifted structured feature embedding</chapter-title>. In: <source>2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)</source>. <publisher-name>IEEE</publisher-name>, pp. <fpage>4004</fpage>–<lpage>4012</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1109/CVPR.2016.434" xlink:type="simple">https://doi.org/10.1109/CVPR.2016.434</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_047">
<mixed-citation publication-type="journal"><string-name><surname>Stefanovic</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Kurasova</surname>, <given-names>O.</given-names></string-name> (<year>2011</year>). <article-title>Visual analysis of self-organizing maps</article-title>. <source>Nonlinear Analysis-Modelling and Control</source>, <volume>16</volume>(<issue>4</issue>), <fpage>488</fpage>–<lpage>504</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.15388/NA.16.4.14091" xlink:type="simple">https://doi.org/10.15388/NA.16.4.14091</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_048">
<mixed-citation publication-type="book"><string-name><surname>Torgerson</surname>, <given-names>W.S.</given-names></string-name> (<year>1958</year>). <source>Theory and Methods of Scaling</source>. <publisher-name>John Wiley</publisher-name>, <publisher-loc>Oxford, England</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_049">
<mixed-citation publication-type="other"><string-name><surname>Vachharajani</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Pandya</surname>, <given-names>D.</given-names></string-name> (2022). Dimension reduction techniques: current status and perspectives. <italic>Materials Today: Proceedings</italic>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/j.matpr.2021.12.549" xlink:type="simple">https://doi.org/10.1016/j.matpr.2021.12.549</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_050">
<mixed-citation publication-type="journal"><string-name><surname>Van der Maaten</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Hinton</surname>, <given-names>G.</given-names></string-name> (<year>2008</year>). <article-title>Visualizing data using t-SNE.</article-title> <source>Journal of Machine Learning Research</source>, <volume>9</volume>(<issue>11</issue>), <fpage>2579</fpage>–<lpage>2605</lpage>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_051">
<mixed-citation publication-type="journal"><string-name><surname>Van Der Maaten</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Postma</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Van den Herik</surname>, <given-names>J.</given-names></string-name> (<year>2009</year>). <article-title>Dimensionality reduction: a comparative review</article-title>. <source>Journal of machine learning research</source>, <volume>10</volume>(<issue>13</issue>), <fpage>66</fpage>–<lpage>71</lpage>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_052">
<mixed-citation publication-type="journal"><string-name><surname>Wang</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Huang</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Rudin</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Shaposhnik</surname>, <given-names>Y.</given-names></string-name> (<year>2021</year>). <article-title>Understanding how dimension reduction tools work: an empirical approach to deciphering t-SNE, UMAP, TriMap, and PaCMAP for data visualization</article-title>. <source>Journal of Machine Learning Research</source>, <volume>22</volume>(<issue>201</issue>), <fpage>1</fpage>–<lpage>73</lpage>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_053">
<mixed-citation publication-type="journal"><string-name><surname>Xu</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Liang</surname>, <given-names>T.</given-names></string-name>, <string-name><surname>Zhu</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Zheng</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Sun</surname>, <given-names>T.</given-names></string-name> (<year>2019</year>). <article-title>Review of classical dimensionality reduction and sample selection methods for large-scale data processing</article-title>. <source>Neurocomputing</source>, <volume>328</volume>, <fpage>5</fpage>–<lpage>15</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1016/j.neucom.2018.02.100" xlink:type="simple">https://doi.org/10.1016/j.neucom.2018.02.100</ext-link>.</mixed-citation>
</ref>
<ref id="j_infor491_ref_054">
<mixed-citation publication-type="chapter"><string-name><surname>Zhou</surname>, <given-names>Z.-H.</given-names></string-name> (<year>2021</year>). <chapter-title>Dimensionality reduction and metric learning</chapter-title>. In: <source>Machine Learning</source>. <publisher-name>Springer</publisher-name>, <publisher-loc>Singapore</publisher-loc>, pp. <fpage>241</fpage>–<lpage>264</lpage>. <ext-link ext-link-type="doi" xlink:href="https://doi.org/10.1007/978-981-15-1967-3_10" xlink:type="simple">https://doi.org/10.1007/978-981-15-1967-3_10</ext-link>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>
