I am looking for ideas on how to proceed with a situation. I have historical data of appointments for many users. I can (easily) predict their future behaviour (whether the next appointment will be positive or not)/

I now need to build profiles, i.e., classify a user as "good" or "bad" user. So, I won't be predicting future appointments, but just say "this user is a good/bad user", and then compare with, e.g., a monthly behaviour.

Any ideas where I could look for information on how to proceed?

I apologize for my vague first question. I will try to be more clear.

I have ~200k users, with their doctor appointment history. As demographic, I only have their age and gender. The rest of the variables relate to their appointment: time of the appointment, which doctor (service), day of the appointment, and so on. I also have whether they went or not to the appointment (show / no show).

The assignment consist on classifying the users as "good" or "bad", i.e., whether they will go or not to the appointment. I do not have to predict if they will go to the next appointment, just to have a list of the users classification. By doing this, if user A, whom I classified as "good", calls for an appointment, I know he is "good" and he will make it to the appointment. I do not to take any action on him.

Again, I do not have to predict future appointments, or the behavior of a new user, just to classify the existing ones.

I hope now it is a bit more clear. If not, let me know. Thank you!

I know perhaps the information I am giving is a bit vague, but I didn't know if to go into full detail or not. If you want me to share more info, just let me know.


  • $\begingroup$ It's not clear what you mean by 'good' or 'bad', but to start, you need historical data on what those things mean so you can learn to identify it. I don't think this is answerable now. $\endgroup$
    – Sean Owen
    Mar 30, 2016 at 11:42
  • $\begingroup$ I agree @SeanOwen, and I apologize for being so vague. I edited my original question, I hope it is a bit more clear. If not, please, let me know. $\endgroup$
    – Andres
    Mar 31, 2016 at 6:22

1 Answer 1


Maybe I'm being a bit too simplistic, but I would build a set of training data that looks like this (Good=1 means patient showed up for appt and is good by your definition, 0 = bad)

Recid, PatId, SurgeryId, DrId, DateAppt, TimeAppt, Gender, Age, Good
1, 1, 100, 10, 01jan16, 10:30, M, 31, 1
2, 1, 100, 12, 05jan16, 15:20, M, 31, 1
3, 1, 100, 10, 06mar16, 11:45, M, 31, 0
4, 2, 101, 15, 02Feb16, 12:35, F, 75, 1

I would then use one of the machine learning tools in R - there are a variety of them, to train a model of your data.

Then with another set of data, I would test the model you have just built to see how correct it is. If you don't have a second set of data, then randomly partition your original training set and only train with half of the data.

Some further suggestions to make your model more powerful, is create additional variables with the following information

  • a Flag to indicate if a person has missed a previous appointment with any doctor.
  • a Flag to indicate if a person has missed a previous appointment with the particular doctor they are going to be visiting - I know from person experience there are some doctors in my surgery that I have a preference to see.
  • The number of days since the last appointment
  • Day of week of appointment

Sounds like a nice dataset to be working with!

  • $\begingroup$ Thanks Marcus! I will follow your steps, and comment here to how progress. Indeed, the data is quite nice, almost no missing values, which makes it easier to work with. Thanks again! $\endgroup$
    – Andres
    Apr 1, 2016 at 11:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.