## 4 Methodology
### Graph Convolutional Neural Network Module  
The main focus of this study is on gantry anomalies, which are primarily characterized by missed transactions. As defined in Section 3, it is evident that the determination of  
Figure 2: Overall framework, where different colors indicate different gantry nodes. gantry missed transactions is influenced by the transaction history of neighboring gantry nodes. Furthermore, ETC gantries on highways exhibit varying topological relationships in different sections. It is clear that the mutual influence between ETC gantries with different topological relationships will vary accordingly. If we can effectively extract and utilize the topological relationships between ETC gantries, the detection of gantry anomalies will be more accurate. Conventional Convolutional Neural Networks (CNNs) can only handle spatial data with regular Euclidean structures and are incapable of processing irregular non-Euclidean spatial data [28]. Therefore, the GCN model was proposed to handle non-Euclidean spatial data. The spatial distribution of ETC gantries on highways constitutes a non-Euclidean geometric structure. Hence, we employ the GCN model to model the spatial distribution of ETC gantries on highways and extract gantry node features. To begin with, we construct a transaction graph for each time interval using the gantry transaction data, where gantries are considered as nodes, and if there is a transaction between the same vehicle and two gantries, then there is an edge between those two gantries. Assuming we have a transaction dataset \(\text{Tr}=(v_{i},c_{i},t_{i})\), where vi represents the gantry number, ci represents the license plate number, and t represents the transaction time. The gantry transaction graph is represented as a graph G = (V, E), where there are n gantry nodes, and m transaction edges between gantries. Here, V = {\(v_{1}\), \(v_{2}\), \(\ldots\), \(v_{n}\)} represents the set of gantry nodes, and E = {(\(v_{i}\), \(v_{j}\), \(w_{k}\))} represents the set of edges extracted from the transaction dataset D, where \(v_{i}\) and \(v_{j}\) denote adjacent gantry numbers. The gantry transaction network using an adjacency matrix:  
\[A_{i,j}=\left\{ \begin{array}{ll}1&\quad if\;\textit{there is an edge between node }i\;\textit{and node}\;j\\ 0&\quad otherwise\end{array} \right. \tag{4}\]  
where \(A_{i,j}\) indicates whether there is a transaction edge between gantry nodes i and j. If a transaction edge exists, then \(A_{i,j}=1\); otherwise, \(A_{i,j}=0\). Construct the gantry transaction graph according to Algorithm 1:  
``` Input: Gantry topology dataset, vehicle transaction dataset; Output: Graph data
1. # Define the number of gantry nodes and the feature vector dimension
2. num_nodes = 6, feat_dim = 32
3. node_list, edge_list = extract_node_and_edge_info(RSU_data, OBU_data)
4. # Construct the gantry node feature vectors
5. node_feats = {}
6. for i in range(num_nodes):
7. node_feats[i] = np_zeros(feat_dim)
8. # Define the adjacency matrix of a graph
9. adj_mat = np_zeros(num_nodes, num_nodes))
10. # Read gantry transaction data
11. transactions = read_transactions()
12. # Iterate over all transaction data and update the adjacency matrix and node feature
# vectors
13. for trans in transactions:
14. node_id = trans['node_id'] # Get node numbers
15. node_feats[node_id][trans['feat_index']] = trans['feat_value'] # update the node feature vectors
16. for adj_node_id in trans['adj_nodes']: # Iterate over neighboring nodes
17. adj_mat[node_id][adj_node_id] = 1 # Updating the adjacency matrix
18. # Building a gantry trade chart
19. graph = Graph(adj_mat, node_feats)In the above gantry transaction graph construction process, this paper uses the normalization method [29] to process the adjacency matrix so that it maintains symmetry in information transfer.