# Biclustering of Smart Building Electric Energy Consumption Data
## 2 Our Proposal
### Sequential Multi-Objective Biclustering  
In this section, we provide a short description of the algorithm used in this paper. The algorithm is called SMOB (Sequential MultiObjective Biclustering), and for a more detailed description of the algorithm, we refer the reader to [18; 33]. SMOB is a multi-objective EA and, in this study, we considered three objectives to be optimized: \(VE^{t}\), the row variance and the volume of the biclusters. Thus, we aimed at finding biclusters with a coherent tendency, with great volume and presenting fluctuating patterns. Notice that, in this work, we used \(VE^{t}\), but it would be trivial to use any other quality measure. SMOB adopts a sequential covering strategy, as depicted in Figure 1a. A MOEA (whose scheme is reported in Figure 1b) is called \(n\) times, and each time a bicluster is returned. The returned bicluster is stored in a list \(L\) that contains all the biclusters found so far. To avoid overlapping among biclusters, we associated a weight \(w(e_{ij})\) with each element \(e_{ij}\) of the expression matrix. These weights are adjusted right after a bicluster is returned. \(w(e_{ij})\) is equal to the number of biclusters stored in \(L\) that contain \(e_{ij}\). When evaluating a bicluster, the weights of its elements are used in order to penalize biclusters overlapping with elements of \(L\), as it explained in the following. Notice that the sequential coverage strategy adopted is such that the order in which biclusters are discovered does not reflect their quality nor their relevance. In the algorithm, each individual encodes a single bicluster. The encoding of biclusters is the one proposed in [18], where bit strings are evolved. However, the mutation and crossover operators differ from that approach, as it explained below. A bit is associated to each building (row) and each day (column) considered. If a bit is set to one, it means that the relative building/day belongs to the bicluster, otherwise it does not. Figure 2 shows an example of an individual representing a bicluster with three buildings (rows) and six days (columns). Notice that the days are consecutive. This is a necessary condition we imposed on individuals, since we were considering a time series, and having a biclusters with no consecutive days would have little meaning for our purpose. This is a difference with respect to the algorithm proposed in [33]. As mentioned above, since we considered time series data, we adapted the mutation and crossover operators used in [18], as we were interested in biclusters containing consecutive days (or almost consecutive, since after the preprocessing phase of the data, some days may be missing, and thus some gaps can be created). However, an individual is considered valid if the columns contained in the encoded biclusters are consecutive. For this reason, the crossover will act only on genes representing the rows, i.e., the buildings, since rows do not have to be consecutive. Mutation may add or delete a row or a column, with the restriction that columns must be consecutive. The columns contained in a bicluster will always be consecutive, meaning that there will be a set of consecutive 1 s in the individual. Mutation will only act at the beginning or the end of such interval. Mutation on the columns will have an higher probability that on the rows, since the number of columns is much higher than the number of rows. Tournament selection was used, and selected individuals undergo crossover and mutation. Elitism was applied by letting the non-dominated individuals survive to the next generation. Individuals were evaluated using a strategy similar to NSGA-II [34]. Individuals were divided into different non-dominated fronts, and individuals belonging to the same front had the same starting fitness \(rank(x)\). For instance, a non-dominated individual \(x_{1}\) will have \(rank(x_{1})=0\).