## Materials and Methods
### Methods  
#### 3.4.1 Self-Organizing Map (SOM)  
SOM is a type of ANN that expresses high-dimensional input data spaces as low-dimensional spaces (e.g., 1D, 2D, or even 3D). These lower-dimensional spaces can be recognized by humans through visualization [27]. Figure 2: Relationship between load data and meteorological data: (**a**) temperature; (**b**) forecasted temperature; (**c**) solar radiation; (**d**) humidity; (**e**) wind speed. At first glance, SOM appear to be typical ANN. However, the basic principles of SOM are completely different. SOM uses competitive learning techniques rather than error-based learning, such as gradient descent or backpropagation algorithms. One of the most important features of SOM is that it has a topological structure. The input data are usually mapped to a 2D or 3D grid or to a hexagonal-shaped feature map composed of a certain number of neurons where the relative positions of the data points are preserved. That is, data points at similar locations are represented by neurons close to one another. Therefore, SOM can also be used as a tool for clustering high-dimensional data. The neurons in SOM are represented by the following 2D arrays:  
\[\text{M}=\{m_{1},\ m_{2},\ \ldots,\ m_{k}\} \tag{1}\]  
\[m_{i}=[m_{i1},\ m_{i2},\ \ldots,\ m_{iN}] \tag{2}\]  
where \(k\) denotes the number of neurons, \(m_{i}\) is a vector that represents a neuron, and \(\mathbf{N}\) denotes the dimension of each neuron (the same as that for a data point). The detailed learning process is as follows. **Step 1**. Initialize \(k\)-neurons randomly with the same dimensions as the input data, and place them in the data space. **Step 2**. Select a single data point from the input data. **Step 3**. Find the neuron closest to the selected data point. The distance between the data point and neuron is determined based on the Euclidean distance and is calculated as follows:  
\[\text{D}=\sqrt{\sum_{i=1}^{N}{(V_{i}-\ W_{i})^{2}}} \tag{3}\]  
where \(V_{i}\) denotes a data point, and \(W_{i}\) denotes the weight of the neuron. The closest neuron is referred to as the best matching unit (BMU). **Step 4**. Move the BMU closer to the selected data point. The distance of the movement is determined by the learning rate, which decays exponentially over time. **Step 5**. Move the neighboring neurons near the BMU (i.e., within a certain radius that decreases over time) in inverse proportional to the distance from the BMU. The influence rates of neighboring neurons are determined by their Gaussian curve, such that neurons that are closer to the BMU are influenced more than the more distant ones. **Step 6**. Repeat Steps 1-6 for all data points. **Step 7**. Once the above process is complete, update the learning rate and the neighborhood radius. The learning rate \(L\), neighborhood radius \(\sigma\), and the influence rate of neighboring neurons \(\theta\) are dependent on time, that is, the number of iterations. The above variables are defined as follows:  
\[L\ (n)=\ L_{0}\exp(-\frac{n}{\alpha_{L}}) \tag{4}\]  
\[\sigma(n)=\ \sigma_{0}\exp{(-\frac{n}{\alpha_{\sigma}})} \tag{5}\]  
\[\theta(n)=\exp{(-\frac{D^{2}}{2\sigma^{2}(n)})}. \tag{6}\]  
The weights of these variables are updated using the following equation:  
\[W(n+1)=W(n)+\theta(n)\text{L}(n)(V(n)-W(n)). \tag{7}\]  
At the end of this process, when the neurons are finally located in the data space, they are similar in distribution to the original data points. That is, the grid of neurons adapts to the topological shape of the data points. This result allows us to visualize a dataset using a U-matrix or frequency map--the distinct groups of neurons represent underlying clusters. SOM has been successfully applied to the load forecasting problem to cluster data points that include load profiles within subsets containing similar ones. By doing this, a predictive model can be trained better than it can without clustering. Examples are discussed in Section 2.