Описание параметров файла config.json

Материал из Материалы по машинному обучению
Перейти к: навигация, поиск

RegressionSettings

Версия конфигурации

  • version - версия формата файла конфигурации. Текущее значение - "version": 5,

Параметры архитектуры

  • MetaModelStrategy - определяет первый уровень модели, мета-слой. Варианты значений:
    • None
    • PseudoBoosting
    • Bagging - создает композицию решений, для каждого решения случайно отбирает заданную долю данных из обучающей выборки с возвращением
    • RandomForest - добавляет к бэггингу еще одно измерение для создания решений - перебор по количеству отбираемых в для решения признаков
  • TopLayerStrategy - определяет второй уровень модели. Варианты значений:
    • None - значение по-умолчанию
    • LogisticRegression
    • MultinomialLinearRegression
    • NeuralNetwork
    • SVM
    • Genetics
  • SegmentationStrategy - определяет третий уровень модели. Если определен второй уровень, то третий его аддитивно уточняет (к результату добавляет поправку)
    • None
    • RegressionTree - значение по-умолчанию
  • LeafStrategy - определяет модель работы с "листьями"
    • None - значение по-умолчанию. Среднее по значениям сегмента
    • NearestNeighbour - Ближайшие соседи
    • Covariants - расчет и выбор лучшей из аппроксимаций для сегмента (в зависимости от настроек: линейная, квадратичная, логистическая -)
    • NeuralNetworks - /не уверен, что используется/
    • SVMs - support vector machine

Параметры постобработки

  • postprocessEstimationsAsInt (bool, false) - Округление каждого результата (Estimation) до целого значения перед расчетом ошибки модели. Можно использовать для целочисленных или бинарных выходов, но надо понимать, что пороговое значение в данном случае 0,5.

Параметры минимального целевого значения

Не загружаются из config.json. Установлены жестко в коде

  • useMinValuableObjectiveDifference (bool, true)
  • minAllowedValuableObjectiveDifference (double, 1E-6)

Параметры модулей

Группа параметров Split

  • maxSplitDepth (int,-1) - глубина дерева. Используется для принудительного ограничения глубины дерева (в целях снижения затрат на расчеты или для упрощения модели) "-1" - не ограничивать глубину дерева.
  • minSegmentSizeAbsolute (double, 300) - минимальное количество элементов в сегменте. Для моделей использующих Bagging, не имеет смысла подбирать этот параметр с большой точностью, т.к. на каждом цикле количественная структура выборки меняется случайным образом. Минимальный размер сегмента влияет на фактическую глубину дерева.
  • minSegmentSizeFractionCurrentSegment (double, 0.001) - минимальная доля элементов в сегменте от всей выборки данных

Эстиматор использует максимальное абсолютное значение из minSegmentSizeAbsolute и minSegmentSizeFractionCurrentSegment

//splitting heuristics

  • analyzeDepth (int,0) - глубина анализа. "0": однократное деление текущей выборки, "1": разделение текущей выборки, затем однократное разделение полученных частей, и т.д. нет уверенности, что работает/

//parallelism

  • useParallelConditionsCheck (bool, true) Необходимость параллели в пределах одного сегмента. При наличии 4 факторов делимся на 4 потока // old, v1
  • useParallelSegmentation (bool, true) - Проверка положительный сегмент или отрицательный. И нужны ли параллельные вычисления
  • noParallelismAfterDepth (int?, null) - на каком уровне остановить распараллеливание вычислений

//old v1

  • splitCheckMaxConditionsPerField (int, 100) Не используется. Старый способ разбиения. Сейчас все проверяем. //TODO: seem to be not needed in V2
  • useLinearResidualScoresForSplittingScore (bool, false) Не используется. //TODO: seem to be not needed in V2

Группа параметров Covariants

  • covariantTopLayers (int, 3) - до какой глубины дерева пытаться рассчитать в узлах коварианты (если MetaModelStrategy = RegressionTree)
  • segmentationConditionHeuristicSmoothing (int, 5) - дополняет особые условия разбиения (возможно оптимальнее). TODO почитать код
  • nFoldCheckN (int, 5) - количество выборок для обучения
  • covariantSelectionObjectiveRangeEpsilon (double, 1e-6) - Если кост решения почти не отличается от нуля, то кост приравнивается к нулю
  • tryLowerOrders (bool, true) - необходимость расчета линейной полиноминальной регрессии (1-го порядка) (если checkLinearMultinomialRegression = True)
  • tryRemoveFactors (bool, true) - пытаться исключать признаки объекта при расчете регрессий (ковариантов)
  • tryRemoveFactorsCostFrac (double, 0.01)
  • tryRemoveFactorsObjectiveRangeEpsilon (double, 1e-6)
  • logisticFitMinDelta (double, 0.0001) - величина критерия окончания обучения
  • logisticFitMaxIterations (int, 100) - Используются при обучении с л2 регуляризацией
  • logisticFitRegularization (double, 0) - Используются при обучении с л2 регуляризацией
  • checkLogisticRegression (bool, true) - рассчитывать логистическую регрессию
  • checkLinearMultinomialRegression (bool, true) - рассчитывать полиномиальную регрессию 2-го порядка
  • minSegmentSizeForLeafCovariants (int, 100) - минимальный размер сегмента, для которого считается регрессия

Группа параметров NearestNeighbours

  • distanceWeightEpsilon (double, 0.0625) - /давно не работает?/

Группа параметров PseudoBoosting

  • maxIterations (int, 100) - /не используется?/

Группа параметров Bagging

  • maxIterations (int, 100) - количество деревьев случайного леса (количество циклов)
  • sizeCoef (double, 0.5) - размер семплированного (random) подмножества для обучения дерева случайного леса (доля от всей обучающей выборки). Чем ближе к 1 - тем больше переобучение и выше разброс R^2 при подборе моделей (и на обучающей и тестовой выборке). Чем ближе к нулю и больше количество деревьев, тем лучше среднее R^2 на тестовой выборке. Семлированное подмножество формируется случайным выбором записей с возвращением. Т.е. в итоговое подмножество могут попасть дубли одних записей из обучающей выборки, а какие-то записи могут вообще не попать. это действует и при коэффициенте, равном 1.
  • useWeightedEstimations (bool, true) вместо усреднения. Берет r2 и использует его для взвешивания показаний разных деревьев. //if false - use plain avg

Группа параметров RandomForest

Следующие параметры определяют количество признаков, случайно отбираемых из общего списка признаков (без возвращения) для построения деревьев случайного леса.

Фактически используется параметр, дающий максимальное абсолютное количество признаков.

  • factorSelectionCoef (double, 1.0/3) - доля от всего количества признаков
  • factorSelectionMinCount (int, 5) - количество признаков

Рекомендации по параметрам:

Для более качественного леса необходимо большое разнообразие деревьев, то есть чем меньшая доля признаков используется, тем лучше. На практике использование всех признаков может приводить к переобучению модели, т.е. высокий R^2 на обучающей выборке и низкий на тестовой.

Параметры количества признаков необходимо рассматривать в связке со следующими параметрами:

  • размер семпловой выборки bagging.sizeCoef
  • размер леса bagging.maxIterations

При подборе модели, если признаков очень мало (допустим, менее 10), то удобнее делать точный перебор количества признаков по параметру factorSelectionMinCount, установив factorSelectionCoef в 0. Если признаков много, то перебор может быть удобнее делать по долям, т.е. по factorSelectionCoef, установив factorSelectionMinCount в некое минимальное значение (например 5).

Typically, for a classification problem with p features, √p (rounded down) features are used in each split. For regression problems the inventors recommend p/3 (rounded down) with a minimum node size of 5 as the default.

Группа параметров SVM

TODO - Читать исходники)

Группа параметров NeuralNetwork

Группа параметров GeneticFacilitySettings

На практике не используется. Подбор формулы регрессии генетическими алгоритмами

  • stepMaxCount (int, 15)
  • capacity (int, 200)
  • reproducingCapacity (int, 100)
  • feedSteps (int, 100)
  • intermediateSubstantionsCount (int, 10)
  • energyLosesPerGene (double, 1E-05)
  • maxSiblingsCount (int, 2)
  • randomEnergyCoeff (double, 0.0001)
  • attractionSampleSize (int, 100)
  • sumType (Logistic) Варианты значений: Logistic, Simple.
  • reproductionType (Parthenogenesis) Варианты значений: Parthenogenesis, Sex.
  • basicGeneTypes ("Value", "Function", "FoodPerceptor")

// trainingProgram": [ {

  • recordsInTrainingSet (int, 1000)
  • lastGeneration (int, 200)

// }, {

  • recordsInTrainingSet (int, 2147483647)
  • lastGeneration" (int, 2147483647)