Автоматический выбор регрессионной модели с байесовской оптимизацией

В этом примере показано, как использовать fitrauto функция, чтобы автоматически попробовать выбор типов регрессионной модели с различными значениями гиперзначений параметров, учитывая обучающие данные предиктора и отклика. Функция использует байесовскую оптимизацию, чтобы выбрать модели и их значения гиперзначений параметров, и вычисляет следующее для каждой модели: log(1+valLoss), где valLoss является средней квадратичной невязкой перекрестной валидации (MSE). После завершения оптимизации fitrauto возвращает модель, обученную на целом наборе данных, которая, как ожидается, лучше всего спрогнозирует отклики для новых данных. Проверьте производительность модели по тестовым данным.

Подготовка данных

Загрузите набор выборочных данных NYCHousing2015, которая включает 10 переменных с информацией о продажах недвижимости в Нью-Йорке в 2015 году. Этот пример использует некоторые из этих переменных для анализа продажных цен.

load NYCHousing2015

Вместо загрузки набора выборочных данных NYCHousing2015, можно скачать данные с веб-сайта NYC Open Data и импортировать данные следующим образом.

folder = 'Annualized_Rolling_Sales_Update';
ds = spreadsheetDatastore(folder,"TextType","string","NumHeaderLines",4);
ds.Files = ds.Files(contains(ds.Files,"2015"));
ds.SelectedVariableNames = ["BOROUGH","NEIGHBORHOOD","BUILDINGCLASSCATEGORY","RESIDENTIALUNITS", ...
    "COMMERCIALUNITS","LANDSQUAREFEET","GROSSSQUAREFEET","YEARBUILT","SALEPRICE","SALEDATE"];
NYCHousing2015 = readall(ds);

Предварительно обработайте набор данных, чтобы выбрать интересующие переменные предиктора. Некоторые из шагов предварительной обработки соответствуют шагам в примере Train Linear Regression Model.

Во-первых, измените имена переменных на строчные для читаемости.

NYCHousing2015.Properties.VariableNames = lower(NYCHousing2015.Properties.VariableNames);

Затем удалите выборки с определенными проблемными значениями. Для примера сохраните только те выборки, где, по крайней мере, одно из измерений площади grosssquarefeet или landsquarefeet является ненулевым. Предположим, что saleprice $0 указывает на передачу права собственности без денежного фактора и удаление выборок с этим saleprice значение. Предположим, что yearbuilt Значение 1500 или менее является опечаткой и удаляет соответствующие выборки.

NYCHousing2015(NYCHousing2015.grosssquarefeet == 0 & NYCHousing2015.landsquarefeet == 0,:) = [];
NYCHousing2015(NYCHousing2015.saleprice == 0,:) = [];
NYCHousing2015(NYCHousing2015.yearbuilt <= 1500,:) = [];

Преобразуйте saledate переменная, заданная как datetime массив, в два числовых столбца MM (месяц) и DD (день), и удалить saledate переменная. Игнорируйте значения года, потому что все выборки относятся к 2015 году.

[~,NYCHousing2015.MM,NYCHousing2015.DD] = ymd(NYCHousing2015.saledate);
NYCHousing2015.saledate = [];

Числовые значения в borough переменная указывает имена боро. Измените переменную на категориальную с помощью имен.

NYCHousing2015.borough = categorical(NYCHousing2015.borough,1:5, ...
    ["Manhattan","Bronx","Brooklyn","Queens","Staten Island"]);

The neighborhood переменная имеет 254 категории. Удалите эту переменную для простоты.

NYCHousing2015.neighborhood = [];

Преобразуйте buildingclasscategory переменная к категориальной переменной и исследовать переменную при помощи wordcloud функция.

NYCHousing2015.buildingclasscategory = categorical(NYCHousing2015.buildingclasscategory);
wordcloud(NYCHousing2015.buildingclasscategory);

Предположим, что вас интересуют только одно-, двух- и трехсемейные жилища. Найдите выборочные индексы для этих домов и удалите другие выборки. Затем смените buildingclasscategory переменная к порядковой категориальной переменной с целочисленными именами категорий.

idx = ismember(string(NYCHousing2015.buildingclasscategory), ...
    ["01  ONE FAMILY DWELLINGS","02  TWO FAMILY DWELLINGS","03  THREE FAMILY DWELLINGS"]);
NYCHousing2015 = NYCHousing2015(idx,:);
NYCHousing2015.buildingclasscategory = categorical(NYCHousing2015.buildingclasscategory, ...
    ["01  ONE FAMILY DWELLINGS","02  TWO FAMILY DWELLINGS","03  THREE FAMILY DWELLINGS"], ...
    ["1","2","3"],'Ordinal',true);

The buildingclasscategory переменная теперь указывает количество семейств в одном жилище.

Исследуйте переменную отклика saleprice при помощи summary функция.

s = summary(NYCHousing2015);
s.saleprice
ans = struct with fields:
           Size: [24972 1]
           Type: 'double'
    Description: ''
          Units: ''
     Continuity: []
            Min: 1
         Median: 515000
            Max: 37000000
     NumMissing: 0

Создайте гистограмму saleprice переменная.

histogram(NYCHousing2015.saleprice)

Потому что распределение saleprice значения имеют перекос вправо, все значения больше 0, логарифмическое преобразование saleprice переменная.

NYCHousing2015.saleprice = log(NYCHousing2015.saleprice);

Точно так же преобразуйте grosssquarefeet и landsquarefeet переменные. Добавьте значение 1, прежде чем принимать логарифм каждой переменной, в случае, если переменная равна 0.

NYCHousing2015.grosssquarefeet = log(1 + NYCHousing2015.grosssquarefeet);
NYCHousing2015.landsquarefeet = log(1 + NYCHousing2015.landsquarefeet);

Данные разбиения и удаление выбросов

Разделите набор данных на набор обучающих данных и тестовый набор при помощи cvpartition. Используйте приблизительно 80% наблюдений для процесса выбора модели и настройки гиперпараметра, а другие 20% для проверки эффективности конечной модели, возвращенной fitrauto.

rng('default') % For reproducibility of the partition
c = cvpartition(length(NYCHousing2015.saleprice),'Holdout',0.2);
trainData = NYCHousing2015(training(c),:);
testData = NYCHousing2015(test(c),:);

Идентифицируйте и удалите выбросы saleprice, grosssquarefeet, и landsquarefeet из обучающих данных при помощи isoutlier функция.

[priceIdx,priceL,priceU] = isoutlier(trainData.saleprice);
trainData(priceIdx,:) = [];

[grossIdx,grossL,grossU] = isoutlier(trainData.grosssquarefeet);
trainData(grossIdx,:) = [];

[landIdx,landL,landU] = isoutlier(trainData.landsquarefeet);
trainData(landIdx,:) = [];

Удалите выбросы saleprice, grosssquarefeet, и landsquarefeet из тестовых данных с использованием тех же нижнего и верхнего порогов, вычисленных на обучающих данных.

testData(testData.saleprice < priceL | testData.saleprice > priceU,:) = [];
testData(testData.grosssquarefeet < grossL | testData.grosssquarefeet > grossU,:) = [];
testData(testData.landsquarefeet < landL | testData.landsquarefeet > landU,:) = [];

Использование автоматического выбора модели

Найдите соответствующую регрессионую модель для данных в trainData при помощи fitrauto. Попробуйте учеников дерева и ансамбля и запустите байесовскую оптимизацию параллельно, что требует Parallel Computing Toolbox™. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно приводит к воспроизводимым результатам. Чтобы уменьшить вычислительное время, используйте 3-кратную перекрестную валидацию, а не 5-кратную перекрестную валидацию в качестве части процесса оптимизации.

Из-за сложности оптимизации этот процесс может занять некоторое время, особенно для больших наборов данных. По умолчанию fitrauto предоставляет график оптимизации и итерационное отображение результатов оптимизации. Для получения дополнительной информации о том, как интерпретировать эти результаты, смотрите Подробное отображение.

options = struct('UseParallel',true,'Kfold',3);
[mdl,results] = fitrauto(trainData,'saleprice', ...
    'Learners',{'tree','ensemble'},'HyperparameterOptimizationOptions',options);
Copying objective function to workers...
Done copying objective function to workers.
Learner types to explore: ensemble, tree
Total iterations (MaxObjectiveEvaluations): 60
Total time (MaxTime): Inf
|===================================================================================================================================================|
| Iter | Active  | Eval   | log(1 + valLoss) | Time for training | Observed min     | Estimated min    | Learner      | Hyperparameter:       Value |
|      | workers | result |                  | & validation (sec)| log(1 + valLoss) | log(1 + valLoss) |              |                             |
|===================================================================================================================================================|
|    1 |       5 | Accept |          0.25922 |          0.067333 |          0.18985 |          0.19575 |         tree | MinLeafSize:           8676 |
|    2 |       5 | Best   |          0.18985 |           0.14568 |          0.18985 |          0.19575 |         tree | MinLeafSize:            245 |
|    3 |       2 | Accept |          0.25126 |           0.86908 |           0.1849 |          0.18985 |         tree | MinLeafSize:              4 |
|    4 |       2 | Best   |           0.1849 |            1.0049 |           0.1849 |          0.18985 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       18 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:            110 |
|    5 |       2 | Accept |          0.25922 |            0.5705 |           0.1849 |          0.18985 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       24 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           8426 |
|    6 |       2 | Accept |          0.25126 |           0.87986 |           0.1849 |          0.18985 |         tree | MinLeafSize:              4 |
|    7 |       6 | Accept |          0.21227 |          0.069611 |           0.1849 |          0.18985 |         tree | MinLeafSize:           1722 |
|    8 |       4 | Accept |          0.18763 |           0.15728 |           0.1849 |          0.18538 |         tree | MinLeafSize:             60 |
|    9 |       4 | Accept |           2.9803 |           0.47009 |           0.1849 |          0.18538 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       20 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.054589 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           8499 |
|   10 |       4 | Accept |           0.1914 |           0.23832 |           0.1849 |          0.18538 |         tree | MinLeafSize:             30 |
|===================================================================================================================================================|
| Iter | Active  | Eval   | log(1 + valLoss) | Time for training | Observed min     | Estimated min    | Learner      | Hyperparameter:       Value |
|      | workers | result |                  | & validation (sec)| log(1 + valLoss) | log(1 + valLoss) |              |                             |
|===================================================================================================================================================|
|   11 |       4 | Accept |          0.23248 |          0.057309 |           0.1849 |          0.18494 |         tree | MinLeafSize:           3991 |
|   12 |       4 | Accept |          0.22354 |            2.9816 |           0.1849 |          0.18493 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      121 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           3071 |
|   13 |       4 | Accept |           4.7611 |            3.9969 |           0.1849 |          0.18494 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       79 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:        0.0025753 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             67 |
|   14 |       3 | Best   |          0.17937 |            1.6426 |          0.17937 |          0.17945 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       24 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             16 |
|   15 |       3 | Accept |          0.25923 |           0.31222 |          0.17937 |          0.17945 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       14 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           7287 |
|   16 |       5 | Best   |          0.17799 |            4.7324 |          0.17799 |          0.17945 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       69 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.19523 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:            209 |
|   17 |       5 | Accept |          0.19076 |           0.10145 |          0.17799 |          0.17945 |         tree | MinLeafSize:            274 |
|   18 |       4 | Accept |          0.22517 |          0.079648 |          0.17799 |          0.17945 |         tree | MinLeafSize:           2306 |
|   19 |       4 | Accept |          0.21507 |           0.32105 |          0.17799 |          0.17945 |         tree | MinLeafSize:             10 |
|   20 |       4 | Accept |          0.18797 |           0.11404 |          0.17799 |          0.17945 |         tree | MinLeafSize:            155 |
|===================================================================================================================================================|
| Iter | Active  | Eval   | log(1 + valLoss) | Time for training | Observed min     | Estimated min    | Learner      | Hyperparameter:       Value |
|      | workers | result |                  | & validation (sec)| log(1 + valLoss) | log(1 + valLoss) |              |                             |
|===================================================================================================================================================|
|   21 |       3 | Accept |          0.17862 |            5.6403 |          0.17799 |          0.17945 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       54 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              3 |
|   22 |       3 | Accept |          0.19413 |           0.16212 |          0.17799 |          0.17945 |         tree | MinLeafSize:             25 |
|   23 |       6 | Accept |          0.24396 |           0.74378 |          0.17799 |          0.17945 |         tree | MinLeafSize:              5 |
|   24 |       5 | Accept |          0.18986 |           0.16919 |          0.17799 |          0.17945 |         tree | MinLeafSize:             39 |
|   25 |       5 | Accept |          0.19608 |           0.19077 |          0.17799 |          0.17945 |         tree | MinLeafSize:             23 |
|   26 |       4 | Accept |          0.17828 |            11.436 |          0.17799 |          0.17803 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      108 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              3 |
|   27 |       4 | Accept |           0.1809 |            3.7272 |          0.17799 |          0.17803 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       69 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             55 |
|   28 |       4 | Accept |          0.18171 |            1.9361 |          0.17799 |          0.17803 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       19 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              4 |
|   29 |       4 | Accept |          0.17959 |            8.6553 |          0.17799 |          0.17803 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       75 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|   30 |       3 | Accept |          0.20204 |            15.893 |          0.17762 |          0.17676 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      496 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:            910 |
|===================================================================================================================================================|
| Iter | Active  | Eval   | log(1 + valLoss) | Time for training | Observed min     | Estimated min    | Learner      | Hyperparameter:       Value |
|      | workers | result |                  | & validation (sec)| log(1 + valLoss) | log(1 + valLoss) |              |                             |
|===================================================================================================================================================|
|   31 |       3 | Best   |          0.17762 |            6.6202 |          0.17762 |          0.17676 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       95 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             13 |
|   32 |       5 | Accept |          0.19444 |             5.563 |          0.17762 |          0.17765 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      103 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:           0.9936 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             98 |
|   33 |       5 | Accept |          0.18056 |           0.75592 |          0.17762 |          0.17765 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       11 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.49541 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:            222 |
|   34 |       4 | Accept |          0.18768 |           0.78702 |          0.17762 |          0.17765 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       13 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.98545 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|   35 |       4 | Accept |          0.26635 |            1.1019 |          0.17762 |          0.17765 |         tree | MinLeafSize:              2 |
|   36 |       4 | Accept |            0.206 |            4.2801 |          0.17762 |          0.17783 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      142 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           1241 |
|   37 |       3 | Accept |          0.21503 |            11.309 |          0.17762 |          0.17764 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      230 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.017904 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|   38 |       3 | Accept |           0.3789 |           0.55978 |          0.17762 |          0.17764 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       10 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.27761 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              5 |
|   39 |       6 | Accept |          0.23053 |           0.51383 |          0.17762 |          0.17764 |         tree | MinLeafSize:              7 |
|   40 |       6 | Accept |          0.17996 |            2.7932 |          0.17762 |          0.17764 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       49 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.11514 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|===================================================================================================================================================|
| Iter | Active  | Eval   | log(1 + valLoss) | Time for training | Observed min     | Estimated min    | Learner      | Hyperparameter:       Value |
|      | workers | result |                  | & validation (sec)| log(1 + valLoss) | log(1 + valLoss) |              |                             |
|===================================================================================================================================================|
|   41 |       6 | Accept |          0.23707 |            12.289 |          0.17762 |          0.17767 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      480 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           3779 |
|   42 |       5 | Accept |          0.18527 |            26.878 |          0.17762 |          0.17766 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      491 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.65315 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           1044 |
|   43 |       5 | Accept |          0.18276 |             4.678 |          0.17762 |          0.17766 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       66 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.81673 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:            635 |
|   44 |       5 | Accept |          0.25057 |            22.826 |          0.17762 |          0.17765 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      412 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.92469 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|   45 |       5 | Accept |             4.61 |           0.60326 |          0.17762 |          0.17779 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       10 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.027624 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|   46 |       4 | Accept |           0.2001 |             25.14 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      465 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:        0.0094768 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             23 |
|   47 |       4 | Accept |          0.20319 |            3.6011 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       70 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.98445 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              4 |
|   48 |       4 | Accept |          0.18106 |            26.642 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      495 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.091101 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|   49 |       4 | Accept |          0.25922 |            7.6886 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      493 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.024602 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           8658 |
|   50 |       4 | Accept |          0.18162 |            4.8133 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       94 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.30945 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|===================================================================================================================================================|
| Iter | Active  | Eval   | log(1 + valLoss) | Time for training | Observed min     | Estimated min    | Learner      | Hyperparameter:       Value |
|      | workers | result |                  | & validation (sec)| log(1 + valLoss) | log(1 + valLoss) |              |                             |
|===================================================================================================================================================|
|   51 |       5 | Accept |          0.17788 |              5.18 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      102 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.11411 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              4 |
|   52 |       5 | Accept |           0.1858 |            36.145 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      499 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.34801 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:            181 |
|   53 |       5 | Accept |          0.17946 |            1.3924 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       24 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.47121 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             29 |
|   54 |       6 | Accept |          0.17837 |            8.0619 |          0.17762 |          0.17761 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      142 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.076159 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              1 |
|   55 |       6 | Accept |          0.17766 |            25.949 |          0.17762 |          0.17761 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      495 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.024193 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              7 |
|   56 |       6 | Accept |           1.2951 |            25.877 |          0.17762 |          0.17762 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      475 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:        0.0044769 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              5 |
|   57 |       6 | Best   |          0.17753 |            28.063 |          0.17753 |          0.17751 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      486 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:         0.038349 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             39 |
|   58 |       6 | Accept |          0.17978 |            2.0228 |          0.17753 |          0.17751 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       34 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:           0.3482 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:              3 |
|   59 |       6 | Accept |           2.6442 |           0.64641 |          0.17753 |          0.17751 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       10 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:          0.12206 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:             65 |
|   60 |       5 | Accept |          0.97054 |             16.16 |          0.17753 |          0.17751 |     ensemble | Method:             LSBoost |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:      498 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:        0.0048163 |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:           3269 |
|===================================================================================================================================================|
| Iter | Active  | Eval   | log(1 + valLoss) | Time for training | Observed min     | Estimated min    | Learner      | Hyperparameter:       Value |
|      | workers | result |                  | & validation (sec)| log(1 + valLoss) | log(1 + valLoss) |              |                             |
|===================================================================================================================================================|
|   61 |       5 | Accept |           0.2084 |            0.6174 |          0.17753 |          0.17751 |     ensemble | Method:                 Bag |
|      |         |        |                  |                   |                  |                  |              | NumLearningCycles:       15 |
|      |         |        |                  |                   |                  |                  |              | LearnRate:              NaN |
|      |         |        |                  |                   |                  |                  |              | MinLeafSize:            997 |

__________________________________________________________
Optimization completed.
Total iterations: 61
Total elapsed time: 150.2458 seconds
Total time for training and validation: 386.9239 seconds

Best observed learner is an ensemble model with:
	Method:             LSBoost
	NumLearningCycles:      486
	LearnRate:         0.038349
	MinLeafSize:             39
Observed log(1 + valLoss): 0.17753
Time for training and validation: 28.0634 seconds

Best estimated learner (returned model) is an ensemble model with:
	Method:             LSBoost
	NumLearningCycles:      486
	LearnRate:         0.038349
	MinLeafSize:             39
Estimated log(1 + valLoss): 0.17751
Estimated time for training and validation: 28.7325 seconds

Documentation for fitrauto display

Конечная модель, возвращенная fitrauto соответствует лучшему оцененному ученику. Перед возвращением модели функция переобучает ее, используя все обучающие данные (trainData), перечисленные Learner (или модель) тип и отображенные значения гиперзначений параметров.

Оценка эффективности тестового набора

Оцените эффективность возвращенной модели mdl на тестовом аппарате testData. Вычислите среднюю квадратичную невязку тестового набора (MSE) и примите журнал преобразование MSE, чтобы соответствовать значениям в подробном отображении fitrauto. Меньшие значения MSE (и логарифмического преобразования MSE) указывают на лучшую эффективность.

testMSE = loss(mdl,testData,'saleprice');
testError = log(1 + testMSE)
testError = 0.1791

Сравните предсказанные значения отклика набора тестов с истинными значениями отклика. Постройте график прогнозируемой цены продажи вдоль вертикальной оси и истинной цены продажи вдоль горизонтальной оси. Точки на опорной линии указывают на правильные предсказания. Хорошая модель производит предсказания, которые разбросаны рядом с линией.

testPredictions = predict(mdl,testData);

plot(testData.saleprice,testPredictions,'.')
hold on
plot(testData.saleprice,testData.saleprice) % Reference line
hold off
xlabel(["True Sale Price","(log transformed)"])
ylabel(["Predicted Sale Price","(log transformed)"])

Используйте коробчатые графики, чтобы сравнить распределение прогнозируемых и истинных цен продажи по боро. Создайте прямоугольные графики при помощи boxchart функция. На каждом прямоугольном графике отображаются медиана, нижний и верхний квартили, любые выбросы (вычисленные с помощью межквартильной области значений) и минимальное и максимальное значения, которые не являются выбросами. В частности, линия внутри каждой коробки является медианой выборки, а круговые маркеры указывают на выбросы.

Для каждого района сравните график красного ящика (показывающий распределение прогнозируемых цен) с графиком синего ящика (показывающим распределение истинных цен). Аналогичные распределения прогнозируемых и истинных цен на продажу указывают на хорошие предсказания.

boxchart(testData.borough,testData.saleprice)
hold on
boxchart(testData.borough,testPredictions)
hold off
legend(["True Sale Prices","Predicted Sale Prices"])
xlabel("Borough")
ylabel(["Sale Price","(log transformed)"])

Для всех районов прогнозируемая медианная цена продажи тесно соответствует медианной истинной цене продажи. Прогнозируемые цены продажи, по-видимому, варьируются меньше, чем истинные цены продажи.

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

boxchart(testData.buildingclasscategory,testData.saleprice)
hold on
boxchart(testData.buildingclasscategory,testPredictions)
hold off
legend(["True Sale Prices","Predicted Sale Prices"])
xlabel("Number of Families in Dwelling")
ylabel(["Sale Price","(log transformed)"])

Для всех домов прогнозируемая медианная цена продажи тесно совпадает с медианной истинной ценой продажи. Прогнозируемые цены продажи, по-видимому, варьируются меньше, чем истинные цены продажи.

Постройте гистограмму невязок тестового набора и проверьте, что они обычно распределены. (Напомним, что продажные цены преобразованы в логарифмические.)

testResiduals = testData.saleprice - testPredictions;
histogram(testResiduals)
title('Test Set Residuals')

Хотя гистограмма слегка искривлена слева, она приблизительно симметрична около 0.

См. также

| | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте