Полууправляемая самообученная модель для классификации
Можно использовать полууправляемый самометод обучения для маркировки немаркированных данных при помощи fitsemiself
функция. Результат SemiSupervisedSelfTrainingModel
объект содержит установленные метки для немеченых наблюдений (FittedLabels
) и их счета (LabelScores
). Можно также использовать SemiSupervisedSelfTrainingModel
объект как классификатор, обученный как на маркированных, так и немеченых данных, для классификации новых данных при помощи predict
функция.
Создайте SemiSupervisedSelfTrainingModel
объект при помощи fitsemiself
.
FittedLabels
- Метки, установленные на немаркированных данныхЭто свойство доступно только для чтения.
Метки, подгоняемые к немаркированным данным, задаются как категориальный или символьный массив, логический или числовой вектор или массив ячеек из векторов символов. FittedLabels
имеет тот совпадающий тип данных, что и метки классов в переменной отклика при вызове fitsemiself
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
Каждая строка FittedLabels
представляет установленную метку соответствующего наблюдения UnlabeledX
или UnlabeledTbl
.
Типы данных: single
| double
| logical
| char
| cell
| categorical
LabelScores
- Счета для подгоняемых метокЭто свойство доступно только для чтения.
Счета для подгоняемых меток, заданные как числовая матрица. LabelScores
имеет размер u -by - K, где u - количество наблюдений в немеченых данных и K - количество классов в ClassNames
.
score(u,k)
вероятность того, что наблюдение u
принадлежит классу k
, где более высокое значение баллов указывает на более высокую вероятность. Область значений значений баллов зависит от базового классификатора Learner
.
Типы данных: single
| double
Learner
- Базовый классификаторЭто свойство доступно только для чтения.
Базовый классификатор, заданный как объект классификационной модели. fitsemiself
использует этот классификатор в цикле, чтобы пометить и оценить немаркированные данные. Можно использовать запись через точку для отображения значений параметров и гиперзначений параметров базового классификатора.
Для примера, если вы задаете 'Learner','svm'
в вызове на fitsemiself
, затем можно ввести Mdl.Learner.KernelParameters
отображение параметров ядра модели конечной машины опорных векторов (SVM), обученной как на маркированных, так и немаркированных данных.
Примечание
Потому что Mdl.Learner
модель имеет некоторые ограничения (для примера, отсутствие поддержки табличных данных), избегайте использовать ее непосредственно с ее объектом функциями, такими как loss
и predict
. Чтобы предсказать новые данные, используйте predict
функция объекта от SemiSupervisedSelfTrainingModel
.
CategoricalPredictors
- Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора, заданные как положительный целочисленный вектор. Принимая, что данные предиктора содержат наблюдения в строках, CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пустое ([]
).
Типы данных: double
ClassNames
- Уникальные метки классовЭто свойство доступно только для чтения.
Уникальные метки классов, используемые для маркировки немаркированных данных, заданные как категориальный или символьный массив, логический или числовой вектор или массив ячеек векторов символов. Порядок элементов ClassNames
определяет порядок классов.
Типы данных: single
| double
| logical
| char
| cell
| categorical
PredictorNames
- Имена переменных предиктораЭто свойство доступно только для чтения.
Имена переменных предиктора, заданные как массив ячеек из векторов символов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предикторов появляются в данных предиктора.
Типы данных: cell
ResponseName
- Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика, заданное как вектор символов.
Типы данных: char
predict | Маркируйте новые данные с помощью полууправляемого самообученного классификатора |
Подгонка меток к немаркированным данным с помощью полууправляемого самометода обучения.
Случайным образом сгенерируйте 60 наблюдений маркированных данных с 20 наблюдениями в каждом из трех классов.
rng('default') % For reproducibility labeledX = [randn(20,2)*0.25 + ones(20,2); randn(20,2)*0.25 - ones(20,2); randn(20,2)*0.5]; Y = [ones(20,1); ones(20,1)*2; ones(20,1)*3];
Визуализируйте маркированные данные с помощью графика поля точек. Наблюдения в одном классе имеют одинаковый цвет. Заметьте, что данные разделены на три кластера с очень небольшим перекрытием.
scatter(labeledX(:,1),labeledX(:,2),[],Y,'filled') title('Labeled Data')
Случайным образом сгенерируйте 300 дополнительных наблюдений немаркированных данных со 100 наблюдениями на класс. В целях валидации отслеживайте истинные метки для немаркированных данных.
unlabeledX = [randn(100,2)*0.25 + ones(100,2); randn(100,2)*0.25 - ones(100,2); randn(100,2)*0.5]; trueLabels = [ones(100,1); ones(100,1)*2; ones(100,1)*3];
Подгонка меток к немаркированным данным с помощью полууправляемого самометода обучения. Функция fitsemiself
возвращает SemiSupervisedSelfTrainingModel
объект, чей FittedLabels
свойство содержит установленные метки для немаркированных данных и LabelScores
свойство содержит связанные счета меток.
Mdl = fitsemiself(labeledX,Y,unlabeledX)
Mdl = SemiSupervisedSelfTrainingModel with properties: FittedLabels: [300x1 double] LabelScores: [300x3 double] ClassNames: [1 2 3] ResponseName: 'Y' CategoricalPredictors: [] Learner: [1x1 classreg.learning.classif.CompactClassificationECOC] Properties, Methods
Визуализируйте результаты подгонки метки с помощью графика поля точек. Используйте подобранные метки, чтобы задать цвет наблюдений, и используйте максимальные счета меток, чтобы задать прозрачность наблюдений. Наблюдения с меньшей прозрачностью маркируются с большей доверие. Заметьте, что наблюдения, которые находятся ближе к контурам кластера, помечаются большей неопределенностью.
maxLabelScores = max(Mdl.LabelScores,[],2); rescaledScores = rescale(maxLabelScores,0.05,0.95); scatter(unlabeledX(:,1),unlabeledX(:,2),[],Mdl.FittedLabels,'filled', ... 'MarkerFaceAlpha','flat','AlphaData',rescaledScores); title('Fitted Labels for Unlabeled Data')
Определите точность маркировки при помощи истинных меток для немаркированных данных.
numWrongLabels = sum(trueLabels ~= Mdl.FittedLabels)
numWrongLabels = 8
Только 8 из 300 наблюдений в unlabeledX
неправильно маркированы.
Используйте маркированные и немаркированные данные для обучения SemiSupervisedSelfTrainingModel
объект. Пометьте новые данные с помощью обученной модели.
Случайным образом сгенерируйте 15 наблюдений маркированных данных с 5 наблюдениями в каждом из трех классов.
rng('default') % For reproducibility labeledX = [randn(5,2)*0.25 + ones(5,2); randn(5,2)*0.25 - ones(5,2); randn(5,2)*0.5]; Y = [ones(5,1); ones(5,1)*2; ones(5,1)*3];
Случайным образом сгенерируйте 300 дополнительных наблюдений немаркированных данных со 100 наблюдениями на класс.
unlabeledX = [randn(100,2)*0.25 + ones(100,2); randn(100,2)*0.25 - ones(100,2); randn(100,2)*0.5];
Подгонка меток к немаркированным данным с помощью полууправляемого самометода обучения. Функция fitsemiself
возвращает SemiSupervisedSelfTrainingModel
объект, чей FittedLabels
свойство содержит установленные метки для немаркированных данных и LabelScores
свойство содержит связанные счета меток.
Mdl = fitsemiself(labeledX,Y,unlabeledX)
Mdl = SemiSupervisedSelfTrainingModel with properties: FittedLabels: [300x1 double] LabelScores: [300x3 double] ClassNames: [1 2 3] ResponseName: 'Y' CategoricalPredictors: [] Learner: [1x1 classreg.learning.classif.CompactClassificationECOC] Properties, Methods
Случайным образом сгенерируйте 150 наблюдений новых данных с 50 наблюдениями на класс. В целях валидации отслеживайте истинные метки для новых данных.
newX = [randn(50,2)*0.25 + ones(50,2); randn(50,2)*0.25 - ones(50,2); randn(50,2)*0.5]; trueLabels = [ones(50,1); ones(50,1)*2; ones(50,1)*3];
Спрогнозируйте метки для новых данных с помощью predict
функция SemiSupervisedSelfTrainingModel
объект. Сравните истинные метки с предсказанными метками с помощью матрицы неточностей.
predictedLabels = predict(Mdl,newX); confusionchart(trueLabels,predictedLabels)
Только 8 из 150 наблюдений в newX
неправильно маркированы.
fitsemigraph
| fitsemiself
| predict
| SemiSupervisedGraphModel
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.