Yan Wu, Sihan Wang, Hongmei Chen, Dezhong Peng, and Zhong Yuan*, Kernelized Fuzzy-Rough Anomaly Detection, IEEE Transactions on Fuzzy Systems, Page(s): 1-12, 25 April 2024, DOI: 10.1109/TFUZZ.2024.3393710. (Code)
Anomaly detection is a significant area of discovering knowledge that has shown success in the areas of fraud detection, cyber security, and medical diagnostics. The kernelized fuzzy-rough set is a key extension model in rough computing. It inherits the advantages of kernel function and fuzzy-rough set and can handle uncertain information in data more effectively. However, existing kernelized fuzzy-rough set models construct upper and lower approximation sets mainly from decision attribute data which are not available to unlabeled data. In addition, to the best of our knowledge, studies related to the use of kernelized fuzzy upper and lower approximation sets for constructing effective anomaly detection models have not yet been reported. Based on these observations, this paper constructs a kernelized fuzzy-rough set model for unlabeled data and proposes a kernelized fuzzy-rough anomaly detection (KFRAD) method. Specifically, we first optimize the kernel function to compute the fuzzy relation matrix of attribute subsets to construct the fuzzy approximation space. Then, the definition of kernelized fuzzy approximation accuracy for unlabeled data is given. Then, the granule anomaly extent is determined based on the kernelized fuzzy approximation accuracy. Finally, the granule anomaly extents and the corresponding weight values are integrated to compute the kernelized fuzzy-rough anomaly scores of the objects. On the basis of the above detection ideas, we design the KFRAD algorithm and experimentally compare it with mainstream detection algorithms. The analysis results show that the proposed algorithm has better performance. The code is publicly available online at https://github.com/wwwuyan/KFRAD.
You can run KFRAD.py:
if __name__ == "__main__":
load_data = loadmat('KFRAD_Example.mat')
trandata = load_data['trandata']
scaler = MinMaxScaler()
trandata[:, :] = scaler.fit_transform(trandata[:, :])
delta = 0.3
out_scores = KFRAD(trandata, delta)
print(out_scores)
You can get outputs as follows:
out_scores =
0.0383
0.0758
0.1059
0.1263
0.0442
If you find KFRAD useful in your research, please consider citing:
@article{wu2024kernelized,
title={Kernelized Fuzzy-Rough Anomaly Detection},
author={Wu, Yan and Wang, Sihan and Chen, Hongmei and Peng, Dezhong and Yuan, Zhong},
journal={IEEE Transactions on Fuzzy Systems},
year={2024},
publisher={IEEE}
}
If you have any questions, please contact [email protected] or [email protected].