Бөлісу құралы:


microsoftml.rx_fast_trees: увеличенные деревья

Usage

microsoftml.rx_fast_trees(formula: str,
    data: [revoscalepy.datasource.RxDataSource.RxDataSource,
    pandas.core.frame.DataFrame], method: ['binary',
    'regression'] = 'binary', num_trees: int = 100,
    num_leaves: int = 20, learning_rate: float = 0.2,
    min_split: int = 10, example_fraction: float = 0.7,
    feature_fraction: float = 1, split_fraction: float = 1,
    num_bins: int = 255, first_use_penalty: float = 0,
    gain_conf_level: float = 0, unbalanced_sets: bool = False,
    train_threads: int = 8, random_seed: int = None,
    ml_transforms: list = None, ml_transform_vars: list = None,
    row_selection: str = None, transforms: dict = None,
    transform_objects: dict = None, transform_function: str = None,
    transform_variables: list = None,
    transform_packages: list = None,
    transform_environment: dict = None, blocks_per_read: int = None,
    report_progress: int = None, verbose: int = 1,
    ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
    compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)

Description

Быстрое дерево машинного обучения

Сведения

rx_fast_trees — это реализация FastRank. FastRank — это эффективная реализация алгоритма повышения градиента MART. Повышение градиента — это метод машинного обучения для проблем регрессии. Он создает каждое дерево регрессии в пошаговой манере, используя предопределенную функцию потери для измерения ошибки для каждого шага и исправляет его в следующем. Таким образом, эта модель прогнозирования на самом деле является ансамблем более слабых моделей прогнозирования. В проблемах регрессии повышение создает ряд таких деревьев в пошаговой манере, а затем выбирает оптимальное дерево с помощью произвольной функции потери.

MART узнает ансамбль деревьев регрессии, который является деревом принятия решений со скалярными значениями в его листьях. Дерево принятия решения (или регрессии) — это бинарная диаграмма потока, например блок-схема, где на каждом внутреннем узле один решает, какие из двух дочерних узлов будут продолжаться на основе одного из значений признаков из входных данных. На каждом конечном узле возвращается значение. В внутренних узлах решение основано на тесте "x <= v", где x значение функции в входном примере и v является одним из возможных значений этой функции. Функции, которые могут быть созданы деревом регрессии, являются всеми кусками константных функций.

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

  • В случае проблемы двоичной классификации выходные данные преобразуются в вероятность с помощью некоторой формы калибровки.

  • В случае проблемы регрессии выходные данные — прогнозируемое значение функции.

  • В случае проблемы ранжирования экземпляры упорядочивается выходным значением ансамбля.

Если method задано значение "regression", используется регрессия версии FastTree. Если задано значение "ranking", используется ранжирующая версия FastTree. В случае ранжирования экземпляры должны быть упорядочены выходными данными ансамбля дерева. Единственное различие в параметрах этих версий заключается в параметрах калибровки, которые необходимы только для классификации.

Arguments

формула

Формула, как описано в revoscalepy.rx_formula. Термины взаимодействия и F() в настоящее время не поддерживаются в microsoftml.

данные

Объект источника данных или символьная строка, указывающая XDF-файл или объект кадра данных.

method

Символьная строка, указывающая тип быстрого дерева: "binary" для двоичной классификации быстрого дерева по умолчанию или "regression" для регрессии быстрого дерева.

num_trees

Указывает общее количество деревьев принятия решений для создания в ансамбле. Создавая больше деревьев принятия решений, вы можете получить лучшее покрытие, но время обучения увеличивается. Значение по умолчанию — 100.

num_leaves

Максимальное количество листьев (узлов терминала), которые можно создать в любом дереве. Более высокие значения потенциально увеличивают размер дерева и получают лучшую точность, но рискуют перенаправляться и требовать больше времени обучения. Значение по умолчанию — 20.

learning_rate;

Определяет размер шага, предпринятого в направлении градиента в каждом шаге процесса обучения. Это определяет, насколько быстро или медленно учащийся конвергентирует оптимальное решение. Если размер шага слишком велик, вы можете перезахватить оптимальное решение. Если размер шага слишком мал, обучение занимает больше времени для конвергентного решения.

min_split

Минимальное количество экземпляров обучения, необходимых для формирования конечной части. То есть минимальное количество документов, разрешенных в листе дерева регрессии, из вложенных данных. Разделение означает, что функции на каждом уровне дерева (узла) делятся случайным образом. Значение по умолчанию — 10. Число экземпляров учитывается только в том случае, если взвешиваются экземпляры.

example_fraction

Доля случайных выбранных экземпляров, используемых для каждого дерева. Значение по умолчанию — 0,7.

feature_fraction

Доля случайных выбранных признаков, используемых для каждого дерева. Значение по умолчанию — 1.

split_fraction

Доля случайных выбранных функций для каждого разделения. Значение по умолчанию — 1.

num_bins

Максимальное количество отдельных значений (bins) для каждой функции. Если функция имеет меньше значений, чем указанное число, каждое значение помещается в свою собственную ячейку. Если есть больше значений, алгоритм создает numBins ячейки.

first_use_penalty

Функция сначала использует коэффициент штрафа. Это форма нормализации, которая несет штраф за использование новой функции при создании дерева. Увеличьте это значение, чтобы создать деревья, которые не используют множество функций. Значение по умолчанию — 0.

gain_conf_level

Требование достоверности при установке дерева (должно находиться в диапазоне [0,1)). Значение по умолчанию — 0.

unbalanced_sets

Если Trueиспользуются производные, оптимизированные для несбалансированных наборов. Применимо только в том случае, если type равно "binary". Значение по умолчанию — False.

train_threads

Количество потоков, используемых в обучении. Значение по умолчанию — 8.

random_seed

Указывает случайное начальное значение. Значение по умолчанию — None.

ml_transforms

Указывает список преобразований MicrosoftML для выполнения данных перед обучением или Нет , если преобразования не выполняются. См featurize_text. раздел , categoricalа также categorical_hashсведения о поддерживаемых преобразованиях. Эти преобразования выполняются после любых указанных преобразований Python. Значение по умолчанию — None.

ml_transform_vars

Указывает вектор символов имен переменных, используемых или ml_transformsнет , если они не используются. Значение по умолчанию — None.

row_selection

НЕ ПОДДЕРЖИВАЕТСЯ. Указывает строки (наблюдения) из набора данных, которые должны использоваться моделью с именем логической переменной из набора данных (в кавычках) или логическим выражением с помощью переменных в наборе данных. Рассмотрим пример.

  • row_selection = "old" используются только наблюдения, в которых значение переменной old равно True.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) Использует только наблюдения, в которых значение age переменной составляет от 20 до 65, а значение log переменной income больше 10.

Выбор строки выполняется после обработки любых преобразований данных (см. аргументы transforms или transform_function). Как и во всех выражениях, row_selection можно определить вне вызова функции с помощью expression функции.

Преобразует

НЕ ПОДДЕРЖИВАЕТСЯ. Выражение формы, представляющей первый раунд преобразований переменных. Как и во всех выражениях, transforms (или row_selection) можно определить вне вызова функции с помощью expression функции.

transform_objects

НЕ ПОДДЕРЖИВАЕТСЯ. Именованный список, содержащий объекты, на которые можно ссылаться, transformstransform_functionи row_selection.

transform_function

Функция преобразования переменной.

transform_variables

Символьный вектор входных переменных набора данных, необходимых для функции преобразования.

transform_packages

НЕ ПОДДЕРЖИВАЕТСЯ. Вектор символов, указывающий дополнительные пакеты Python (за пределами указанных в RxOptions.get_option("transform_packages")) для обеспечения доступности и предварительной загрузки для использования в функциях преобразования переменных. Например, те, которые явно определены в функциях revoscalepy через их transforms аргументы или transform_function те, которые определены неявно через их formula или row_selection аргументы. Аргумент transform_packages также может быть None, указывающий, что пакеты за пределами RxOptions.get_option("transform_packages") предварительно загружены.

transform_environment

НЕ ПОДДЕРЖИВАЕТСЯ. Определяемая пользователем среда, которая служит родительской средой для всех сред, разработанных внутренне и используется для преобразования данных переменных. Если transform_environment = Noneвместо этого используется новая среда hash с родительским revoscalepy.baseenv.

blocks_per_read

Указывает количество блоков для чтения для каждого блока данных, считываемого из источника данных.

report_progress

Целочисленное значение, указывающее уровень отчетов о ходе обработки строк:

  • 0: не сообщается о ходе выполнения.

  • 1: количество обработанных строк печатается и обновляется.

  • 2: отображаются строки, обрабатываемые и сроки.

  • 3: обрабатываются строки и сообщаются все сроки.

verbose

Целочисленное значение, указывающее количество нужных выходных данных. Если 0подробные выходные данные не печатаются во время вычислений. Целые значения от 1 того, чтобы 4 обеспечить увеличение объема информации.

compute_context

Задает контекст, в котором выполняются вычисления, указанные с допустимым revoscalepy. RxComputeContext. В настоящее время локальная и revoscalepy. Поддерживаются контексты вычислений RxInSqlServer.

Ансамбль

Управление параметрами для ensembling.

Возвраты

FastTrees Объект с обученной моделью.

Замечание

Этот алгоритм является многопотокным и всегда пытается загрузить весь набор данных в память.

См. также

rx_fast_forest, rx_predict

Ссылки

Википедия: повышение градиента (повышение дерева Градиента)

Приближение жадной функции: градиентный автомат повышения.

Пример двоичной классификации

'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_trees, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset

infert = get_dataset("infert")

import sklearn
if sklearn.__version__ < "0.18":
    from sklearn.cross_validation import train_test_split
else:
    from sklearn.model_selection import train_test_split

infertdf = infert.as_df()
infertdf["isCase"] = infertdf.case == 1
data_train, data_test, y_train, y_test = train_test_split(infertdf, infertdf.isCase)

trees_model = rx_fast_trees(
    formula=" isCase ~ age + parity + education + spontaneous + induced ",
    data=data_train)
    
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(trees_model, data=data_test,
                     extra_vars_to_write=["isCase", "Score"])
                     
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))

Выходные данные:

Not adding a normalizer.
Making per-feature arrays
Changing data from row-wise to column-wise
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Processed 186 instances
Binning and forming Feature objects
Reserved memory for tree learner: 7020 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0949161
Elapsed time: 00:00:00.0112103
Beginning processing data.
Rows Read: 62, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0230457
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds 
  isCase PredictedLabel      Score  Probability
0  False          False  -4.722279     0.131369
1  False          False -11.550012     0.009757
2  False          False  -7.312314     0.050935
3   True           True   3.889991     0.825778
4  False          False  -6.361800     0.072782

Пример регрессии

'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_trees, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset

airquality = get_dataset("airquality")

import sklearn
if sklearn.__version__ < "0.18":
    from sklearn.cross_validation import train_test_split
else:
    from sklearn.model_selection import train_test_split

airquality = airquality.as_df()


######################################################################
# Estimate a regression fast forest
# Use the built-in data set 'airquality' to create test and train data

df = airquality[airquality.Ozone.notnull()]
df["Ozone"] = df.Ozone.astype(float)

data_train, data_test, y_train, y_test = train_test_split(df, df.Ozone)

airFormula = " Ozone ~ Solar_R + Wind + Temp "

# Regression Fast Forest for train data
ff_reg = rx_fast_trees(airFormula, method="regression", data=data_train)

# Put score and model variables in data frame
score_df = rx_predict(ff_reg, data=data_test, write_model_vars=True)
print(score_df.head())

# Plot actual versus predicted values with smoothed line
# Supported in the next version.
# rx_line_plot(" Score ~ Ozone ", type=["p", "smooth"], data=score_df)

Выходные данные:

'unbalanced_sets' ignored for method 'regression'
Not adding a normalizer.
Making per-feature arrays
Changing data from row-wise to column-wise
Beginning processing data.
Rows Read: 87, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Warning: Skipped 4 instances with missing features during training
Processed 83 instances
Binning and forming Feature objects
Reserved memory for tree learner: 21528 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0512720
Elapsed time: 00:00:00.0094435
Beginning processing data.
Rows Read: 29, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0229873
Finished writing 29 rows.
Writing completed.
   Solar_R  Wind  Temp      Score
0    115.0   7.4  76.0  26.003876
1    307.0  12.0  66.0  18.057747
2    230.0  10.9  75.0  10.896211
3    259.0   9.7  73.0  13.726607
4     92.0  15.5  84.0  37.972855