## 2 Materials and Methods  
In this study, we developed a machine learning model using Python and Python Libraries such as OpenCV, SciKit, Pandas and the MediaPipe holistic model [25] and three different classification methods, using facial features, body stance and hand gestures. The methods used for classification are Random Forest Classifier, Logistic Regression, and Gradient Boosting. The selection of said algorithms was based on choosing the best ones for the purpose and goals of our research. Top priority was given to robustness against overfitting and to the ability to handle a high variety of different feature types that are interpretable and with high predicted accuracy.  
**Random Forest:** Its ensemble nature constructs multiple decision trees and combines the predictions for each one individually and can reduce overfitting while increasing accuracy. It also enables the models to have a broader application in conditions with a small number of data or high data noise. Furthermore, it can help identify the most important predictors in datasets by computing feature importance scores and at the same time handling missing values successfully, which is especially useful in changeable datasets [26].  
**Gradient Boosting:** This algorithm provides performance optimization by constructing stepwise trees and fixing mistakes created by the previous trees. When capturing intricate relationships within data, performance is often the result of this iterative improvement. Its flexible customization enables us to modify the model to fit the properties of our dataset by applying hyperparameters and fine-tuning the model. Gradient boosting also comes with inherent robustness to overfitting by balancing bias and variation in data with learning rate changes and early halting strategies, which is good for clinical applications [27].  
**Ridge Classifier:** This algorithm reduces multicollinearity among features to avoid overfitting using L2 regularization, which is helpful in situations with an extremely high count of predictors. It works well with datasets where some features might bias the model's behavior due to its efficiency in high-dimensional spaces. Due to its linearity, the Ridge Classifier interprets results with ease, and it is possible to express the effect the predictors have on the classification results [28].  
For our initial model, we collected data from an image dataset, with the use of the MediaPipe holistic model feeding the set of images derived from a video sequence into our model. The images displayed either an argument between two individuals that progressively escalated, or a casual conversation. In each frame, facial features, body stance and hand gestures were detected, and the corresponding landmarks were later saved in a.csv file along with their corresponding x, y, z coordinates.  
The failure to detect landmark values resulted in empty values. KNN imputation [29] was used to compensate for the missing values using the mean of the corresponding features in the dataset. Next, cross cross-validation and training of the model were performed, followed by hyperparameter fine-tuning using the gridsearch method. Overfitting and underfitting were identified in our classification methods, leading to predictions with low performance and accuracy results, discussed further in the Section 3.  
For these reasons, we created a second improved processing pipeline, simplified by avoiding the KNN imputation method as well as hyperparameter fine-tuning using gridsearch. Below is the detailed description of methods and materials used for our second and improved model.