# Is binary classification using CNN possible if the training data only consists of one class?

Is binary classification using CNN possible if the training data only consists of one class?

I am working on landslide risk assessment using Convolutional Neural Networks and I want to train a network that can recognize high-risk areas using multi-spectral imagery. The bands will contain numeric and categorical data that I have found to be related to my field of work.

The problem is that I only have historical data indicating where a landslide has happened before and defining zones as low-risk is not reliable in this field (since we are not yet sure how these variables affect the risk or susceptibility, and I don't want to bias my categorization) and my training data will be made up of only one class.

Can this be done? Is training a network from scratch using only one class of training data possible?

If so, after building this network, can I use it to classify any zone and get any meaningful data from its output for risk assessment (for example, output value "1" being "similar to past landslides" and "0" being "not similar at all")?

• I think it wouldn't work, as the machine learning algorithm cannot determine any features that point towards a landslide risk. May 6 at 13:56

## 3 Answers

It probably won't work because of in the training of the artificial intelligence, it'll set the weights to always answer class 1, and your data will say you're right, and it'll continue forever.

The first answer is correct in that you can't use discrimitive learning for binary classifucation here since you only have one class. There are a few things you can try however. If you can convert your images to feature vectors, kernal density estimation can be used to assign a probability density over the space of images, and then for any new image you can get a probability of it being similar to the training data. Generalising, you could use outlier detection methods such as isolation forest to determine if new images are "inliers" (i.e. landslide images) or "outliers".

While it won't work as you've possibly imagined it, you might find that implementing it as an autoencoder will allow you to train on one class and then identify things that are "not that."

With an autoencoder, the network works to build a latent, significantly lower dimensionality, representation of $$x$$. Rather than generating a $$\hat{y}$$ prediction, you are really generating $$\hat{x}$$. As a result, the loss function is measuring how well the output of the network matches the original input.

To apply this to your problem, after training the autoencoder you might either measure the binary cross-entropy loss of $$(x, \hat{x})$$ or the KL loss. If you graph output loss of items within the class vs items that are not in the class you will usually find that a very clear linear boundary can be defined to distinguish things that are not of the class you're interested in.