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


microsoftml.rx_fast_forest: случайный лес

Usage

microsoftml.rx_fast_forest(formula: str,
    data: [revoscalepy.datasource.RxDataSource.RxDataSource,
    pandas.core.frame.DataFrame], method: ['binary',
    'regression'] = 'binary', num_trees: int = 100,
    num_leaves: int = 20, 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,
    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дерева регрессии. Модель состоит из ансамбля деревьев принятия решений. Каждое дерево в лесу принятия решений выводит распределение Gaussian путем прогнозирования. Агрегирование выполняется над ансамблем деревьев, чтобы найти распределение Gaussian ближе всего к объединенному распределению для всех деревьев в модели.

Этот классификатор леса принятия решений состоит из ансамбля деревьев принятия решений. Как правило, модели ансамбля обеспечивают лучшее покрытие и точность, чем одно дерево принятия решений. Каждое дерево в лесу принятия решений выводит распределение Gaussian.

Arguments

формула

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

данные

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

method

Символьная строка, обозначающая тип быстрого дерева:

  • "binary" для двоичной классификации быстрого дерева по умолчанию или

  • "regression" для быстрой регрессии дерева.

num_trees

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

num_leaves

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

min_split

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

example_fraction

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

feature_fraction

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

split_fraction

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

num_bins

Максимальное количество отдельных значений (bins) для каждой функции. Значение по умолчанию — 255.

first_use_penalty

Функция сначала использует коэффициент штрафа. Значение по умолчанию — 0.

gain_conf_level

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

train_threads

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

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

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

Ансамбль

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

Возвраты

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

Замечание

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

См. также

rx_fast_trees, rx_predict

Ссылки

Википедия: случайный лес

Лес квантилии регрессии

От пней до деревьев до лесов

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

'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_forest, 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)

forest_model = rx_fast_forest(
    formula=" isCase ~ age + parity + education + spontaneous + induced ",
    data=data_train)
    
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(forest_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: 7176 bytes
Starting to train ...
Not training a calibrator because a valid calibrator trainer was not provided.
Elapsed time: 00:00:00.2704185
Elapsed time: 00:00:00.0443884
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0253862
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds 
  isCase PredictedLabel      Score
0  False          False -36.205067
1   True          False -40.396084
2  False          False -33.242531
3  False          False -87.212494
4   True          False -13.100666

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

'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_forest, 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_forest(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)

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

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, 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: 21372 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0644269
Elapsed time: 00:00:00.0109290
Beginning processing data.
Rows Read: 29, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0314390
Finished writing 29 rows.
Writing completed.
   Solar_R  Wind  Temp      Score
0    190.0   7.4  67.0  26.296144
1     20.0  16.6  63.0  14.274153
2    320.0  16.6  73.0  23.421144
3    187.0   5.1  87.0  80.662109
4    175.0   7.4  89.0  67.570549