Spec-Zone.ru › scikit-learn

1.14. Полусупервизированное обучение

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

Немаркированные записи в y

Важно назначить идентификатор немаркированным точкам вместе с помеченными данными при обучении модели с помощью fit метода. Идентификатор, который использует эта реализация, — это целое число \(-1\). Обратите внимание, что для строковых меток, тип данных y должен быть object, чтобы он мог содержать как строки, так и целые числа.

Примечание

Полусупервизированные алгоритмы должны делать предположения о распределении набора данных, чтобы добиться повышения производительности. Подробнее см. здесь.

1.14.1. Самообучение

Эта реализация самообучения основана на алгоритме Яровского [1]. Используя этот алгоритм, заданный контролируемый классификатор может работать как полусупервизированный классификатор, позволяя ему учиться на немаркированных данных.

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

Выбор этого подмножества определяется критерием отбора. Этот отбор можно выполнить с помощью threshold на вероятностями прогнозов или выбрав k_best образцы в соответствии с вероятностями прогнозов.

Метки, используемые для окончательной подгонки, а также итерация, в которой каждый образец был помечен, доступны в качестве атрибутов. Необязательный параметр max_iter определяет, сколько раз цикл выполняется как максимум.

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

Примечание

При использовании классификатора самообучения важно калибровка классификатора.

Примеры

  • Влияние изменения порога для самообучения
  • Граница принятия решения полусупервизированных классификаторов против SVM на наборе данных Ирис

Ссылки

[1]

“Unsupervised word sense disambiguation rivaling supervised methods” David Yarowsky, Proceedings of the 33rd annual meeting on Association for Computational Linguistics (ACL ‘95). Association for Computational Linguistics, Stroudsburg, PA, USA, 189-196.

1.14.2. Распространение меток

Распространение меток обозначает несколько вариаций полусупервизированных алгоритмов вывода графов.

Некоторые возможности этой модели:
  • Используется для задач классификации
  • Методы ядер для проекции данных в альтернативные пространственные измерения

scikit-learn предоставляет две модели распространения меток: LabelPropagation и LabelSpreading. Обе работают, создавая граф подобия между всеми элементами в наборе входных данных.

../_images/sphx_glr_plot_label_propagation_structure_001.png

Иллюстрация распространения меток: структура немаркированных наблюдений согласуется со структурой класса, и, следовательно, метка класса может быть распространена на немаркированные наблюдения обучающего набора.

LabelPropagation и LabelSpreading отличаются модификациями матрицы подобия, графа и эффектом фиксации на распределениях меток. Фиксация позволяет алгоритму в определенной степени изменить вес истинно помеченных данных, чтобы использовать данные, которые уже известны. Алгоритм LabelPropagation выполняет жесткую фиксацию меток входных данных, что означает \(\alpha=0\). Этот коэффициент фиксации может быть ослаблен, скажем, \(\alpha=0.2\), что означает, что мы всегда сохраним 80 процентов нашего исходного распределения меток, но алгоритм может изменить его уверенность в распределении в пределах 20 процентов.

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

Модели распространения меток имеют два встроенных метода ядер. Выбор ядра влияет как на масштабируемость, так и на производительность алгоритмов. Доступны следующие:

  • rbf (\(\exp(-\gamma |x-y|^2), \gamma > 0\)). \(\gamma\) задается с помощью ключевого слова gamma.
  • knn (\(1[x' \in kNN(x)]\)). \(k\) задается с помощью ключевого слова n_neighbors.

Ядро RBF создаст полностью связанный граф, который в памяти представлен плотной матрицей. Эта матрица может быть очень большой, и в сочетании со стоимостью выполнения полного умножения матриц для каждой итерации алгоритма может привести к неприемлемо долгому времени выполнения. С другой стороны, ядро KNN создаст гораздо более дружественную к памяти разреженную матрицу, что может значительно сократить время выполнения.

Примеры

  • Граница принятия решения полусупервизированных классификаторов против SVM на наборе данных Ирис
  • Распространение меток при обучении сложной структуры
  • Цифры распространения меток: демонстрация производительности
  • Распространение меток, активное обучение цифр

Ссылки

[2] Yoshua Bengio, Olivier Delalleau, Nicolas Le Roux. В Semi-Supervised Learning (2006), стр. 193-216

[3] Olivier Delalleau, Yoshua Bengio, Nicolas Le Roux. Эффективная непараметрическая индукция функций в полусупервизированном обучении. AISTAT 2005 https://www.gatsby.ucl.ac.uk/aistats/fullpapers/204.pdf

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/semi_supervised.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API