Пометьте данные с помощью полуконтролируемого самометода обучения
fitsemiself
создает полуконтролируемую самоучебную модель, данную маркированные данные, метки и непомеченные данные. Возвращенная модель содержит подходящие метки для непомеченных данных и соответствующих баллов. Эта модель может также предсказать метки для невидимых данных с помощью predict
объектная функция. Для получения дополнительной информации об алгоритме маркировки см. Алгоритмы.
использует маркированные данные в Mdl
= fitsemiself(Tbl
,ResponseVarName
,UnlabeledTbl
)Tbl
, где Tbl.ResponseVarName
содержит метки для маркированных данных и возвращает адаптированные метки для непомеченных данных в UnlabeledTbl
. Функция хранит приспособленные метки и соответствующие баллы в FittedLabels
и LabelScores
свойства объекта Mdl
, соответственно.
использование Mdl
= fitsemiself(Tbl
,formula
,UnlabeledTbl
)formula
задавать переменную отклика (вектор из меток) и переменные предикторы, чтобы использовать среди переменных в Tbl
. Функция использует эти переменные, чтобы пометить данные в UnlabeledTbl
.
использует данные о предикторе в Mdl
= fitsemiself(Tbl
,Y
,UnlabeledTbl
)Tbl
и метки в Y
пометить данные в UnlabeledTbl
.
использует данные о предикторе в Mdl
= fitsemiself(X
,Y
,UnlabeledX
)X
и метки в Y
пометить данные в UnlabeledX
.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно задать тип ученика, количество итераций, и выиграть порог, чтобы использовать в алгоритме маркировки.Mdl
= fitsemiself(___,Name,Value
)
Подгонка помечает к непомеченным данным при помощи полуконтролируемого самометода обучения.
Случайным образом сгенерируйте 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
mislabeled.
Подгонка помечает к непомеченным данным при помощи полуконтролируемого самометода обучения. Укажите, что тип ученика раньше соответствовал меткам.
Загрузите carsmall
набор данных. Составьте таблицу от переменных Acceleration
, Displacement
, и так далее. Для каждого наблюдения или строки в таблице, обрабатывают Cylinders
значение как метка для того наблюдения.
load carsmall
Tbl = table(Acceleration,Displacement,Horsepower,Weight,Cylinders);
Предположим, что только 20% наблюдений помечены. Воссоздать этот сценарий, случайным образом демонстрационные 20 помеченных наблюдений и сохранить их в таблице unlabeledTbl
. Удалите метку из остальной части наблюдений и сохраните их в таблице unlabeledTbl
. Чтобы проверить точность метки, соответствующей в конце примера, сохраните истинные метки для непомеченных данных в переменной trueLabels
.
rng('default') % For reproducibility of the sampling [labeledTbl,Idx] = datasample(Tbl,20,'Replace',false); unlabeledTbl = Tbl; unlabeledTbl(Idx,:) = []; trueLabels = unlabeledTbl.Cylinders; unlabeledTbl.Cylinders = [];
Подгонка помечает к непомеченным данным при помощи полуконтролируемого самометода обучения. Используйте мультикласс модель SVM (ECOC), чтобы итеративно пометить непомеченные наблюдения. Задайте, чтобы стандартизировать числовые предикторы и использовать линейную функцию ядра для бинарных учеников SVM. Функциональный fitsemiself
возвращает объект чей FittedLabels
свойство содержит подходящие метки для непомеченных данных.
Mdl = fitsemiself(labeledTbl,'Cylinders',unlabeledTbl, ... 'Learner',templateECOC('Learner',templateSVM('Standardize',true, ... 'KernelFunction','linear'))); fittedLabels = Mdl.FittedLabels;
Идентифицируйте наблюдения, которые неправильно помечены путем сравнения сохраненных истинных меток для непомеченных данных к подходящим меткам, возвращенным полуконтролируемым самометодом обучения.
wrongIdx = (trueLabels ~= fittedLabels); wrongTbl = unlabeledTbl(wrongIdx,:);
Визуализируйте подходящие результаты метки для непомеченных данных. Наблюдения Mislabeled окружены в графике.
gscatter(unlabeledTbl.Displacement,unlabeledTbl.Weight, ... fittedLabels) hold on plot(wrongTbl.Displacement,wrongTbl.Weight, ... 'ko','MarkerSize',8) xlabel('Displacement') ylabel('Weight') legend('4 cylinders','6 cylinders','8 cylinders','Mislabeled') title('Fitted Labels for Unlabeled Data')
Tbl
— Помеченные выборочные данныеПомеченные выборочные данные в виде таблицы. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одному предиктору. Опционально, Tbl
может содержать один дополнительный столбец для переменной отклика (вектор из меток). Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не поддерживаются.
Если Tbl
содержит переменную отклика, и вы хотите использовать все остающиеся переменные в Tbl
как предикторы, затем задайте переменную отклика с помощью ResponseVarName
.
Если Tbl
содержит переменную отклика, и вы хотите использовать только подмножество остающихся переменных в Tbl
как предикторы, задайте формулу с помощью formula
.
Если Tbl
не содержит переменную отклика, задает переменную отклика с помощью Y
. Длина переменной отклика и количество строк в Tbl
должно быть равным.
Типы данных: table
UnlabeledTbl
— Непомеченные выборочные данныеНепомеченные выборочные данные в виде таблицы. Каждая строка UnlabeledTbl
соответствует одному наблюдению, и каждый столбец соответствует одному предиктору. UnlabeledTbl
должен содержать те же предикторы как содержавшиеся в Tbl
.
Типы данных: table
ResponseVarName
— Имя переменной откликаTbl
Имя переменной отклика в виде имени переменной в Tbl
. Переменная отклика содержит метки класса для выборочных данных в Tbl
.
Необходимо задать ResponseVarName
как вектор символов или строковый скаляр. Например, если переменная отклика Y
хранится как Tbl.Y
, затем задайте его как 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Y
, как предикторы.
Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов. Если Y
символьный массив, затем каждый элемент переменной отклика должен соответствовать одной строке массива.
Хорошая практика должна задать порядок классов при помощи ClassNames
аргумент пары "имя-значение".
Типы данных: char |
string
formula
— Объяснительная модель переменной отклика и подмножество переменных предикторовОбъяснительная модель переменной отклика и подмножество переменных предикторов в виде вектора символов или строкового скаляра в форме 'Y~X1+X2+X3'
. В этой форме, Y
представляет переменную отклика и X1
x2
, и X3
представляйте переменные предикторы.
Задавать подмножество переменных в Tbl
как предикторы, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl
это не появляется в formula
.
Имена переменных в формуле должны быть оба именами переменных в Tbl
(Tbl.Properties.VariableNames
) и допустимый MATLAB® идентификаторы. Можно проверить имена переменных в Tbl
при помощи isvarname
функция. Если имена переменных не допустимы, то можно преобразовать их при помощи matlab.lang.makeValidName
функция.
Типы данных: char |
string
Y
— Метки классаКласс помечает в виде числового, категориального, или логического вектора, символьного массива или массива строк или массива ячеек из символьных векторов.
Если Y
символьный массив, затем каждый элемент меток класса должен соответствовать одной строке массива.
Хорошая практика должна задать порядок класса при помощи ClassNames
аргумент пары "имя-значение".
Типы данных: single
| double
| categorical
| logical
| char
| string
| cell
X
— Помеченные данные о предиктореПомеченные данные о предикторе в виде числовой матрицы.
По умолчанию, каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одному предиктору.
Длина Y
и количество наблюдений в X
должно быть равным.
Задавать имена предикторов в порядке их внешнего вида в X
, используйте PredictorNames
аргумент пары "имя-значение".
Типы данных: single
| double
UnlabeledX
— Непомеченные данные о предиктореНепомеченные данные о предикторе в виде числовой матрицы. По умолчанию, каждая строка UnlabeledX
соответствует одному наблюдению, и каждый столбец соответствует одному предиктору. UnlabeledX
должен иметь те же предикторы как X
, в том же порядке.
Типы данных: single
| double
Примечание
Программное обеспечение обрабатывает NaN
, пустой символьный вектор (''
), пустая строка (""
), <missing>
, и <undefined>
элементы как недостающие данные. Удаляет ли программное обеспечение наблюдения с отсутствующими значениями, зависит от базового типа классификатора (Learner
).
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
fitsemiself(Tbl,'Y',UnlabeledTbl,'Learner',templateSVM('Standardize',true),'IterationLimit',2e3)
задает, чтобы использовать бинарного ученика машины опорных векторов (SVM), стандартизировать числовые предикторы и запустить максимум 2 000 итераций.Learner
— Лежание в основе типа классификатора'svm'
| 'discriminant'
| 'kernel'
| 'knn'
| 'linear'
| 'naivebayes'
| 'tree'
| ...Базовый тип классификатора в виде разделенной запятой пары, состоящей из 'Learner'
и одно из значений в этой таблице.
Значение | Описание |
---|---|
'discriminant' или templateDiscriminant объект | Классификатор дискриминантного анализа |
templateECOC объект | Модель выходных кодов с коррекцией ошибок (ECOC) мультикласса — templateECOC('Learners',templateSVM('KernelFunction','gaussian')) значение по умолчанию для классификации мультиклассов. |
templateEnsemble объект | Модель классификации ансамблей |
'kernel' или templateKernel объект | Модель классификации ядер (только для бинарной классификации) |
'knn' или templateKNN объект | модель k - ближайших соседей |
'linear' или templateLinear объект | Линейная модель классификации (только для бинарной классификации) |
'svm' или templateSVM объект | Классификатор машины опорных векторов (SVM) (только для бинарной классификации) — templateSVM('KernelFunction','gaussian') значение по умолчанию для бинарной классификации. |
'tree' или templateTree объект | Дерево классификации выборов из двух альтернатив |
Пример: 'Learner','tree'
Пример: 'Learner',templateEnsemble('AdaBoostM1',100,'tree')
IterationLimit
— Максимальное количество самоучебных итераций1e3
(значение по умолчанию) | положительный целочисленный скалярМаксимальное количество самоучебных итераций в виде разделенной запятой пары, состоящей из 'IterationLimit'
и положительный целочисленный скаляр. fitsemiself
функция возвращает Mdl
, который содержит подходящие метки и баллы, когда этот предел достигнут, даже если алгоритм не сходится.
Пример: 'IterationLimit',2e3
Типы данных: single
| double
ScoreThreshold
— Выиграйте порог за подходящие меткиВыиграйте порог за подходящие метки в виде разделенной запятой пары, состоящей из 'ScoreThreshold'
и числовой скаляр. В каждой итерации алгоритма программное обеспечение делает предсказания метки для непомеченных наблюдений при помощи заданного Learner
, и вычисляет музыку к этим предсказаниям. Непомеченные наблюдения с баллами предсказания, больше, чем или равный порогу счета, обработаны как помеченные наблюдения в следующей итерации, где метка является предсказанной меткой. По умолчанию, ScoreThreshold
0.1
для бинарной классификации и –0.1
для классификации мультиклассов.
Пример: 'ScoreThreshold',0.2
Типы данных: single
| double
CategoricalPredictors
— Категориальный список предикторов'all'
Категориальные предикторы перечисляют в виде одного из значений в этой таблице. Описания принимают, что данные о предикторе имеют наблюдения в строках и предикторы в столбцах.
Значение | Описание |
---|---|
Вектор из положительных целых чисел |
Каждая запись в векторе является значением индекса, указывающим, что соответствующий предиктор является категориальным. Значения индекса между 1 и Если |
Логический вектор |
|
Символьная матрица | Каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames . Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
Массив строк или массив ячеек из символьных векторов | Каждым элементом в массиве является имя переменного предиктора. Имена должны совпадать с записями в PredictorNames . |
"all" | Все предикторы являются категориальными. |
По умолчанию, если данные о предикторе находятся в таблице, fitsemiself
принимает, что переменная является категориальной, если это - логический вектор, категориальный вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Однако ученики, которые используют деревья решений, принимают, что математически упорядоченные категориальные векторы являются непрерывными переменными. Если данные о предикторе являются матрицей, fitsemiself
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их при помощи 'CategoricalPredictors'
аргумент пары "имя-значение".
Для получения дополнительной информации о том, как различные подходящие функции и, поэтому, различные ученики обрабатывают категориальные предикторы, видят Автоматическое Создание Фиктивных Переменных.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
ClassNames
— Имена классов, чтобы использовать для маркировкиИмена классов, чтобы использовать для маркировки в виде разделенной запятой пары, состоящей из 'ClassNames'
и категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как Y
.
Если ClassNames
символьный массив, затем каждый элемент должен соответствовать одной строке массива.
Используйте 'ClassNames'
к:
Закажите классы.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте 'ClassNames'
задавать порядка следования столбцов классификационных оценок в Mdl.LabelScores
.
Выберите подмножество классов для маркировки. Например, предположите что набор всех отличных имен классов в Y
{'a','b','c'}
. Обучать базовый классификатор Learner
использование наблюдений от классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
набор всех отличных имен классов в Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
PredictorNames
— Имена переменного предиктораПеременный предиктор называет в виде разделенной запятой пары, состоящей из 'PredictorNames'
и массив строк уникальных имен или массив ячеек уникальных векторов символов. Функциональность 'PredictorNames'
зависит от способа, которым вы снабжаете данными о предикторе.
Если вы предоставляете X
Y
, и UnlabeledX
, затем можно использовать 'PredictorNames'
присваивать имена к переменным предикторам в X
и UnlabeledX
.
Порядок имен в PredictorNames
должен соответствовать порядку следования столбцов X
. Принятие, что X
имеет ориентацию по умолчанию, с наблюдениями в строках и предикторами в столбцах, PredictorNames{1}
имя X(:,1)
, PredictorNames{2}
имя X(:,2)
, и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должно быть равным.
По умолчанию, PredictorNames
{'x1','x2',...}
.
Если вы предоставляете Tbl
и UnlabeledTbl
, затем можно использовать 'PredictorNames'
выбрать который переменные предикторы использовать. Таким образом, fitsemiself
использование только переменные предикторы в PredictorNames
и переменная отклика, чтобы пометить непомеченные данные.
PredictorNames
должно быть подмножество Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию, PredictorNames
содержит имена всех переменных предикторов.
Хорошая практика должна задать предикторы с помощью любого 'PredictorNames'
или formula
, но не то и другое одновременно.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
ResponseName
— Имя переменной отклика'Y'
(значение по умолчанию) | вектор символов | строковый скалярИмя переменной отклика в виде разделенной запятой пары, состоящей из 'ResponseName'
и вектор символов или строковый скаляр.
Если вы предоставляете Y
, затем можно использовать 'ResponseName'
задавать имя для переменной отклика.
Если вы предоставляете ResponseVarName
или formula
, затем вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char |
string
NumBins
— Количество интервалов для числовых предикторов[]
(значение по умолчанию) | положительный целочисленный скалярКоличество интервалов для числовых предикторов в виде разделенной запятой пары, состоящей из 'NumBins'
и положительный целочисленный скаляр.
Если 'NumBins'
значение пусто (значение по умолчанию), затем программное обеспечение не делает интервала никакие предикторы.
Если вы задаете 'NumBins'
значение как положительный целочисленный скаляр, затем интервалы программного обеспечения каждый числовой предиктор в конкретное количество равновероятных интервалов, и затем выращивает деревья на индексах интервала вместо исходных данных.
Если 'NumBins'
значение превышает номер (u) уникальных значений для предиктора, затем fitsemiself
интервалы предиктор в интервалы u.
fitsemiself
не делает интервала категориальные предикторы.
Когда вы используете большой набор данных, эта опция раскладывания ускоряет обучение классификатора, но вызывает потенциальное уменьшение в точности. Можно попробовать 'NumBins',50
во-первых, и затем измените 'NumBins'
значение в зависимости от точности и учебной скорости.
Примечание
Этот аргумент допустим только когда Learner
значение является a templateECOC
или templateEnsemble
возразите что ученики дерева использования.
Пример: 'NumBins',50
Типы данных: single
| double
ObservationsIn
— Размерность наблюдения для данных о предикторе X
и UnlabeledX
'rows'
(значение по умолчанию) | 'columns'
Размерность наблюдения для данных о предикторе X
и UnlabeledX
В виде разделенной запятой пары, состоящей из 'ObservationsIn'
и 'rows'
или 'columns'
. Для линейных моделей классификации, если вы ориентируете X
и UnlabeledX
так, чтобы наблюдения соответствовали столбцам и задали 'ObservationsIn','columns'
, затем можно испытать сокращение во время выполнения.
Примечание
'columns'
значение допустимо только когда Learner
значение является бинарной линейной моделью классификации ('linear'
или templateLinear
) или модель ECOC с линейными бинарными учениками (например, templateECOC('Learners','linear')
.
Пример: 'ObservationsIn','columns'
Типы данных: char |
string
Mdl
— Полуконтролируемый самоучебный классификаторSemiSupervisedSelfTrainingModel
объектПолуконтролируемый самоучебный классификатор, возвращенный как SemiSupervisedSelfTrainingModel
объект. Используйте запись через точку, чтобы получить доступ к свойствам объектов. Например, чтобы получить подходящие метки для непомеченных данных и их соответствующих баллов, введите Mdl.FittedLabels
и Mdl.LabelScores
, соответственно.
Алгоритм начинает по образованию заданный пользователями классификатор (Learner
), сначала обученный на одних только маркированных данных, и затем использует тот классификатор, чтобы сделать предсказания метки для непомеченных данных. Затем алгоритм обеспечивает музыку к предсказаниям, и затем обрабатывает предсказания как истинные метки для следующего учебного цикла классификатора, если баллы выше порога (ScoreThreshold
). Этот процесс повторения до предсказаний метки сходится или предел итерации (IterationLimit
) достигнут.
[1] Эбни, Стивен. “Изучая Алгоритм Yarowsky”. Компьютерная лингвистика 30, № 3 (сентябрь 2004): 365–95. https://doi.org/10.1162/0891201041850876.
[2] Yarowsky, Дэвид. “Безнадзорное Разрешение неоднозначности Смысла слова, Конкурирующее с Контролируемыми Методами”. Продолжения 33-го Годового собрания Ассоциации для Компьютерной лингвистики, 189–96. Кембридж, Массачусетс: Ассоциация для Компьютерной лингвистики, 1995. https://doi.org/10.3115/981658.981684.
SemiSupervisedSelfTrainingModel
| predict
| templateDiscriminant
| templateECOC
| templateEnsemble
| templateKernel
| templateKNN
| templateLinear
| templateSVM
| templateTree
| fitsemigraph
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.