Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Try with Simpler - An Evaluation of Improved Principal Component Analysis in Log-based Anomaly Detection

Published: 03 June 2024 Publication History

Abstract

With the rapid development of deep learning (DL), the recent trend of log-based anomaly detection focuses on extracting semantic information from log events (i.e., templates of log messages) and designing more advanced DL models for anomaly detection. Indeed, the effectiveness of log-based anomaly detection can be improved, but these DL-based techniques further suffer from the limitations of more heavy dependency on training data (such as data quality or data labels) and higher costs in time and resources due to the complexity and scale of DL models, which hinder their practical use. On the contrary, the techniques based on traditional machine learning or data mining algorithms are less dependent on training data and more efficient but produce worse effectiveness than DL-based techniques, which is mainly caused by the problem of unseen log events (some log events in incoming log messages are unseen in training data) confirmed by our motivating study. Intuitively, if we can improve the effectiveness of traditional techniques to be comparable with advanced DL-based techniques, then log-based anomaly detection can be more practical. Indeed, an existing study in the other area (i.e., linking questions posted on Stack Overflow) has pointed out that traditional techniques with some optimizations can indeed achieve comparable effectiveness with the state-of-the-art DL-based technique, indicating the feasibility of enhancing traditional log-based anomaly detection techniques to some degree.
Inspired by the idea of “try-with-simpler,” we conducted the first empirical study to explore the potential of improving traditional techniques for more practical log-based anomaly detection. In this work, we optimized the traditional unsupervised PCA (Principal Component Analysis) technique by incorporating a lightweight semantic-based log representation in it, called SemPCA, and conducted an extensive study to investigate the potential of SemPCA for more practical log-based anomaly detection. By comparing seven log-based anomaly detection techniques (including four DL-based techniques, two traditional techniques, and SemPCA) on both public and industrial datasets, our results show that SemPCA achieves comparable effectiveness as advanced supervised/semi-supervised DL-based techniques while being much more stable under insufficient training data and more efficient, demonstrating that the traditional technique can still excel after small but useful adaptation.

References

[1]
Fabian Pedregosa, Gael Varoquaux, Alexandre Gramfort, and Vincent Michel. 2013. ECML PKDD Workshop: Languages for Data Mining and Machine Learning, 108–122. Retrieved from https://scikit-learn.org/stable/index.html
[2]
Hervé Abdi and Lynne J. Williams. 2010. Principal component analysis. Wiley Interdiscip. Rev.: Computat. Stat. 2, 4 (2010), 433–459.
[3]
Titus Barik, Robert DeLine, Steven Mark Drucker, and Danyel Fisher. 2016. The bones of the system: A case study of logging and telemetry at Microsoft. In ICSE. ACM, 92–101.
[4]
Mohammad Mahdi Bejani and Mehdi Ghatee. 2021. A systematic review on overfitting control in shallow and deep neural networks. Artif. Intell. Rev. 54, 8 (2021), 6391–6438.
[5]
Piotr Bojanowski, Edouard Grave, Armand Joulin, and Tomás Mikolov. 2017. Enriching word vectors with subword information. Trans. Assoc. Comput. Ling. 5 (2017), 135–146.
[6]
Jakub Breier and Jana Branišová. 2015. Anomaly detection from log files using data mining techniques. In Information Science and Applications. Springer, 449–457.
[7]
Christian Callegari, Lisa Donatini, Stefano Giordano, and Michele Pagano. 2018. Improving stability of PCA-based network anomaly detection by means of kernel-PCA. Int. J. Comput. Sci. Eng. 16, 1 (2018), 9–16.
[8]
Junjie Chen, Xiaoting He, Qingwei Lin, Yong Xu, Hongyu Zhang, Dan Hao, Feng Gao, Zhangwei Xu, Yingnong Dang, and Dongmei Zhang. 2019. An empirical investigation of incident triage for online service systems. In ICSE. IEEE/ACM, 111–120.
[9]
Junjie Chen, Xiaoting He, Qingwei Lin, Hongyu Zhang, Dan Hao, Feng Gao, Zhangwei Xu, Yingnong Dang, and Dongmei Zhang. 2019. Continuous incident triage for large-scale online service systems. In ASE. IEEE, 364–375.
[10]
Mike Y. Chen, Alice X. Zheng, Jim Lloyd, Michael I. Jordan, and Eric A. Brewer. 2004. Failure diagnosis using decision trees. In ICAC. IEEE Computer Society, 36–43.
[11]
Zhichao Chen, Junjie Chen, Weijing Wang, Jianyi Zhou, Meng Wang, Xiang Chen, Shan Zhou, and Jianmin Wang. 2023. Exploring better black-box test case prioritization via log analysis. ACM Trans. Softw. Eng. Methodol. 32, 3 (2023), 72:1–72:32.
[12]
Zhuangbin Chen, Jinyang Liu, Wenwei Gu, Yuxin Su, and Michael R. Lyu. 2021. Experience report: Deep learning-based system log analysis for anomaly detection. CoRR abs/2107.05908 (2021).
[13]
Junyoung Chung, Çaglar Gülçehre, KyungHyun Cho, and Yoshua Bengio. 2014. Empirical evaluation of gated recurrent neural networks on sequence modeling. CoRR abs/1412.3555 (2014).
[14]
Hetong Dai, Heng Li, Weiyi Shang, Tse-Hsun Chen, and Che-Shao Chen. 2020. Logram: Efficient log parsing using n-gram dictionaries. CoRR abs/2001.03038 (2020).
[15]
Biplob Debnath, Mohiuddin Solaimani, Muhammad Ali Gulzar, Nipun Arora, Cristian Lumezanu, Jianwu Xu, Bo Zong, Hui Zhang, Guofei Jiang, and Latifur Khan. 2018. LogLens: A real-time log analysis system. In ICDCS. IEEE Computer Society, 1052–1062.
[16]
Claudio Filipi Gonçalves dos Santos and João Paulo Papa. 2022. Avoiding overfitting: A survey on regularization methods for convolutional neural networks. CoRR abs/2201.03299 (2022).
[17]
Min Du, Feifei Li, Guineng Zheng, and Vivek Srikumar. 2017. DeepLog: Anomaly detection and diagnosis from system logs through deep learning. In CCS. ACM, 1285–1298.
[18]
Ricardo Dunia and S. Joe Qin. 1997. Multi-dimensional fault diagnosis using a subspace approach. In ACC. Citeseer.
[19]
Sarah Fakhoury, Venera Arnaoudova, Cedric Noiseux, Foutse Khomh, and Giuliano Antoniol. 2018. Keep it simple: Is deep learning good for linguistic smell detection? In SANER. IEEE Computer Society, 602–611.
[20]
Markus Fält, Stefan Forsström, and Tingting Zhang. 2021. Machine learning based anomaly detection of log files using ensemble learning and self-attention. In ICSRS. IEEE, 209–215.
[21]
Wei Fu and Tim Menzies. 2017. Easy over hard: A case study on deep learning. In ESEC/SIGSOFT FSE. ACM, 49–60.
[22]
Nico Görnitz, Mikio L. Braun, and Marius Kloft. 2015. Hidden Markov anomaly detection. In ICML(JMLR Workshop and Conference Proceedings, Vol. 37). JMLR.org, 1833–1842.
[23]
John C. Gower and Gavin J. S. Ross. 1969. Minimum spanning trees and single linkage cluster analysis. J. R. Stat. Soc.: Series C (Appl. Stat.) 18, 1 (1969), 54–64.
[24]
Pinjia He, Jieming Zhu, Zibin Zheng, and Michael R. Lyu. 2017. Drain: An online log parsing approach with fixed depth tree. In ICWS. IEEE, 33–40.
[25]
Shilin He, Pinjia He, Zhuangbin Chen, Tianyi Yang, Yuxin Su, and Michael R. Lyu. 2021. A survey on automated log analysis for reliability engineering. ACM Comput. Surv. 54, 6 (2021), 130:1–130:37.
[26]
Shilin He, Qingwei Lin, Jian-Guang Lou, Hongyu Zhang, Michael R. Lyu, and Dongmei Zhang. 2018. Identifying impactful service system problems via log analysis. In ESEC/SIGSOFT FSE. ACM, 60–70.
[27]
Shilin He, Xu Zhang, Pinjia He, Yong Xu, Liqun Li, Yu Kang, Minghua Ma, Yining Wei, Yingnong Dang, Saravanakumar Rajmohan, and Qingwei Lin. 2022. An empirical study of log analysis at Microsoft. In ESEC/SIGSOFT FSE. ACM, 1465–1476.
[28]
Shilin He, Jieming Zhu, Pinjia He, and Michael R. Lyu. 2016. Experience report: System log analysis for anomaly detection. In ISSRE. IEEE Computer Society, 207–218.
[29]
Djoerd Hiemstra. 2000. A probabilistic justification for using TF x IDF term weighting in information retrieval. Int. J. Digit. Libr. 3, 2 (2000), 131–139.
[30]
Qiao Huang, Xin Xia, and David Lo. 2017. Supervised vs unsupervised models: A holistic look at effort-aware just-in-time defect prediction. In ICSME. IEEE Computer Society, 159–170.
[31]
J. Edward Jackson and Govind S. Mudholkar. 1979. Control procedures for residuals associated with principal component analysis. Technometrics 21, 3 (1979), 341–349.
[32]
Armand Joulin, Edouard Grave, Piotr Bojanowski, Matthijs Douze, Hérve Jégou, and Tomas Mikolov. 2016. FastText.zip: Compressing text classification models. arXiv preprint arXiv:1612.03651 (2016).
[33]
Armand Joulin, Edouard Grave, Piotr Bojanowski, and Tomás Mikolov. 2017. Bag of tricks for efficient text classification. In EACL. Association for Computational Linguistics, 427–431.
[34]
Van-Hoang Le and Hongyu Zhang. 2021. Log-based anomaly detection without log parsing. In ASE. IEEE, 492–504.
[35]
Van-Hoang Le and Hongyu Zhang. 2022. Log-based anomaly detection with deep learning: How far are we? CoRR abs/2202.04301 (2022).
[36]
Richard C. T. Lee, Y. H. Chin, and S. C. Chang. 1976. Application of principal component analysis to multikey searching. IEEE Trans. Softw. Eng. 2, 3 (1976), 185–193.
[37]
Zeyan Li, Junjie Chen, Rui Jiao, Nengwen Zhao, Zhijun Wang, Shuwei Zhang, Yanjun Wu, Long Jiang, Leiqin Yan, Zikai Wang, Zhekang Chen, Wenchi Zhang, Xiaohui Nie, Kaixin Sui, and Dan Pei. 2021. Practical root cause localization for microservice systems via trace analysis. In IWQoS. IEEE, 1–10.
[38]
Qingwei Lin, Hongyu Zhang, Jian-Guang Lou, Yu Zhang, and Xuewei Chen. 2016. Log clustering based problem identification for online service systems. In ICSE. ACM, 102–111.
[39]
Jinyang Liu, Jieming Zhu, Shilin He, Pinjia He, Zibin Zheng, and Michael R. Lyu. 2019. Logzip: Extracting hidden structures via iterative clustering for log compression. In ASE. IEEE, 863–873.
[40]
Jian-Guang Lou, Qiang Fu, Shengqi Yang, Ye Xu, and Jiang Li. 2010. Mining invariants from console logs for system problem detection. In USENIX Annual Technical Conference. USENIX Association.
[41]
Siyang Lu, Xiang Wei, Yandong Li, and Liqiang Wang. 2018. Detecting anomaly in big data system logs using convolutional neural network. In DASC/PiCom/DataCom/CyberSciTech. IEEE Computer Society, 151–158.
[42]
Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze. 2008. Introduction to Information Retrieval. Cambridge University Press.
[43]
Leland McInnes and John Healy. 2017. Accelerated hierarchical density based clustering. In ICDM Workshops. IEEE Computer Society, 33–42.
[44]
Weibin Meng, Ying Liu, Yuheng Huang, Shenglin Zhang, Federico Zaiter, Bingjin Chen, and Dan Pei. 2020. A semantic-aware representation framework for online log analysis. In ICCCN. IEEE, 1–7.
[45]
Weibin Meng, Ying Liu, Yichen Zhu, Shenglin Zhang, Dan Pei, Yuqing Liu, Yihao Chen, Ruizhi Zhang, Shimin Tao, Pei Sun, and Rong Zhou. 2019. LogAnomaly: Unsupervised detection of sequential and quantitative anomalies in unstructured logs. In IJCAI. ijcai.org, 4739–4745.
[46]
Meiyappan Nagappan and Mladen A. Vouk. 2010. Abstracting log lines to log event types for mining software system logs. In MSR. IEEE Computer Society, 114–117.
[47]
Kim Anh Nguyen, Sabine Schulte im Walde, and Ngoc Thang Vu. 2016. Integrating distributional lexical contrast into word embeddings for antonym-synonym distinction. In ACL. The Association for Computer Linguistics.
[48]
Adam J. Oliner and Jon Stearley. 2007. What supercomputers say: A study of five system logs. In DSN. IEEE Computer Society, 575–584.
[49]
Harold Ott, Jasmin Bogatinovski, Alexander Acker, Sasho Nedelkoski, and Odej Kao. 2021. Robust and transferable anomaly detection in log data using pre-trained language models. CoRR abs/2102.11570 (2021).
[50]
Randy C. Paffenroth, Kathleen Kay, and Les Servi. 2018. Robust PCA for anomaly detection in cyber networks. CoRR abs/1801.01571 (2018).
[51]
Jeffrey Pennington, Richard Socher, and Christopher D. Manning. 2014. GloVe: Global vectors for word representation. In EMNLP. 1532–1543. Retrieved from http://www.aclweb.org/anthology/D14-1162
[52]
Justyna Petke, Myra B. Cohen, Mark Harman, and Shin Yoo. 2015. Practical combinatorial interaction testing: Empirical findings on efficiency and early fault detection. IEEE Trans. Softw. Eng. 41, 9 (2015), 901–924.
[53]
Samira Pouyanfar, Saad Sadiq, Yilin Yan, Haiman Tian, Yudong Tao, Maria Presa Reyes, Mei-Ling Shyu, Shu-Ching Chen, and Sundaraja S. Iyengar. 2018. A survey on deep learning: Algorithms, techniques, and applications. ACM Comput. Surv. 51, 5 (2018), 1–36.
[54]
David M. W. Powers. 2020. Evaluation: From precision, recall and F-measure to ROC, informedness, markedness and correlation. CoRR abs/2010.16061 (2020).
[55]
C. Radhakrishna Rao. 1964. The use and interpretation of principal component analysis in applied research. Sankhyā: Indian J. Stat., Series A 26 (1964), 329–358.
[56]
Brian D. Ripley. 2007. Pattern Recognition and Neural Networks. Cambridge University Press.
[57]
Gerard Salton and Chris Buckley. 1988. Term-weighting approaches in automatic text retrieval. Inf. Process. Manag. 24, 5 (1988), 513–523.
[58]
Ajay Shrestha and Ausif Mahmood. 2019. Review of deep learning algorithms and architectures. IEEE Access 7 (2019), 53040–53065.
[59]
Mei-Ling Shyu, Shu-Ching Chen, Kanoksri Sarinnapakorn, and LiWu Chang. 2003. A Novel Anomaly Detection Scheme Based on Principal Component Classifier. Technical Report. Miami University Coral Gables Florida Department of Electrical and Computer Engineering.
[60]
Jon Stearley and Adam J. Oliner. 2008. Bad words: Finding faults in spirit’s syslogs. In CCGRID. IEEE Computer Society, 765–770.
[61]
Martin Sundermeyer, Hermann Ney, and Ralf Schlüter. 2015. From feedforward to recurrent LSTM neural networks for language modeling. IEEE ACM Trans. Audio Speech Lang. Process. 23, 3, 517–529.
[62]
Byungchul Tak and Wook-Shin Han. 2021. Lognroll: Discovering accurate log templates by iterative filtering. In Middleware. ACM, 273–285.
[63]
Naoya Takeishi. 2019. Shapley values of reconstruction errors of PCA for explaining anomaly detection. ICDM Workshops, IEEE, 793–798.
[64]
Feifei Tu, Jiaxin Zhu, Qimu Zheng, and Minghui Zhou. 2018. Be careful of when: An empirical study on time-related misuse of issue tracking data. In ESEC/SIGSOFT FSE. ACM, 307–318.
[65]
Risto Vaarandi. 2003. A data clustering algorithm for mining patterns from event logs. In IPOM. IEEE, 119–126.
[66]
Risto Vaarandi and Mauno Pihelgas. 2015. LogCluster—A data clustering and pattern mining algorithm for event logs. In CNSM. IEEE Computer Society, 1–7.
[67]
R. Vinayakumar, K. P. Soman, and Prabaharan Poornachandran. 2017. Long short-term memory based operation log anomaly detection. In ICACCI. IEEE, 236–242.
[68]
Lingzhi Wang, Nengwen Zhao, Junjie Chen, Pinnong Li, Wenchi Zhang, and Kaixin Sui. 2020. Root-cause metric location for microservice systems via log anomaly detection. In ICWS. IEEE, 142–150.
[69]
Weijing Wang, Junjie Chen, Lin Yang, Hongyu Zhang, and Zan Wang. 2023. Understanding and predicting incident mitigation time. Inf. Softw. Technol. 155 (2023), 107119.
[70]
Weijing Wang, Junjie Chen, Lin Yang, Hongyu Zhang, Pu Zhao, Bo Qiao, Yu Kang, Qingwei Lin, Saravanakumar Rajmohan, Feng Gao, Zhangwei Xu, Yingnong Dang, and Dongmei Zhang. 2021. How long will it take to mitigate this incident for online service systems? In ISSRE. IEEE, 36–46.
[71]
Zan Wang, Hanmo You, Junjie Chen, Yingyi Zhang, Xuyuan Dong, and Wenbin Zhang. 2021. Prioritizing test inputs for deep neural networks via mutation analysis. In ICSE. IEEE, 397–409.
[72]
Bin Xia, Junjie Yin, Jian Xu, and Yun Li. 2019. LogGAN: A sequence-based generative adversarial network for anomaly detection based on system logs. In SciSec(Lecture Notes in Computer Science, Vol. 11933). Springer, 61–76.
[73]
Yongzheng Xie, Hongyu Zhang, and Muhammad Ali Babar. 2022. LogGD: Detecting anomalies from system logs by graph neural networks. CoRR abs/2209.07869 (2022).
[74]
Wei Xu, Ling Huang, Armando Fox, David A. Patterson, and Michael I. Jordan. 2010. Detecting large-scale system problems by mining console logs. In ICML. Omnipress, 37–46.
[75]
Kenji Yamanishi and Yuko Maruyama. 2005. Dynamic syslog mining for network failure monitoring. In KDD. ACM, 499–508.
[76]
Lin Yang, Junjie Chen, Zan Wang, Weijing Wang, Jiajun Jiang, Xuyuan Dong, and Wenbin Zhang. 2021. Semi-supervised log-based anomaly detection via probabilistic label estimation. In ICSE. IEEE, 1448–1460.
[77]
Danfeng (Daphne) Yao, Xiaokui Shu, Long Cheng, and Salvatore J. Stolfo. 2017. Anomaly Detection as a Service: Challenges, Advances, and Opportunities. Morgan & Claypool Publishers.
[78]
Bo Zhang, Hongyu Zhang, Pablo Moscato, and Aozhong Zhang. 2020. Anomaly detection via mining numerical workflow relations from logs. In SRDS. IEEE, 195–204.
[79]
Chenxi Zhang, Xin Peng, Chaofeng Sha, Ke Zhang, Zhenqing Fu, Xiya Wu, Qingwei Lin, and Dongmei Zhang. 2022. DeepTraLog: Trace-log combined microservice anomaly detection through graph-based deep learning. In ICSE. ACM, 623–634.
[80]
Shengming Zhang, Yanchi Liu, Xuchao Zhang, Wei Cheng, Haifeng Chen, and Hui Xiong. 2022. CAT: Beyond efficient transformer for content-aware anomaly detection in event sequences. In KDD. ACM, 4541–4550.
[81]
Xu Zhang, Yong Xu, Qingwei Lin, Bo Qiao, Hongyu Zhang, Yingnong Dang, Chunyu Xie, Xinsheng Yang, Qian Cheng, Ze Li, Junjie Chen, Xiaoting He, Randolph Yao, Jian-Guang Lou, Murali Chintalapati, Furao Shen, and Dongmei Zhang. 2019. Robust log-based anomaly detection on unstable log data. In ESEC/SIGSOFT FSE. ACM, 807–817.
[82]
Yanyong Zhang and Anand Sivasubramaniam. 2008. Failure prediction in IBM BlueGene/L event logs. In IPDPS. IEEE, 1–5.
[83]
Yingyi Zhang, Zan Wang, Jiajun Jiang, Hanmo You, and Junjie Chen. 2022. Toward improving the robustness of deep learning models via model transformation. In ASE. ACM, 104:1–104:13.
[84]
Nengwen Zhao, Junjie Chen, Zhaoyang Yu, Honglin Wang, Jiesong Li, Bin Qiu, Hongyu Xu, Wenchi Zhang, Kaixin Sui, and Dan Pei. 2021. Identifying bad software changes via multimodal anomaly detection for online service systems. In ESEC/SIGSOFT FSE. ACM, 527–539.
[85]
Nengwen Zhao, Honglin Wang, Zeyan Li, Xiao Peng, Gang Wang, Zhu Pan, Yong Wu, Zhen Feng, Xidao Wen, Wenchi Zhang, Kaixin Sui, and Dan Pei. 2021. An empirical investigation of practical log anomaly detection for online service systems. In ESEC/SIGSOFT FSE. ACM, 1404–1415.
[86]
Zhenfei Zhao, Weina Niu, Xiaosong Zhang, Runzi Zhang, Zhenqi Yu, and Cheng Huang. 2021. Trine: Syslog anomaly detection with three transformer encoders in one generative adversarial network. Appl. Intell. 52, 8 (2022), 8810–8819.
[87]
Junwei Zhou, Yijia Qian, Qingtian Zou, Peng Liu, and Jianwen Xiang. 2022. DeepSyslog: Deep anomaly detection on syslog using sentence embedding and metadata. IEEE Trans. Inf. Forens. Secur. 17 (2022), 3051–3061.
[88]
Xiang Zhou, Xin Peng, Tao Xie, Jun Sun, Chao Ji, Dewei Liu, Qilin Xiang, and Chuan He. 2019. Latent error prediction and fault localization for microservice applications by learning from system trace logs. In ESEC/SIGSOFT FSE. ACM, 683–694.
[89]
Jieming Zhu, Pinjia He, Qiang Fu, Hongyu Zhang, Michael R. Lyu, and Dongmei Zhang. 2015. Learning to log: Helping developers make informed logging decisions. In ICSE. IEEE Computer Society, 415–425.
[90]
Jieming Zhu, Shilin He, Jinyang Liu, Pinjia He, Qi Xie, Zibin Zheng, and Michael R. Lyu. 2019. Tools and benchmarks for automated log parsing. In ICSE. IEEE/ACM, 121–130.

Index Terms

  1. Try with Simpler - An Evaluation of Improved Principal Component Analysis in Log-based Anomaly Detection

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Transactions on Software Engineering and Methodology
    ACM Transactions on Software Engineering and Methodology  Volume 33, Issue 5
    June 2024
    952 pages
    EISSN:1557-7392
    DOI:10.1145/3618079
    • Editor:
    • Mauro Pezzè
    Issue’s Table of Contents

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 03 June 2024
    Online AM: 07 February 2024
    Accepted: 15 January 2024
    Revised: 23 November 2023
    Received: 02 January 2023
    Published in TOSEM Volume 33, Issue 5

    Check for updates

    Author Tags

    1. Anomaly detection
    2. log analysis
    3. deep learning
    4. machine learning
    5. empirical study

    Qualifiers

    • Research-article

    Funding Sources

    • National Natural Science Foundation of China
    • CCF Young Elite Scientists Sponsorship Program (by CAST)

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 282
      Total Downloads
    • Downloads (Last 12 months)282
    • Downloads (Last 6 weeks)71
    Reflects downloads up to 01 Sep 2024

    Other Metrics

    Citations

    View Options

    Get Access

    Login options

    Full Access

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Full Text

    View this article in Full Text.

    Full Text

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media