<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.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">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/frobt.2018.00018</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Robotics and AI</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Clustering Using Boosted Constrained k-Means Algorithm</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Okabe</surname> <given-names>Masayuki</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="cor1">&#x0002A;</xref>
<uri xlink:href="http://frontiersin.org/people/u/475297"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Yamada</surname> <given-names>Seiji</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://frontiersin.org/people/u/420370"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Faculty of Management and Information Systems, Prefectural University of Hiroshima</institution>, <addr-line>Hiroshima</addr-line>, <country>Japan</country></aff>
<aff id="aff2"><sup>2</sup><institution>Digital Content and Media Sciences Research Divsion, National Institute of Informatics, The Graduate University for Advanced Studies (SOKENDAI)</institution>, <addr-line>Tokyo</addr-line>, <country>Japan</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Thomas Nowotny, University of Sussex, United Kingdom</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Hussein Abbass, Canberra, University of New South Wales, Australia; Andre Gruning, University of Surrey, United Kingdom</p></fn>
<corresp content-type="corresp" id="cor1">&#x0002A;Correspondence: Masayuki Okabe, <email>okabe&#x00040;pu-hiroshima.ac.jp</email></corresp>
<fn fn-type="other" id="fn001"><p>Specialty section: This article was submitted to Computational Intelligence, a section of the journal Frontiers in Robotics and AI</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>08</day>
<month>03</month>
<year>2018</year>
</pub-date>
<pub-date pub-type="collection">
<year>2018</year>
</pub-date>
<volume>5</volume>
<elocation-id>18</elocation-id>
<history>
<date date-type="received">
<day>22</day>
<month>09</month>
<year>2017</year>
</date>
<date date-type="accepted">
<day>06</day>
<month>02</month>
<year>2018</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2018 Okabe and Yamada.</copyright-statement>
<copyright-year>2018</copyright-year>
<copyright-holder>Okabe and Yamada</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>This article proposes a constrained clustering algorithm with competitive performance and less computation time to the state-of-the-art methods, which consists of a constrained k-means algorithm enhanced by the boosting principle. Constrained k-means clustering using constraints as background knowledge, although easy to implement and quick, has insufficient performance compared with metric learning-based methods. Since it simply adds a function into the data assignment process of the k-means algorithm to check for constraint violations, it often exploits only a small number of constraints. Metric learning-based methods, which exploit constraints to create a new metric for data similarity, have shown promising results although the methods proposed so far are often slow depending on the amount of data or number of feature dimensions. We present a method that exploits the advantages of the constrained k-means and metric learning approaches. It incorporates a mechanism for accepting constraint priorities and a metric learning framework based on the boosting principle into a constrained k-means algorithm. In the framework, a metric is learned in the form of a kernel matrix that integrates weak cluster hypotheses produced by the constrained k-means algorithm, which works as a weak learner under the boosting principle. Experimental results for 12 data sets from 3 data sources demonstrated that our method has performance competitive to those of state-of-the-art constrained clustering methods for most data sets and that it takes much less computation time. Experimental evaluation demonstrated the effectiveness of controlling the constraint priorities by using the boosting principle and that our constrained k-means algorithm functions correctly as a weak learner of boosting.</p>
</abstract>
<kwd-group>
<kwd>constrained clustering</kwd>
<kwd>metric learning</kwd>
<kwd>boosting</kwd>
<kwd>constrained k-means algorithm</kwd>
<kwd>kernel matrix learning</kwd>
</kwd-group>
<counts>
<fig-count count="4"/>
<table-count count="7"/>
<equation-count count="6"/>
<ref-count count="33"/>
<page-count count="16"/>
<word-count count="10650"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="introduction">
<label>1</label> <title>Introduction</title>
<p>Constrained data clustering produces desirable clusters by using two types of pairwise constraints: must-link and cannot-link (Basu et al., <xref ref-type="bibr" rid="B2">2008</xref>). Constraints are a means of supervision that constrain a pair of data points to belong to the same cluster (must-link) or different clusters (cannot-link) or that simply describe whether a pair of data points are similar or dissimilar. In certain applications such as the clustering of faces in videos (Wu et al., <xref ref-type="bibr" rid="B31">2013</xref>) and the assessing of interpatient similarity (Wang et al., <xref ref-type="bibr" rid="B30">2011</xref>) when class labels are not available, constraints are particularly important for enhancing performance.</p>
<p>The constrained clustering algorithms developed so far mainly use these constraints in two ways (Davidson and Basu, <xref ref-type="bibr" rid="B6">2006</xref>). One way is to use them as background knowledge during data partitioning and integration. For example, the COP-k-means constrained k-means algorithm (Wagstaff et al., <xref ref-type="bibr" rid="B29">2001</xref>) uses constraints as knowledge to restrict the data assignment process of the original k-means algorithm. That is, a data point is assigned to a cluster for which the members are constrained to be a must-link with the data point or every member is not constrained as a cannot-link with the data point even if there is another cluster for which the centroid is closer to the data point. Thus, in the COP-k-means algorithm, data are not always assigned to the nearest centroid if the assignment violates a certain constraint. Although the COP-k-means algorithm is quick like the k-means algorithm and completely satisfies the constraints if it only considers must-link constraints, it often fails to satisfy constraints if it has to consider a number of cannot-link constraints.</p>
<p>The other way is to use metric learning, in which a distance measure or a kernel matrix of a data set is learned. Once a metric is learned, it can be used with clustering algorithms instead of a general metric such as the Euclidean distance. In this type of algorithm, a metric is learned as the value of each constrained data pair for the metric comes closer to the preset value of a must-link or cannot-link constraint. For example, if a distance measure is learned in the form of the Mahalanobis distance, a covariance matrix is learned as the value of each constrained data pair. It is small for a must-link constraint and large for a cannot-link one (Davis et al., <xref ref-type="bibr" rid="B9">2007</xref>; Kulis et al., <xref ref-type="bibr" rid="B18">2009</xref>; Liu et al., <xref ref-type="bibr" rid="B20">2010</xref>). With kernel matrix learning, the learned kernel metric is large for must-link and small for cannot-link (Hoi et al., <xref ref-type="bibr" rid="B15">2007</xref>; Li et al., <xref ref-type="bibr" rid="B19">2008</xref>). Although several studies have indicated that metric learning is more effective than the COP-k-means approach, metric learning algorithms can be slow if the number of data points or the data dimension is large (Wu et al., <xref ref-type="bibr" rid="B32">2009</xref>; Jain et al., <xref ref-type="bibr" rid="B16">2010</xref>). The time complexity of metric learning algorithms is often more than <italic>O</italic>(N<sup>2</sup>) in contrast to about <italic>O</italic>(<italic>kN</italic>) for COP-k-means ones, where <italic>N</italic> and <italic>k</italic> are the number of data points and clusters, respectively.</p>
<p>We have developed a constrained clustering algorithm that exploits the computation time advantage of the COP-k-means algorithm and that uses metric learning based on the boosting principle to enhance performance (Dietterich, <xref ref-type="bibr" rid="B10">2000</xref>; Schapire and Freund, <xref ref-type="bibr" rid="B25">2012</xref>). Boosting is a technique for creating a strong hypothesis from an ensemble of weak ones by controlling data priorities. With our algorithm, a hypothesis is a data similarity metric that is represented by a kernel matrix.</p>
<p>We first focused on the fact that the COP-k-means algorithm produces unstable clustering results because the constraints to be satisfied are implicitly decided on the basis of the data assignment order of the k-means process. We modified it so that the constraints are explicitly satisfied in accordance with their priorities. Once the constraint priorities are set, our modified constrained k-means algorithm tries to satisfy the constraints in order of their priorities. We introduced a framework for deciding the priorities on the basis of the boosting principle. This framework controls the constraint priorities in accordance with the boosting principle and makes our constrained k-means algorithm function as a weak learner that iteratively produces weak cluster hypotheses in the form of kernel matrices. These kernel matrices are integrated into a single kernel matrix representing a strong cluster hypothesis that reflects not only pre-given must-link and cannot-link constraints but also latently constrained data pairs.</p>
<p>The proposed metric learning framework is shown in Figure <xref ref-type="fig" rid="F1">1</xref>. Once given a set of data and constraints (upper left in figure), the framework initiates a boosting process aimed at learning a data similarity metric in the form of kernel matrix <italic>K</italic>. In the boosting process, our constrained k-means algorithm works as a weak learner and produces a weak cluster hypothesis by changing the data assignment order of the k-means process in accordance with the constraint priorities, which are updated in each boosting round <italic>t</italic>. Each cluster hypothesis is converted into a kernel matrix <italic>K<sup>t</sup></italic>, and the hypotheses are integrated into a single matrix with importance value &#x003B1;<italic><sub>t</sub></italic>. The main contributions of our research are as follows.</p>
<list list-type="order">
<list-item><p>We propose a constrained clustering method with clustering performance competitive to that of state-of-the-art methods and with less computation time. It combines a new constrained k-means algorithm with the boosting principle.</p></list-item>
<list-item><p>We propose a constrained k-means algorithm that considers the priorities of the constraints and functions as a weak learner of boosting and that has computation time competitive to that of the conventional k-means algorithm.</p></list-item>
</list>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Outline of the proposed metric learning framework under the boosting process. The process starts from the left top and finish in the right bottom.</p></caption>
<graphic xlink:href="frobt-05-00018-g001.tif"/>
</fig>
<p>The reminder of this article is structured as follows: Section <xref ref-type="sec" rid="S2">2</xref> describes the related work. Section <xref ref-type="sec" rid="S3">3</xref> first introduces the COP-k-means algorithm, pointing out that the constraints to be satisfied are randomly decided and then presents our constrained k-means algorithm that considers constraint priorities. Section <xref ref-type="sec" rid="S4">4</xref> explains the boosting framework used to control the constraint priorities and describes how our constrained k-means algorithm functions as a weak learner in the framework. Section <xref ref-type="sec" rid="S5">5</xref> demonstrates the effectiveness of our algorithm compared with other state-of-the-art constrained clustering algorithms. Section <xref ref-type="sec" rid="S6">6</xref> analyzes the experimental results. Finally, Section <xref ref-type="sec" rid="S7">7</xref> summarizes the key points and mentions the future work.</p>
</sec>
<sec id="S2">
<label>2</label> <title>Related Works</title>
<p>The COP-k-means algorithm (Wagstaff et al., <xref ref-type="bibr" rid="B29">2001</xref>) is the first implementation of the constrained k-means method to use pairwise constraints as background knowledge to constrain the k-means data assignment process. Application of the algorithm to the problem of road lane detection from GPS data showed that its performance is dramatically better than that of the conventional k-means algorithm.</p>
<p>Metric learning has been used to exploit pairwise constraints. Basu et al. (<xref ref-type="bibr" rid="B2">2008</xref>) proposed a semi-supervised clustering method that combines a constrained k-means approach with a metric learning method that relies on hidden random Markov fields (HMRFs). Davis et al. (<xref ref-type="bibr" rid="B9">2007</xref>) proposed a metric learning method based on the information theory. It learns a Mahalanobis metric that distorts the distance between data points on the basis of must-link and cannot-link constraints so as to minimize the relative entropy between multivariate Gaussian distributions parameterized by the initial covariance matrix and the learned matrix. Its performance is better than that of methods using HMRFs. Li et al. (<xref ref-type="bibr" rid="B19">2008</xref>) proposed another metric learning approach in which a kernel matrix is learned as a metric that reflects given constraints. They formulated the learning as an optimization problem in which the distance between data points in a high-dimensional space is minimized in accordance with the constraints. Although it needs much computation time since the problem is formulated as a semidefinite programming problem, it outperformed other related methods.</p>
<p>As for the boosting-based metric learning methods, Hertz et al. (<xref ref-type="bibr" rid="B13">2004</xref>, <xref ref-type="bibr" rid="B14">2006</xref>) proposed a boosting-based method called DistBoost for learning a distance function. It uses a Gaussian mixture model (GMM) as a weak learner of boosting that learns a hypothesis to be output as a signed confidence measure representing whether a pair of data points originate from the same or different Gaussian sources. This hypothesis is used as a distance function for unlabeled data pairs. Although this approach is similar to ours, its weak learner and the use of constraints are different. Constraints are used for data sampling in the expectation maximization (EM) algorithm to learn GMM parameters. Training a GMM is not easy and generally time consuming, especially when the data dimension is large. Liu et al. (<xref ref-type="bibr" rid="B21">2007</xref>) proposed a boosting-based constrained clustering method called BoostCluster. It uses an original boosting framework that creates a feature vector in each round and that can use any type of weak learner. The performance thus depends on the weak learner used. It can be time consuming depending on the data set since it uses eigenvalue decomposition for the square matrix of size <italic>n<sup>2</sup></italic>, where <italic>n</italic> is the number of data points. Crammer et al. (<xref ref-type="bibr" rid="B4">2002</xref>) proposed a boosting-based method for learning a kernel matrix. Although its approach is similar to those of Hertz and ours, the target task is a classification problem that requires labeled data, not constrained data pairs. Thus, it is difficult to use for clustering.</p>
<p>As described above, our algorithm uses a different weak learner for boosting, uses constraints in a unique manner, and is not time consuming compared to other state-of-the-art constrained clustering algorithms.</p>
</sec>
<sec id="S3">
<label>3</label> <title>Constrained k-Means Algorithm and Data Assignment Order</title>
<p>In this section, we first explain the COP-k-means algorithm and show that it produces unstable clustering results depending on the data assignment order even if the initial k-means cluster centers are fixed. Then we present our modified constrained k-means algorithm that can control the assignment order of constrained data points in accordance with their pre-given priorities. We design it to work as a weak learner of boosting introduced in the next section.</p>
<sec id="S3-1">
<label>3.1</label> <title>Cop-k-Means Algorithm</title>
<p>The COP-k-means algorithm is based on the k-means algorithm (MacQueen, <xref ref-type="bibr" rid="B22">1967</xref>), which is widely used for various clustering problems because it is easy to implement and quick (Han et al., <xref ref-type="bibr" rid="B12">2011</xref>). The COP-k-means algorithm simply adds a constraint violation checking process to the k-means algorithm. Algorithm <xref ref-type="table" rid="T5">1</xref> shows the COP-k-means procedure (Wagstaff et al., <xref ref-type="bibr" rid="B29">2001</xref>). It satisfies constraints by assigning each data point to the nearest cluster center for which the assignment does not violate a constraint (see line 2 in Algorithm <xref ref-type="table" rid="T5">1</xref>). Since this is the only procedural difference from the original k-means algorithm, it is as quick as the original.</p>
<table-wrap position="float" id="T5">
<label>Algorithm 1</label>
<caption><p>COP-k-means algorithm.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left">COP-k-means (data set <italic>D</italic>, must-link constraints <italic>Con</italic><sub>&#x0003D;</sub> &#x02208;<italic>D</italic>&#x02009;&#x000D7;&#x02009;<italic>D</italic>, cannot-link constraints <italic>Con</italic><sub>&#x02260;</sub> &#x02208;<italic>D</italic>&#x02009;&#x000D7;&#x02009;<italic>D</italic>)</td>
</tr>
<tr>
<td align="left">1: Let <italic>C</italic><sub>1</sub>,&#x02026;,<italic>C<sub>k</sub></italic> be the initial cluster centers.</td>
</tr>
<tr>
<td align="left">2: For each point <italic>d<sub>i</sub></italic> in <italic>D</italic>, assign it to the closest cluster <italic>C<sub>i</sub></italic> such that VIOLATE-CONSTRAINTS(<italic>d<sub>i</sub>, C<sub>j</sub>, Con</italic><sub>&#x0003D;</sub>, <italic>Con</italic><sub>&#x02260;</sub>) is false.</td>
</tr>
<tr>
<td align="left">3: If no such cluster exists, fail and return.</td>
</tr>
<tr>
<td align="left">4: For each cluster <italic>C<sub>i</sub></italic>, update its center by averaging all of the points <italic>d<sub>i</sub></italic> that have been assigned to it.</td>
</tr>
<tr>
<td align="left">5: Iterate between step 2 and step 4 until convergence.</td>
</tr>
<tr>
<td align="left">6: Return <italic>C</italic><sub>1</sub>, &#x02026;&#x02009;, <italic>C<sub>k</sub></italic>.</td>
</tr>
<tr>
<td align="left">VIOLATE-CONSTRAINTS(<italic>d, C, Con</italic><sub>&#x0003D;</sub>, <italic>Con</italic><sub>&#x02260;</sub>)</td>
</tr>
<tr>
<td align="left">7: For each (<italic>d, d<sub>m</sub></italic>) &#x02208;<italic>Con</italic><sub>&#x0003D;</sub>: If <italic>d<sub>m</sub></italic> &#x02209; C, return true.</td>
</tr>
<tr>
<td align="left">8: For each (<italic>d, d<sub>c</sub></italic>) &#x02208;<italic>Con</italic><sub>&#x0003D;</sub>: If <italic>d<sub>c</sub></italic> &#x02208;<italic>C</italic>, return true.</td>
</tr>
<tr>
<td align="left">9: Otherwise, return false.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>However, this algorithm fails and returns nothing if there is no cluster to which it can assign a data point, which can happen when using cannot-link constraints. For example, consider the case of assigning a data point <italic>d<sub>i</sub></italic> that is constrained by cannot-links (<italic>d<sub>i</sub>, d<sub>c</sub></italic>) &#x02208; <italic>Con</italic><sub>&#x02260;</sub>(<italic>c</italic>&#x02009;&#x0003D;&#x02009;1&#x02009;&#x0223C;&#x02009;<italic>k</italic>). If every cluster has a data point <italic>d<sub>c</sub></italic>(<italic>c</italic>&#x02009;&#x0003D;&#x02009;1&#x02009;&#x0223C;&#x02009;<italic>k</italic>), there is no cluster to which <italic>d<sub>i</sub></italic> can be assigned because any assignment would violate a cannot-link constraint. Constrained clustering using cannot-link tends to be an NP-complete problem (Davidson and Ravi, <xref ref-type="bibr" rid="B7">2005</xref>), and it is difficult for the COP-k-means algorithm, which is based on a simple depth-first search without a backtracking mechanism, to solve such a complex problem. One way to overcome this problem is to give up on satisfying all constraints. Since the performance of constrained clustering depends on the constraint set used (Davidson et al., <xref ref-type="bibr" rid="B8">2006</xref>; Davidson, <xref ref-type="bibr" rid="B5">2012</xref>), the constraints to be satisfied should be prioritized if all the constraints cannot be satisfied. Ignoring for the moment the question of which constraints to satisfy, we first modified the COP-k-means algorithm to accept prioritized constraints and then tried to satisfy them on the basis of their priorities.</p>
</sec>
<sec id="S3-2">
<label>3.2</label> <title>Constrained k-Means Algorithm with Variable Data Assignment Order</title>
<p>The objectives for modifying the COP-k-means algorithm are summarized as follows.
<list list-type="order">
<list-item><p>To return a clustering result permitting a partial constraint violation.</p></list-item>
<list-item><p>To enable the constraints to be satisfied in accordance with their given priorities.</p></list-item>
</list></p>
<p>Since there are many constrained clustering problems that the COP-k-means algorithm cannot solve, especially when using cannot-link constraints, we formulated our constrained k-means algorithm so that it never aborts even if a constraint violation occurs. We also added a mechanism for satisfying the constraints in order of their pre-given priorities because the constraints to be satisfied should be selected carefully since clustering performance depends on the selection.</p>
<p>The formulated algorithm is shown in Algorithm <xref ref-type="table" rid="T6">2</xref>. To ensure that the constraints with higher priorities are satisfied first, we modified the procedure used in the COP-k-means algorithm to assign each data point to a cluster center. In our algorithm, the data pairs related to the constraints are first sorted on the basis of their priorities and then assigned to cluster centers in a descending priority order. Only for the initial assignments is the order randomly decided. Since our algorithm assigns a data pair and not a data point at a time, it has many conditional branches for avoiding constraint violations as much as possible. A data point may be related to more than one constraint, so a data pair may include a data point that has already been assigned in the previous data pair assignment. There are three main branching patterns:
<list list-type="order">
<list-item><p>Both components of a data pair have not yet been assigned (steps 6&#x02013;23).</p></list-item>
<list-item><p>One component of a data pair has not yet been assigned (steps 24&#x02013;35).</p></list-item>
<list-item><p>Both components of a data pair have already been assigned (steps 36&#x02013;37).</p></list-item>
</list></p>
<table-wrap position="float" id="T6">
<label>Algorithm 2</label>
<caption><p>Constrained k-means algorithm with variable data assignment order.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="center"/>
<td align="left">INPUT: Data set <italic>D</italic>, must-link constraints with priorities <inline-formula><mml:math id="M1"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula>, cannot-link constraints with priorities <inline-formula><mml:math id="M2"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02260;</mml:mo></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula>)</td>
</tr>
<tr>
<td align="center"/>
<td align="left">OUTPUT: Clusters <italic>C</italic><sub>1</sub>, &#x02026;&#x02009;, <italic>C<sub>k</sub></italic></td>
</tr>
<tr>
<td align="center">1:</td>
<td align="left">Let <italic>C</italic><sub>1</sub>, &#x02026;&#x02009;, <italic>C<sub>k</sub></italic> be the initial cluster centers.</td>
</tr>
<tr>
<td align="center">2:</td>
<td align="left">Let <inline-formula><mml:math id="M3"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">all</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup><mml:mo class="MathClass-bin">&#x0222A;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02260;</mml:mo></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula>.</td>
</tr>
<tr>
<td align="center">3:</td>
<td align="left"><bold>While</bold> <inline-formula><mml:math id="M4"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">all</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x02260;</mml:mo><mml:mo class="MathClass-rel">&#x02205;</mml:mo></mml:math></inline-formula><bold>do</bold></td>
</tr>
<tr>
<td align="center">4:</td>
<td align="left">&#x02003;Select the constrained data pair (<italic>d<sub>i</sub>, d<sub>j</sub></italic>) that has the highest constraint priority.</td>
</tr>
<tr>
<td align="center">5:</td>
<td align="left">&#x02003;Remove it from <inline-formula><mml:math id="M5"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">all</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula>.</td>
</tr>
<tr>
<td align="center">6:</td>
<td align="left">&#x02003;<bold>if</bold> Both <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are not assigned to cluster centers yet <bold>then</bold></td>
</tr>
<tr>
<td align="center">7:</td>
<td align="left">&#x02003;&#x02003;Let <italic>c<sub>i</sub></italic> and <italic>c<sub>j</sub></italic> be the nearest cluster centers for <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic>, respectively.</td>
</tr>
<tr>
<td align="center">8:</td>
<td align="left">&#x02003;&#x02003;Let <italic>dist</italic>(<italic>d, c</italic>) be the distance between a data point <italic>d</italic> and a cluster center <italic>c</italic>.</td>
</tr>
<tr>
<td align="center">9:</td>
<td align="left">&#x02003;&#x02003;<bold>if</bold> <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are constrained as must-link <bold>then</bold></td>
</tr>
<tr>
<td align="center">10:</td>
<td align="left">&#x02003;&#x02003;<bold>if</bold> <italic>dist</italic>(<italic>d<sub>i</sub>, c<sub>i)</sub></italic>&#x02009;&#x02264;&#x02009;<italic>dist</italic>(<italic>d<sub>j</sub>, c<sub>j</sub></italic>) <bold>then</bold></td>
</tr>
<tr>
<td align="center">11:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> to <italic>c<sub>i</sub></italic></td>
</tr>
<tr>
<td align="center">12:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<bold>else</bold></td>
</tr>
<tr>
<td align="center">13:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> to <italic>c<sub>j</sub></italic></td>
</tr>
<tr>
<td align="center">14:</td>
<td align="left">&#x02003;&#x02003;<bold>else if</bold> <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are constrained as cannot-link <bold>then</bold></td>
</tr>
<tr>
<td align="center">15:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<bold>if</bold> <italic>c<sub>i</sub></italic> &#x02260; <italic>c<sub>j</sub></italic> <bold>then</bold></td>
</tr>
<tr>
<td align="center">16:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> to <italic>c<sub>i</sub></italic> and <italic>c<sub>j</sub></italic>, respectively</td>
</tr>
<tr>
<td align="center">17:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<bold>else if</bold> <italic>c<sub>i</sub></italic>&#x02009;&#x0003D;&#x02009;<italic>c<sub>j</sub></italic> <bold>then</bold></td>
</tr>
<tr>
<td align="center">18:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;<bold>if</bold> <italic>dist</italic>(<italic>d<sub>i</sub>, c<sub>i</sub></italic>)&#x02009;&#x02264;&#x02009;<italic>dist</italic>(<italic>d<sub>j</sub>, c<sub>j</sub></italic>) <bold>then</bold></td>
</tr>
<tr>
<td align="center">19:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>i</sub></italic> to <italic>c<sub>i</sub></italic>.</td>
</tr>
<tr>
<td align="center">20:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>j</sub></italic> to the second nearest cluster center after <italic>c<sub>j</sub></italic>.</td>
</tr>
<tr>
<td align="center">21:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;<bold>else</bold></td>
</tr>
<tr>
<td align="center">22:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>j</sub></italic> to <italic>c<sub>j</sub></italic>.</td>
</tr>
<tr>
<td align="center">23:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>i</sub></italic> to the second nearest cluster center after <italic>c<sub>i</sub></italic>.</td>
</tr>
<tr>
<td align="center">24:</td>
<td align="left">&#x02003;<bold>else if</bold> <italic>d<sub>i</sub></italic> is already assigned and <italic>d<sub>j</sub></italic> is not assigned yet <bold>then</bold></td>
</tr>
<tr>
<td align="center">25:</td>
<td align="left">&#x02003;&#x02003;Let <italic>c<sub>i</sub></italic> be the cluster center where <italic>d<sub>i</sub></italic> is assigned</td>
</tr>
<tr>
<td align="center">26:</td>
<td align="left">&#x02003;&#x02003;<bold>if</bold> <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are constrained as must-link <bold>then</bold></td>
</tr>
<tr>
<td align="center">27:</td>
<td align="left">&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>j</sub></italic> to <italic>c<sub>i</sub></italic></td>
</tr>
<tr>
<td align="center">28:</td>
<td align="left">&#x02003;&#x02003;<bold>else if</bold> <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are constrained as cannot-link <bold>then</bold></td>
</tr>
<tr>
<td align="center">29:</td>
<td align="left">&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>j</sub></italic> to the nearest cluster center other than <italic>c<sub>i</sub></italic></td>
</tr>
<tr>
<td align="center">30:</td>
<td align="left">&#x02003;<bold>else if</bold> <italic>d<sub>i</sub></italic> is not assigned yet and <italic>d<sub>j</sub></italic> is already assigned <bold>then</bold></td>
</tr>
<tr>
<td align="center">31:</td>
<td align="left">&#x02003;&#x02003;Let <italic>c<sub>j</sub></italic> be the cluster center where <italic>d<sub>j</sub></italic> is assigned</td>
</tr>
<tr>
<td align="center">32:</td>
<td align="left">&#x02003;&#x02003;<bold>if</bold> <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are constrained as must-link <bold>then</bold></td>
</tr>
<tr>
<td align="center">33:</td>
<td align="left">&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>i</sub></italic> to <italic>c<sub>j</sub></italic></td>
</tr>
<tr>
<td align="center">34:</td>
<td align="left">&#x02003;&#x02003;<bold>else if</bold> <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are constrained as cannot-link <bold>then</bold></td>
</tr>
<tr>
<td align="center">35:</td>
<td align="left">&#x02003;&#x02003;&#x02003;Assign <italic>d<sub>i</sub></italic> to the nearest cluster center other than <italic>c<sub>j</sub></italic></td>
</tr>
<tr>
<td align="center">36:</td>
<td align="left">&#x02003;<bold>else if</bold> both <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> are already assigned <bold>then</bold></td>
</tr>
<tr>
<td align="center">37:</td>
<td align="left">&#x02003;&#x02003;Do nothing regardless of whether the constraint between <italic>d<sub>i</sub></italic> and <italic>d<sub>j</sub></italic> is satisfied.</td>
</tr>
<tr>
<td align="center">38:</td>
<td align="left">Assign all unconstrained data points to their nearest cluster centers.</td>
</tr>
<tr>
<td align="center">39:</td>
<td align="left">For each cluster <italic>C<sub>i</sub></italic>, update its center by averaging all of the points <italic>d<sub>i</sub></italic> that have been assigned to it.</td>
</tr>
<tr>
<td align="center">40:</td>
<td align="left">Iterate between step 3 and step 39 until convergence.</td>
</tr>
<tr>
<td align="center">41:</td>
<td align="left">Return <italic>C</italic><sub>1</sub>, &#x02026;&#x02009;, <italic>C<sub>k</sub></italic>.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>For patterns 1 and 2, more conditional branching is needed depending on whether and how the data pair are constrained (must-link or cannot-link). For pattern 1 and the must-link constraint, both data points are assigned to the cluster center with a distance to the nearest data point less than that of another cluster center (steps 9&#x02013;13). For pattern 1 and the cannot-link constraint, the data point closest to the nearest cluster center is assigned to that center, and the other data point is assigned to the second nearest cluster center (steps 14&#x02013;23). For pattern 3, constraint violations are ignored (step 35). The algorithm assigns unconstrained data after the constrained data have been assigned. This assignment procedure is repeated until the cluster set becomes stable.</p>
<p>Our algorithm is based on the assumption that the earlier the assignment of a constrained data pair, the greater the probability of the constraint being satisfied. Although constraint satisfaction is guaranteed only for data pairs with the first or second highest priority,<xref ref-type="fn" rid="fn1"><sup>1</sup></xref> the constraints with higher priorities should still be easily satisfied because constraint violations tend to occur more frequently as the number of constraints to be considered increases. Since an attempt is made to satisfy constraints with higher priority before the other constraints, there are fewer constraints to be considered. The experimental relationship between constraint priority and the satisfaction rate is discussed in Section <xref ref-type="sec" rid="S6">6</xref>.</p>
<p>As described in this section, while the COP-k-means algorithm runs fast, it produces unstable clustering results depending on the data assignment order. To complement the drawback, we introduced a modified constrained k-means algorithm that has a mechanism to satisfy constraints in order of their priorities.</p>
</sec>
</sec>
<sec id="S4">
<label>4</label> <title>Boosted Constrained k-Means Algorithm</title>
<p>In this section, we introduce a mechanism to automatically decide the data assignment order of our constrained k-means algorithm. It is based on the boosting principle and controls the order appropriately using constraint priority. We first describe why we use boosting and then explain a concrete algorithm that integrates our constrained k-means algorithm into the boosting framework.</p>
<p>The constrained k-means algorithm described in the previous section attempts to satisfy the constraints in accordance with their pre-given priorities. The problem remaining is how to decide the priorities. A higher priority should of course be given to a constraint that is expected to be more effective for clustering. However, it is not easy to estimate the effectiveness. Moreover, even if the effectiveness could be accurately estimated, the number of constraints that can be satisfied in a single run is limited. Given these considerations, we use a boosting technique to enhance the performance of our constrained k-means algorithm. Boosting (Schapiro, <xref ref-type="bibr" rid="B27">2013</xref>) is a method for ensemble learning that produces a better hypothesis from a single weak learner. It enables a weak learner to produce weak hypotheses by adaptively controlling the probability distribution of data occurrence and integrates the hypotheses into a strong hypothesis. Boosting is generally used for classification problems, not for clustering. However, constrained clustering can be viewed as a kind of classification problem in which each data pair is classified into one of two classes (must-link and cannot-link). This means that boosting can be applied to constrained clustering. Since our constrained k-means algorithm can be a weak learner that produces a weak cluster hypothesis, boosting is suitable for our purpose.</p>
<p>Our boosting-based constrained clustering algorithm is shown in Algorithm <xref ref-type="table" rid="T7">3</xref>. Its operating principle follows that of AdaBoost (Schapire and Singer, <xref ref-type="bibr" rid="B26">1999</xref>). Unlike the conventional AdaBoost application, our constrained k-means algorithm is used as a weak learner. A weak hypothesis is thus a result of constrained clustering. The priorities of the constraints are assigned and controlled following the conventional AdaBoost procedure since a training data set is a set of constraints in the case of constrained clustering. A weak hypothesis is created in step 3 of our constrained k-means algorithm, which attempts to satisfy the constraints with higher priorities. A cluster hypothesis is represented using a kernel matrix in which each element corresponds to the state of a data pair in the clustering result. The state is represented by 1 or 0, indicating whether the data pair belongs to the same cluster or different clusters. Thus, the kernel matrix is an <italic>N</italic>&#x02009;&#x000D7;&#x02009;<italic>N</italic> semidefinite matrix in which <italic>N</italic> is the number of data points. The proof of semidefiniteness is given in Appendix A.</p>
<table-wrap position="float" id="T7">
<label>Algorithm 3</label>
<caption><p>Boosted constrained k-means algorithm.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left"/>
<td align="left">INPUT: Data set <italic>D</italic>, Constraint set <inline-formula><mml:math id="M6"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">all</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="italic">i</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="italic">j</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="italic">y</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mtext mathvariant="italic">s</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-rel">&#x0223C;</mml:mo><mml:mtext mathvariant="italic">S</mml:mtext></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left"/>
<td align="left"><italic>i</italic> and <italic>j</italic> are the indexes of a constrained data pair (<italic>d<sub>i</sub>, d<sub>j</sub></italic>).</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><italic>y</italic> &#x02208;&#x0007B;&#x0002B;1, &#x02212;1&#x0007D; is the constraint type label.</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><italic>y</italic> takes 1 or &#x02212;1 if (<italic>d<sub>i</sub>, d<sub>j</sub></italic>) is constrained as must-link or cannot-link, respectively.</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><italic>p<sup>t</sup></italic> is the priority of a constrained data pair (<italic>d<sub>i</sub>, d<sub>j</sub></italic>) at boosting round <italic>t</italic>(<italic>t</italic>&#x02009;&#x0003D;&#x02009;1&#x02009;&#x0223C;&#x02009;<italic>T</italic>)</td>
</tr>
<tr>
<td align="left"/>
<td align="left">OUTPUT: Clusters <italic>C</italic><sub>1</sub>,&#x02026;&#x02009;, <italic>C<sub>k</sub></italic></td>
</tr>
<tr>
<td align="left">1:</td>
<td align="left">For each constraint in <inline-formula><mml:math id="M7"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">all</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula><mml:math id="M8"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">S</mml:mtext></mml:mrow></mml:mfrac></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">2:</td>
<td align="left"><bold>for</bold> <italic>t</italic>&#x02009;&#x0003D;&#x02009;1 to <italic>T</italic> <bold>do</bold></td>
</tr>
<tr>
<td align="left">3:</td>
<td align="left">&#x02003;Run our constrained k-means algorithm in Algorithm 2 using <inline-formula><mml:math id="M9"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">Con</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">all</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula>.</td>
</tr>
<tr>
<td align="left">4:</td>
<td align="left">&#x02003;In accordance with the clustering result, create a kernel matrix <italic>K<sup>t</sup></italic> as follows.</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><inline-formula><mml:math id="M10"><mml:msup><mml:mrow><mml:mtext mathvariant="italic">K</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="italic">a</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo><mml:mtext mathvariant="italic">b</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>1</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-punc">:</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="italic">d</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">a</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="italic">d</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">b</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mspace width="0.5" class="nbsp"/><mml:mtext>belongs to the same cluster</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-punc">:</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="italic">d</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">a</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="italic">d</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">b</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mspace width="0.5em" class="nbsp"/><mml:mtext>belongs to a different cluster</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">5:</td>
<td align="left">&#x02003;Calculate error rate <inline-formula><mml:math id="M11"><mml:msub><mml:mrow><mml:mi>&#x003F5;</mml:mi></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula> using <italic>K<sup>t</sup></italic>.</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><inline-formula><mml:math id="M12"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">S</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.3em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msubsup><mml:mfenced separators="" open="&#x0007B;" close="&#x0007D;"><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="italic">y</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>2</mml:mn><mml:msup><mml:mrow><mml:mtext mathvariant="italic">K</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="italic">i</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="0.5em" class="nbsp"/><mml:msub><mml:mrow><mml:mtext mathvariant="italic">j</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">S</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.3em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">6:</td>
<td align="left">&#x02003;<bold>if</bold> <inline-formula><mml:math id="M13"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> <bold>then</bold></td>
</tr>
<tr>
<td align="left">7:</td>
<td align="left">&#x02003;Let &#x003B1;<sub><italic>t</italic></sub>&#x02009;&#x0003D;&#x02009;&#x003B1;&#x0002A; and go to step 14.</td>
</tr>
<tr>
<td align="left">8:</td>
<td align="left">&#x02003;<bold>else if</bold> <inline-formula><mml:math id="M14"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>5</mml:mn></mml:math></inline-formula> <bold>then</bold></td>
</tr>
<tr>
<td align="left">9:</td>
<td align="left">&#x02003;Let &#x003B1;<sub><italic>t</italic></sub>&#x02009;&#x0003D;&#x02009;0 and go to step 14.</td>
</tr>
<tr>
<td align="left">10:</td>
<td align="left">&#x02003;<bold>else</bold></td>
</tr>
<tr>
<td align="left">11:</td>
<td align="left">&#x02003;Calculate importance &#x003B1;<sub>t</sub> of <italic>K<sup>t</sup></italic> using <inline-formula><mml:math id="M15"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula>.</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><inline-formula><mml:math id="M16"><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mi mathvariant="normal">ln</mml:mi><mml:mfenced separators="" open="&#x0007B;" close="&#x0007D;"><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">12:</td>
<td align="left">&#x02003;Update priority of each constraint <inline-formula><mml:math id="M17"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">l</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>.</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><inline-formula><mml:math id="M18"><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msubsup><mml:mi mathvariant="normal">exp</mml:mi><mml:mfenced separators="" open="&#x0007B;" close="&#x0007D;"><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="italic">y</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>2</mml:mn><mml:msup><mml:mrow><mml:mtext mathvariant="italic">K</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="italic">i</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="italic">j</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">s</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">13:</td>
<td align="left">Integrate <italic>K<sup>t</sup></italic> into <italic>K</italic>.</td>
</tr>
<tr>
<td align="left"/>
<td align="left"><inline-formula><mml:math id="M19"><mml:mtext mathvariant="italic">K</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mspace width="0.3em"/><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">T</mml:mtext></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mtext mathvariant="italic">K</mml:mtext></mml:mrow><mml:mrow><mml:mtext mathvariant="italic">t</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">14:</td>
<td align="left">Run kernel <italic>k</italic>-means using <italic>K</italic> and output clusters <italic>C</italic>.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Once a weak hypothesis is created, it is used to calculate the rate of unsatisfied constraints, i.e., error rate <inline-formula><mml:math id="M20"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in step 5. Since <italic>y<sub>s</sub></italic> and <italic>K<sup>t</sup></italic>(<italic>i<sub>s</sub>, j<sub>s</sub></italic>) indicate the correct and learned state of a data pair in the clustering result, that is, &#x0002B;1 and &#x02212;1 indicate whether the data pair components should be in the same cluster or different clusters, respectively, <inline-formula><mml:math id="M21"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the sum of the priorities for the unsatisfied constraints. From steps 6 to 12, the importance &#x003B1;<italic><sub>t</sub></italic> of kernel matrix <italic>K<sup>t</sup></italic> is calculated in accordance with the value of <inline-formula><mml:math id="M22"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. There are two exceptional cases depending on the value of <inline-formula><mml:math id="M23"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">:</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> means all constraints are satisfied, and <inline-formula><mml:math id="M24"><mml:msub><mml:mrow><mml:mn>&#x003F5;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>5</mml:mn></mml:math></inline-formula> means the weak learner violates a weak learning condition (Schapiro, <xref ref-type="bibr" rid="B27">2013</xref>). Thus, in both cases, the boosting process is stopped, and the final result is created in accordance with each condition. In other cases, the priority of each constraint is updated following step 12. The priorities of the constraints unsatisfied in round <italic>t</italic> of boosting are increased, while the priorities of the satisfied constraints are kept the same. After <italic>T</italic> rounds of the boosting process have been completed, each kernel matrix <italic>K<sup>t</sup></italic> is integrated into a single matrix <italic>K</italic> in step 13. This matrix is also semidefinite (see <xref ref-type="app" rid="A1">Appendix A</xref>). We can use the kernel k-means algorithm (Girolami, <xref ref-type="bibr" rid="B11">2002</xref>) or other kernel-based clustering algorithms with <italic>K</italic> to obtain the final clustering result.</p>
<p>We use our constrained k-means algorithm as the weak learner for boosting. The probability distribution of the constraints is used to set the data assignment order. In general, boosting can be interpreted as an optimization process for finding a hypothesis that minimizes a loss function. In the case of boosting, the loss function is
<disp-formula id="E1"><mml:math id="M25"><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x003A3;</mml:mo></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msubsup><mml:mi mathvariant="normal">exp</mml:mi><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where kernel <italic>K</italic> minimizes the function for use as an optimal hypothesis. Although the function considers only constrained data pairs, unconstrained pairs are also involved in the learning process. This boosting process can thus be viewed as transductive learning in which prediction is executed in conjunction with learning.</p>
<p>The boosting process introduced in this section is an approach to enhance the performance of our constrained k-means algorithm. Since it is difficult for the constrained k-means algorithm to satisfy all constraints by itself, we use an ensemble approach that tries to satisfy as many constraints as possible by majority vote of diverse clustering results. The boosting process produces the diversity by controlling the constraint priority to decide the data assignment order of the constrained k-means algorithm. While kernel matrix is a representation of a clustering result, it is suitable to represent the aggregation of data pair relationships.</p>
</sec>
<sec id="S5">
<label>5</label> <title>Evaluation</title>
<p>In this section, we evaluate the performance of our method by comparing it with other state-of-the-art methods on various data sets. We first describe about details of experiments such as data sets, the evaluation metric, methods to be compared, and other settings. We then show the clustering performance and the computation time of each method.</p>
<p>We used 12 data sets from 3 data sources (see Table <xref ref-type="table" rid="T1">1</xref>). We used six data sets from the UCI repository,<xref ref-type="fn" rid="fn2"><sup>2</sup></xref> a well-known data source for supervised and unsupervised learning, that had different numbers of data points, classes, and attributes. We used three from CLUTO,<xref ref-type="fn" rid="fn3"><sup>3</sup></xref> a data source for evaluating clustering algorithms with high-dimensional text data sets. We used three from Shape,<xref ref-type="fn" rid="fn4"><sup>4</sup></xref> a data source providing data sets of two-dimensionally scattered data consisting of characteristically shaped clusters. Since the data sets from CLUTO were text data, we transformed each data item into a unit feature vector by using the term frequency&#x02013;inverse document frequency (tf-idf) method (Salton and McGill, <xref ref-type="bibr" rid="B24">1983</xref>).</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>Data sets.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left">Data set</th>
<th align="center" valign="top" colspan="6">UCI<hr/></th>
</tr>
<tr>
<th align="center"/>
<th align="center">Iris</th>
<th align="center">Ecoli</th>
<th align="center">Wdbc</th>
<th align="center">Sonar</th>
<th align="center">Glass</th>
<th align="center">Libras</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">No. of data points</td>
<td align="center">150</td>
<td align="center">336</td>
<td align="center">569</td>
<td align="center">208</td>
<td align="center">214</td>
<td align="center">360</td>
</tr>
<tr>
<td align="left">No. of clusters</td>
<td align="center">3</td>
<td align="center">7</td>
<td align="center">2</td>
<td align="center">2</td>
<td align="center">6</td>
<td align="center">15</td>
</tr>
<tr>
<td align="left">No. of attributes</td>
<td align="center">4</td>
<td align="center">8</td>
<td align="center">30</td>
<td align="center">60</td>
<td align="center">9</td>
<td align="center">90</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Data set</bold></td>
<td align="center" colspan="3"><bold>CLUTO</bold><hr/></td>
<td align="center" colspan="3"><bold>Shape</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>Tr11</bold></td>
<td align="center"><bold>Tr12</bold></td>
<td align="center"><bold>Tr23</bold></td>
<td align="center"><bold>Flame</bold></td>
<td align="center"><bold>Pathbased</bold></td>
<td align="center"><bold>Spiral</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">No. of data points</td>
<td align="center">414</td>
<td align="center">313</td>
<td align="center">204</td>
<td align="center">240</td>
<td align="center">300</td>
<td align="center">312</td>
</tr>
<tr>
<td align="left">No. of clusters</td>
<td align="center">9</td>
<td align="center">8</td>
<td align="center">6</td>
<td align="center">2</td>
<td align="center">3</td>
<td align="center">3</td>
</tr>
<tr>
<td align="left">No. of attributes</td>
<td align="center">6,429</td>
<td align="center">5,804</td>
<td align="center">5,832</td>
<td align="center">2</td>
<td align="center">2</td>
<td align="center">2</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Each data set had a set of class labels, and we assumed that a group of data with the same class label was a cluster. We used the normalized mutual information (NMI) metric (Strehl and Ghosh, <xref ref-type="bibr" rid="B28">2003</xref>) to evaluate the clustering results. Let <italic>N</italic> and <italic>k</italic> be the number of data points and clusters, <italic>C</italic> be the set of produced clusters, and <italic>T</italic> be the set of correct clusters.
<disp-formula id="E2"><mml:math id="M26"><mml:mtext>NMI</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup><mml:mspace width="0.3em"/><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup><mml:mspace width="0.3em"/><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mi mathvariant="normal">log</mml:mi><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mfrac><mml:mrow><mml:mi>N</mml:mi><mml:mo class="MathClass-bin">&#x022C5;</mml:mo><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup><mml:mspace width="0.3em"/><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msubsup><mml:mi mathvariant="normal">log</mml:mi><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup><mml:mspace width="0.3em"/><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mi mathvariant="normal">log</mml:mi><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M27"><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the number of data points belonging to the <italic>i</italic>th cluster in <italic>C</italic>, <inline-formula><mml:math id="M28"><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the number of data points belonging to the <italic>j</italic>th cluster in <italic>T</italic>, and <inline-formula><mml:math id="M29"><mml:msubsup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the number of data points belonging to both the <italic>i</italic>th cluster in <italic>C</italic> and the <italic>j</italic>th cluster in <italic>T</italic>. NMI represents the consistency between <italic>C</italic> and <italic>T</italic>, giving a value between 0 and 1. The clustering result is assumed to be better if the value is larger.</p>
<sec id="S5-3">
<label>5.1</label> <title>Methods</title>
<p>We compared our boosted constrained k-means (BCKM) algorithm<xref ref-type="fn" rid="fn5"><sup>5</sup></xref> with seven algorithms. For our algorithm, we set the number of rounds of boosting to 100, <italic>&#x003F5;<sub>t</sub></italic> &#x0003D; 0, and &#x003B1;&#x0002A;&#x02009;&#x0003D;&#x02009;100 for all data sets.</p>
<list list-type="bullet">
<list-item><p><bold>KBST</bold> This algorithm is an alternative version of the DistBoost algorithm (Hertz et al., <xref ref-type="bibr" rid="B13">2004</xref>) and is referred to as KernelBoost (Hertz et al., <xref ref-type="bibr" rid="B14">2006</xref>). It creates a kernel matrix from pairwise constraints. The source code<xref ref-type="fn" rid="fn6"><sup>6</sup></xref> was provided by the authors. We first created a kernel matrix using this algorithm and then used the kernel k-means algorithm with the kernel matrix to create the final clustering results. We set the number of models for GMM to the number of clusters for each data set. We used the default values for the other parameters. We set the number of rounds of boosting to 100.</p></list-item>
<list-item><p><bold>BSTC</bold> This is the BoostCluster algorithm (Liu et al., <xref ref-type="bibr" rid="B21">2007</xref>). We used the k-means algorithm for the basic clustering and the kernel k-means algorithm with the kernel matrix created by BoostCluster to create the final clustering results. We set the number of dimensions for new feature vectors that the BoostCluster algorithm created in each boosting round to the same number of dimensions for the original feature vectors. We again set the number of rounds of boosting to 100.</p></list-item>
<list-item><p><bold>ITML</bold> This algorithm is called the information theoretic metric learning algorithm (Davis et al., <xref ref-type="bibr" rid="B9">2007</xref>), a state-of-the-art distance learning algorithm. The source code<xref ref-type="fn" rid="fn7"><sup>7</sup></xref> was provided by the authors. We used the k-means algorithm with a distance matrix created by ITML to create the final clustering results. We used the default values for the parameters of ITML.</p></list-item>
<list-item><p><bold>PCP</bold> This is a state-of-the-art algorithm for kernel matrix learning that is based on the semidefinite programming (Li et al., <xref ref-type="bibr" rid="B19">2008</xref>). We used the kernel k-means algorithm to create the final clustering results. For the semidefinite programming solver, we used SDPT3<xref ref-type="fn" rid="fn8"><sup>8</sup></xref> for which the parameters were set to the default values.</p></list-item>
<list-item><p><bold>SPCL</bold> This is a spectral clustering algorithm proposed by Kamvar et al. (<xref ref-type="bibr" rid="B17">2003</xref>). We set the number of dimensions for new feature vectors created after Eigen decomposition to the same number of dimensions for the original feature vectors.</p></list-item>
<list-item><p><bold>CKM</bold> This algorithm uses the constrained k-means algorithm described in Section <xref ref-type="sec" rid="S3">3</xref> as a standalone algorithm. We used it to evaluate the effectiveness of ensemble learning. We randomly set the data assignment order.</p></list-item>
<list-item><p><bold>RCKM</bold> This is an alternative of our proposed algorithm in which the data assignment order is randomly set. We used it to evaluate the effectiveness of using boosting to control the data assignment order. We set the number of rounds of boosting to 100.</p></list-item>
</list>
<p>We used the k-means&#x0002B;&#x0002B; algorithm (Arthur and Vassilvitskii, <xref ref-type="bibr" rid="B1">2007</xref>) to set the initial cluster centers in the k-means algorithm. For the Shape data sets, we used the kernel k-means algorithm and the radial basis function (RBF) kernel with local scaling (Zelnik-Manor and Perona, <xref ref-type="bibr" rid="B33">2005</xref>). We created an initial affinity matrix for the PCP and SPCL algorithms by using a linear kernel for the UCI and CLUTO data sets and an RBF kernel with local scaling for the Shape data sets. For the RBF kernel, we set the number of the <italic>n</italic>th neighbor to 7. Each algorithm was implemented as a MATLAB program and executed on the same PC (CPU Core i7, 3.40&#x02009;GHz, 16&#x02009;GB memory).</p>
</sec>
<sec id="S5-4">
<label>5.2</label> <title>Other Settings</title>
<p>The constraints were first created by randomly selecting a pair of data points and assigning to it a must-link or cannot-link label in accordance with whether the pair components had the same or different class labels. For each data set, testing was done using three different numbers of constraints: 1, 5, and 10% of the total number of data pairs. That is, if the number of data points was 150 and the percentage was 1, we created 111(<inline-formula><mml:math id="M31"><mml:mi>&#x02252;</mml:mi><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>01</mml:mn><mml:msub><mml:mrow><mml:mo class="MathClass-bin">&#x02217;</mml:mo></mml:mrow><mml:mrow><mml:mn>150</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>) constraints. In addition, we created 10 different sets of constraints for each percentage because clustering performance suffers from ill combinations of constraints. For our k-means algorithm, we created 10 different sets of initial cluster centers for each data set. One hundred trials were conducted for each algorithm and percentage of constraints.</p>
</sec>
<sec id="S5-5">
<label>5.3</label> <title>Results</title>
<sec id="S5-5-1">
<label>5.3.1</label> <title>Clustering Performance</title>
<p>The clustering performance (i.e., the NMI metric) for each method is summarized in Table <xref ref-type="table" rid="T2">2</xref>, with the best performance shown in bold. We provide the average and the SD of nmi values, each of which was calculated for a clustering result with a certain set of constraints. Note that results could not be obtained for some combinations of methods and data sets. KBST could not produce results for the Sonar, Glass, and Libras data sets because the program crashed during the creation of the GMM models. We eliminated the results for KBST, BSTC, and ITML for the CLUTO and Shape data sets because the results were significantly worse than for the other data sets. We also eliminated the results for SPCL for all UCI and CLUTO data sets for the same reason. Thus, the algorithms compared with our proposed BCKM algorithm for all data sets were PCP, CKM, and RCKM.</p>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>Clustering performance (NMI metric).</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left">Method</th>
<th align="center" valign="top" colspan="3">Iris (UCI)<hr/></th>
<th align="center" valign="top" colspan="3">Ecoli (UCI)<hr/></th>
</tr>
<tr>
<th align="center"/>
<th align="center">1%</th>
<th align="center">5%</th>
<th align="center">10%</th>
<th align="center">1%</th>
<th align="center">5%</th>
<th align="center">10%</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">BCKM</td>
<td align="center">0.81&#x02009;&#x000B1;&#x02009;0.08</td>
<td align="center"><bold>0.99&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
<td align="center"><bold>0.99&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
<td align="center"><bold>0.66&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center"><bold>0.81&#x02009;</bold>&#x000B1;&#x02009;0.05</td>
<td align="center"><bold>0.81&#x02009;</bold>&#x000B1;&#x02009;0.05</td>
</tr>
<tr>
<td align="left">KBST</td>
<td align="center">0.86&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.89&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.91&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.63&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.65&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.67&#x02009;&#x000B1;&#x02009;0.01</td>
</tr>
<tr>
<td align="left">BSTC</td>
<td align="center">0.75&#x02009;&#x000B1;&#x02009;0.10</td>
<td align="center">0.75&#x02009;&#x000B1;&#x02009;0.07</td>
<td align="center">0.70&#x02009;&#x000B1;&#x02009;0.08</td>
<td align="center">0.49&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.49&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.48&#x02009;&#x000B1;&#x02009;0.04</td>
</tr>
<tr>
<td align="left">ITML</td>
<td align="center"><bold>0.91&#x02009;</bold>&#x000B1;&#x02009;0.02</td>
<td align="center">0.92&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.92&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.57&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.59&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.59&#x02009;&#x000B1;&#x02009;0.02</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">0.71&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.98&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center"><bold>0.99&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center">0.54&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.65&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.77&#x02009;&#x000B1;&#x02009;0.03</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.78&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.75&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.75&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.60&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.62&#x02009;&#x000B1;&#x02009;0.06</td>
<td align="center">0.63&#x02009;&#x000B1;&#x02009;0.08</td>
</tr>
<tr>
<td align="left">RCKM</td>
<td align="center">0.81&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.88&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.88&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.62&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.61&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.61&#x02009;&#x000B1;&#x02009;0.01</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Wdbc (UCI)</bold><hr/></td>
<td align="center" colspan="3"><bold>Sonar (UCI)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center"><bold>0.90&#x02009;</bold>&#x000B1;&#x02009;0.07</td>
<td align="center">0.96&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.99&#x02009;&#x000B1;&#x02009;0.00</td>
<td align="center"><bold>0.37&#x02009;</bold>&#x000B1;&#x02009;0.23</td>
<td align="center">0.97&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.99&#x02009;&#x000B1;&#x02009;0.00</td>
</tr>
<tr>
<td align="left">KBST</td>
<td align="center">0.80&#x02009;&#x000B1;&#x02009;0.00</td>
<td align="center">0.80&#x02009;&#x000B1;&#x02009;0.00</td>
<td align="center">0.85&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
</tr>
<tr>
<td align="left">BSTC</td>
<td align="center">0.43&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.43&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.45&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.03&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.09&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.11&#x02009;&#x000B1;&#x02009;0.03</td>
</tr>
<tr>
<td align="left">ITML</td>
<td align="center">0.49&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.61&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.63&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.20&#x02009;&#x000B1;&#x02009;0.05</td>
<td align="center">0.36&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.38&#x02009;&#x000B1;&#x02009;0.05</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center"><bold>0.90&#x02009;</bold>&#x000B1;&#x02009;0.02</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
<td align="center">0.03&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center"><bold>0.99&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.42&#x02009;&#x000B1;&#x02009;0.24</td>
<td align="center">0.62&#x02009;&#x000B1;&#x02009;0.23</td>
<td align="center">0.73&#x02009;&#x000B1;&#x02009;0.30</td>
<td align="center">0.05&#x02009;&#x000B1;&#x02009;0.05</td>
<td align="center">0.18&#x02009;&#x000B1;&#x02009;0.20</td>
<td align="center">0.51&#x02009;&#x000B1;&#x02009;0.30</td>
</tr>
<tr>
<td align="left">RCKM</td>
<td align="center">0.89&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.96&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.98&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.04&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.27&#x02009;&#x000B1;&#x02009;0.17</td>
<td align="center">0.47&#x02009;&#x000B1;&#x02009;0.22</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Glass (UCI)</bold><hr/></td>
<td align="center" colspan="3"><bold>Libras (UCI)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center"><bold>0.36&#x02009;</bold>&#x000B1;&#x02009;0.04</td>
<td align="center"><bold>0.73&#x02009;</bold>&#x000B1;&#x02009;0.05</td>
<td align="center"><bold>0.82&#x02009;</bold>&#x000B1;&#x02009;0.05</td>
<td align="center">0.54&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center"><bold>0.71&#x02009;</bold>&#x000B1;&#x02009;0.02</td>
<td align="center"><bold>0.84&#x02009;</bold>&#x000B1;&#x02009;0.02</td>
</tr>
<tr>
<td align="left">BSTC</td>
<td align="center">0.28&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.30&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.31&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.51&#x02009;&#x000B1;&#x02009;0.05</td>
<td align="center">0.56&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.57&#x02009;&#x000B1;&#x02009;0.02</td>
</tr>
<tr>
<td align="left">ITML</td>
<td align="center">0.35&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.34&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.30&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center"><bold>0.61&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center">0.63&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.60&#x02009;&#x000B1;&#x02009;0.03</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">0.30&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.56&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.69&#x02009;&#x000B1;&#x02009;0.04</td>
<td align="center">0.32&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.17&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.21&#x02009;&#x000B1;&#x02009;0.01</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.35&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.46&#x02009;&#x000B1;&#x02009;0.10</td>
<td align="center">0.54&#x02009;&#x000B1;&#x02009;0.11</td>
<td align="center">0.56&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.57&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.58&#x02009;&#x000B1;&#x02009;0.01</td>
</tr>
<tr>
<td align="left">RCKM</td>
<td align="center">0.35&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.36&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.36&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.57&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.57&#x02009;&#x000B1;&#x02009;0.01</td>
<td align="center">0.57&#x02009;&#x000B1;&#x02009;0.01</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Tr11 (CLUTO)</bold><hr/></td>
<td align="center" colspan="3"><bold>Tr12 (CLUTO)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center"><bold>0.70&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center"><bold>0.86&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center"><bold>0.87&#x02009;</bold>&#x000B1;&#x02009;0.04</td>
<td align="center">0.68&#x02009;&#x000B1;&#x02009;0.06</td>
<td align="center"><bold>0.90&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center"><bold>0.95&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">0.66&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center">0.58&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.75&#x02009;&#x000B1;&#x02009;0.02</td>
<td align="center"><bold>0.72&#x02009;</bold>&#x000B1;&#x02009;0.04</td>
<td align="center">0.44&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.68&#x02009;&#x000B1;&#x02009;0.05</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.05&#x02009;&#x000B1;&#x02009;0.05</td>
<td align="center">0.18&#x02009;&#x000B1;&#x02009;0.20</td>
<td align="center">0.51&#x02009;&#x000B1;&#x02009;0.30</td>
<td align="center">0.60&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.62&#x02009;&#x000B1;&#x02009;0.06</td>
<td align="center">0.63&#x02009;&#x000B1;&#x02009;0.08</td>
</tr>
<tr>
<td align="left">RCKM</td>
<td align="center">0.64&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.64&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.64&#x02009;&#x000B1;&#x02009;0.03</td>
<td align="center">0.64&#x02009;&#x000B1;&#x02009;0.06</td>
<td align="center">0.64&#x02009;&#x000B1;&#x02009;0.07</td>
<td align="center">0.64&#x02009;&#x000B1;&#x02009;0.07</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Tr23 (CLUTO)</bold><hr/></td>
<td align="center" colspan="3"><bold>Flame (Shape)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center">0.38&#x02009;&#x000B1;&#x02009;0.05</td>
<td align="center"><bold>0.75&#x02009;</bold>&#x000B1;&#x02009;0.07</td>
<td align="center"><bold>0.83&#x02009;</bold>&#x000B1;&#x02009;0.07</td>
<td align="center">0.98<bold>&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">0.42<bold>&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center">0.57<bold>&#x02009;</bold>&#x000B1;&#x02009;0.04</td>
<td align="center">0.69<bold>&#x02009;</bold>&#x000B1;&#x02009;0.06</td>
<td align="center"><bold>0.99&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
</tr>
<tr>
<td align="left">SPCL</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
<td align="center">0.92<bold>&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
<td align="center">0.97<bold>&#x02009;</bold>&#x000B1;&#x02009;0.02</td>
<td align="center">0.99<bold>&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center"><bold>0.56&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
<td align="center">0.57<bold>&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
<td align="center">0.58<bold>&#x02009;</bold>&#x000B1;&#x02009;0.01</td>
<td align="center">0.78<bold>&#x02009;</bold>&#x000B1;&#x02009;0.38</td>
<td align="center">0.91<bold>&#x02009;</bold>&#x000B1;&#x02009;0.28</td>
<td align="center">0.80<bold>&#x02009;</bold>&#x000B1;&#x02009;0.39</td>
</tr>
<tr>
<td align="left">RCKM</td>
<td align="center">0.37<bold>&#x02009;</bold>&#x000B1;&#x02009;0.04</td>
<td align="center">0.39<bold>&#x02009;</bold>&#x000B1;&#x02009;0.04</td>
<td align="center">0.39<bold>&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center">0.98<bold>&#x02009;</bold>&#x000B1;&#x02009;0.02</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
<td align="center"><bold>1.00&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Pathbased (Shape)</bold><hr/></td>
<td align="center" colspan="3"><bold>Spiral (Shape)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center">0.85<bold>&#x02009;</bold>&#x000B1;&#x02009;0.14</td>
<td align="center">0.87<bold>&#x02009;</bold>&#x000B1;&#x02009;0.14</td>
<td align="center">0.91<bold>&#x02009;</bold>&#x000B1;&#x02009;0.13</td>
<td align="center"><bold>0.96&#x02009;</bold>&#x000B1;&#x02009;0.09</td>
<td align="center">0.93<bold>&#x02009;</bold>&#x000B1;&#x02009;0.11</td>
<td align="center">0.95<bold>&#x02009;</bold>&#x000B1;&#x02009;0.10</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center"><bold>0.95&#x02009;</bold>&#x000B1;&#x02009;0.07</td>
<td align="center"><bold>0.97&#x02009;</bold>&#x000B1;&#x02009;0.09</td>
<td align="center"><bold>0.97&#x02009;</bold>&#x000B1;&#x02009;0.08</td>
<td align="center">0.88<bold>&#x02009;</bold>&#x000B1;&#x02009;0.13</td>
<td align="center">0.97<bold>&#x02009;</bold>&#x000B1;&#x02009;0.08</td>
<td align="center"><bold>0.99&#x02009;</bold>&#x000B1;&#x02009;0.05</td>
</tr>
<tr>
<td align="left">SPCL</td>
<td align="center">0.86<bold>&#x02009;</bold>&#x000B1;&#x02009;0.07</td>
<td align="center">0.93<bold>&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
<td align="center"><bold>0.97&#x02009;</bold>&#x000B1;&#x02009;0.02</td>
<td align="center">0.64<bold>&#x02009;</bold>&#x000B1;&#x02009;0.14</td>
<td align="center"><bold>0.98&#x02009;</bold>&#x000B1;&#x02009;0.05</td>
<td align="center"><bold>0.99&#x02009;</bold>&#x000B1;&#x02009;0.03</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.46<bold>&#x02009;</bold>&#x000B1;&#x02009;0.22</td>
<td align="center">0.74<bold>&#x02009;</bold>&#x000B1;&#x02009;0.07</td>
<td align="center">0.76<bold>&#x02009;</bold>&#x000B1;&#x02009;0.04</td>
<td align="center">0.17<bold>&#x02009;</bold>&#x000B1;&#x02009;0.13</td>
<td align="center">0.58<bold>&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
<td align="center">0.58<bold>&#x02009;</bold>&#x000B1;&#x02009;0.00</td>
</tr>
<tr>
<td align="left">RCKM</td>
<td align="center">0.72<bold>&#x02009;</bold>&#x000B1;&#x02009;0.21</td>
<td align="center">0.91<bold>&#x02009;</bold>&#x000B1;&#x02009;0.15</td>
<td align="center">0.93<bold>&#x02009;</bold>&#x000B1;&#x02009;0.12</td>
<td align="center">0.05<bold>&#x02009;</bold>&#x000B1;&#x02009;0.05</td>
<td align="center">0.07<bold>&#x02009;</bold>&#x000B1;&#x02009;0.07</td>
<td align="center">0.09<bold>&#x02009;</bold>&#x000B1;&#x02009;0.09</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The BCKM algorithm had the best results in most cases, particularly for 6 of the 12 data sets when the constraint percentage was 1(hereafter &#x0201C;6/12(1%)&#x0201D;). It similarly had the best results for 5 and 10%: 8/12(5%) and 8/12(10%). Even when it missed the top rank, its results were competitive in most cases. The second best method was PCP: 4/12(1%), 4/12(5%), and 6/12(10%). The performance of BCKM stably improved with an increase in the number of constraints, especially for the Sonar, Glass, Libras, Tr11, Tr12, and Tr23 data sets. In addition, only BCKM showed improvement for the Libras and Tr12 data sets, whereas the others showed no gain or even a reduction. Compared with CKM and RCKM, BCKM was significantly better for the Sonar and Spiral data sets.</p>
</sec>
<sec id="S5-5-2">
<label>5.3.2</label> <title>Computation Time</title>
<p>The average computation times for one trial for each algorithm are summarized in Table <xref ref-type="table" rid="T3">3</xref>. The computation time for the BCKM algorithm was proportional to the number of constraints. BCKM was much faster than KBST. Although BSTC and ITML were faster or competitive for the UCI data sets, for which the number of attributes was relatively small, their computation times were significantly higher for the CLUTO data sets, which had a large number of attributes. BCKM was faster than PCP for most data sets, especially for the Wdbc and Tr11 data sets, in which the number of data points was relatively large.</p>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p>Computation time (s).</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left">Method</th>
<th align="center" valign="top" colspan="3">Iris (UCI)<hr/></th>
<th align="center" valign="top" colspan="3">Ecoli (UCI)<hr/></th>
</tr>
<tr>
<th align="center"/>
<th align="center">1%</th>
<th align="center">5%</th>
<th align="center">10%</th>
<th align="center">1%</th>
<th align="center">5%</th>
<th align="center">10%</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">BCKM</td>
<td align="center">0.02</td>
<td align="center">0.27</td>
<td align="center">0.49</td>
<td align="center">1.72</td>
<td align="center">14.71</td>
<td align="center">13.96</td>
</tr>
<tr>
<td align="left">KBST</td>
<td align="center">134.71</td>
<td align="center">172.94</td>
<td align="center">122.15</td>
<td align="center">469.88</td>
<td align="center">337.49</td>
<td align="center">232.19</td>
</tr>
<tr>
<td align="left">BSTC</td>
<td align="center">0.68</td>
<td align="center">1.22</td>
<td align="center">1.73</td>
<td align="center">3.95</td>
<td align="center">5.00</td>
<td align="center">6.08</td>
</tr>
<tr>
<td align="left">ITML</td>
<td align="center">0.23</td>
<td align="center">2.01</td>
<td align="center">2.21</td>
<td align="center">4.41</td>
<td align="center">4.47</td>
<td align="center">4.50</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">0.59</td>
<td align="center">1.38</td>
<td align="center">2.45</td>
<td align="center">3.68</td>
<td align="center">28.62</td>
<td align="center">131.93</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.01</td>
<td align="center">0.01</td>
<td align="center">0.02</td>
<td align="center">0.02</td>
<td align="center">0.09</td>
<td align="center">0.24</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Wdbc (UCI)</bold><hr/></td>
<td align="center" colspan="3"><bold>Sonar (UCI)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center">13.35</td>
<td align="center">47.52</td>
<td align="center">30.60</td>
<td align="center">1.30</td>
<td align="center">4.41</td>
<td align="center">6.12</td>
</tr>
<tr>
<td align="left">KBST</td>
<td align="center">551.49</td>
<td align="center">117.36</td>
<td align="center">39.36</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
</tr>
<tr>
<td align="left">BSTC</td>
<td align="center">4.31</td>
<td align="center">6.19</td>
<td align="center">8.51</td>
<td align="center">1.68</td>
<td align="center">1.94</td>
<td align="center">2.24</td>
</tr>
<tr>
<td align="left">ITML</td>
<td align="center">3.56</td>
<td align="center">3.86</td>
<td align="center">4.18</td>
<td align="center">1.02</td>
<td align="center">7.45</td>
<td align="center">8.67</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">24.92</td>
<td align="center">354.22</td>
<td align="center">1870.17</td>
<td align="center">1.44</td>
<td align="center">3.85</td>
<td align="center">14.15</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.04</td>
<td align="center">0.06</td>
<td align="center">0.09</td>
<td align="center">0.01</td>
<td align="center">0.01</td>
<td align="center">0.01</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Glass (UCI)</bold><hr/></td>
<td align="center" colspan="3"><bold>Libras (UCI)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center">1.29</td>
<td align="center">4.51</td>
<td align="center">7.47</td>
<td align="center">1.04</td>
<td align="center">13.26</td>
<td align="center">48.36</td>
</tr>
<tr>
<td align="left">BSTC</td>
<td align="center">3.11</td>
<td align="center">5.02</td>
<td align="center">6.74</td>
<td align="center">4.98</td>
<td align="center">5.48</td>
<td align="center">6.40</td>
</tr>
<tr>
<td align="left">ITML</td>
<td align="center">1.41</td>
<td align="center">4.09</td>
<td align="center">4.33</td>
<td align="center">25.34</td>
<td align="center">30.56</td>
<td align="center">33.96</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">1.19</td>
<td align="center">7.02</td>
<td align="center">23.71</td>
<td align="center">5.69</td>
<td align="center">67.90</td>
<td align="center">147.37</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.01</td>
<td align="center">0.02</td>
<td align="center">0.03</td>
<td align="center">0.04</td>
<td align="center">0.08</td>
<td align="center">0.11</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Tr11 (CLUTO)</bold><hr/></td>
<td align="center" colspan="3"><bold>Tr12 (CLUTO)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center">8.21</td>
<td align="center">21.86</td>
<td align="center">23.00</td>
<td align="center">3.68</td>
<td align="center">13.51</td>
<td align="center">20.85</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">9.47</td>
<td align="center">103.37</td>
<td align="center">268.57</td>
<td align="center">3.41</td>
<td align="center">23.79</td>
<td align="center">80.62</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.12</td>
<td align="center">0.15</td>
<td align="center">0.20</td>
<td align="center">0.08</td>
<td align="center">0.09</td>
<td align="center">0.11</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center" colspan="3"><bold>Tr23 (CLUTO)</bold><hr/></td>
<td align="center" colspan="3"><bold>Flame (Shape)</bold><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center">0.81</td>
<td align="center">4.75</td>
<td align="center">6.31</td>
<td align="center">0.03</td>
<td align="center">0.07</td>
<td align="center">0.17</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">1.70</td>
<td align="center">4.51</td>
<td align="center">22.94</td>
<td align="center">1.34</td>
<td align="center">3.94</td>
<td align="center">16.00</td>
</tr>
<tr>
<td align="left">SPCL</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
<td align="center">&#x02013;</td>
<td align="center">0.12</td>
<td align="center">0.13</td>
<td align="center">0.11</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.03</td>
<td align="center">0.03</td>
<td align="center">0.04</td>
<td align="center">0.02</td>
<td align="center">0.03</td>
<td align="center">0.02</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"><bold>Method</bold></td>
<td align="center" colspan="3"><bold>Pathbased (Shape)</bold><hr/></td>
<td align="center" colspan="3"><bold>Spiral (Shape)</bold><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
<td align="center"><bold>1%</bold></td>
<td align="center"><bold>5%</bold></td>
<td align="center"><bold>10%</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">BCKM</td>
<td align="center">0.26</td>
<td align="center">0.65</td>
<td align="center">2.01</td>
<td align="center">0.91</td>
<td align="center">1.00</td>
<td align="center">2.15</td>
</tr>
<tr>
<td align="left">PCP</td>
<td align="center">2.64</td>
<td align="center">11.52</td>
<td align="center">80.48</td>
<td align="center">2.27</td>
<td align="center">12.99</td>
<td align="center">83.55</td>
</tr>
<tr>
<td align="left">SPCL</td>
<td align="center">0.15</td>
<td align="center">0.15</td>
<td align="center">0.16</td>
<td align="center">0.16</td>
<td align="center">0.16</td>
<td align="center">0.17</td>
</tr>
<tr>
<td align="left">CKM</td>
<td align="center">0.02</td>
<td align="center">0.05</td>
<td align="center">0.05</td>
<td align="center">0.04</td>
<td align="center">0.02</td>
<td align="center">0.03</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In summary, experimental results shows that our method has competitive clustering performance relative to the other state-of-the-art ones and its computation time is proportional to the number of constraints. We further discuss about the property of our method in the next section.</p>
</sec>
</sec>
</sec>
<sec id="S6" sec-type="discussion">
<label>6</label> <title>Discussions</title>
<p>In this section, we analyze the behavior of our method in more detail. We first verify the effectiveness of data assignment order mechanism of our method by showing the relationship between the number of boosting rounds and the clustering performance and between data assignment order and constraint satisfaction rate. We then discuss the property of our method from both the performance and computation time points of views. We finally compare the behavior of our method with others by visualizing clustering results.</p>
<sec id="S6-6">
<label>6.1</label> <title>Effectiveness of Data Assignment Order</title>
<p>As shown by our evaluation, the BCKM algorithm outperformed the CKM and RCKM algorithms for most of the data sets. RCKM is a kind of bagging method (Breiman, <xref ref-type="bibr" rid="B3">1996</xref>) in which CKM is a weak learner. Since it outperformed or showed competitive performance against CKM for 10 of the 12 data sets, we can conclude that the data assignment order of the constrained k-means algorithm affects clustering performance. While there may be some assignment orders that are better in terms of creating clusters, the boosting-based data assignment method of BCKM is a promising way to enhance the performance of the constrained k-means algorithm as the results showed that BCKM significantly outperformed RCKM for 9 of the 12 data sets. We thus focus the rest of the discussion in this section on BCKM.</p>
<p>The BCKM algorithm can cope with exceptional cases such as when a weak learner satisfies all the constraints or fails to satisfy more than half the constraints, as shown in steps 6&#x02013;9 of Algorithm <xref ref-type="table" rid="T7">3</xref>. We identified instances of the former case in our evaluation, where BCKM terminated the boosting process before the number of rounds reached the preset value of <italic>T</italic> (100). Table <xref ref-type="table" rid="T4">4</xref> shows the average number of boosting rounds when BCKM terminated the process. The 1, 5, and 10% again indicate the percentage of constraints for all data pairs. The average number was less than 100 in many cases. For some data sets, such as Iris, Flame, Pathbased, and Spiral, the number was less than around 20. For those data sets, BCKM showed high performance (NMI value close to 1). Interestingly, the average number for 5% was less than the value for 10% for half the data sets. Although it would be reasonable to think that BCKM needs more boosting rounds as the number of constraints increases, this is not necessarily true depending on the task.</p>
<table-wrap position="float" id="T4">
<label>Table 4</label>
<caption><p>Number of rounds before boosting was terminated for BCKM algorithm.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center"/>
<th align="center">Iris</th>
<th align="center">Ecoli</th>
<th align="center">Wdbc</th>
<th align="center">Sonar</th>
<th align="center">Glass</th>
<th align="center">Libras</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">1%</td>
<td align="center">3.57</td>
<td align="center">54.66</td>
<td align="center">99.07</td>
<td align="center">92.57</td>
<td align="center">73.21</td>
<td align="center">22.47</td>
</tr>
<tr>
<td align="left">5%</td>
<td align="center">13.85</td>
<td align="center">65.86</td>
<td align="center">83.17</td>
<td align="center">98.79</td>
<td align="center">100.00</td>
<td align="center">100.00</td>
</tr>
<tr>
<td align="left">10%</td>
<td align="center">13.82</td>
<td align="center">34.06</td>
<td align="center">26.50</td>
<td align="center">73.00</td>
<td align="center">92.13</td>
<td align="center">100.00</td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left"/>
<td align="center"><bold>Tr11</bold></td>
<td align="center"><bold>Tr12</bold></td>
<td align="center"><bold>Tr23</bold></td>
<td align="center"><bold>Flame</bold></td>
<td align="center"><bold>Pathbased</bold></td>
<td align="center"><bold>Spiral</bold></td>
</tr>
<tr>
<td align="center" colspan="7"><hr/></td>
</tr>
<tr>
<td align="left">1%</td>
<td align="center">61.75</td>
<td align="center">46.01</td>
<td align="center">29.26</td>
<td align="center">1.23</td>
<td align="center">6.40</td>
<td align="center">20.26</td>
</tr>
<tr>
<td align="left">5%</td>
<td align="center">92.26</td>
<td align="center">100.00</td>
<td align="center">99.30</td>
<td align="center">1.09</td>
<td align="center">5.86</td>
<td align="center">8.15</td>
</tr>
<tr>
<td align="left">10%</td>
<td align="center">59.16</td>
<td align="center">99.37</td>
<td align="center">70.80</td>
<td align="center">1.39</td>
<td align="center">9.95</td>
<td align="center">9.80</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Since BCKM needs less computation time due to fewer boosting rounds, we can adjust parameter <italic>T</italic> to optimize the trade-off between an acceptable computation time and the performance necessary for the target task. Figure <xref ref-type="fig" rid="F2">2</xref> shows typical relationships between the number of boosting rounds and NMI for three data sets Ecoli, Glass, and Tr11. The graphs plot the NMI values calculated by tentatively obtaining a kernel matrix <italic>K</italic> (step 13 in Algorithm <xref ref-type="table" rid="T7">3</xref>) and using it to execute kernel k-means clustering at each boosting round <italic>t</italic>. In most cases, NMI sharply increased by the 30th boosting round, while in some cases, such as 5 and 10% for Ecoli and Glass, NMI temporarily dropped for a few rounds before increasing again. This illustrates the advantage of ensemble learning in which a few bad weak hypotheses do not significantly affect the overall performance. Unlike CKM, BCKM does not depend on a single randomly set data assignment order that may or may not work and can recover even if the initial data assignment order does not work.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>NMI at each round of boosting.</p></caption>
<graphic xlink:href="frobt-05-00018-g002.tif"/>
</fig>
<p>As described in the last paragraph of Section <xref ref-type="sec" rid="S3">3</xref>, our algorithm is based on the assumption that the earlier the assignment of a constrained data pair, the greater the probability of the constraint being satisfied. Proofs that the first and second constraints in the data assignment order are guaranteed to be satisfied are given in Appendix 2. Here, we consider how many of the subsequent order constraints are satisfied. The relationships between the data assignment order and the satisfaction rates for all data sets are plotted in Figure <xref ref-type="fig" rid="F3">3</xref>. The rates for the constraints with first or second data assignment orders were 100% in all cases. The rates for the other constraints gradually decreased with the assignment order for most data sets. While some data sets such as Iris and Flame showed unstable patterns, our assumption was valid for most data sets. Thus, the BCKM algorithm should work well for most data sets.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>Rate of satisfied constraints with <italic>n</italic>th priority.</p></caption>
<graphic xlink:href="frobt-05-00018-g003.tif"/>
</fig>
</sec>
<sec id="S6-7">
<label>6.2</label> <title>Computation Time</title>
<p>Finally, we compare the BCKM and other algorithms from both the performance and the computation time points of view. Although BCKM is based on an approach similar to that of KBST, it was better from both points of view. Since the boosting frameworks used in both methods are quite similar, the advantage must be due to the quality of our original weak learner. From the performance point of view, our weak learner, a constrained k-means method with variable data assignment order, utilizes not only must-link but also cannot-link constraints, while the KBST weak learner, a constrained GMM, basically considers only must-link constraints. From the computation time point of view, our weak learner is much quicker than the KBST one since the EM algorithm used to estimate the GMM parameters generally needs more calculation time compared with that of the k-means algorithm.</p>
<p>BCKM showed better performance than BSTC, which is also based on the boosting framework. Since BSTC creates a new feature vector in each boosting round by Eigen decomposition, it is not suitable for data sets with a small or sparse feature space. Furthermore, it needs much computation time for data sets with a large feature space. Similarly, ITML is not suitable for data sets with a sparse feature space and needs much computation time if the feature space is large because ITML needs to learn a Mahalanobis distance matrix that has <italic>F</italic>&#x02009;&#x000D7;&#x02009;<italic>F</italic> elements, where <italic>F</italic> is the number of features. SPCL is also not suitable for data sets that have a sparse feature space and needs much computation time if the feature space is large because it also uses Eigen decomposition.</p>
<p>PCP worked well for all data sets and showed performance competitive to that of BCKM for some data sets. However, it needs a semidefinite programming solver, which requires more computation time than BCKM if the number of data sets is large.</p>
<p>In summary, our method is well balanced in terms of both performance and computation time since it achieves competitive performance with less computation time against other methods for many data sets. However, it needs a certain number of constraints because, if only a small number of constraints are given, the weak learner can satisfy all the constraints in the first boosting round, which results in the same performance as that of CKM. Thus, the number of constraints should exceed the number that CKM can satisfy all by itself.</p>
</sec>
<sec id="S6-8">
<label>6.3</label> <title>Visualization</title>
<p>Finally, we visualize the clustering result of each method on a data set. Figure <xref ref-type="fig" rid="F4">4</xref> shows the results on the Ecoli data set where the constraint ratio is 10%. Since the dimension is more than two, we used the principle component analysis (PCA) to visualize (Nguyen et al., <xref ref-type="bibr" rid="B23">2008</xref>). Axes PC1 and PC2 in each graph corresponds to the first and the second component, respectively. The graph with title &#x0201C;TRUE LABEL&#x0201D; shows the correct clustering results. The color of each point shows the cluster group. The Ecoli data set has 8 clusters. As shown in the graphs, BCKM and PCP are similar to the correct result, while other methods even failed to make the largest cluster (left lower cluster with purple color).</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>Visualization of clustering results for the Ecoli data set: the constraint ratio is 10%. The title of each graph is the name of method. The graph with title &#x0201C;TRUE LABEL&#x0201D; shows the correct clustering result. The color of each point shows the cluster group.</p></caption>
<graphic xlink:href="frobt-05-00018-g004.tif"/>
</fig>
<p>In this section, we first showed that the clustering performance of our method increases according to the number of boosting rounds, and we can choose an appropriate number depending on the required performance. We then experimentally verified the assumption that the earlier the assignment of a constrained data pair, the greater the probability of the constraint being satisfied. This is the reason why our method works well. We also discussed that our method has well-balanced properties in terms of clustering performance and computation time. We finally compared the actual behavior of each method by visualizing clustering results on a data set.</p>
</sec>
</sec>
<sec id="S7">
<label>7</label> <title>Conclusion</title>
<p>Our proposed constrained clustering algorithm balances the performance and computation time. We focused on the computation time advantage of the COP-k-means algorithm and improved its performance by incorporating a mechanism for accepting constraint priorities and a framework of kernel matrix learning that is based on the boosting principle. In this framework, our constrained k-means algorithm works as a weak learner that iteratively produces a weak hypothesis in the form of a kernel matrix by changing the data assignment order of the k-means process, which is set on the basis of constraint priorities controlled by the boosting principle.</p>
<p>Evaluation results showed that our method is better or competitive to other state-of-the-art methods in terms of clustering performance and computation time. They also showed that the number of boosting rounds can be adjusted to optimize the trade-off between clustering performance and computation time and that our constrained k-means algorithm correctly works as a weak learner of the boosting to satisfy constraints in accordance with their priorities. Our algorithm works well regardless of the fraction of must-link and cannot-link constraints, while it needs a certain number of constraints to bring out the strength of boosting.</p>
<p>Boosting is an ensemble learning approach. Although we tested a bagging approach, another promising approach is random forests. Its use remains for future work.</p>
</sec>
<sec id="S8" sec-type="author-contributor">
<title>Author Contributions</title>
<p>MO and SY contributed to making the idea of the research, implementing the proposed method and other ones to be compared, analyzing the results of the experiments, writing the paper, and final approval of the version to be published.</p>
</sec>
<sec id="S9">
<title>Conflict of Interest Statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="B1"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Arthur</surname> <given-names>D.</given-names></name> <name><surname>Vassilvitskii</surname> <given-names>S.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;K-means&#x0002B;&#x0002B;: the advantages of careful seeding,&#x0201D;</article-title> in <conf-name>Proceedings of the Eighteenth Annual ACM-SIAM Symposium on Discrete Algorithms, SODA &#x02019;07</conf-name>, <conf-loc>New Orleans</conf-loc>, <fpage>1027</fpage>&#x02013;<lpage>1035</lpage>.</citation></ref>
<ref id="B2"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Basu</surname> <given-names>S.</given-names></name> <name><surname>Davidson</surname> <given-names>I.</given-names></name> <name><surname>Wagstaff</surname> <given-names>K.</given-names></name></person-group> (<year>2008</year>). <source>Constrained Clustering: Advances in Algorithms, Theory, and Applications</source>. <publisher-name>Chapman &#x00026; Hall/CRC</publisher-name>.</citation></ref>
<ref id="B3"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Breiman</surname> <given-names>L.</given-names></name></person-group> (<year>1996</year>). <article-title>&#x0201C;Bagging predictors,&#x0201D;</article-title> in <source>Machine Learning</source>, <volume>24</volume>, <fpage>123</fpage>&#x02013;<lpage>140</lpage>.</citation></ref>
<ref id="B4"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Crammer</surname> <given-names>K.</given-names></name> <name><surname>Keshet</surname> <given-names>J.</given-names></name> <name><surname>Singer</surname> <given-names>Y.</given-names></name></person-group> (<year>2002</year>). <article-title>&#x0201C;Kernel design using boosting,&#x0201D;</article-title> in <conf-name>Proceedings of the 16th Annual Conference on Neural Information Processing Systems</conf-name>, <conf-loc>Vancouver and Whistler</conf-loc>, <fpage>537</fpage>&#x02013;<lpage>544</lpage>.</citation></ref>
<ref id="B5"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Davidson</surname> <given-names>I.</given-names></name></person-group> (<year>2012</year>). <article-title>&#x0201C;Two approaches to understanding when constraints help clustering,&#x0201D;</article-title> in <conf-name>Proceedings of the 18th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining</conf-name>, <conf-loc>Beijing</conf-loc>, <fpage>1312</fpage>&#x02013;<lpage>1319</lpage>.</citation></ref>
<ref id="B6"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Davidson</surname> <given-names>I.</given-names></name> <name><surname>Basu</surname> <given-names>S.</given-names></name></person-group> (<year>2006</year>). <article-title>&#x0201C;Clustering with constraints: theory and practice,&#x0201D;</article-title> in <source>Proc: Tutorial at the Int. Conf. on Knowledge Discovery in Databases and Data Mining</source>, <publisher-loc>Philadelphia</publisher-loc>.</citation></ref>
<ref id="B7"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Davidson</surname> <given-names>I.</given-names></name> <name><surname>Ravi</surname> <given-names>S. S.</given-names></name></person-group> (<year>2005</year>). <article-title>&#x0201C;Clustering with constraints: feasibility issues and the k-means algorithm,&#x0201D;</article-title> in <conf-name>Proceedings of the 5th SIAM Data Mining Conference</conf-name>, <conf-loc>Newport Beach</conf-loc>.</citation></ref>
<ref id="B8"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Davidson</surname> <given-names>I.</given-names></name> <name><surname>Wagstaff</surname> <given-names>K. L.</given-names></name> <name><surname>Basu</surname> <given-names>S.</given-names></name></person-group> (<year>2006</year>). <article-title>&#x0201C;Measuring constraint-set utility for partitional clustering algorithms,&#x0201D;</article-title> in <conf-name>Proceedings of the 10th European Conference on Principle and Practice of Knowledge Discovery in Databases, PKDD&#x02019;06</conf-name>, <conf-loc>Berlin</conf-loc>, <fpage>115</fpage>&#x02013;<lpage>126</lpage>.</citation></ref>
<ref id="B9"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Davis</surname> <given-names>J. V.</given-names></name> <name><surname>Julis</surname> <given-names>B.</given-names></name> <name><surname>Jain</surname> <given-names>P.</given-names></name> <name><surname>Sra</surname> <given-names>A.</given-names></name> <name><surname>Dhillon</surname> <given-names>I. S.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;Information-theoretic metric learning,&#x0201D;</article-title> in <conf-name>Proceedings of the 24th International Conference on Machine Learning</conf-name>, <conf-loc>Corvallis</conf-loc>, <fpage>209</fpage>&#x02013;<lpage>216</lpage>.</citation></ref>
<ref id="B10"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dietterich</surname> <given-names>T. G.</given-names></name></person-group> (<year>2000</year>). <article-title>An experimental comparison of three methods for constructing ensembles of decision trees: bagging, boosting, and randomization</article-title>. <source>Mach. Learn.</source> <volume>40</volume>, <fpage>139</fpage>&#x02013;<lpage>157</lpage>.<pub-id pub-id-type="doi">10.1023/A:1007607513941</pub-id></citation></ref>
<ref id="B11"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Girolami</surname> <given-names>M.</given-names></name></person-group> (<year>2002</year>). <article-title>Mercer kernel-based clustering in feature space</article-title>. <source>IEEE Trans. Neural Netw.</source> <volume>13</volume>, <fpage>780</fpage>&#x02013;<lpage>784</lpage>.<pub-id pub-id-type="doi">10.1109/TNN.2002.1000150</pub-id><pub-id pub-id-type="pmid">18244475</pub-id></citation></ref>
<ref id="B12"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Han</surname> <given-names>J.</given-names></name> <name><surname>Kamber</surname> <given-names>M.</given-names></name> <name><surname>Pei</surname> <given-names>J.</given-names></name></person-group> (<year>2011</year>). <source>Data Mining: Concepts and Techniques</source>, <edition>3rd Edn</edition>. <publisher-name>Morgan Kaufmann</publisher-name>.</citation></ref>
<ref id="B13"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hertz</surname> <given-names>T.</given-names></name> <name><surname>Bar-Hillel</surname> <given-names>A.</given-names></name> <name><surname>Weinshall</surname> <given-names>D.</given-names></name></person-group> (<year>2004</year>). <article-title>&#x0201C;Boosting margin based distance functions for clustering,&#x0201D;</article-title> in <conf-name>Proceedings of the 21st International Conference on Machine Learning</conf-name>, <conf-loc>Banff</conf-loc>, <fpage>393</fpage>&#x02013;<lpage>400</lpage>.</citation></ref>
<ref id="B14"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hertz</surname> <given-names>T.</given-names></name> <name><surname>Hillel</surname> <given-names>A. B.</given-names></name> <name><surname>Weinshall</surname> <given-names>D.</given-names></name></person-group> (<year>2006</year>). <article-title>&#x0201C;Learning a kernel function for classification with small training samples,&#x0201D;</article-title> in <conf-name>Proceedings of the 23rd International Conference on Machine Learning</conf-name>, <conf-loc>Pittsburgh</conf-loc>, <fpage>401</fpage>&#x02013;<lpage>408</lpage>.</citation></ref>
<ref id="B15"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hoi</surname> <given-names>S. C. H.</given-names></name> <name><surname>Jin</surname> <given-names>R.</given-names></name> <name><surname>Lyu</surname> <given-names>M. R.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;Learning nonparametric kernel matrices from pairwise constraints,&#x0201D;</article-title> in <conf-name>Proceedings of the 24th International Conference on Machine learning</conf-name>, <conf-loc>Corvallis</conf-loc>, <fpage>361</fpage>&#x02013;<lpage>368</lpage>.</citation></ref>
<ref id="B16"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Jain</surname> <given-names>P.</given-names></name> <name><surname>Kulis</surname> <given-names>B.</given-names></name> <name><surname>Dhillon</surname> <given-names>I. S.</given-names></name></person-group> (<year>2010</year>). <article-title>&#x0201C;Inductive regularized learning of kernel functions,&#x0201D;</article-title> in <conf-name>Proceedings of the 24th Annual Conference on Neural Information Processing Systems</conf-name>, <fpage>946</fpage>&#x02013;<lpage>954</lpage>.</citation></ref>
<ref id="B17"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kamvar</surname> <given-names>K.</given-names></name> <name><surname>Sepandar</surname> <given-names>S.</given-names></name> <name><surname>Klein</surname> <given-names>K.</given-names></name></person-group> (<year>2003</year>). <article-title>&#x0201C;Spectral learning,&#x0201D;</article-title> in <conf-name>Proceedings of the 18th International Joint Conference on Artificial Intelligence</conf-name>, <conf-loc>Acapulco</conf-loc>, <fpage>561</fpage>&#x02013;<lpage>566</lpage>.</citation></ref>
<ref id="B18"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kulis</surname> <given-names>B.</given-names></name> <name><surname>Sustik</surname> <given-names>M.</given-names></name> <name><surname>Dhillon</surname> <given-names>I.</given-names></name></person-group> (<year>2009</year>). <article-title>Low-rank kernel learning with Bregman Matrix Divergences</article-title>. <source>J. Mach. Learn. Res.</source> <volume>10</volume>, <fpage>341</fpage>&#x02013;<lpage>376</lpage>.</citation></ref>
<ref id="B19"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>Z.</given-names></name> <name><surname>Liu</surname> <given-names>J.</given-names></name> <name><surname>Tang</surname> <given-names>X.</given-names></name></person-group> (<year>2008</year>). <article-title>&#x0201C;Pairwise constraint propagation by semidefinite programming for semi-supervised classification,&#x0201D;</article-title> in <conf-name>Proceedings of the 25th International Conference on Machine learning</conf-name>, <conf-loc>Helsinki</conf-loc>, <fpage>576</fpage>&#x02013;<lpage>583</lpage>.</citation></ref>
<ref id="B20"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Liu</surname> <given-names>W.</given-names></name> <name><surname>Ma</surname> <given-names>S.</given-names></name> <name><surname>Tao</surname> <given-names>D.</given-names></name> <name><surname>Liu</surname> <given-names>J.</given-names></name> <name><surname>Liu</surname> <given-names>P.</given-names></name></person-group> (<year>2010</year>). <article-title>&#x0201C;Semi-supervised sparse metric learning using alternating linearization optimization,&#x0201D;</article-title> in <conf-name>Proceedings of the 16th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining</conf-name>, <conf-loc>Washington, DC</conf-loc>, <fpage>1139</fpage>&#x02013;<lpage>1147</lpage>.</citation></ref>
<ref id="B21"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Liu</surname> <given-names>Y.</given-names></name> <name><surname>Jin</surname> <given-names>R.</given-names></name> <name><surname>Jain</surname> <given-names>A. K.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;Boostcluster: boosting clustering by pairwise constraints,&#x0201D;</article-title> in <conf-name>Proceedings of the 13rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining</conf-name>, <conf-loc>San Jose</conf-loc>, <fpage>450</fpage>&#x02013;<lpage>459</lpage>.</citation></ref>
<ref id="B22"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>MacQueen</surname> <given-names>J.</given-names></name></person-group> (<year>1967</year>). <article-title>&#x0201C;Some methods for classification and analysis of multivariate observations,&#x0201D;</article-title> in <conf-name>Proceedings of the 5th Berkeley Symposium on Mathematical Statistics and Probability</conf-name>, Vol. <volume>1</volume>, <conf-loc>Berkeley</conf-loc>, <fpage>281</fpage>&#x02013;<lpage>297</lpage>.</citation></ref>
<ref id="B23"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nguyen</surname> <given-names>M. H.</given-names></name> <name><surname>Abbass</surname> <given-names>H. A.</given-names></name> <name><surname>McKay</surname> <given-names>R. I.</given-names></name></person-group> (<year>2008</year>). <article-title>Analysis of CCME: coevolutionary dynamics, automatic problem decomposition, and regularization</article-title>. <source>IEEE Trans. Syst. Man Cybern. C</source> <volume>38</volume>, <fpage>100</fpage>&#x02013;<lpage>109</lpage>.<pub-id pub-id-type="doi">10.1109/TSMCC.2007.905847</pub-id></citation></ref>
<ref id="B24"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Salton</surname> <given-names>G.</given-names></name> <name><surname>McGill</surname> <given-names>M.</given-names></name></person-group> (<year>1983</year>). <source>Introduction to Modern Information Retrieval</source>, <edition>3rd Edn</edition>. <publisher-name>McGraw-Hill</publisher-name>.</citation></ref>
<ref id="B25"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Schapire</surname> <given-names>R. E.</given-names></name> <name><surname>Freund</surname> <given-names>Y.</given-names></name></person-group> (<year>2012</year>). <source>Boosting: Foundations and Algorithms</source>. <publisher-name>The MIT Press</publisher-name>.</citation></ref>
<ref id="B26"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Schapire</surname> <given-names>R. E.</given-names></name> <name><surname>Singer</surname> <given-names>Y.</given-names></name></person-group> (<year>1999</year>). <article-title>&#x0201C;Improved boosting algorithms using confidence-rated predictions,&#x0201D;</article-title> in <source>Machine Learning</source>, <volume>37</volume>, <fpage>80</fpage>&#x02013;<lpage>91</lpage>.</citation></ref>
<ref id="B27"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Schapiro</surname> <given-names>R. E.</given-names></name></person-group> (<year>2013</year>). <article-title>&#x0201C;Explaining adaboost,&#x0201D;</article-title> in <source>Empirical Inference</source>, eds <person-group person-group-type="editor"><name><surname>Scholkopf</surname> <given-names>B.</given-names></name> <name><surname>Luo</surname> <given-names>Z.</given-names></name> <name><surname>Vovk</surname> <given-names>V.</given-names></name></person-group> (<publisher-name>Springer</publisher-name>), <fpage>37</fpage>&#x02013;<lpage>52</lpage>.</citation></ref>
<ref id="B28"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Strehl</surname> <given-names>A.</given-names></name> <name><surname>Ghosh</surname> <given-names>J.</given-names></name></person-group> (<year>2003</year>). <article-title>Cluster ensembles&#x02014;a knowledge reuse framework for combining multiple partitions</article-title>. <source>J. Mach. Learn. Res.</source> <volume>3</volume>, <fpage>583</fpage>&#x02013;<lpage>617</lpage>.</citation></ref>
<ref id="B29"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Wagstaff</surname> <given-names>K.</given-names></name> <name><surname>Cardie</surname> <given-names>C.</given-names></name> <name><surname>Rogers</surname> <given-names>S.</given-names></name> <name><surname>Schroedl</surname> <given-names>S.</given-names></name></person-group> (<year>2001</year>). <article-title>&#x0201C;Constrained k-means clustering with background knowledge,&#x0201D;</article-title> in <conf-name>Proceedings of the 18th International Conference on Machine Learning</conf-name>, <conf-loc>Williamstown</conf-loc>, <fpage>577</fpage>&#x02013;<lpage>584</lpage>.</citation></ref>
<ref id="B30"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>F.</given-names></name> <name><surname>Sun</surname> <given-names>J.</given-names></name> <name><surname>Ebadollahi</surname> <given-names>S.</given-names></name></person-group> (<year>2011</year>). <article-title>&#x0201C;Integrating distance metrics learned from multiple experts and its application in inter-patient similarity assessment,&#x0201D;</article-title> in <conf-name>Proceedings of the Eleventh SIAM International Conference on Data Mining, SDM 2011</conf-name> (<conf-loc>Mesa, AZ</conf-loc>), <fpage>59</fpage>&#x02013;<lpage>70</lpage>.</citation></ref>
<ref id="B31"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Wu</surname> <given-names>B.</given-names></name> <name><surname>Zhang</surname> <given-names>Y.</given-names></name> <name><surname>Hu</surname> <given-names>B.-G.</given-names></name> <name><surname>Ji</surname> <given-names>Q.</given-names></name></person-group> (<year>2013</year>). <article-title>&#x0201C;Constrained clustering and its application to face clustering in videos,&#x0201D;</article-title> in <conf-name>The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)</conf-name>, <conf-loc>Columbus</conf-loc>, <fpage>3507</fpage>&#x02013;<lpage>3514</lpage>.</citation></ref>
<ref id="B32"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Wu</surname> <given-names>L.</given-names></name> <name><surname>Jin</surname> <given-names>R.</given-names></name> <name><surname>Hoi</surname> <given-names>S.</given-names></name> <name><surname>Zhu</surname> <given-names>J.</given-names></name> <name><surname>Yu</surname> <given-names>N.</given-names></name></person-group> (<year>2009</year>). <article-title>&#x0201C;Learning Bregman distance 1958 functions and its application for semi-supervised clustering,&#x0201D;</article-title> in <conf-name>Proceedings of the 23rd Annual Conference on Neural Information Processing Systems</conf-name>, <fpage>2089</fpage>&#x02013;<lpage>2097</lpage>.</citation></ref>
<ref id="B33"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Zelnik-Manor</surname> <given-names>L.</given-names></name> <name><surname>Perona</surname> <given-names>P.</given-names></name></person-group> (<year>2005</year>). <article-title>&#x0201C;Self-tuning spectral clustering,&#x0201D;</article-title> in <conf-name>Proceedings of the 18th Annual Conference on Neural Information Processing Systems</conf-name>, Vol. <volume>2</volume>, <fpage>1601</fpage>&#x02013;<lpage>1608</lpage>.</citation></ref>
</ref-list>
<fn-group>
<fn id="fn1"><p><sup>1</sup>The proof is in Appendix B.</p></fn>
<fn id="fn2"><p><sup>2</sup><uri xlink:href="http://archive.ics.uci.edu/ml/">http://archive.ics.uci.edu/ml/</uri>.</p></fn>
<fn id="fn3"><p><sup>3</sup><uri xlink:href="http://glaros.dtc.umn.edu/gkhome/cluto/cluto/download">http://glaros.dtc.umn.edu/gkhome/cluto/cluto/download</uri>.</p></fn>
<fn id="fn4"><p><sup>4</sup><uri xlink:href="http://cs.joensuu.fi/sipu/datasets/">http://cs.joensuu.fi/sipu/datasets/</uri>.</p></fn>
<fn id="fn5"><p><sup>5</sup>The source code is available at <uri xlink:href="https://github.com/mokabe1567/bckm">https://github.com/mokabe1567/bckm</uri>.</p></fn>
<fn id="fn6"><p><sup>6</sup><uri xlink:href="http://www.scharp.org/thertz/code.html">http://www.scharp.org/thertz/code.html</uri>.</p></fn>
<fn id="fn7"><p><sup>7</sup><uri xlink:href="http://www.cs.utexas.edu/&#x0007E;pjain/itml/">http://www.cs.utexas.edu/&#x0007E;pjain/itml/</uri>.</p></fn>
<fn id="fn8"><p><sup>8</sup><uri xlink:href="http://www.math.nus.edu.sg/&#x0007E;mattohkc/sdpt3.html">http://www.math.nus.edu.sg/&#x0007E;mattohkc/sdpt3.html</uri>.</p></fn>
</fn-group>
<app-group>
<app id="A1">
<title>Appendix</title>
<sec id="S10">
<label>A</label> <title>Proof That <italic>K<sup>t</sup></italic> and <italic>K</italic> Are Semidefinite</title>
<p>To prove that <italic>K</italic><bold><italic><sub>t</sub></italic></bold> is semidefinite, we have to show that <italic>xK<sub>t</sub>x&#x02032;</italic>&#x02009;&#x02265;&#x02009;0 <italic>x&#x02032;</italic> is the transposed matrix of <italic>x</italic> for any vector <italic>x</italic>&#x02009;&#x0003D;&#x02009;&#x0007B;<italic>x</italic><sub>1</sub>, &#x022EF;&#x02009;&#x02009;, <italic>x<sub>N</sub></italic>&#x0007D;.</p>
<p>Suppose we obtain a set of <italic>k</italic> clusters at step 5 in Algorithm 4 and let <inline-formula><mml:math id="M32"><mml:msubsup><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x022EF;</mml:mo><mml:mspace width="0.3em"/><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> be data that belongs to the <italic>k</italic>th cluster.</p>
<p>If we replace rows (or columns) of <italic>K<sup>t</sup></italic> with data in the same cluster to serially align as follows:
<disp-formula id="E3"><mml:math id="M33"><mml:munder><mml:munder><mml:mrow><mml:msubsup><mml:mi>d</mml:mi><mml:mn>1</mml:mn><mml:mn>1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x022EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mn>1</mml:mn></mml:msubsup></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mi mathvariant="italic">cluster</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:munder><mml:mo>,</mml:mo><mml:munder><mml:munder><mml:mrow><mml:msubsup><mml:mi>d</mml:mi><mml:mn>2</mml:mn><mml:mn>1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x022EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mn>2</mml:mn></mml:msubsup></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mi mathvariant="italic">cluster</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:munder><mml:mo>,</mml:mo><mml:mo>&#x022EF;</mml:mo><mml:munder><mml:munder><mml:mrow><mml:msubsup><mml:mi>d</mml:mi><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x022EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mi>k</mml:mi></mml:msubsup></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mi mathvariant="italic">clusterk</mml:mi></mml:mrow></mml:munder></mml:math></disp-formula>
where <italic>n<sub>k</sub></italic> is the number of data points in the <italic>k</italic>th cluster, we can represent <italic>K<sup>t</sup></italic> as
<disp-formula id="E4"><mml:math id="M34"><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-rel">&#x022F1;</mml:mo></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>O</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <italic>A<sub>k</sub></italic> is an <italic>n<sub>k</sub></italic>&#x02009;&#x000D7;&#x02009;<italic>n<sub>k</sub></italic> matrix for which the elements are all 1 and <italic>O</italic> is a zero matrix. Then we can represent <italic>xk<sub>t</sub>x&#x02032;</italic> as follows:
<disp-formula id="E5"><mml:math id="M35"><mml:mtable columnalign="left" class="align-star"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mi>x</mml:mi><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02032;</mml:mo></mml:mrow></mml:msup></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>x</mml:mi><mml:msub><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02032;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>x</mml:mi><mml:msub><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02032;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mo class="MathClass-rel">&#x022EF;</mml:mo><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>x</mml:mi><mml:msub><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02032;</mml:mo></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mfenced separators="" open="&#x0007B;" close="&#x0007D;"><mml:mrow><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:munderover></mml:mstyle><mml:mspace width="0.3em"/><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mfenced separators="" open="&#x0007B;" close="&#x0007D;"><mml:mrow><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:munderover></mml:mstyle><mml:mspace width="0.3em"/><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mo class="MathClass-rel">&#x022EF;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd></mml:mtd><mml:mtd class="align-even"><mml:mspace width="1em" class="quad"/><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mfenced separators="" open="&#x0007B;" close="&#x0007D;"><mml:mrow><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>N</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mspace width="0.3em"/><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd></mml:mtd><mml:mtd class="align-even"><mml:mspace width="1em" class="quad"/><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Thus <italic>K<sup>t</sup></italic> is semidefinite.</p>
<p>Furthermore, for <italic>K</italic>, we can transform
<disp-formula id="E6"><mml:math id="M36"><mml:mtable columnalign="left" class="align-star"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msup><mml:mrow><mml:mi mathvariant="italic">xKx</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02032;</mml:mo></mml:mrow></mml:msup></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>x</mml:mi><mml:mfenced separators="" open="&#x0007B;" close="&#x0007D;"><mml:mrow><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mspace width="0.3em"/><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02032;</mml:mo></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mspace width="0.3em"/><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mi>x</mml:mi><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02032;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
where &#x003B1;<italic><sub>t</sub></italic>&#x02009;&#x0003E;&#x02009;0, and <italic>xK<sub>t</sub>x&#x02032;</italic>&#x02009;&#x02265;&#x02009;0, meaning that <italic>xKx&#x02032;</italic>&#x02009;&#x02265;&#x02009;0. Thus, <italic>K</italic> is also semidefinite.</p>
</sec>
<sec id="S11">
<label>B</label> <title>Proof That Constraints with First or Second Priority Are Guaranteed to Be Satisfied</title>
<p>We assume that the constraints are consistent each other and guaranteed to be satisfied theoretically.</p>
<sec id="S11-8-3">
<label>B.1</label> <title>Constraint with First Priority</title>
<p>This constraint is guaranteed to be satisfied since there are no other constraints when it is being satisfied.</p>
</sec>
<sec id="S11-8-4">
<label>B.2</label> <title>Constraint with Second Priority</title>
<p>Let a constrained data pair be assigned with the first order (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>).</p>
<p>There are two patterns for a combination of constrained data pairs to be assigned with the second order.
<list list-type="bullet">
<list-item><p>If the first and second pairs have the same data points, let the second pair be (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) or (<italic>d</italic><sub>2</sub>, <italic>d</italic><sub>3</sub>).</p></list-item>
<list-item><p>If the first and second pairs do not have the same data points, let the second pair be (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>).</p></list-item>
</list></p>
<p>For each case, we show how to satisfy the constraint.
<list list-type="bullet">
<list-item><p>For (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) or (<italic>d</italic><sub>2</sub>, <italic>d</italic><sub>3</sub>)We here describe the case of (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>).
<list list-type="bullet">
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) and (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) are both must-link pairs, we can satisfy the must-link constraint of (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) by assigning <italic>d</italic><sub>3</sub> to the same cluster as <italic>d</italic><sub>1</sub> and <italic>d</italic><sub>2</sub>.</p></list-item>
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) is a must-link pair and (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) is a cannot-link pair, we can satisfy the cannot-link constraint of (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) by assigning <italic>d</italic><sub>3</sub> to a different cluster than <italic>d</italic><sub>1</sub> and <italic>d</italic><sub>2</sub>.</p></list-item>
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) is a cannot-link pair and (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) is a must-link pair, we can satisfy the must-link constraint of (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) by assigning <italic>d</italic><sub>3</sub> to the same cluster as <italic>d</italic><sub>1</sub></p></list-item>
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) and (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) are both cannot-link pairs, we can satisfy the cannot-link constraint of (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) by assigning <italic>d</italic><sub>3</sub> to a different cluster than <italic>d</italic><sub>1</sub>.</p></list-item>
</list></p></list-item>
<list-item><p>For (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>)
<list list-type="bullet">
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) and (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) are both must-link pairs, we can satisfy the must-link constraint of (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) by assigning (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) to the same cluster as (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>).</p></list-item>
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) is must-link pair and (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) is cannot-link pair, we can satisfy the cannot-link constraint of (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) by assigning <italic>d</italic><sub>3</sub> and <italic>d</italic><sub>4</sub> to different clusters.</p></list-item>
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) is cannot-link pair and (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) is must-link pair, we can satisfy the must-link constraint of (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) by assigning <italic>d</italic><sub>3</sub> and <italic>d</italic><sub>4</sub> to the same cluster.</p></list-item>
<list-item><p>If (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) and (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) are both cannot-link pairs, we can satisfy the cannot-link constraint of (<italic>d</italic><sub>3</sub>, <italic>d</italic><sub>4</sub>) by assigning <italic>d</italic><sub>3</sub> and <italic>d</italic><sub>4</sub> to different clusters.</p></list-item>
</list></p></list-item>
</list></p>
<p>Thus, we can satisfy the constraint with the second priority in any case.</p>
</sec>
<sec id="S11-8-5">
<label>B.3</label> <title>Constraint with Third Priority</title>
<p>For example, a constraint cannot be satisfied in the following case.</p>
<p>There are three data points, <italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>, and <italic>d</italic><sub>3</sub>. Let the nearest cluster for each data point be a, b, and c, respectively. Suppose there are three constraints with priorities as follows.
<list list-type="bullet">
<list-item><p>Constraint with first priority: (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>3</sub>) is a cannot-link pair</p></list-item>
<list-item><p>Constraint with second priority: (<italic>d</italic><sub>2</sub>, <italic>d</italic><sub>3</sub>) is a cannot-link pair</p></list-item>
<list-item><p>Constraint with third priority: (<italic>d</italic><sub>1</sub>, <italic>d</italic><sub>2</sub>) is a must-link pair</p></list-item>
</list></p>
<p>After the data pair with the second priority is assigned, each data pair is assigned in the order <italic>d</italic><sub>1</sub> &#x02192; <italic>a, d</italic><sub>2</sub> &#x02192; <italic>b, d</italic><sub>3</sub> &#x02192; <italic>c</italic>, so the constraint with the third priority cannot be satisfied in any way.</p>
<p>Thus, in our constrained k-means algorithm, constraints with the first and second priorities are guaranteed to be satisfied.</p>
</sec>
</sec>
</app>
</app-group>
</back>
</article>