Сводка
Создает модели и строит прогнозы при помощи адаптации метода контролируемого машинного обучения произвольного леса Лео Бреймана. Прогнозы могут быть выполнены для обеих категориальных перемененных (классификация) и непрерывных переменных (регрессия). Независимые переменные могут принимать форму полей в атрибутивной таблице обучающих объектов, наборов растровых данных и объектов расстояния, используемых для вычисления значений близости в качестве добавочных переменных. В дополнение к проверке производительности модели на основании обучающих данных, прогнозы можно выполнять по объектам или растрам прогноза.
Более подробно о том, как работает Классификация на основе леса и регрессия
Иллюстрация
Использование
Данный инструмент создает сотни деревьев, называемых множеством деревьев решений, чтобы построить модель, которую можно будет использовать для прогнозирования. Каждое из деревьев решений создается при помощи произвольно получаемых частей исходных (обучающих) данных. Каждое дерево строит собственный прогноз и становится предложением для итогового результата. Алгоритм модели леса рассматривает предложения от всех деревьев решений, чтобы спрогнозировать или классифицировать результат неизвестной выборки. Это важно, поскольку отдельные деревья могут иметь проблемы с чрезмерно близкой подгонкой модели; но объединение нескольких деревьев в лес для прогнозирования решает проблему чрезмерно близкой подгонки, связанную с одним деревом.
Этот инструмент можно использовать в трех различных операционных режимах. Опцию Обучение можно использовать для оценки производительности разных моделей при изучении различных независимых переменных и настроек инструментов. Как только найдена хорошая модель, можно использовать опцию Прогнозировать в объекты или Прогнозировать в растр. Он является инструментом, управляемым данными, и наилучшим образом работает с большими наборами данных. Для наилучшего результата обучение инструмента должно происходить хотя бы на нескольких сотнях объектов. Инструмент не подходит для очень маленьких наборов данных.
Входными обучающими объектами могут быть точки или полигоны. Инструмент не работает с составными объектами.
Для использования растров в качестве независимых переменных или прогнозирования Выходной поверхности прогнозирования необходима лицензия Spatial Analyst .
Инструмент получает множество различных выходных данных. Выходные обученные объекты будут содержать все Входные обучающие объекты, использованные в созданной модели, а также независимые переменные, использованные в модели (включая использованные входные поля, любые вычисленные расстояния и любые извлеченные или вычисленные значения растров). Также они будут содержать прогнозы для всех объектов, использованных для обучения модели, что может быть полезно при оценке эффективности созданной модели. При применении этого инструмент для прогнозирования, он создаст новый класс объектов, содержащий Выходные прогнозированные объекты, или новую Выходную поверхность прогнозирования, если предоставлены независимые растры.
При использовании опции Прогнозировать в объекты будет создан новый класс объектов, содержащий Выходные прогнозированные объекты. С опцией Прогнозировать в растр будет создана новая Выходная поверхность прогнозирования.
Этот инструмент также создает сообщения и диаграммы, которые помогают понять производительность созданной модели. Вы можете получить доступ к сообщению, переместив курсор мыши на индикатор выполнения, щелкнув на всплывшую кнопку или развернув раздел сообщений на панели Геообработка. Доступ к сообщениям предыдущего запуска инструмента Классификация на основе леса и регрессия можно получить также через Историю геообработки. В сообщения входит информация о характеристиках модели, не вошедших в набор ошибках, значимости переменных и диагностика проверки.
Можно использовать параметр Выходная таблица значимости переменных, чтобы создать таблицу для отображения диаграммы значимости переменных для оценки. Верхние 20 значений значимости переменных также показываются в окне сообщений. Диаграмма будет доступна ниже строки слоя в панели Содержание.
Независимые переменные могут быть получены из полей, быть вычислены по объектам расстояния или извлечены из растров. Можно использовать любые комбинации этих типов независимых переменных, но необходим хотя бы один тип. Независимые переменные (из полей, объектов расстояния или растров) должны содержать различные значения. Если независимая переменная является категориальной, следует включить опцию Категориальная (переменные строкового типа будут отмечены автоматически). Категориальные независимые переменные ограничены 60 уникальными значениями, хотя меньшее количество категорий улучшит производительность модели. Для данного размера данных, чем больше категорий содержит переменная, тем больше вероятность того, что она будет доминировать в модели и приведет к менее эффективным результатам прогнозирования.
Объекты расстояния используются для автоматического создания независимых переменных, представляя расстояние от предоставленных объектов до Входных обучающих объектов. Расстояния будут вычислены от каждого из входных Независимых объектов расстояния обучения до ближайшего Входного обучающего объекта. Если входные Независимые объекты расстояния обучения являются полигонами или линиями, атрибуты расстояния вычисляются как расстояние между ближайшими сегментами пары объектов. Но для полигонов и линий расстояния рассчитываются по-разному. Более подробно см. Как инструменты близости вычисляют расстояние.
Если Входные обучающие объекты являются точками и используются Независимые обучающие растры, инструмент извлекает независимые переменные в каждом местоположении точки. Для многоканальных растров используется только первый канал.
Хотя вы можете иметь несколько слоев с одинаковым именем в панели Содержание, инструмент не может использовать несколько независимых слоев с одинаковым именем или удалить повторяющиеся имена слоев в ниспадающем списке. Чтобы избежать этой проблемы, убедитесь, что у каждого слоя есть уникальное имя.
Если Входные обучающие объекты являются полигонами, Переменная для прогнозирования является категориальной и используются исключительно Независимые обучающие растры, то для такого варианта имеется опция Конвертировать полигоны в разрешение растра для обучения. Если эта опция включена, полигон разделяется на точки в центроидах каждой из ячеек растра, попадающих в полигон. Значения растра в местоположении каждой точки затем извлекаются и и используются для обучения модели. Для числовых переменных используется билинейный метод пересчета, а для категориальных переменных – ближайший. Размером ячейки конвертированных полигонов по умолчанию будет максимальный размер ячейки входных растров. Однако это можно изменить при помощи параметра средыРазмер ячейки. Если опция не включена, в модели будет использоваться одно значение растра для каждого полигона. Каждому полигону назначается среднее значение для непрерывных растров и значение большинства для категориальных растров.
В данных, используемых для каждой указанной независимой переменной, должны быть вариации. Если вы получаете ошибку из-за того, что в одном из заданных полей или растров вариаций нет, попробуйте запустить инструмент снова, отметив переменную как категориальную. Если 95 процентов объектов имеют одинаковое значение для определенной переменной, эта переменная получает флаг, как не имеющая вариаций.
Можно использовать параметр Компенсировать разреженные категории, если вариабельность в категориях не сбалансирована. Например, если у вас есть некоторые категории, которые встречаются сотни раз в наборе данных, и несколько, которые встречаются значительно реже, щелкните этот параметр, чтобы быть уверенным, что все категории представлены в каждом дереве для построения сбалансированной модели.
При сопоставлении независимых переменных поля Prediction и Training должны быть одного типа (double в Training должно соответствовать double в Prediction).
Модели на основе леса не выполняют экстраполяцию, они могут только классифицировать или прогнозировать значения, на которых обучалась модель. Если прогнозируемое значение на основании независимых переменных намного выше или ниже диапазона исходного обучающего набора, модель будет оценивать значение как находящееся рядом с самым высоким или низким значением в исходном наборе данных. Этот инструмент может плохо срабатывать при попытке прогнозировать независимые переменные, находящиеся вне диапазона независимых переменных, используемых для обучения модели.
Инструмент не сработает, если в независимых переменных прогнозирования, не представленных в обучающих объектах, существуют категории.
Для использования наборов данных мозаики в качестве независимых переменных сначала используйте инструмент Создать слой мозаики и скопируйте полный путь к слою в инструмент или используйте инструмент Создать слой мозаики и инструмент Создать растровый слой для уравнивания шаблонов обработки для наборов данных мозаики.
Значение по умолчанию для параметра Число деревьев равно 100. Увеличение числа деревьев в модели леса приведет к более точному прогнозированию модели, но модель будет дольше вычисляться.
Если отмечен параметр Вычислить неопределенность инструмент вычислит 90% интервал прогнозирования вокруг каждого прогнозируемого значения Переменной для прогнозирования. Если Тип прогнозирования - Только обучение или Прогнозировать в объекты, к классам Выходные обученные объекты или Выходные объекты прогнозирования добавляются по два поля. Эти поля, оканчивающиеся на _P05 и _P95, обозначают верхнюю и нижнюю границы интервала прогнозирования. Для каждого нового наблюдения вы можете прогнозировать с 90-процентной вероятностью, что значение нового наблюдения попадет в этот интервал, исходя из тех же самых независимых переменных. При использовании опции Прогнозировать в растр, к панели Содержание добавляются два дополнительных растра, представляющих верхнюю и нижнюю границы интервала прогнозирования.
Инструмент поддерживает параллельную обработку и использует до 50% доступной мощности процессора по умолчанию. Количество используемых процессоров можно изменить при помощи параметра среды Коэффициент параллельной обработки.
Более подробно о работе инструментов, выходных сообщениях и диаграммах см. Как работает инструмент Классификация на основе леса и регрессия.
Литература:
Breiman, Leo. Out-Of-Bag Estimation. 1996.
Breiman, L. (1996). Bagging predictors. Machine learning, 24(2), 123-140.
Breiman, Leo. "Random Forests". Machine Learning. 45 (1): 5-32. doi:10.1023/A:1010933404324. 2001.
Breiman, L., J.H. Friedman, R.A. Olshen, C.J. Stone. Classification and regression trees. New York: Academic. Chapter 4. 2017.
Dietterich, T. G. (2000, June). Ensemble methods in machine learning. В International workshop on multiple classifier systems (pp. 1-15). Springer, Berlin, Heidelberg.
Gini, C. (1912). Variabilità e mutabilità. Reprinted in Memorie di metodologica statistica (Ed. Pizetti E, Salvemini, T). Rome: Libreria Eredi Virgilio Veschi.
Grömping, U. (2009). Variable importance assessment in regression: linear regression versus random forest. The American Statistician, 63(4), 308-319.
Ho, T. K. (1995, August). Random decision forests. В Document analysis and recognition, 1995., proceedings of the third international conference on Document Analysis and Recognition. (Vol. 1, pp. 278-282). IEEE.
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An introduction to statistical learning (Vol. 112). New York: springer.
LeBlanc, M., & Tibshirani, R. (1996). Combining estimates in regression and classification. Journal of the American Statistical Association, 91(436), 1641-1650.
Loh, W. Y., & Shih, Y. S. (1997). Split selection methods for classification trees. Statistica sinica, 815-840.
Meinshausen, Nicolai. "Quantile regression forests." Journal of Machine Learning Research 7. Jun (2006): 983-999.
Nadeau, C., & Bengio, Y. (2000). Inference for the generalization error. В Advances in neural information processing systems (pp. 307-313).
Strobl, C., Boulesteix, A. L., Kneib, T., Augustin, T., & Zeileis, A. (2008). Conditional variable importance for random forests. BMC bioinformatics, 9(1), 307.
Zhou, Z. H. (2012). Ensemble methods: foundations and algorithms. ESRI Press.
Синтаксис
Forest(prediction_type, in_features, {variable_predict}, {treat_variable_as_categorical}, {explanatory_variables}, {distance_features}, {explanatory_rasters}, {features_to_predict}, {output_features}, {output_raster}, {explanatory_variable_matching}, {explanatory_distance_matching}, {explanatory_rasters_matching}, {output_trained_features}, {output_importance_table}, {use_raster_values}, {number_of_trees}, {minimum_leaf_size}, {maximum_depth}, {sample_size}, {random_variables}, {percentage_for_training}, {output_classification_table}, {output_validation_table}, {compensate_sparse_categories}, {number_validation_runs}, {calculate_uncertainty})
Parameter | Объяснение | Тип данных |
prediction_type | Задает режим выполнения инструмента. Инструмент может быть запущен для обучения модели только для оценки производительности, прогнозирования объектов или создания поверхности ,
| String |
in_features | Класс объектов, содержащий параметр variable_predict и, дополнительно, независимые переменные обучения из полей. | Feature Layer |
variable_predict (Дополнительный) | Переменная из параметра in_features, содержащая значения, используемые для обучения модели. Это поле содержит известные (обучающие) значения переменной, которые будут использованы для прогнозирования в неизвестных местоположениях. | Field |
treat_variable_as_categorical (Дополнительный) |
| Boolean |
explanatory_variables [[Variable, Categorical],...] (Дополнительный) | Список полей, представляющих независимые переменные, которые помогут прогнозировать значения или категории variable_predict. Используйте параметр treat_variable_as_categorical для любых переменных, которые представляют классы или категории (например, почвенно-растительный покров – его наличие или отсутствие). Укажите переменную true для всего, что представляет классы или категории, например, наличие или отсутствие почвенно-растительного покрова, и false, если переменная является непрерывной. | Value Table |
distance_features [distance_features,...] (Дополнительный) | Автоматически создает независимые переменные путем вычисления расстояния от предоставленных объектов до in_features. Расстояния будут вычислены от каждого из входных distance_features до ближайшего in_features. Если входные distance_features являются полигонами или линиями, атрибуты расстояния вычисляются как расстояние между ближайшими сегментами пары объектов. | Feature Layer |
explanatory_rasters [[Variable, Categorical],...] (Дополнительный) | Автоматически создает в модели независимые переменные обучения, значения которых извлекаются из растров. Для каждого объекта в in_features значение ячейки растра извлекается в именно в этом местоположении. При извлечении значения растра используется билинейный пересчет растра, если только он не определен как категориальный, в этом случае используется метод ближайшего соседа. Укажите растр как true для любых растров, представляющих классы или категории, например, наличие или отсутствие почвенно-растительного покрова, и false, если растр является непрерывным. | Value Table |
features_to_predict (Дополнительный) | Класс объектов, представляющих местоположения, где будет выполняться прогнозирование. Этот класс объектов также должен содержать любые независимые переменные, представленные в виде полей, которые соответствуют используемым в обучающих данных, если таковые имеются. | Feature Layer |
output_features (Дополнительный) | Выходной класс объектов для получения результатов прогнозирования. | Feature Class |
output_raster (Дополнительный) | Выходной растр, содержащий результаты прогнозирования. Размером ячейки по умолчанию будет максимальный размер ячеек входных растров. Чтобы задать другой размер ячейки, используйте параметр среды – размер ячейки. | Raster Dataset |
explanatory_variable_matching [[Prediction, Training],...] (Дополнительный) | Список explanatory_variables, заданных в in_features, справа и соответствующие поля из features_to_predict слева, например, [["LandCover2000", "LandCover2010"], ["Income", "PerCapitaIncome"]]. | Value Table |
explanatory_distance_matching [[Prediction, Training],...] (Дополнительный) | Список distance_features, заданных для in_features справа. Соответствующие наборы объектов должны быть указаны для features_to_predict слева. Можно предоставить explanatory_distance_features, наиболее подходящие для features_to_predict, если те, что используются для обучения, находятся в другой изучаемой области или периоде времени. | Value Table |
explanatory_rasters_matching [[Prediction, Training],...] (Дополнительный) | Список explanatory_rasters, заданных для in_features справа. Соответствующие растры следует задать для features_to_predict или создаваемой output_raster слева. Можно предоставить explanatory_rasters, наиболее подходящие для features_to_predict, если те, что используются для обучения, находятся в другой изучаемой области или периоде времени. | Value Table |
output_trained_features (Дополнительный) | output_trained_features будут содержать все независимые переменные, использованные для обучения (включая значения растров выборки и вычисления расстояния), а также наблюдаемые поля variable_to_predict и сопутствующие прогнозы, которые могут быть использованы для дальнейшей оценки эффективности обученной модели. | Feature Class |
output_importance_table (Дополнительный) | Если задана, таблица будет содержать информацию, описывающую значимость каждой независимой переменной (поля, объекты расстояния и растры), использованной при создании модели. | Table |
use_raster_values (Дополнительный) | Определяет то, как полигоны будут рассматриваться при обучении модели, если in_features являются полигонами с категориальной variable_predict и заданы только explanatory_rasters.
| Boolean |
number_of_trees (Дополнительный) | Число деревьев для создания модели леса. Увеличение числа деревьев приведет к более точному прогнозированию модели, но модель будет дольше вычисляться. По умолчанию число деревьев равно 100. | Long |
minimum_leaf_size (Дополнительный) | Минимальное число наблюдений, необходимых для сохранения листа (т.е. конечного объекта на дереве, без дальнейшего разбиения). Минимум по умолчанию для регрессии составляет 5, а для классификации – 1. Для очень больших данных увеличение этого числа сократит время работы инструмента. | Long |
maximum_depth (Дополнительный) | Максимальное число разбиений, которые будут сделаны вниз по дереву . При большей максимальной глубине будет создано больше разбиений, что может увеличить вероятность чрезмерной подгонки модели. Значение по умолчанию управляется данными и зависит от числа созданных деревьев и количества включенных переменных. | Long |
sample_size (Дополнительный) | Задает процент in_features, используемых для каждого дерева решений. По умолчанию это 100 процентов от данных. Выборка для каждого дерева берется произвольно из двух третей указанных данных. Каждое дерево решений в лесу создается с с использованием случайной выборки или поднабора (примерно две трети) доступных обучающих данных. Понижение процента входных данных для каждого дерева решений увеличит скорость инструмента при работе с очень большими наборами данных. | Long |
random_variables (Дополнительный) | Задает число независимых переменных, используемых для создания каждого дерева решений. Каждое из деревьев решений в лесу создается с использованием случайного поднабора заданных независимых переменных. Увеличение числа переменных, используемых для создания каждого дерева решений, увеличит вероятность чрезмерной подгонки модели, особенно, если имеется одна или две доминирующие переменные. Обычно используется квадратный корень от общего числа независимых переменных (сочетание полей, расстояний и растров), если variable_predict является числовой, или общее число независимых переменных (сочетание полей, расстояний и растров) делится на 3, если variable_predict является категориальной. | Long |
percentage_for_training (Дополнительный) | Задает процент (от 10 до 50) от in_features, чтобы сохранить их как тестовый набор данных для проверки. Обучение модели будет происходить без этого произвольного поднабора данных, и значения наблюдений для этих объектов будут сравниваться с прогнозируемым значением. Значение по умолчанию – 10 процентов. | Double |
output_classification_table (Дополнительный) | Если указано, создает матрицу несоответствий для классификации, суммирующую информацию по производительности созданной модели. Эту таблицу можно использовать для вычисления другой диагностики, помимо измерений точности и чувствительности, вычисляемых инструментом в выходных сообщениях. | Table |
output_validation_table (Дополнительный) | Если указанное Число запусков для проверки больше 2, таблица создает диаграмму распределения R2 для каждой модели. Это распределение можно использовать для оценки стабильности модели. | Table |
compensate_sparse_categories (Дополнительный) | Если часть категорий в вашем наборе данных встречается не так часто, как остальные, отметьте этот параметр, чтобы быть уверенным, что все категории представлены в каждом дереве.
| Boolean |
number_validation_runs (Дополнительный) | Инструмент выполняет несколько итераций, в соответствии с установками. Распределение R2 для каждого запуска можно отобразить с использованием параметра Выходная таблица проверок. Если параметр задан и вычисляются прогнозы, только та модель, в которой значение R2 максимально, будет использована для прогнозирования. | Long |
calculate_uncertainty (Дополнительный) | Определяет, вычислять ли неопределенность прогнозирования при обучении, прогнозировании в объекты или прогнозировании в растр.
| Boolean |
Производные выходные данные
Name | Объяснение | Тип данных |
output_uncertainty_raster_layers | Если отмечен параметр calculate_uncertainty, инструмент вычислит 90% интервал прогнозирования вокруг каждого прогнозируемого значения variable_to_predict. | Растровый слой |
Пример кода
Скрипт Python, демонстрирующий выполнение функции Forest.
import arcpy
arcpy.env.workspace = r"c:\data"
# Forest-based model using only the training method and all data
# comes from a single polygon feature class. The tool excludes 10% of the
# input features from training and uses these values to validate the model.
prediction_type = "TRAIN"
in_features = r"Boston_Vandalism.shp"
variable_predict = "VandCnt"
explanatory_variables = [["Educat", "false"], ["MedAge", "false"],
["HHInc", "false"], ["Pop", "false"]]
output_trained_features = "TrainingFeatures.shp"
number_of_trees = 100
sample_size = 100
percentage_for_training = 10
arcpy.stats.Forest(prediction_type, in_features, variable_predict, None,
explanatory_variables, None, None, None, None, None, None, None, None,
output_trained_features, None, True, number_of_trees, None, None, sample_size,
None, percentage_for_training)
Следующий скрипт Python демонстрирует, как использовать инструмент Forest для прогнозирования в объекты.
# Import system modules
import arcpy
# Set property to overwrite existing outputs
arcpy.env.overwriteOutput = True
# Set the work space to a gdb
arcpy.env.workspace = r"C:\Data\BostonCrimeDB.gdb"
# Forest-based model taking advantage of both distance features and
# explanatory rasters. The training and prediction data has been manually
# split so the percentage to exclude parameter was set to 0. A variable importance
# table is created to help assess results and advanced options have been used
# to fine tune the model.
prediction_type = "PREDICT_FEATURES"
in_features = r"Boston_Vandalism_Training"
variable_predict = "Vandalism_Count"
treat_variable_as_categorical = None
explanatory_variables = [["EduClass", "true"], ["MedianAge", "false"],
["HouseholdIncome", "false"], ["TotalPopulation", "false"]]
distance_features = r"Boston_Highways"
explanatory_rasters = r"LandUse true"
features_to_predict = r"Boston_Vandalism_Prediction"
output_features = r"Prediction_Output"
output_raster = None
explanatory_variable_matching = [["EduClass", "EduClass"], ["MedianAge", "MedianAge"],
["HouseholdIncome", "HouseholdIncome"], ["TotalPopulation", "TotalPopulation"]]
explanatory_distance_matching = [["Boston_Highways", "Boston_Highways"]]
explanatory_rasters_matching = [["LandUse", "LandUse"]]
output_trained_features = r"Training_Output"
output_importance_table = r"Variable_Importance"
use_raster_values = True
number_of_trees = 100
minimum_leaf_size = 2
maximum_level = 5
sample_size = 100
random_sample = 3
percentage_for_training = 0
arcpy.stats.Forest(prediction_type, in_features, variable_predict,
treat_variable_as_categorical, explanatory_variables, distance_features,
explanatory_rasters, features_to_predict, output_features, output_raster,
explanatory_variable_matching, explanatory_distance_matching,
explanatory_rasters_matching, output_trained_features, output_importance_table,
use_raster_values, number_of_trees, minimum_leaf_size, maximum_level,
sample_size, random_sample, percentage_for_training)
Следующий скрипт Python демонстрирует, как использовать инструмент Forest для создания поверхности прогнозирования.
# Import system modules import arcpy
# Set property to overwrite existing outputs arcpy.env.overwriteOutput = True
# Set the work space to a gdb arcpy.env.workspace = r"C:\Data\Landsat.gdb"
# Using a forest-based model to classify a landsat image. The TrainingPolygons feature
# class was created manually and is used to train the model to
# classify the remainder of the landsat image.
prediction_type = "PREDICT_RASTER"
in_features = r"TrainingPolygons"
variable_predict = "LandClassName"
treat_variable_as_categorical = "CATEGORICAL" explanatory_variables = None distance_features = None explanatory_rasters = [["Band1", "false"], ["Band2", "false"], ["Band3", "false"]] features_to_predict = None output_features = None output_raster = r"PredictionSurface"
explanatory_variable_matching = None explanatory_distance_matching = None explanatory_rasters_matching = [["Band1", "Band1"], ["Band2", "Band2"], ["Band3", "Band3"]] output_trained_features = None output_importance_table = None use_raster_values = True number_of_trees = 100 minimum_leaf_size = None maximum_level = None sample_size = 100 random_sample = None percentage_for_training = 10
arcpy.stats.Forest(prediction_type, in_features, variable_predict, treat_variable_as_categorical, explanatory_variables, distance_features, explanatory_rasters, features_to_predict, output_features, output_raster, explanatory_variable_matching, explanatory_distance_matching, explanatory_rasters_matching, output_trained_features, output_importance_table,
use_raster_values, number_of_trees, minimum_leaf_size, maximum_level, sample_size, random_sample, percentage_for_training)
Environments
- Генератор случайных чисел
В качестве генератора случайных чисел всегда используется Mersenne Twister.
- Коэффициент параллельной обработки
Параллельные процессы используются только если выполняются прогнозы.
Информация о лицензиях
- Basic: Ограничено
- Standard: Ограничено
- Advanced: Ограничено