1
$\begingroup$

For my research project, I am expected to propose a MLP for solving a disease classification problem.

Whenever i've done this before, it's been a lot of trial and error/ adding and removing layers etc, to get the best model. But I am expected to supply an overview of my proposed design before I start to implement it. So is there any framework or guide that shows me the best way to design one to suit my specific problem?

$\endgroup$
2
  • 1
    $\begingroup$ Have you done any research on your specific topic? I am sure others have done so already and have shared their findings. $\endgroup$ Jun 23 at 12:37
  • 1
    $\begingroup$ You could say that you will follow the training-validation-testing paradigm, using cross validation to select and tune your model (a polite way to describe your trial and error), giving a description of the types of model and variants you plan to investigate. To keep yourself honest, you should separate the test data before doing anything else and only use it once and only after you have chosen your final tuned model. $\endgroup$
    – Henry
    Jun 23 at 13:05

1 Answer 1

1
$\begingroup$

Firstly, I'd question why it has to be a neural network. Something like a traditional logistic regression (or a multi-category version thereof), a GAM, or a gradient boosted decision tree (LightGBM, XGBoost or Catboost) will often perform better for tabular data than a neural network (except for in some specific circumstances such as very high dimensional category input, sequence data, using images or free text information etc.). Additionally, more complex models are harder to inspect, interrogate and understand. I've had bad experiences with things going on inside models that we fail to notice e.g. here is an example from Richard Caruana on this, on which he has also talked on YouTub (could not find it at the moment), and I've had similar problems where a XGBoost does something on the inside that is very hard to diagnose. Neural networks are even more notorious for this, of course.

If for some "it's a academic learning exercise, so it needs to be a neural network" reason it has to be, then +1 for the proposal by Henry to describe your design parameter search strategy based on cross-validation and perhaps some of Bayesian hyperparameter search.

For possible candidate NN models, if you have a fixed dimensional and not really enormous set of predictors, a basic go-to-model for me has been a 2-layer MLP as implemented in the fastai Python library (see e.g. here https://github.com/fastai/fastbook/blob/master/09_tabular.ipynb and https://docs.fast.ai/tabular.learner.html). Esp. if you have variable dimensional input (e.g. sequence of events in a patient's medical history that could be anything from no events at all to a large number of events), then that's a less obvious choice and things that model sequences (e.g. transformers, LSTMs etc. may become attractive instead), or you need to create features that somehow deal with this (e.g. by counting things in time windows). I.e. for some types of inputs a MLP is just not so sensible.

$\endgroup$

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.