## 3 Methodology
### Progressive Learning for Food Category and Ingredient Classification
#### 3.4.1 Adaptive Reduced Class Incremental Kernel Extreme Learning Machine  
The adaptive reduce class incremental kernel extreme learning machine is proposed by [PERSON] et al. [1]. The method incrementally learns new classes and adjusts hidden neurons to reduce plasticity on old neurons, making the classifier suitable for continual food recognition. This section has explained its mathematical working.  
Initialization Phase  
In the initialization phase, 10 percent of data from the base classes are used as mapping nodes to train the algorithm, like reduce kernel extreme learning machine. Following that, it initializes the dynamic \"Neuron Eligibility\" matrix. The matrix contains the activation information of each neuron.  
Adding New Class  
When novel class arrives, \(N_{n}=\{(x_{i},t_{i})\}_{i=N_{0}+1}^{N_{0}+N_{n}}\) it selects the 10 percent of data of the new class and updates the output weights by multiplying them with the transformation matrix. The method increases the total number of output neurons in the network by one. The network inserts the nodes from the novel classes into the kernel matrix by using \"growing neuron methodology\" [1]. Corresponding to that, they update the \"Neuron Activation\" matrix, and its size will become equal to the total number of neurons in the kernel matrix.  
Growing Hidden Neurons  
[PERSON] et al. [1] enhanced a methodology of Constructive Enhancement OS-ELM for incrementally inserting the hidden neurons in ARCIKELM. They have used the kernel matrix to compute the weights for new nodes instead of randomly choosing the input weights.  
From the existing knowledge [1] when it inserts new hidden neurons into the network. The hidden layer output matrix will expand as it adds more columns into \(K\). Now consider the new chunk of data arrives, and there is a need to add new hidden neurons, then the method uses Equations (7) and (11) to expand the hidden layer output matrix.  
\[\widehat{G}_{k+1}=\begin{bmatrix}\widehat{G}_{11}&\widehat{G}_{12}\\ \widehat{G}_{21}&\widehat{G}_{22}\end{bmatrix}, \tag{7}\]  
where,  
\[\begin{array}{l}\widehat{G}_{11}=G_{k+1}+G_{k+1}K_{k+1}^{T}Z_{k+1}S^{-1}Z_{k +1}^{T}K_{k+1}G_{k+1}\\ \widehat{G}_{12}=-G_{k+1}K_{k+1}^{T}Z_{k+1}S^{-1}\\ \widehat{G}_{21}=-S^{-1}Z_{k+1}^{T}K_{k+1}G_{k+1}\\ \widehat{G}_{22}=S^{-1}\end{array} \tag{8}\]  
\[U=\beta^{(k)}+G_{k+1}K_{k+1}^{T}(I+Z_{k+1}S^{-1}Z_{k+1}^{T}(K_{k+1}G_{k+1}K_{k +1}^{T}-I))(T_{k+1}-K_{k+1}\beta^{(k)}) \tag{9}\]  
\[D=-S^{-1}Z_{k+1}^{T}K_{k+1}(\beta^{(k)}+G_{k+1}K_{k+1}^{T}(T_{k+1}-K_{k+1} \beta^{(k)})) \tag{10}\]  
\[\beta^{k}=\begin{bmatrix}U\\ D\end{bmatrix}. \tag{11}\]  
Sequential Learning  
During sequential learning, when data of the existing class arrives \(N_{e}=\{(x_{i},t_{i})\}_{i=N_{0}+1}^{N_{e}+1}\) it checks the similarity by using the multidimensional Gaussian function. When the incoming data vector is close to neurons in the kernel matrix, the membership degree is high, and the method sequentially updates the network as new hidden neurons are not required. If it is away, then the membership degree is low. The neurons are added to the network when the max fuzzy membership value is less than the threshold. The threshold value is the user-defined parameter.