Using machine learning to identify CAD model features I am trying to develop a machine learning algorithm to identify topological features within 3D CAD models (i.e. slots, pockets, holes, bosses etc)

For the input data I have decided to use the adjacency of the faces to identify the features within the model. I have developed a pre-processing algorithm which computes the adjacency between every face in the model and also whether the relationship is concave or convex in nature.

Below is an example of a 3D model and the relationships between each faces represented in a graph format.

 

I was thinking of using some sort of supervised learning training method where the training data would include all of the adjacency info for the model with labels defining the features that exist within the model such as:

Slot - made up of faces F7, F8, F9

Hole - made up of faces F15

Pocket - made up of faces F10, F11, F12, F13

And eventually once the model is sufficiently trained it would be able to identify the features in an un-seen model and determine which faces make up those features.

I am not sure how I would go about pre-processing the input data (i.e. it would be of variable length since the number of faces may not be the same from model to model). I am also struggling to understand which type of machine learning algorithm would be best suited to this application

Any help on this problem or even pointing to some resources to help understand would be appreciated
This is a classification problem. Look at some common classification methods. This article by Microsoft gives some pretty good guidance. 

https://docs.microsoft.com/en-us/azure/machine-learning/studio/algorithm-choice