Suppose I initially want to distinguish between dogs and cats based on various numeric features (tail length, weight, etc). I have some labeled data for both classes, but also a large amount of unlabeled data. This leads me to believe a semi-supervised classifier is a good approach.
However, suppose during the training or testing phase, we provide the model with features from a bird (but the data point is not labeled as a bird). I want a model that can tell me that this new sample belongs to neither class, that it probably belongs to a new class that was not in the labeled data. I know some models like a logistic regression can provide probability of belonging to a class; in my case, I would want the probability of the bird belonging to the cat class to be low (<1%), and I want the probability of the bird belonging to the dog class to also be low, but I would want probability of belonging to some other class to be high (but I don't have any data annotated as "other"). Probability of belonging to a class is one possible approach, but I am open to other ideas.
I can see that unsupervised clustering could distinguish cat, dog, and bird. However, I still have the labeled cat and dog data, so I'd like to use those labels if possible.
To clarify, I do not know beforehand the number of classes I may find. I expect to find cat and dog in the unlabeled data, but the model should be on the lookout for if other classes arise.
Are there any good statistical or machine learning models capable of this? Thank you in advance!