## 2 Related Works
### Clustering-Based Techniques  
[PERSON] et al. [17] introduced a model-free fault detection and diagnosis system (FDDS) to be able to detect and isolate faults in CPSs characterized by a large number of sensors. Following the model-free approach, the proposed FDDS learns the nominal fault-free conditions of the large-scale CPS (LCPS) autonomously by exploiting the temporal and spatial relationships existing among sensor data. The proposed FDDS is based on the learning and exploitation of functional relationships existing among the data streams produced by the sensors of the LCPS, by means of a novel clustering mechanism. The proposed FDDS relies on hidden Markov model (HMM)-based change detection mechanisms operating in the space of the coefficients of multiple-input single-output (MISO) models, and their outcomes are aggregated at the intelligent level, where the proposed FDDS is able to isolate multiple faults and differentiate between faults and time variance in the system under inspection. [PERSON] et al. [18] proposed a fault-tolerant election protocol (FTEP) for hierarchical clustering. The FTEP is a dynamic and distributed cluster head (CH) election algorithm with fault-tolerance capabilities based upon a two-level clustering scheme. Sensor nodes sense data and send it to their level-1 CH. These level-1 CHs process the data and send this processed data to a level-2 CH. After this, these level-2 CHs process this data and finally send it to the sink node in a multi-hop fashion. Level-2 CHs send their state information to their respective back-up CHs periodically, so that they remain updated. CHs at both levels keep on working until either their energy levels fall below the critical energy level or due to some fault which stops them from working. Once the energy level of a CH reaches the critical energy level, it starts an election process for a new CH. If the CH fails, then the back-up cluster head takes over the role of the current CH. Once the back-up CH takes over as new CH, there are two options for further action. In FTEP, only those nodes become candidate nodes for election whose energy levels are greater or equal to some threshold value. The value of the energy level gets revised with each round of elections. This value takes into consideration the depleting residual energy levels of candidate nodes. After calling the election procedure, the current CH continue with its role as a CH until a new CH is elected. This solves the problem of data transmission during the election process. Moreover, the election process is executed locally within the cluster in a distributed manner. Therefore, it is more scalable and robust than centralized approaches. [PERSON] and [PERSON] [19] presented a fault-tolerant two-level clustering protocol (FTTCP) to correctly detect cluster head failure. The FTTCP elects a backup node as a new cluster head when the current cluster head fails. The aim of this protocol is to accurately detect CH failure in order to avoid unnecessary energy consumption caused by a mistaken detection process. For this, it allows each cluster member to detect its CH failure independently. Cluster members employ a distributed agreement protocol to reach an agreement on the failure of the CH among multiple cluster members. The detection process runs concurrently with normal network operation by periodically performing a distributed detection process at each cluster member. FTTCP works in two phases; namely, the setup phase and steady state phase. The setup phase runs only once, when the network starts working. In the setup phase, clusters are formed and remain fixed throughout the lifetime of the network. The steady state phase consists of three phases: CH election, failure detection and failure recovery. Failure detection runs parallel to network operation. To reduce energy consumption, it makes use of heartbeat messages sent periodically by a CH for fault detection. Simulation results show that the FTTCP provides a high detection accuracy because of its agreement protocol. [PERSON] et al.