Наборы данных для тестирования нелинейных SVM

я реализую нелинейный SVM, и я хочу проверить свою реализацию на простых не линейно разделяемых данных. Google не помог мне найти то, что я хочу. Не могли бы вы посоветовать мне, где я могу найти таких данных. Или, по крайней мере, как я могу генерировать такие данные вручную ?

спасибо,

4 ответов


Ну, SVMs-это двухклассовые классификаторы,т. е. эти классификаторы размещают данные по обе стороны одной границы решения.

поэтому я бы предложил набор данных, состоящий только из двух классов (это не обязательно, потому что, конечно, SVM может разделить более двух классов, передавая классификатор несколько раз (последовательно) по данным, это громоздко делать во время начального тестирования).

Так, например, вы можете использовать набор данных Iris, связанных в ответе Скотта; он состоит из трех классов, класс I линейно отделим от класса II и III; класс II и III не линейно отделимы. Если вы хотите использовать этот набор данных, для удобства вы можете удалить класс I (прибл. первые 50 строк данных), поэтому остается двухклассовая система, в которой два оставшихся класса не линейно разделимы.

набор данных iris довольно мал (150 x 4 или 50 строк/класс x четыре функции) - в зависимости от того, где вы находитесь при тестировании прототипа SVM это может быть именно то, что вы хотите, или вам может потребоваться больший набор данных.

интересное семейство наборов данных, которые состоят всего из двух классов и которые определенно нелинейно разделимы, - это анонимизированные наборы данных, предоставляемые сайтом мега-знакомств eHarmony (нет принадлежности любого рода). В дополнение к данным iris мне нравится использовать эти наборы данных для оценки прототипа SVM, потому что они являются большими наборами данных с довольно много функций, но все еще состоят всего из двух нелинейно разделяемых классов.

Я знаю два места, из которых можно извлечь эти данные. The первое место имеет один набор данных (загрузка кода PCI, chapter9, matchmaker.csv) состоит из 500 точек данных (строк) и шести объектов (столбцов). Хотя с этим набором проще работать, данные более или менее в "сырой" форме и потребуют некоторой обработки, прежде чем вы сможете их использовать.

в источник для этих данных содержит два набора данных eHarmony, один из которых состоит из более чем полумиллиона строк и 59 функций. Кроме того, эти два набора данных подверглись существенной обработке, так что единственной задачей, необходимой перед подачей их в SVM, является рутинное масштабирование функций.


конкретный набор данных, который вам нужен, будет сильно зависеть от вашего выбора функции ядра, поэтому кажется, что самый простой способ-просто создать набор данных игрушек самостоятельно.

некоторые полезные идеи:

  • концентрических кругов
  • спиралевидные классы
  • вложенные банановые классы

Если вы просто хотите случайный набор данных, который не является линейно разделяемым, могу ли я предложить набор данных Iris? Это многомерный набор данных, в котором по крайней мере несколько рассматриваемых классов не являются линейно разделяемыми.

надеюсь, что это помогает!


вы можете начать с простых наборов данных, таких как Iris или two-moons, которые линейно неразделимы. Как только вы удовлетворены, вы можете перейти к большим наборам данных с репозиторий UCI ML, наборы классификационных данных.

обязательно сравните и сравните со стандартными SVM-решателями, такими как libSVM и SVM-light.


Если вы программируете на Python, вы можете использовать несколько функций в пакете sklearn.набор данных.samples_generator для manully генерации вложенного набора данных в форме луны, набора данных концентрической окружности и т. д. здесь страница сюжеты этих наборов данных.

и если вы не хотите, чтобы генерировать набор данных вручную, вы можете обратиться к этот сайт, где в разделе "наборы фигур" вы можете загрузить этот набор данных и протестировать их напрямую.