I am plaining on training a network for body generation, i.e. given some specific measurement,(5 features) the output will be the a set of vertices representing the obj of the bodies. I am wondering what kind of machine learning algorithm is best suited for this scenario.


2 Answers 2


One common approach for your problem would be to first learn a low-dimensional representation of your output space in an unsupervised manner, and then a mapping from your inputs to the now-dimensionally-reduced outputs. To put it in a kind of pseudo-SKLearn terms, the overall procedure would look as follows:

Model fitting:

dr = SomeDimensionalityReducer()
Y_dr = dr.fit_transform(Y)
m = SomeSupervisedModel()
m.fit(X, Y_dr)

Model application:


For the role of SomeSupervisedModel you are free to choose any standard machine learning regression model, remembering that you may need to predict a vector as an output rather than a single number. In some cases (such as the neural network) it is a natural part of the model, in others it means you would need to train a separate model for each of the components in the output.

The choice of the dimensionality reduction technique is a bit more tricky, as the inverse operation is not normally part of standard implementations, hence you might need to understand and implement it manually.

Your main options are listed in the Wikipedia page on dimensionality reduction. Consider PCA, Kernel-PCA and an Autoencoder as your base choices.

  • PCA would result in a linear mapping and might not be powerful enough to represent the output space adequately in all but the simplest of tasks. However, it is easy to use and understand and is not too prone to overfitting.
  • Kernel-PCA a more flexible nonlinear model, which is still easy to implement, but it has higher memory and computational requirements and may overfit.
  • The Autoencoder route might be the best of the three, but, being a neural network-based method it may be fiddly and require a lot of tuning. There is a whole world of different kinds of autoencoders to choose from.

Another possibility, not mentioned in the Wikipedia article above (because it is more of a "dimensionality expansion" rather than reduction method) is the Generative Adversarial Network. Of all the mentioned approaches it may be the most sophisticated and, if you are lucky and have a lot of data, may give the best results. Unfortunately, it is the fussiest of all to work with, so try other things before trying it.

Note that you do not need your inputs X to perform the dimensionality reduction, hence you can "help" your method by feeding more samples from the output space without having to also obtain the corresponding inputs.

  • $\begingroup$ Could you provide any example using AE or GANs? Thank you! $\endgroup$ Nov 25, 2021 at 13:35

If I'm understanding correctly you want to model a set of data (in a network form in this case) for which you give 5 input parameters and you get N objects as output of your model, with N>5.

A network basically classifies an object based on the input parametersand outputs the predicted value. Putting a basic network generation, you can classify what car you are looking at based on 3 certain features: "motor size", "number of seats" and "country where the car was designed". From the network you can extract the model and production year (if enough data is provided)and predict what car you have. However, due to the method you are obtaining an output with smaller dimensionality than the input (usually N_output=1).

However, you can associate certain information to that output. In the previous example it could be a technical datasheet of the car model the network outputs. This technical datasheet can contain many features that were not considered in the model (network), which result in N_output>N_input.

The critical step in this case is selecting correctly what output do you want for your network (classification algorithm) and how do you want to associate that output to further insight of that classification.

The algorithm itself to create the network depends on the data and what output do you want. For example, in a basic KNN of the previous case, you select the output as a "compound weighed effect" of all the inputs that result in the network.


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.