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

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

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

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

load NYCHousing2015

Вместо того, чтобы загрузить выборочные данные устанавливает NYCHousing2015, можно загрузить данные из Нью-Йорк Сити Открытый веб-сайт Данных и импортировать данные можно следующим образом.

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);

Предварительно обработайте набор данных, чтобы выбрать переменные предикторы интереса. Некоторые шаги предварительной обработки соответствуют, те в примере Обучают Модель Линейной регрессии.

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

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"]);

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

NYCHousing2015.neighborhood = [];

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

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

Примите, что вы интересуетесь только одним - 2D, и жилье с тремя семействами. Найдите демонстрационные индексы для этого жилья и удалите другие выборки. Затем измените 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);

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.

Смотрите также

| | |

Похожие темы