<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Hybrid Partitioning Strategy for Distributed FCA</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jyoti[</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Indian Institute of Technology Mandi</institution>
          ,
          <country country="IN">India</country>
        </aff>
      </contrib-group>
      <fpage>71</fpage>
      <lpage>82</lpage>
      <abstract>
        <p>Several parallel and distributed FCA algorithms have been proposed to speedup the discovery of concepts. Some require the context to be replicated on all machines while others partition the context horizontally across different machines. The former suffers from memory bottlenecks for large contexts as every machine retains the entire context in memory. The latter approaches are based on Map-Reduce paradigm wherein to compute a valid concept requires all-all communication between different machines, incurring huge communication overheads. It has been shown that DFS (Depth-First-Search) based approaches can exploit database reduction strategy for concept sub-tree exploration. This significantly decreases the cost of closure computation in the concept sub-tree and results in higher speedup. The existing Map-Reduce based approaches cannot use DFS exploration strategy. In this paper, we propose a hybrid partitioning strategy for distributed FCA that uses horizontal partitioning for groups of low support attributes and vertical partitioning for high support attributes. This not only alleviates memory bottlenecks but also minimizes communication overheads. For vertically partitioned sub-context, inter-machine communication is only required for concepts below a certain support threshold. We further minimize the communication cost by using group-id based auxiliary structure. This hybrid partitioning also allows DFS based concept exploration, thereby making it more scalable and efficient.</p>
      </abstract>
      <kwd-group>
        <kwd>Hybrid partitioning</kwd>
        <kwd>Large context</kwd>
        <kwd>Distributed FCA</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Formal Concept Analysis (FCA) is a method of data analysis that aims at
extracting natural clusters (formal concepts) from object and attribute data table
(a.k.a. context). The sequential algorithms for computing concepts (e.g.
CloseBy-One (CbO) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], LCM [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], and DCI-Closed [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]) do not scale to large contexts
as the total number of concepts can be extremely large. In the worst-case, it
is exponential in the number of objects/attributes. To speedup the discovery of
concepts, several parallel and distributed FCA algorithms have been proposed [
        <xref ref-type="bibr" rid="ref11 ref2 ref3 ref4 ref5">5,
3, 2, 11, 4</xref>
        ]. These algorithms either replicate the input context on all machines
or partition the context horizontally across different machines. The algorithms
that use replicated context [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] suffer from memory bottlenecks for large
contexts as every machine needs to retain the entire context in memory. The other
algorithms [
        <xref ref-type="bibr" rid="ref11 ref2">2, 11</xref>
        ] partition the context horizontally across multiple machines.
Here, computing a concept that is valid in the entire context involves two steps:
(1) each machine first computes the local closure in its partition. Then it
exchanges the local closure with other machines using broadcast. (2) At the end
of broadcast, each machine computes the valid concept by intersecting the local
closures from all the machines. The above two steps are repeated until all valid
concepts are discovered. MR-Ganter [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] implements the above procedure using a
sequence of Map-Reduce (MR) jobs whereas MR-Ganter+ [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] uses Twister [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ],
a MR-based framework for iterative computations.
      </p>
      <p>
        It has been shown that DFS based approaches can exploit database reduction
for concept sub-tree exploration. This significantly decreases the cost of closure
computation in the concept sub-tree and results in higher speedup. The existing
MR-based approaches cannot use DFS exploration strategy as it would make
them highly inefficient. If they compute one concept at a time using DFS, they
would incur large waiting time due to all-all communication between the
machines. Hence, they explore the concept tree in a breadth-first manner and try
to overlap communication and computation. However, they lose the benefits of
database reduction available in DFS based approach. From experiments, we find
that the distributed MR-based algorithms perform slower than even single node
DFS based algorithms like LCM [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>In this paper, we propose a hybrid partitioning strategy for distributed FCA
that uses horizontal partitioning for groups of low support attributes and vertical
partitioning for high support attributes (see Fig. 1). This partitioning strategy
allows DFS based concept exploration, alleviates memory bottlenecks and
minimizes communication overheads. Hence, it is more scalable and efficient than
existing algorithms. We also propose some optimizations for reducing inter-machine
communication cost by using group-id based auxiliary structure.</p>
      <p>Rest of the paper is organized as follows: Section 2 introduces the relevant
background and related work; Section 3 discusses the hybrid partitioning
strategy and the optimizations for reducing inter-machine communication cost;
Section 4 describes the performance results and Section 5 discusses the conclusion
and future work of this paper.
2
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Background and Related Work</title>
      <sec id="sec-2-1">
        <title>FCA: Notations and Definitions</title>
        <p>In this section, we introduce the relevant notations and terminology of FCA.
Definition 1 A formal context K = (G, M, I), consists of two sets G and M ,
and a binary relation I ⊆ G×M . G represents the set of objects and M represents
the set of attributes. If g ∈ G and m ∈ M are in relation I, we write (g, m) ∈
I or gIm. It can be read as “object g has attribute m”.</p>
        <p>
          Formal concept is computed using two operators ↑ and ↓. ↓↑ is a closure
operator [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. These operators are defined as below:
Definition 2 Let A ⊆ G and B ⊆ M , then: A↑ = {m ∈ M | ∀g ∈ A : (gIm)},
and B↓ = {g ∈ G | ∀m ∈ B : (gIm)}
Definition 3 An object subset A ⊆ G is closed in (G, M, I) if A = A↑↓. An
attribute subset B ⊆ M is closed in (G, M, I) if B = B↓↑.
        </p>
        <p>A formal concept is described by an extent and an intent as shown below:
Definition 4 A duplet hA, Bi is called formal concept of context K = (G, M, I),
if A ⊆ G and B ⊆ M , A↑ = B, and A = B↓. The set A (object set) is called the
extent and the set B (attribute set) is called the intent of the concept.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Basic Linear time Closed itemset Miner (LCM)</title>
        <p>
          Linear time Closed itemset Miner (LCM) [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] is state-of-the-art sequential
algorithm for concept discovery. LCM algorithm induces a search tree on concepts
and explores it in a depth-first-search manner. Given a concept intent, the LCM
procedure adds attributes which are not part of the intent (a.k.a. list of markers)
and computes the resulting closure. These closures form the next-level concepts.
To prevent generating the same concept multiple times (duplicate concepts),
LCM orders the attributes; it considers a particular concept valid only if it is
generated in the sub-tree of the leftmost attribute in that concept. This
redundancy check is performed during closure computation, by testing whether the
newly added attributes in the closure contain any attribute to the left of the
marker. If yes, it is considered a duplicate, else it is considered a valid concept.
LCM bounds the time complexity of concept mining to a function linear in the
number of concepts and its memory usage is linear in the size of the context.
However, due to its sequential nature, it does not scale to large contexts. We
have designed a Group based LCM algorithm that can scale to large contexts.
2.3
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Related Work</title>
        <p>
          There are both parallel and distributed implementations of the LCM algorithm.
P-LCM [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] is a parallel version of LCM based on shared memory model; the task
queue is shared among all the workers. When a worker becomes idle, it pulls
tasks from the shared queue. This approach works in a multi-core environment,
but requires redesign to work in distributed shared nothing architectures largely
prevalent in the cloud [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Distributed-LCM [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] uses a master-worker based
architecture. The master performs static load balancing to assign seed concepts
to each worker. It also maintains meta-data about the load on each worker. The
workers generate the concepts in the sub-tree below the assigned seed concept.
When they become idle, they request the master to assign a donor and fetch work
from the donor. This master-aided dynamic load balancing scheme distributes
the skewed concept tree of LCM evenly among the workers. Distributed-LCM
provides linear speedups for many contexts, however, it is not scalable to large
contexts as it uses context replication on all the workers.
        </p>
        <p>
          MR-CbO [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] is the first distributed implementation of CbO [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] based on the
Map-Reduce framework. It follows an iterative approach. In the map phase, each
mapper(worker) computes the first level concepts from a given seed concept and
passes them to the reduce phase for redundancy check. Those concepts which
pass the redundancy check are considered as seed concepts for the next iteration.
MR-CbO also requires the entire context to be replicated. Hence it is not scalable.
To address this issue, MR-Ganter [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] partitions the context horizontally. Each
mapper finds the local closure with respect to their partitioned context. In the
next phase, global closure is computed from the local closures of the previous
phase. This method suffers from communication overhead for computing the
concepts valid in the entire context and for performing the redundancy check.
Further, the MR-based approaches do not use DFS based exploration of the
concept tree, thereby losing the benefits of database reduction.
        </p>
        <p>
          Yoshizoe et al. [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] proposed an attribute-based partitioning of the context;
wherein each partition consists of objects in the extent of the attribute. This
allows discovery of all concepts that contain a particular attribute without any
inter-machine communication. However, for large contexts, the partition
corresponding to high support attributes would contain almost the entire context
leading to memory bottleneck.
        </p>
        <p>In summary, existing parallel and distributed versions of LCM either work
on replicated context or horizontally partitioned context. The former suffers
from memory bottlenecks for large contexts as every machine retains the entire
context in memory. The latter approaches incur huge communication overheads
and are not able to explore the concept tree using DFS based strategy.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>G-LCM (group-based LCM)</title>
      <p>We propose G-LCM, a group-based LCM algorithm that scales to large contexts.
G-LCM uses a hybrid partitioning strategy to bound the communication cost as
well as the memory consumption across machines.
3.1</p>
      <sec id="sec-3-1">
        <title>Hybrid Partitioning in G-LCM</title>
        <p>Hybrid partitioning is a technique that uses horizontal partitioning for low
support attributes and vertical partitioning for high support attributes (above
certain support threshold). The context is reordered according to the support of the
attributes. For creating horizontal partitions, we start with the attribute having
the lowest support and form groups of attributes in an increasing order of their
support by fixing an upper bound on the total number of objects in a group.</p>
        <p>Thus, the low support attributes are grouped into many horizontal partitions,
each of which can be stored in a single machine. The high support attributes are
grouped into a single vertical partition containing only the frequent attributes
in each of its objects. This enables us to compress the vertical partition since
many objects in this group would become identical and can be coalesced.</p>
        <p>We use 3 Hadoop Map-Reduce jobs to partition the input context. Job1
computes the support of attributes; job2 reorders the attributes based on their
support and job3 partitions the context based on the grouping strategy.
3.1.1 Horizontal Partitioning: The sub-context induced by a group of
attributes is referred as a horizontal partition. Consider a formal context K =
(G, M, I) relabeled according to support of the attributes; the attribute with
the lowest support is assigned the lowest index.</p>
        <p>Definition 5 Suppose attributes are indexed and arranged in the ascending
order of their support as m1, m2, ... m|M|. The grouping strategy partitions the
attributes linearly into (say r + 1-groups): R1, R2, ...,Rr, and R0.
1. Each horizontal partition, Ri = {mk | mk ∈ M, k ∈ [L(i), U (i)]}
2. Vertical partition (R0) = {mk | mk ∈ M, support(mk) ≥ minT h}
L(i) =
U (i) =
1,</p>
        <p>if i = 1
U (i − 1) + 1, if 1 &lt; i ≤ r</p>
        <p>j
j | j &lt; |M | and X support(mk) ≤ θ &lt;
j+1</p>
        <p>X support(mk)
k=L(i) k=L(i)
Where, θ is upper bound on the number of objects in a partition and support(mk)
returns the cardinality of m↓k.</p>
        <p>Suppose that K is partitioned into k horizontal partitions each having
groupid in [1, r](see Fig. 1). While forming groups of attributes, we ensure that the
total number of objects in their corresponding partitions is less than or equal
to a threshold θ. Consider a toy context shown in Table 1 consisting of four
attributes and four objects. The relabelled context after sorting the attributes
according to support is shown in Table 2. Assume that the upper bound θ = 2,
then NYC and DEL are the frequent attributes. The two horizontal partitions
are formed with group attribute set {BOM } and {LON } respectively. Group 1
contains objects 1 and 4 (See Table 3). Group 2 contains objects 2 and 4 (see
Table 4).</p>
        <p>Definition 6 The sub-context induced by Rk, k &gt; 0, is known as the horizontal
partition, Kk = (Gk, Mk, Ik) and is defined as: Gk = Sm∈Rk (m↓), where m↓ is
the set of objects in K containing attribute m, Mk = Sg∈Gk (g↑), where g↑ is the
set of attributes in K containing object g, and Ik = (Gk × Mk) ∩ I. ↑k and ↓k
denote the corresponding concept forming operators in Kk.</p>
        <p>Lemma 1. Every concept (A, B) generated by the horizontal partition Kk that
includes at least one attribute m ∈ Rk as part of its intent (i.e. m ∈ B) is valid
in the entire context (G, M, I).</p>
        <p>Proof. Suppose (A, B) is not closed in K. Then by extensivity of closure operator,
B ⊆ B↓↑. Let n ∈ B↓↑ \ B.
=⇒ ∀g ∈ B↓ : gIn
Consider an attribute m ∈ Rk s.t. m ∈ B
=⇒ ∀g ∈ B↓ : gIm
=⇒ B↓ ⊆ m↓
=⇒ B↓ ⊆ Gk (m ∈ Rk)
=⇒ B↓ = B↓k (By definition of Ik)
But B↓k = A (((A,B) is closed in Kk)
=⇒ ∀g ∈ A : gIn
=⇒ n ∈ B</p>
        <p>(hence, proved by contradiction)
3.1.2 Vertical Partitioning: Vertically partitioned context is defined w.r.t. a
support threshold and is assigned group-id 0. It contains the union of occurrences
of all attributes whose support is greater than the threshold. Vertical partition
with support threshold 3 is shown in Table 5.</p>
        <p>Definition 7 The vertically partitioned context K0 = (G0, M0, I0) w.r.t. support
threshold (minT h) is defined as: M0 ⊆ M s.t. ∀m ∈ M0, support(m) ≥ minT h,
G0 = G and I0 = (G0 × M0) ∩ I.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Concept discovery from vertical partition of the context</title>
        <p>As the vertical partition does not include all the attributes, it can lead to
discovery of invalid concepts in certain cases. For example closure of {NYC, DEL} in
vertical partitioned context is {NYC, DEL} but the actual closure in the input
context is {LON, NYC, DEL}. From this example, it is clear that the vertical
partition may generate invalid concepts. Hence, we augment the vertically
partitioned context with auxiliary information that will help check validity of the
concept. We define the augmented context for the vertical partition.
Definition 8 An augmented context Kac = (Gac, Mac, Iac) is defined as: Gac =
G, Mac = {m(k) | 1 ≤ k ≤ r}, where r is the number of horizontal partitions
and gIacm(k) iff ∃m ∈ Rk s.t. gIm.</p>
        <p>Lemma 2. Let ↑a denote the ↑ operator in Kac. A concept (Av, Bv) generated
by the vertical partition is valid if for every horizontal partition Kk : m(k) ∈ Av↑a
there exists no attribute m ∈ Rk s.t. Av ⊆ m↓k .</p>
        <p>Proof. Assume there exists an attribute m ∈ Rk s.t. Av ⊆ m↓k .
=⇒ ∀g ∈ Av : gIm
=⇒ m ∈ Av↓. But Av↓ = Bv and m ∈/ Bv. Hence proved.</p>
        <p>For each concept generated by the vertical partition, we intersect the group-ids
of the objects in the extent (using the augmented context). If the intersection
returns an empty set, then the concept is valid, else an additional check is
required to test the validity of the concept. For example, suppose that we make
2 groups in our toy context; attributes in group 0 (vertical partition) contain
NYC and DEL, while attributes in group 1 (horizontal partition) contain BOM
and LON. Group 0 includes all 4 objects. In the augmented context, each object
will contain group-id 1 except object 3. Hence, for concept intent {DEL} in the
augmented context, the group-id intersection returns {1}. This however does not
mean that {DEL} is an invalid concept intent. We need to test its validity w.r.t.
attributes in group 1. In this case, we find that no attribute in group 1 includes
the extent of {DEL}, and therefore {DEL} is a valid concept intent.</p>
        <p>
          Thus, group-id based intersection may generate false positives but no false
negatives. To understand how false positives are handled, let us assume a
scenario in which, machine M0 is discovering concept in vertical partition; where
as machine M1 and M2 are discovering concepts in group 1 and 2 (horizontal
partitions) respectively. In machine M1 and M2, a hash table is created with
keys as the low support attributes (m) of the corresponding group and value
being the corresponding attribute’s object ids (m↓). To check the validity of the
concept (Av, Bv) discovered in the vertical partition, a validity check is issued to
all the machines whose id is returned by the group-id based intersection. Upon
receiving this query, each machine checks in its hash table whether the extent
Av is a subset of the value stored against any attribute id of that group. If a
match is found, then the concept discovered by the vertical partition is invalid.
This check can be implemented efficiently using a Cuckoo filter.
3.2.1 Cuckoo filter Cuckoo filter is a probabilistic data structure that checks
the membership of an element in a set. It is mainly designed for applications that
need to store many elements in the set and check the membership of the set with
low false positive rate. Cuckoo filter is variant of cuckoo hash table that stores
only fingerprints instead of (key, value) pairs which leads to space efficient filter
and restricts false positive rate to less than 3% [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
        </p>
        <p>For each attribute (m ∈ Rk), we store its object IDs (m↓) in a cuckoo filter. To
test the validity of a concept intent, we first determine the candidate horizontal
partitions using the augmented context. Then for each candidate partition, we
check the concept extent against the cuckoo filter of those attributes whose
support is greater than the size of the extent. If the cuckoo filter returns negative
for any object in the concept extent, it means that the concept intent does
not include that attribute. Otherwise, the attribute can be present with high
probability and needs to be verified by actual comparison of the concept extent
with the concerned attribute’s extent.
3.2.2 G-LCM algorithm for discovering the concepts in vertical
partition Algorithm 1 shows how concepts are discovered in the vertical
partition. In line number 2, algorithm iterates over the (M 0) attribute set. In line
number 4, it checks whether the newly found concept is redundant or not
using function isN ewConcept similar to LCM (see Section 2.2). If the support
of the new concept is below the threshold (line 5), then it performs the
validity check locally using group-id based intersection function (line 6). If that
returns a non-empty set (line 7) then for each group-id in gIDList
(groupid list), a membership query is sent to the machine which holds that
groupid context (lemma 2). On that machine, the cuckoo filter is used to check
the validity of the concept (line 8). As cuckoo filter may produce false
positives, we do an actual comparison with the extent if the cuckoo filter returns
true (lines 11 - 18). If the extent is having some common attributes in the
group-id context then it is a true positive (line 14) else false positive (line 16).</p>
        <p>In case the support of the newly found concept is greater than minimum
threshold (minT h) then the extent of the concept does not have any common
attribute from infrequent attributes. Thus, the concept found is valid (line 19).
In the next section, we discuss experimental evaluation of this algorithm.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Results and Discussion</title>
      <p>
        We implemented G-LCM algorithm in Java. The context is partitioned into
horizontal and vertical partitions using Map-Reduce jobs. For horizontal partitions,
we can use the distributed LCM algorithm from [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to compute the concepts.
Each horizontal partition is passed as a separate job to the framework. As each
machine holds only the horizontal partition instead of the entire input context
(see section 2.3), the memory bottleneck is resolved. According to lemma 1,
each horizontal partition should generate only concepts containing at least one
attribute of the group in its intent. To ensure this, we add the attributes of the
corresponding group as first level markers (see section 2.2) to the null concept.
From second level onward, the basic LCM procedure is followed.
      </p>
      <p>Here, we report performance results for computing concepts in the vertical
partition for susy and pumsb_star data-sets. The susy data-set 1 contains 190
attributes and 5 million objects with average object length as 19.</p>
      <p>We evaluate the efficacy of group-id based intersection and cuckoo filter for
different values of support threshold. When group-id based intersection function
returns an empty set, no inter-machine communication is necessary to test the
validity of the concept. In Table 7, the true negative column (T Ng) captures the
frequency of such occurrences in susy dataset. If the function returns a non-empty
set (gIDList) then for each group-id in gIDList, we need to check whether the
1 FIMI repository, http://fimi.cs.helsinki.fi/. Last accessed 1 March 2020
concept is valid/invalid. If the group has at least one attribute containing the
extent, then the concept is invalid. As the group-id based intersection did not
detect this, it is counted as False Positive ((F Pg)). Otherwise the concept is
valid (T Pg). We observe that the group-id based intersection returns an empty
set (T Ng) almost 100% times for susy data-set. This means that concepts
discovered in the vertical partition are valid and there is no need for inter-machine
communication.</p>
      <p>For experiments on pumsb_star data-set 2(containing 49046 objects, 2088
attributes with average object length as 50.48), we found that group-id based
intersection returned a non-empty set (F Pg) close to 50% (see Table 8 for
pumsb_star data-set). Here, we need to communicate with a machine whose
group-id is contained in the list returned by group-id based intersection. Still
group-based auxiliary structure reduces the communication cost significantly as
communication is required only with the machines storing the partition
corresponding to that group and not all of them. On the machine, the validity check
is performed using cuckoo filter. If cuckoo filter returns false ( T Nc), then the
concept is valid in the vertical partition. In such cases, no comparison with the
actual context of the horizontal partition is necessary. From Table 8, we see that
cuckoo filter always returns true negative ( T Nc).</p>
      <p>Our experiments show that group-id based auxiliary structure decreases the
inter-machine communication cost for testing validity of discovered concepts by
almost 100% for susy data-set and up to 50% for pumsb_star data-set. Cuckoo
filter reported 0% false positives (F Pc) thereby further minimizing the cost of
validity checks.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions and future work</title>
      <p>
        In this paper, we proposed a novel hybrid partitioning technique that uses
horizontal partitioning for low support attributes and vertical partitioning for high
support attributes. This technique ensures that the size of each partition does
not exceed single machine’s memory. Thus, it becomes possible to use the
distributed LCM algorithm [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to compute concepts in parallel in each horizontal
partition. We proposed a new approach for computing concepts using group-id
based auxiliary structure for the vertical partition. The experimental evaluation
shows significant reduction in the inter-machine communication cost. Thus,
using horizontal and vertical partitioning, our algorithm can scale to large contexts.
Our future work includes coming up with an optimal threshold that takes into
consideration both memory capacity and combined execution time of computing
concepts in vertical and horizontal partitions.
2 SPMF, https://www.philippe-fournier-viger.com/spmf/. Last accessed 1 March
2020.
      </p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>This research was supported by SPARC, a Government of India Initiative under
grant no. SPARC/2018-2019/P682/SL. We thank Dr. Sergei Obiedkov from HSE
Moscow for his helpful comments in coming up with the paritioning strategy.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Uno</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Asai</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Uchida</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arimura</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <article-title>“An efficient algorithm for enumerating closed patterns in transaction databases,” in Discovery Science</article-title>
          ,
          <source>DS 2004, Lecture Notes in Computer Science</source>
          , vol
          <volume>3245</volume>
          . Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Ganter</surname>
            <given-names>B.</given-names>
          </string-name>
          , “
          <article-title>Two basic algorithms in concept analysis</article-title>
          ,” In: Kwuida L.,
          <string-name>
            <surname>Sertkaya</surname>
            <given-names>B</given-names>
          </string-name>
          . (
          <article-title>eds) Formal Concept Analysis</article-title>
          .
          <source>ICFCA 2010. Lecture Notes in Computer Science</source>
          , vol
          <volume>5986</volume>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Krajca</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vychodil</surname>
            <given-names>V.</given-names>
          </string-name>
          , “
          <article-title>Distributed algorithm for computing formal concepts using map-reduce framework</article-title>
          ,” In:
          <string-name>
            <surname>Adams</surname>
            <given-names>N.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Robardet</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Siebes</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boulicaut</surname>
            <given-names>JF</given-names>
          </string-name>
          . (
          <article-title>eds) Advances in Intelligent Data Analysis VIII</article-title>
          .
          <source>IDA 2009. Lecture Notes in Computer Science</source>
          , vol
          <volume>5772</volume>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Xu</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>de Fréin</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Robson</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ó Foghlú</surname>
            <given-names>M</given-names>
          </string-name>
          , “
          <article-title>Distributed formal concept analysis algorithms based on an iterative MapReduce framework</article-title>
          ,” In: Domenach F.,
          <string-name>
            <surname>Ignatov</surname>
            <given-names>D.I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Poelmans</surname>
            <given-names>J</given-names>
          </string-name>
          . (eds)
          <article-title>Formal Concept Analysis</article-title>
          .
          <source>ICFCA 2012. Lecture Notes in Computer Science</source>
          , vol
          <volume>7278</volume>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>B.</given-names>
            <surname>Negrevergne</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Termier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Méhaut</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Uno</surname>
          </string-name>
          ,
          <article-title>"Discovering closed frequent itemsets on multicore: Parallelizing computations and optimizing memory accesses,"</article-title>
          <source>In: 2010 International Conference on High Performance Computing and Simulation</source>
          , Caen,
          <year>2010</year>
          , pp.
          <fpage>521</fpage>
          -
          <lpage>528</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Shravan</given-names>
            <surname>Patel</surname>
          </string-name>
          , Umang Agarwal, and Sriram Kailasam, “
          <article-title>A Dynamic Load Balancing Scheme for Distributed Formal Concept Analysis</article-title>
          ,
          <source>” in 24th IEEE International Conference on Parallel and Distributed Systems</source>
          , Singapore, pp.
          <fpage>489</fpage>
          -
          <lpage>496</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Bin</given-names>
            <surname>Fan</surname>
          </string-name>
          , Dave G. Andersen,
          <string-name>
            <given-names>Michael</given-names>
            <surname>Kaminsky</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Michael D.</given-names>
            <surname>Mitzenmacher</surname>
          </string-name>
          ,
          <article-title>"Cuckoo Filter: Practically Better Than Bloom,"</article-title>
          <source>In Proceedings of the 10th ACM International on Conference on emerging Networking Experiments and Technologies (CoNEXT '14)</source>
          . ACM, New York, USA, pp.
          <fpage>75</fpage>
          -
          <lpage>88</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kuznetsov</surname>
            <given-names>S.O.</given-names>
          </string-name>
          ,
          <article-title>"Learning of Simple Conceptual Graphs from Positive and Negative Examples," In: Żytkow</article-title>
          <string-name>
            <given-names>J.M.</given-names>
            ,
            <surname>Rauch</surname>
          </string-name>
          <string-name>
            <surname>J</surname>
          </string-name>
          . (eds)
          <article-title>Principles of Data Mining and Knowledge Discovery</article-title>
          .
          <source>PKDD 1999. Lecture Notes in Computer Science</source>
          , vol
          <volume>1704</volume>
          . Springer,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>C.</given-names>
            <surname>Lucchese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Orlando</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Perego</surname>
          </string-name>
          ,
          <article-title>"Fast and memory efficient mining of frequent closed itemsets,"</article-title>
          <source>in IEEE Transactions on Knowledge and Data Engineering</source>
          , vol.
          <volume>18</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>21</fpage>
          -
          <lpage>36</lpage>
          , Jan.
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Ekanayake</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , Zhang,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Gunarathne</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Bae</surname>
          </string-name>
          , S.-H.,
          <string-name>
            <surname>Qiu</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fox</surname>
          </string-name>
          , "G.:
          <article-title>Twister: a Runtime for Iterative MapReduce,</article-title>
          " In: Hariri,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Keahey</surname>
          </string-name>
          ,
          <string-name>
            <surname>K</surname>
          </string-name>
          . (eds.) HPDC, pp.
          <fpage>810</fpage>
          -
          <lpage>818</lpage>
          , ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Xu</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>de Fréin</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Robson</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ó Foghlú</surname>
            <given-names>M</given-names>
          </string-name>
          ,
          <article-title>"Distributed Formal Concept Analysis Algorithms Based on an Iterative MapReduce Framework.</article-title>
          " In: Domenach F.,
          <string-name>
            <surname>Ignatov</surname>
            <given-names>D.I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Poelmans</surname>
            <given-names>J</given-names>
          </string-name>
          . (eds) Formal
          <source>Concept Analysis ICFCA 2012, Lecture Notes in Computer Science</source>
          , vol
          <volume>7278</volume>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>K.</given-names>
            <surname>Yoshizoe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Terada</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Tsuda</surname>
          </string-name>
          ,
          <article-title>"Redesigning pattern mining algorithms for supercomputers,"</article-title>
          <source>Corr</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>