## 3 Methodology
### uCLUST
#### 3.2.1 Algorithm of uCLUST
#### 3.2.2 Illustrative Example

A sample JSON document consisting of the image metadata is given as input, refer Figure 5 which has the following attributes: _[image_type, image_name, size, depth, format, total_pixel, captured_date, captured_by]_. The attributes _image_type_ and _format_ are accounted for clustering. The former attribute has four values: 'ANIMAL' or 'BIRD' or 'VEHICLE' or 'OTHERS' and the latter has two values: 'PNG' or 'JPEG. 'Figure 6 shows the clustering result obtained for the above JSON document by using _image_type_ as clustering attribute. _uCLUST_ creates three clusters comprising of 'ANIMAL,' 'BIRD' and 'VEHICLE' and Figure 7 shows the clusters formed further from _uCLUST_ by using the clustering attribute _format_. The final clustering results show four clusters as follows: (1) image of type 'ANIMAL' in 'PNG' format, (2) image of type 'ANIMAL' in 'JPEG' format, (3) image of type 'BIRD' in 'JPEG' format and (4) image of type 'VEHICLE' in 'PNG' format. Figure 5: Example JSON document for Image metadata. Figure 6: Clustering the image metadata using attribute-image_type. Figure 7: Clustering the image metadata using attribute-format. ### Elm++

Incremental Learning [26] is a dynamic technique of supervised and unsupervised learning [27] where input data are trained to an individual model as and when it comes. The input data are used continuously to extend the knowledge of the existing model. The training of data in batches does not demand the retraining of the previous data, and also the previously acquired knowledge is never forgotten. Extreme Learning Machine (ELM) [28; 29; 30] uses single-hidden layer which is randomly assigned and never updated. ELM works at extremely fast, discovering the complex non-linear relationships between input and output. Algorithm 3 explains the working of ELM. When large volume of images come in batches, ELM expects to accumulate these images together and train them at once to create a model. When several batches arrive over time, it becomes a tedious task. On the other hand, _ELM++_ incrementally trains the images in batches and creates an individual model for each batch. ```
Input: Training set \(X\) with \(N\) images; \(n\) input neurons-image size: height x width; \(N^{\prime}\) hidden neurons; \(m\) output neurons; Output: Model generated with parameters (output matrix (\(\beta\)), weight matrix (\(W\)), bias (\(b\)))
1. Input N distinct samples \((x_{i},t_{i})\) and an activation function \(g(x)\), where \(x_{i}=[x_{i1},x_{i2},...,x_{in}]^{T}\in\mathbb{R}^{n}\) are the input features (pixel intensities), \(t_{i}=[t_{11},t_{i2},...,t_{im}]^{T}\in\mathbb{R}^{m}\) and \(i=1,2,...,N\). 2. Generate random weights \(w_{i}=[w_{i1},w_{i2},...,w_{in}]^{T}\) based on the number of hidden neurons \(N^{\prime}\) used, which connects the input and hidden layer. 3. Calculate the output of the hidden layer using: \[H=\left[ \begin{array}{cccc}g(x_{1}.w_{1}+b_{1})&...&g(x_{1}.w_{N^{\prime}}+b _{N^{\prime}})\\...&...&...\\ g(x_{N}.w_{1}+b_{1})&...&g(x_{N}.w_{N^{\prime}}+b_{N^{\prime}})\end{array} \right]\] where the \(i^{th}\) column of H represents the output of the hidden node \(i\) with respect to the input \(x_{1},x_{2},...,x_{N}\). 4. Calculate the output matrix \(\beta\) for the output layer using the formula: \(\beta=H^{\dagger}T\), where \[T=\left[ \begin{array}{cccc}t_{1},&\ldots&t_{N}\end{array} \right]^{T}_{Nxm}\], \[\beta=\left[ \begin{array}{cccc}\beta^{T}_{1}\\ \vdots\\ \beta^{T}_{N^{\prime}}\end{array} \right]_{N^{\prime}xm}\] and \[H^{\dagger}= \begin{cases}H^{T}(HH^{\dagger})^{-1},&\text{if }m<n\\ (H^{T}H)^{-1}H^{T},&\text{if }m>n\end{cases} \], \[H^{\dagger}= \begin{cases}H^{T}(HH^{\dagger})^{-1},&\text{if }m<n\\ (H^{T}H)^{-1}H^{T},&\text{if }m>n\end{cases} \], \[H^{\dagger}= \begin{cases}H^{T}(HH^{\dagger})^{-1},&\text{if }m<n\\ (H^{T}H)^{-1}H^{T},&\text{if }m>n\end{cases} \], \[H^{\dagger}= \begin{cases}H^{T}(HH^{\dagger})^{-1},&\text{if }m<n\\ (H^{T}H)^{-1}H^{T},&\text{if }m>n\end{cases} \], \[H^{\