Some background - I am a Computer Science student, planning to do a project and I have a data source that I have cleared, filtered and processed but I am really unsure of what exact algorithms I should use for the particular project I am interested in. Also, Anthropometry means - human body measurements.

More background so I used the NHANES Data set to create a table of anthropometric measurements of individuals. Now, with this information, I created an additional field called "Body Fat%" which simply uses the values in the table to compute body fat %. Now this is where it gets tricky.

Using the standard Body Fat % computation, I can classify people as underweight, moderate, obese and extremely obese. So from my very little knowledge of machine learning, I now know that I have what one would call - labels for classes. The question now is, I am trying to build a project that would prompt users to enter their anthropometric measurement in the web/mobile app. Now, these users might or might not enter values for all fields depending on if they have the correct equipment or not. I want to use machine learning/statistical analysis to classify these users up to a certain extent based on this input.

I am fairly new to machine learning so I do not know exactly what algorithm to use or look at but right now I am looking at Logistic Regression, Decision Forest, Decision Jungle, Neural Network, One - v - all, SVM, LDA, ID3. I know that the list does not make a lot of sense but I just need a good starting point.

Additionally, it is worth mentioning, I suppose, that I only have about a total of 10-12 variables with a 10,000 data entries and I would want to classify in a streaming fashion instead of making batch predictions.

Any help with the direction will be appreciated very much.


It sounds like your data only has missing values at prediction time, not at training time. This rules out some methods for automatically handling missing values(such as xgboost's missing value support).

The standard approach is definitely imputation of the missing values. There are a number of libraries for this, see here for a summary of a few. Essentially you train your classifier as normal, and separately you train the imputation model. At prediction time you apply the imputation model first to go from an instance with missing values to a fully specified instance. You then apply the classifier to that instance.

In terms of recommendations for machine learning methods, I would suggest first trying multiclass logistic regression (say with glmnet) then once you get that working try a boosted decision tree library such as xgboost.

You could perhaps use xgboost's missing value support if you artificially introduced some missing values into your training data at random as well. This is one of those problems where there is many ways to approach it.

  • $\begingroup$ This seems extremely helpful and a good way to start. xgboost seems like it might be what I need after all. I have some more processing to do on my data after which I will try it out and update you on how it went. Thanks for the help and descriptive answer $\endgroup$ Mar 31 '17 at 5:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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