# UFODMV: Unsupervised Feature Selection for Online Dynamic Multi-Views
## 4 The Proposed UFODMV Method
The clustering phase does not initially force the features to be grouped into a limited \(k\) number of clusters. Instead, it optimises the features to be clustered naturally based on their distribution by allowing the number of clusters to increase. Then, the merging phase limits the clusters by merging them with the predefined reduction size \(k\), as provided in the next phase. 3. **Merging phase (Step C). ** As a result of the clustering phase, one could end up with too many clusters that exceed the required reduction size \(k\) number of clusters. Therefore, in this phase, UFODMV hierarchically merges clusters until the number of clusters = \(k\). UFODMV merges (lets say cluster #1 and cluster #2) if the distance between the centroid of cluster #1 and the centroid of cluster #2 is the minimum compared to all other cluster centroids. Indeed, clusters with centroids that are close-distance  
Figure 3: An overview of UFODMV method. In step A, a new chunk received from a data stream that has new instances and a view. In step B, the new instance and features set are clustered. In step C, the resulting clusters from step B are merged to the predefined reduction size. In step D, clusters are incrementally updated with new corresponding values. In step E, the representative features are selected from up-to-date clusters. centroids are more likely to share the same characteristics, and therefore, they are merged. Formally, let \(c_{i}=\{c_{1},\ldots,c_{n}\}\) be a set of cluster centroids. \[merging=minimum\_distance(clustercentroid1-clustercentroid2)\]  
Every time that we merge clusters, we compute a new centroid for the new cluster (see Algorithm 1, Line 6). 4. **Whenever another chunk arrives (Step D)**. The new chunk either has new values (i.e., new instances) for exiting clustered features or additionally has new features in the new view. In the first case (see Algorithm 1, Lines 9-16), UFODMV first finds the corresponding features in the \(k\) clusters resulting from the merging phase. This is executed based on indexing the features. Then, UFODMV adds the new values to corresponding features in the \(k\) clusters. For each \(k\) cluster, UFODMV calculates the new radius after updating the centroid. Formally,  
\[centroid\_update=\frac{new\_features+existing\_features}{number\_of\_features}; radius>T\]  
If the new radius exceeds the threshold T, the clustering and merging phases are repeated for only those clusters. By limiting the clustering and merging phases to the clusters with radii greater than the parameter T, the computational complexity of the UFODMV is reduced. For example, if \(k=5\) and we have two clusters with the radius exceeding the predefined threshold T, we repeat the clustering and merging phases for \(k-3\) clusters so that the total number of clusters is five. Otherwise, we go to the finding representative feature phase. In the second case (i.e., Algorithm 1, Lines 9-19), UFODMV performs the same process as for the first case in addition to conducting the clustering and merging phases with the new features of the new view. 5. **Finding representative features (Step E)**. UFODMV selects a single feature from each cluster as a representative feature. The selected features are those that are closest to their clusters' centroids. The selected features from each cluster comprise the set of representative features (see Algorithm 1, Lines 20-26). The UFODMV algorithm is given below. It can work in three scenarios based on the chunk structure: (1) streaming features, where every new chunk comprises only new features, and the number of instances is fixed (Lines 2-7); (2) online learning, where every new chunk arrives with new instances, while the number of features is fixed (Lines 9-16); and (3) dynamic views with online learning, where every new chunk comes with both new views or sets of features and new instances (Lines 9-19). This makes the algorithm suitable for a wide range of application requirements.