Руководство для новичков в машинном обучении — часть 8

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

Что такое тестовый набор?

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

Набор тестов также содержит помеченные точки данных. Мы введем каждую точку в тестовом наборе в классификатор, обученный на обучающем наборе, и посмотрим, соответствует ли метка метке в тестовом наборе.

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

Создание тренировочного набора

Сохраните это как файл с именем линзы-обучение.txt в той же папке, что и DecisionTree.groovy.

Создание набора тестов

Сохраните это как файл с именем линзы-test.txt в той же папке, что и DecisionTree.groovy. Все, что я сделал, это взял небольшую часть исходного набора данных и использовал ее в качестве тестового набора.

Чтение набора данных

Обратите внимание на изменения в createDataSet(). Теперь ему нужен путь к файлу для чтения. Мы будем использовать эту функцию дважды — один раз для чтения тренировочного набора и один раз для чтения тестового набора.

Тестирование классификатора

Мы читаем как обучающие, так и тестовые наборы. Мы обучаем наше дерево на основе тренировочного набора и проверяем каждую точку в тестовом наборе на сгенерированном дереве. Мы отслеживаем количество ошибочно классифицированных точек и распечатываем их.

Напомним, что ошибка классификатора составляет L=ℙ( h(x)f(x) ).

При запуске скрипта получаем:

Мы видим, что 1 из 5 были неправильно классифицированы и, следовательно, ошибка 0,2.

Это все для этого поста. До скорого.