What's the difference between ANN, SVM and KNN classifiers?

一世执手 提交于 2019-12-08 01:04:32

问题


I know this is a very general question without specifics about my actual project, but my question is:

I am doing remote sensing image classification. I am using the object-oriented method: first I segmented the image to different regions, then I extract the features from regions such as color, shape and texture. The number of all features in a region may be 30 and commonly there are 2000 regions in all, and I will choose 5 classes with 15 samples for every class.

In summary:

  • Sample data 1530
  • Test data 197530

How do I choose the proper classifier? If there are 3 classifiers (ANN, SVM, and KNN), which should I choose for better classification?


回答1:


If your "sample data" is the train set, it seems very small. I'd first suggest using more than 15 examples per class.

As said in the comments, it's best to match the algorithm to the problem, so you can simply test to see which algorithm works better. But to start with, I'd suggest SVM: it works better than KNN with small train sets, and generally easier to train then ANN, as there are less choices to make.




回答2:


KNN is the most basic machine learning algorithm to paramtise and implement, but as alluded to by @etov, would likely be outperformed by SVM due to the small training data sizes. ANNs have been observed to be limited by insufficient training data also. However, KNN makes the least number of assumptions regarding your data, other than that accurate training data should form relatively discrete clusters. ANN and SVM are notoriously difficult to paramtise, especially if you wish to repeat the process using multiple datasets and rely upon certain assumptions, such as that your data is linearly separable (SVM).

I would also recommend the Random Forests algorithm as this is easy to implement and is relatively insensitive to training data size, but I would advise against using very small training data sizes.

The scikit-learn module contains these algorithms and is able to cope with large training data sizes, so you could increase the number of training data samples. the best way to know for sure would be to investigate them yourself, as suggested by @etov




回答3:


Have a look at below mind map

KNN: KNN performs well when sample size < 100K records, for non textual data. If accuracy is not high, immediately move to SVC ( Support Vector Classifier of SVM)

SVM: When sample size > 100K records, go for SVM with SGDClassifier.

ANN: ANN has evolved overtime and they are powerful. You can use both ANN and SVM in combination to classify images

More details are available @semanticscholar.org



来源:https://stackoverflow.com/questions/7316671/whats-the-difference-between-ann-svm-and-knn-classifiers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!