Refactoring is a well-known activity in software engineering that aims at changing a source-code snippet to improve structural quality attributes without changing the external behavior. It is known that manual refactoring is a common practice, but it is a time-consuming and error-prone activity. In literature it is possible to find approaches whose goal is to automatically recommend refactorings to software engineers. The goal is mainly to improve the productivity and internal quality of systems. However, we have observed that refactoring recommendations approaches are still immature, even those based on Machine Learning (ML). Thus, this PhD aims at researching how ML, along with explainability models, can be used to improve refactoring recommendations.