microsoftml.rx_fast_forest: случайный лес
Использование
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)
Описание
Машинное обучение: быстрый лес
Сведения
Деревья принятия решений — это непараметрические модели, выполняющие последовательность простых тестов на входных данных. Эта процедура принятия решений сопоставляет их с выходными данными из обучающего набора данных, входные данные которого похожи на обрабатываемый экземпляр. Решение принимается на каждом узле структуры данных двоичного дерева с учетом степени схожести, которая рекурсивно сопоставляет каждый экземпляр через ветви дерева, пока не будет достигнут соответствующий листовой узел и не будет возвращено выходное решение.
Деревья принятия решений имеют следующие преимущества:
Они эффективны с точки зрения вычисления и использования памяти во время обучения и прогнозирования.
Они могут представлять границы нелинейного принятия решений.
Они выполняют встроенный выбор признаков и классификацию.
Кроме того, они являются устойчивыми при наличии шумовых признаков.
Регрессия быстрого леса — это реализация случайного леса и леса квантильной регрессии с использованием средства обучения дерева регрессии в rx_fast_trees
.
Эта модель состоит из совокупности деревьев принятия решений. Каждое дерево в лесу принятия решений выводит распределение Гаусса путем прогнозирования. По совокупностям деревьев выполняется агрегирование с целью найти распределение по Гауссу, ближайшее к объединенному распределению для всех деревьев модели.
Классификатор леса принятия решения состоит из совокупности деревьев принятия решений. Вообще говоря, модели совокупности обеспечивают большее покрытие и точность, чем одно дерево принятия решений. Каждое дерево в лесу принятия решений выводит распределение Гаусса.
Аргументы
formula
Формула, описанная в revoscalepy.rx_formula.
Члены взаимодействия и F()
сейчас не поддерживаются в microsoftml.
.
Объект источника данных или символьная строка, указывающая файл .xdf или объект кадра данных.
method
Символьная строка, обозначающая тип быстрого дерева:
"binary"
для двоичной классификации быстрого дерева по умолчанию или"regression"
для регрессии быстрого дерева.
num_trees
Указывает общее число создаваемых в комплексе деревьев принятия решений. Создав больше деревьев принятия решений, вы можете улучшить покрытие, но это увеличит время обучения. По умолчанию используется значение 100.
num_leaves
Максимальное число листовых узлов (терминальных узлов), которые могут быть созданы в любом дереве. Более высокие значения потенциально увеличивают размер дерева и обеспечивают повышенную точность, но при этом возникает риск лжевзаимосвязи и требуется больше времени на обучение. Значение по умолчанию — 20.
min_split
Минимальное число обучающих экземпляров, необходимых для формирования листового узла. То есть минимальное число документов, разрешенных на листовом узле дерева регрессии, из данных подвыборки. Часть split означает, что признаки на каждом уровне дерева (узла) распределяются случайным образом. Значение по умолчанию — 10.
example_fraction
Доля случайно выбранных экземпляров, используемых для каждого дерева. Значение по умолчанию — 0,7.
feature_fraction
Доля случайно выбранных признаков, используемых для каждого дерева. Значение по умолчанию — 0,7.
split_fraction
Доля случайно выбранных признаков, используемых для каждого разбиения. Значение по умолчанию — 0,7.
num_bins
Максимальное число уникальных значений (интервалов) на признак. Значение по умолчанию — 255.
first_use_penalty
Признак, который первым использует штрафной коэффициент. Значение по умолчанию — 0.
gain_conf_level
Требование к достоверности для установки дерева (должно находиться в диапазоне [0,1]
). Значение по умолчанию — 0.
train_threads
Число потоков для использования при обучении. Если указано значение None, число используемых потоков определяется внутренне. Значение по умолчанию — None.
random_seed
Задает случайное начальное значение. Значение по умолчанию — None.
ml_transforms
Указывает список преобразований Машинного обучения Майкрософт, которые необходимо выполнить с данными до обучения, или значение None, если преобразования не нужно выполнять. Сведения о поддерживаемых трансформациях см. в разделах featurize_text
, categorical
и categorical_hash
.
Эти преобразования выполняются после любых заданных преобразований Python.
Значение по умолчанию — None.
ml_transform_vars
Указывает символьный вектор имен переменных, используемых в ml_transforms
, или значение None, если их не нужно использовать.
Значение по умолчанию — 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
НЕ ПОДДЕРЖИВАЕТСЯ. Именованный список с объектами, на которые можно ссылаться с помощью transforms
, transform_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
значении используется новая "хэш-среда" с родительским revoscalepy.baseenv.
blocks_per_read
Указывает количество считываемых блоков для каждого фрагмента данных, считываемого из источника данных.
report_progress
Целочисленное значение, указывающее уровень информирования по ходу обработки строки:
0
— информирование не осуществляется.1
— выводится и обновляется число обработанных записей.2
— выводятся данные об обработанных записях и времени обработки.3
— выводятся данные об обработанных записях и все данные о времени обработки.
verbose
Целочисленное значение, указывающее требуемый объем выходных данных.
Если задано значение 0
, при вычислениях подробные выходные данные не выводятся. Целочисленные значения из диапазона от 1
до 4
позволяют увеличить объем информации.
compute_context
Задает контекст, в котором выполняются вычисления. Указывается с помощью допустимого значения RxComputeContext
.
Сейчас поддерживаются локальные контексты и контексты вычислений RxInSqlServer
.
ensemble
Параметры управления для сборки.
Возвращаемое значение
Объект FastForest
с обученной моделью.
Примечание
Этот алгоритм является многопоточным и всегда будет пытаться загрузить весь набор данных в память.
См. также
Ссылки
Википедия: случайный лес (статья на английском языке)
Quantile regression forest (Лес квантильной регрессии)
From Stumps to Trees to Forests (От пней к деревьям и лесам)
Пример двоичной классификации
'''
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