To determine variables to figure out the bad customers in credit risk modeling I am developing a probability to default model on a data from landing firm. After running the GLM() model i have got the below message:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

Then i run xgboost() and was able to get decent accuracy. Now i want to determine the important features and their impact on customer default. 
But not sure how to go ahead, as far as i know i could not get variable significance in xgboost() and the GLM() was run with above error.
So can't advise/conclude anything confidently. 
Please Note : I am not looking for suggestions on how to avoid perfect separation problem(that is already available in many posts) but need help on how to advise business on change in which feature impact the default rate to what extent. 
I know only GLM() model based on which i can give some advise but at the moment i am not so confident on glm() results, so what all other techniques can be picked up.   
 A: We can get variable importance from XGBoost (and gradient boosting procedures in general). 
There are a few ways it can be computed (e.g. # of times a particular variable was used for splitting (commonly referred as Frequency), the total gains of splits which use a particular variable (commonly referred as Gain) and # of observations related to this features (commonly referred as Coverage)). R's xgboost package contains a method called xgb.importance that allows us to compute different feature importances in a model. That said, you might also want to explore the concept of Shapley values and how they can be used to find the most impactful features for a given model (and/or particular observation if needed). Assuming one is using R, the package iml is a great tool to first check. 
I would also suggest exploring in a bit more detail the reason why glm returns this warning. Note that probabilities numerically equal to 0 or 1 are not categorical evidence that the GLM fitting procedure failed. I would suggest looking into this very informative CV.SE thread on: Unstable logistic regression when data not well separated. Aside that I would suggest considering the use of a regularised logistic regression (e.g. ridge regression through glmnet with alpha=0). Computationally, this allow the iterative model fitting procedure used by a GLM to exhibit "higher convexity", i.e. the ML procedure is able to converge to a minimum. 
 Again, CV.SE has a great thread on this matter here: Regularization methods for logistic regression.
