Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
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 Объект с обученной моделью.
Замечание
Этот алгоритм является многопотокным и всегда пытается загрузить весь набор данных в память.
См. также
Ссылки
Википедия: повышение градиента (повышение дерева Градиента)
Приближение жадной функции: градиентный автомат повышения.
Пример двоичной классификации
'''
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