# Creating a metric based on some features

I want to create a new metric based on some features but dont know how to start. I basically want to create a "job satisfaction level" metric based on some features. The features could be work hours, shift, If working on weekend and so on. I dont know how to start. In ideal world, I want to comp up with weights for each of these features and compute a final value and then put the final value in a job satisfaction level bucket. I then want to use this metric in my training model. Is there any methodology to do so? Lets assume I have different warehouses with different values for those features and I want to compute a "job content" or "job satisfaction" metric based on the features I mentioned above for all of these locations. Then I want to use this new computed metric with my other features for an employee resignation prediction. Any help is appreciated.

Thanks

Indeed, there are methodologies that have been tested elsewhere, some with greater and less success.

I will propose one of them to build a prediction of job satisfaction, which you can then enter as an explanatory variable in a supervised model of employee resignation, whose methodology you can review in this tutorial with Python code that I did some time ago: HR analytics MVP

Methodology to generate a satisfaction level prediction: Deduce the importance of the variables from a score that represents the satisfaction declared by a subset of the members of your company

I think the best way to start doing a good MVP (minimum viable product) with which you can deliver relatively fast results having a result that incorporates elements of your company is one in which you derive the importance of the features from a dataset in which have your explanatory variables and a target with a declarative satisfaction survey made to the workers from which the score that is the variable explained was calculated. For this you must follow the following steps:

1.-You design a satisfaction survey that will be answered by the workers and that will allow you to calculate a Score from it. Here the important thing is that the design of the survey is as complete as possible, that the number of respondents allows you to draw conclusions at a statistical level and, most importantly, that of those who answer the survey have how to extract the raw data that allows you later deduce which are the most relevant variables. Here are some resources that can give you some ideas of how to generate the satisfaction level index

2.-Then, using that dataset generated in step 1, you can make a feature engineer and establish which variables have the greatest impact on the satisfaction declared by the workers.

3.-Solved the point 2 you can generate predictions on the score and apply your model to the future and with other workers of the same company.

Important: Whenever you run the prediction for the next period you should do a few satisfaction surveys in each iteration to confirm that the model is still valid and to use that data as a permanent retraining. In general, the model should be useful as long as the context of the company does not undergo major changes (mergers, significant deterioration of the work environment due to massive dismissals, etc.), since in such cases you should try to capture the short and long term effects of these shock

Although this methodology is a good starting point, it is omitting many things that are difficult to detect for a company because it corresponds to exogenous variables to it, such as:

a.- That the person changes his interests and / or goals in terms of career. Example: a software developer who wants to change the focus of his career towards a more commercial facet or another specialty such as Data Science or Data Engineer

b.-That the person change their objectives and / or prioritize them in their life. Example: A person who wants to begin to dedicate more time to his personal life because he went through a crisis with his partner

Here is an example of where they used that methodology: Mining the drivers of job satisfaction using algorithmic variable importance measures

PD: There are other lines of research that avoid extracting the satisfaction index from the direct query to the employee and occupy other variables such as equivalent income or time spent in the company as equivalent metric. It is not my favorite line, but here I leave an example of that: Using equivalent income as metric

• Thank you Iair. Good information. Unfortunately, 30% of my data are the ones who already resigned and I can not give them a survey to get their satisfaction level. However, it is a good idea to start collecting the data from now on for further improvements of my model. Apr 1 '19 at 17:28

Here are some points to start which all involve gathering "supervision" data.

One point to start is to gather satisfaction feed-backs from employees, such as "not satisfied" -1, "average" 0, "satisfied" 1, or a 5 level score, etc. Then you can tackle this problem as a classification/regression task. In the process, you will find out about the important metrics/combinations.

Another point to start is to use expert knowledge. That is, experts (or any eligible person) will read the employees' reports and assign a satisfaction level to them. Then you should proceed as the first case.

An easier data acquisition is in the form of comparison rather than absolute satisfaction levels. For example, you should gather data in the form of "employee 1 is more satisfied than employee 2", then proceed to predict the difference between two employees, i.e. +1 or -1, using the previous steps. This way, for any given employee $$e$$, and a small group of representative employees $$e_1$$ to $$e_5$$ that are sorted based on their satisfaction level (as a measuring stick), you can feed $$(e, e_i)$$ to the model to find the satisfaction level of employee $$e$$ in the spectrum. For example, 5 outputs in the spectrum would be $$+1, +1, +1, -1, -1$$, which means satisfaction level of $$e$$ is between $$e_3$$ and $$e_4$$. This way, you may not even need to extract the important features, just convert the output of prediction model into a score.