Модель нейронной сети для классификации
ClassificationNeuralNetwork
объект является обученным, feedforward и полностью соединенной нейронной сетью для классификации. Первый полносвязный слой нейронной сети имеет связь от сетевого входа (данные о предикторе X
), и каждый последующий слой имеет связь от предыдущего слоя. Каждый полносвязный слой умножает вход на матрицу веса (LayerWeights
) и затем добавляет вектор смещения (LayerBiases
). Функция активации следует за каждым полносвязным слоем (Activations
и OutputLayerActivation
). Итоговый полносвязный слой и последующая softmax активация функциональный продукт выход сети, а именно, классификационные оценки (апостериорные вероятности) и предсказанные метки. Для получения дополнительной информации смотрите Структуру Нейронной сети.
Создайте ClassificationNeuralNetwork
объект при помощи fitcnet
.
LayerSizes
— Размеры полносвязных слоевЭто свойство доступно только для чтения.
Размеры полносвязных слоев в модели нейронной сети, возвращенной как положительный целочисленный вектор. i th элемент LayerSizes
количество выходных параметров в i th полносвязный слой модели нейронной сети.
LayerSizes
не включает размер итогового полносвязного слоя. Этот слой всегда имеет K выходные параметры, где K является количеством классов в Y
.
Типы данных: single
| double
LayerWeights
— Изученные веса слояЭто свойство доступно только для чтения.
Изученные веса слоя для полносвязных слоев, возвращенных как массив ячеек. i th запись в массиве ячеек соответствует весам слоя для i th полносвязный слой. Например, Mdl.LayerWeights{1}
возвращает веса для первого полносвязного слоя модели Mdl
.
LayerWeights
включает веса для итогового полносвязного слоя.
Типы данных: cell
LayerBiases
— Изученные смещения слояЭто свойство доступно только для чтения.
Изученный слой смещает для полносвязных слоев, возвращенных как массив ячеек. i th запись в массиве ячеек соответствует смещениям слоя для i th полносвязный слой. Например, Mdl.LayerBiases{1}
возвращает смещения для первого полносвязного слоя модели Mdl
.
LayerBiases
включает смещения для итогового полносвязного слоя.
Типы данных: cell
Activations
— Активация функционирует для полносвязных слоев'relu'
| 'tanh'
| 'sigmoid'
| 'none'
| массив ячеек из символьных векторовЭто свойство доступно только для чтения.
Активация функционирует для полносвязных слоев модели нейронной сети, возвращенной как вектор символов или массив ячеек из символьных векторов со значениями из этой таблицы.
Значение | Описание |
---|---|
'relu' | Исправленный линейный модуль (ReLU), функция — Выполняет пороговую операцию на каждом элементе входа, где любое значение меньше, чем нуль обнуляется, то есть, |
'tanh' | Гиперболическая касательная (tanh) функция — Применяется |
'sigmoid' | Сигмоидальная функция — Выполняет следующую операцию на каждом входном элементе: |
'none' | Тождественное отображение — Возвращает каждый входной элемент, не выполняя преобразования, то есть, f (x) = x |
Если Activations
содержит только одну функцию активации, затем это - функция активации для каждого полносвязного слоя модели нейронной сети, исключая итоговый полносвязный слой. Функция активации для итогового полносвязного слоя всегда softmax (OutputLayerActivation
).
Если Activations
массив функций активации, затем i th элемент является функцией активации для i th слой модели нейронной сети.
Типы данных: char |
cell
OutputLayerActivation
— Функция активации для итогового полносвязного слоя'softmax'
Это свойство доступно только для чтения.
Функция активации для итогового полносвязного слоя, возвращенного как 'softmax'
. Функция берет каждый вход xi и возвращает следующее, где K является количеством классов в переменной отклика:
Результаты соответствуют предсказанным классификационным оценкам (или апостериорные вероятности).
ModelParameters
— Значения параметров раньше обучали модельNeuralNetworkParams
объектЭто свойство доступно только для чтения.
Значения параметров раньше обучали ClassificationNeuralNetwork
модель, возвращенная как NeuralNetworkParams
объект. ModelParameters
содержит значения параметров, такие как аргументы значения имени, используемые, чтобы обучить классификатор нейронной сети.
Доступ к свойствам ModelParameters
при помощи записи через точку. Например, получите доступ к функции, используемой, чтобы инициализировать веса полносвязного слоя модели Mdl
при помощи Mdl.ModelParameters.LayerWeightsInitializer
.
ConvergenceInfo
— Информация о сходимостиЭто свойство доступно только для чтения.
Информация о сходимости, возвращенная как массив структур.
Поле | Описание |
---|---|
Iterations | Количество учебных итераций раньше обучало модель нейронной сети |
TrainingLoss | Учебная потеря перекрестной энтропии для возвращенной модели или resubLoss(Mdl,'LossFun','crossentropy') для модели Mdl |
Gradient | Градиент функции потерь относительно весов и смещений в итерации, соответствующей возвращенной модели |
Step | Размер шага в итерации, соответствующей возвращенной модели |
Time | Общее время проведено через все итерации (в секундах) |
ValidationLoss | Потеря перекрестной энтропии валидации для возвращенной модели |
ValidationChecks | Максимальное количество времен подряд, которых потеря валидации была больше или была равна минимальной потере валидации |
ConvergenceCriterion | Критерий сходимости |
History | Смотрите TrainingHistory |
Типы данных: struct
TrainingHistory
— Учебная историяЭто свойство доступно только для чтения.
Учебная история, возвращенная как таблица.
Столбец | Описание |
---|---|
Iteration | Учебная итерация |
TrainingLoss | Учебная потеря перекрестной энтропии для модели в этой итерации |
Gradient | Градиент функции потерь относительно весов и смещений в этой итерации |
Step | Размер шага в этой итерации |
Time | Время проведено во время этой итерации (в секундах) |
ValidationLoss | Потеря перекрестной энтропии валидации для модели в этой итерации |
ValidationChecks | Рабочее общее количество времен, которых потеря валидации больше или равна минимальной потере валидации |
Типы данных: table
Solver
— Решатель раньше обучал модель нейронной сети'LBFGS'
Это свойство доступно только для чтения.
Решатель, используемый, чтобы обучить модель нейронной сети, возвратился как 'LBFGS'
. Создать ClassificationNeuralNetwork
модель, fitcnet
использует ограниченную память алгоритм квазиньютона Broyden Flecter Goldfarb Shanno (LBFGS) как его метод минимизации функции потерь, где программное обеспечение минимизирует потерю перекрестной энтропии.
PredictorNames
— Имена переменного предиктораЭто свойство доступно только для чтения.
Имена переменного предиктора, возвращенные как массив ячеек из символьных векторов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предиктора появляются в обучающих данных.
Типы данных: cell
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора, возвращенные как вектор из положительных целых чисел. Предположение, что данные о предикторе содержат наблюдения в строках, CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Типы данных: double
ExpandedPredictorNames
— Расширенные имена предиктораЭто свойство доступно только для чтения.
Расширенные имена предиктора, возвращенные как массив ячеек из символьных векторов. Если кодирование использования модели для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames
совпадает с PredictorNames
.
Типы данных: cell
X
— Нестандартизированные предикторыЭто свойство доступно только для чтения.
Нестандартизированные предикторы, используемые, чтобы обучить модель нейронной сети, возвратились как числовая матрица или таблица. X
сохраняет его исходную ориентацию, с наблюдениями в строках или столбцах в зависимости от значения ObservationsIn
аргумент значения имени в вызове fitcnet
.
Типы данных: single
| double
| table
ClassNames
— Уникальные имена классовЭто свойство доступно только для чтения.
Уникальные имена классов используются в обучении, возвращенном как числовой вектор, категориальный вектор, логический вектор, символьный массив или массив ячеек из символьных векторов. ClassNames
имеет совпадающий тип данных, когда класс маркирует Y
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
ClassNames
также определяет порядок класса.
Типы данных: single
| double
| categorical
| logical
| char
| cell
ResponseName
— Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика, возвращенное как вектор символов.
Типы данных: char
Y
— Метки классаЭто свойство доступно только для чтения.
Метки класса, используемые, чтобы обучить модель, возвратились как числовой вектор, категориальный вектор, логический вектор, символьный массив или массив ячеек из символьных векторов. Y
имеет совпадающий тип данных, когда переменная отклика раньше обучала модель. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Каждая строка Y
представляет классификацию соответствующего наблюдения в X
.
Типы данных: single
| double
| categorical
| logical
| char
| cell
NumObservations
— Количество наблюденийЭто свойство доступно только для чтения.
Количество наблюдений в обучающих данных сохранено в X
и Y
, возвращенный в виде положительного числа.
Типы данных: double
RowsUsed
— Строки используются в подборе кривой[]
| логический векторЭто свойство доступно только для чтения.
Строки исходных обучающих данных, используемых в том, чтобы подбирать модель, возвращенную как логический вектор. Это свойство пусто, если все строки используются.
Типы данных: логический
W
— Веса наблюденияЭто свойство доступно только для чтения.
Веса наблюдения, используемые, чтобы обучить модель, возвратились как n-by-1 числовой вектор. n является количеством наблюдений (NumObservations
).
Программное обеспечение нормирует веса наблюдения, заданные в Weights
аргумент значения имени так, чтобы элементы W
в конкретном классе суммируют до априорной вероятности того класса.
Типы данных: single
| double
Cost
— Misclassification стоитсяЭто свойство доступно только для чтения.
Стоивший Misclassification, возвратился как числовая квадратная матрица, где Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
. Матрица стоимости всегда имеет эту форму: Cost(i,j) = 1
если i ~= j
, и Cost(i,j) = 0
если i = j
. Строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Порядок строк и столбцов Cost
соответствует порядку классов в ClassNames
.
Типы данных: double
Prior
— Априорные вероятностиЭто свойство доступно только для чтения.
Априорные вероятности для каждого класса, возвращенного как числовой вектор. Порядок элементов Prior
соответствует элементам ClassNames
.
Типы данных: double
ScoreTransform
— Выиграйте преобразованиеВыиграйте преобразование в виде вектора символов или указателя на функцию. ScoreTransform
представляет встроенную функцию преобразования или указатель на функцию для преобразования предсказанных классификационных оценок.
Чтобы изменить преобразование счета функционируют к function
, например, используйте запись через точку.
Для встроенной функции введите вектор символов.
Mdl.ScoreTransform = 'function';
Эта таблица описывает доступные встроенные функции.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (x / (1 – x)) |
'ismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0 |
'logit' | 1/(1 + e –x) |
'none' или 'identity' | x (никакое преобразование) |
'sign' | – 1 для x <0 0 для x = 0 1 для x> 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1 |
'symmetriclogit' | 2/(1 + e –x) – 1 |
Для функции MATLAB® или функции, которую вы задаете, введите ее указатель на функцию.
Mdl.ScoreTransform = @function;
function
должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).
Типы данных: char |
function_handle
compact | Уменьшайте размер модели машинного обучения |
compareHoldout | Сравните точность двух моделей классификации с помощью новых данных |
crossval | Перекрестный подтвердите модель машинного обучения |
edge | Ребро классификации для классификатора нейронной сети |
loss | Потеря классификации для классификатора нейронной сети |
margin | Поля классификации для классификатора нейронной сети |
partialDependence | Вычислите частичную зависимость |
plotPartialDependence | Создайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP) |
predict | Классифицируйте наблюдения с помощью классификатора нейронной сети |
resubEdge | Ребро классификации перезамены |
resubLoss | Потеря классификации перезамены |
resubMargin | Поле классификации перезамены |
resubPredict | Классифицируйте обучающие данные с помощью обученного классификатора |
Обучите классификатор нейронной сети и оцените эффективность классификатора на наборе тестов.
Считайте файл примера CreditRating_Historical.dat
в таблицу. Данные о предикторе состоят из финансовых отношений и информации об отрасли промышленности для списка корпоративных клиентов. Переменная отклика состоит из кредитных рейтингов, присвоенных рейтинговым агентством. Предварительно просмотрите первые несколько строк набора данных.
creditrating = readtable("CreditRating_Historical.dat");
head(creditrating)
ans=8×8 table
ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry Rating
_____ ______ ______ _______ ________ _____ ________ _______
62394 0.013 0.104 0.036 0.447 0.142 3 {'BB' }
48608 0.232 0.335 0.062 1.969 0.281 8 {'A' }
42444 0.311 0.367 0.074 1.935 0.366 1 {'A' }
48631 0.194 0.263 0.062 1.017 0.228 4 {'BBB'}
43768 0.121 0.413 0.057 3.647 0.466 12 {'AAA'}
39255 -0.117 -0.799 0.01 0.179 0.082 4 {'CCC'}
62236 0.087 0.158 0.049 0.816 0.324 2 {'BBB'}
39354 0.005 0.181 0.034 2.597 0.388 7 {'AA' }
Поскольку каждое значение в ID
переменная является уникальным идентификатором клиента, то есть, length(unique(creditrating.ID))
равно количеству наблюдений в creditrating
, ID
переменная является плохим предиктором. Удалите ID
переменная из таблицы, и преобразует Industry
переменная к categorical
переменная.
creditrating = removevars(creditrating,"ID");
creditrating.Industry = categorical(creditrating.Industry);
Преобразуйте Rating
переменная отклика к порядковому categorical
переменная.
creditrating.Rating = categorical(creditrating.Rating, ... ["AAA","AA","A","BBB","BB","B","CCC"],"Ordinal",true);
Разделите данные в наборы обучающих данных и наборы тестов. Используйте приблизительно 80% наблюдений, чтобы обучить модель нейронной сети, и 20% наблюдений проверять производительность обученной модели на новых данных. Используйте cvpartition
разделить данные.
rng("default") % For reproducibility of the partition c = cvpartition(creditrating.Rating,"Holdout",0.20); trainingIndices = training(c); % Indices for the training set testIndices = test(c); % Indices for the test set creditTrain = creditrating(trainingIndices,:); creditTest = creditrating(testIndices,:);
Обучите классификатор нейронной сети путем передачи обучающих данных creditTrain
к fitcnet
функция.
Mdl = fitcnet(creditTrain,"Rating")
Mdl = ClassificationNeuralNetwork PredictorNames: {'WC_TA' 'RE_TA' 'EBIT_TA' 'MVE_BVTD' 'S_TA' 'Industry'} ResponseName: 'Rating' CategoricalPredictors: 6 ClassNames: [AAA AA A BBB BB B CCC] ScoreTransform: 'none' NumObservations: 3146 LayerSizes: 10 Activations: 'relu' OutputLayerActivation: 'softmax' Solver: 'LBFGS' ConvergenceInfo: [1×1 struct] TrainingHistory: [1000×7 table] Properties, Methods
Mdl
обученный ClassificationNeuralNetwork
классификатор. Можно использовать запись через точку, чтобы получить доступ к свойствам Mdl
. Например, можно задать Mdl.TrainingHistory
получить больше информации об учебной истории модели нейронной сети.
Оцените эффективность классификатора на наборе тестов путем вычисления ошибки классификации наборов тестов. Визуализируйте результаты при помощи матрицы беспорядка.
testAccuracy = 1 - loss(Mdl,creditTest,"Rating", ... "LossFun","classiferror")
testAccuracy = 0.8003
confusionchart(creditTest.Rating,predict(Mdl,creditTest))
Задайте структуру классификатора нейронной сети, включая размер полносвязных слоев.
Загрузите ionosphere
набор данных, который включает радарные данные сигнала. X
содержит данные о предикторе и Y
переменная отклика, значения которой представляют или хороший ("g") или плохие ("b") радарные сигналы.
load ionosphere
Разделите данные на обучающие данные (XTrain
и YTrain
) и тестовые данные (XTest
и YTest
) при помощи стратифицированного раздела затяжки. Зарезервируйте приблизительно 30% наблюдений для тестирования и используйте остальную часть наблюдений для обучения.
rng("default") % For reproducibility of the partition cvp = cvpartition(Y,"Holdout",0.3); XTrain = X(training(cvp),:); YTrain = Y(training(cvp)); XTest = X(test(cvp),:); YTest = Y(test(cvp));
Обучите классификатор нейронной сети. Задайте, чтобы иметь 35 выходных параметров в первом полносвязном слое и 20 выходных параметров во втором полносвязном слое. По умолчанию оба слоя используют исправленный линейный модуль (ReLU) функция активации. Можно изменить функции активации для полносвязных слоев при помощи Activations
аргумент значения имени.
Mdl = fitcnet(XTrain,YTrain, ... "LayerSizes",[35 20])
Mdl = ClassificationNeuralNetwork ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 246 LayerSizes: [35 20] Activations: 'relu' OutputLayerActivation: 'softmax' Solver: 'LBFGS' ConvergenceInfo: [1×1 struct] TrainingHistory: [47×7 table] Properties, Methods
Доступ к весам и смещениям для полносвязных слоев обученного классификатора при помощи LayerWeights
и LayerBiases
свойства Mdl
. Первые два элемента каждого свойства соответствуют значениям для первых двух полносвязных слоев, и третий элемент соответствует значениям для итогового полносвязного слоя с softmax функцией активации для классификации. Например, отобразите веса и смещения для второго полносвязного слоя.
Mdl.LayerWeights{2}
ans = 20×35
0.0481 0.2501 -0.1535 -0.0934 0.0760 -0.0579 -0.2465 1.0411 0.3712 -1.2007 1.1162 0.4296 0.4045 0.5005 0.8839 0.4624 -0.3154 0.3454 -0.0487 0.2648 0.0732 0.5773 0.4286 0.0881 0.9468 0.2981 0.5534 1.0518 -0.0224 0.6894 0.5527 0.7045 -0.6124 0.2145 -0.0790
-0.9489 -1.8343 0.5510 -0.5751 -0.8726 0.8815 0.0203 -1.6379 2.0315 1.7599 -1.4153 -1.4335 -1.1638 -0.1715 1.1439 -0.7661 1.1230 -1.1982 -0.5409 -0.5821 -0.0627 -0.7038 -0.0817 -1.5773 -1.4671 0.2053 -0.7931 -1.6201 -0.1737 -0.7762 -0.3063 -0.8771 1.5134 -0.4611 -0.0649
-0.1910 0.0246 -0.3511 0.0097 0.3160 -0.0693 0.2270 -0.0783 -0.1626 -0.3478 0.2765 0.4179 0.0727 -0.0314 -0.1798 -0.0583 0.1375 -0.1876 0.2518 0.2137 0.1497 0.0395 0.2859 -0.0905 0.4325 -0.2012 0.0388 -0.1441 -0.1431 -0.0249 -0.2200 0.0860 -0.2076 0.0132 0.1737
-0.0415 -0.0059 -0.0753 -0.1477 -0.1621 -0.1762 0.2164 0.1710 -0.0610 -0.1402 0.1452 0.2890 0.2872 -0.2616 -0.4204 -0.2831 -0.1901 0.0036 0.0781 -0.0826 0.1588 -0.2782 0.2510 -0.1069 -0.2692 0.2306 0.2521 0.0306 0.2524 -0.4218 0.2478 0.2343 -0.1031 0.1037 0.1598
1.1848 1.6142 -0.1352 0.5774 0.5491 0.0103 0.0209 0.7219 -0.8643 -0.5578 1.3595 1.5385 1.0015 0.7416 -0.4342 0.2279 0.5667 1.1589 0.7100 0.1823 0.4171 0.7051 0.0794 1.3267 1.2659 0.3197 0.3947 0.3436 -0.1415 0.6607 1.0071 0.7726 -0.2840 0.8801 0.0848
0.2486 -0.2920 -0.0004 0.2806 0.2987 -0.2709 0.1473 -0.2580 -0.0499 -0.0755 0.2000 0.1535 -0.0285 -0.0520 -0.2523 -0.2505 -0.0437 -0.2323 0.2023 0.2061 -0.1365 0.0744 0.0344 -0.2891 0.2341 -0.1556 0.1459 0.2533 -0.0583 0.0243 -0.2949 -0.1530 0.1546 -0.0340 -0.1562
-0.0516 0.0640 0.1824 -0.0675 -0.2065 -0.0052 -0.1682 -0.1520 0.0060 0.0450 0.0813 -0.0234 0.0657 0.3219 -0.1871 0.0658 -0.2103 0.0060 -0.2831 -0.1811 -0.0988 0.2378 -0.0761 0.1714 -0.1596 -0.0011 0.0609 0.4003 0.3687 -0.2879 0.0910 0.0604 -0.2222 -0.2735 -0.1155
-0.6192 -0.7804 -0.0506 -0.4205 -0.2584 -0.2020 -0.0008 0.0534 1.0185 -0.0307 -0.0539 -0.2020 0.0368 -0.1847 0.0886 -0.4086 -0.4648 -0.3785 0.1542 -0.5176 -0.3207 0.1893 -0.0313 -0.5297 -0.1261 -0.2749 -0.6152 -0.5914 -0.3089 0.2432 -0.3955 -0.1711 0.1710 -0.4477 0.0718
0.5049 -0.1362 -0.2218 0.1637 -0.1282 -0.1008 0.1445 0.4527 -0.4887 0.0503 0.1453 0.1316 -0.3311 -0.1081 -0.7699 0.4062 -0.1105 -0.0855 0.0630 -0.1469 -0.2533 0.3976 0.0418 0.5294 0.3982 0.1027 -0.0973 -0.1282 0.2491 0.0425 0.0533 0.1578 -0.8403 -0.0535 -0.0048
1.1109 -0.0466 0.4044 0.6366 0.1863 0.5660 0.2839 0.8793 -0.5497 0.0057 0.3468 0.0980 0.3364 0.4669 0.1466 0.7883 -0.1743 0.4444 0.4535 0.1521 0.7476 0.2246 0.4473 0.2829 0.8881 0.4666 0.6334 0.3105 0.9571 0.2808 0.6483 0.1180 -0.4558 1.2486 0.2453
⋮
Mdl.LayerBiases{2}
ans = 20×1
0.6147
0.1891
-0.2767
-0.2977
1.3655
0.0347
0.1509
-0.4839
-0.3960
0.9248
⋮
Итоговый полносвязный слой имеет два выходных параметров, один для каждого класса в переменной отклика. Количество слоя выходные параметры соответствует первой размерности весов слоя и смещений слоя.
size(Mdl.LayerWeights{end})
ans = 1×2
2 20
size(Mdl.LayerBiases{end})
ans = 1×2
2 1
Чтобы оценить эффективность обученного классификатора, вычислите ошибку классификации наборов тестов для Mdl
.
testError = loss(Mdl,XTest,YTest, ... "LossFun","classiferror")
testError = 0.0774
accuracy = 1 - testError
accuracy = 0.9226
Mdl
точно классифицирует приблизительно 92% наблюдений в наборе тестов.
ClassificationPartitionedModel
| CompactClassificationNeuralNetwork
| edge
| fitcnet
| loss
| margin
| predict
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.