exponenta event banner

Статистика и машинное обучение с использованием больших данных с использованием массивов Tall

В этом примере показано, как выполнять статистический анализ и машинное обучение для данных, не находящихся в памяти, с помощью MATLAB ® и Statistics and Machine Learning Toolbox™.

Массивы и таблицы Tall предназначены для работы с данными, лишенными памяти. Этот тип данных состоит из очень большого количества строк (наблюдений) по сравнению с меньшим количеством столбцов (переменных). Вместо написания специализированного кода, учитывающего огромный размер данных, например, с помощью MapReduce, можно использовать массивы tall для работы с большими наборами данных способом, аналогичным наличию массивов MATLAB в памяти. Принципиальное отличие заключается в том, что массивы tall обычно остаются невысокими до тех пор, пока не будет запрошено выполнение вычислений.

При выполнении вычислений в массивах TALL MATLAB ® использует либо параллельный пул (по умолчанию при наличии Toolbox™ Parallel Computing), либо локальный сеанс MATLAB. Для выполнения примера с использованием локального сеанса MATLAB при наличии панели инструментов Parallel Computing Toolbox измените глобальную среду выполнения с помощью mapreducer функция.

mapreducer(0)

Этот пример работает с подмножеством данных на одном компьютере для разработки модели линейной регрессии, а затем масштабируется для анализа всего набора данных. Этот анализ можно масштабировать еще больше, чтобы:

  • Работа с данными, которые невозможно считать в память

  • Работа с данными, распределенными по кластерам, с помощью MATLAB Parallel Server™

  • Интеграция с такими системами больших данных, как Hadoop ® и Spark ®

Введение в машинное обучение с помощью массивов Tall

Существует несколько неподконтрольных и контролируемых алгоритмов обучения в Statistics and Machine Learning Toolbox для работы с массивами tall для выполнения интеллектуального анализа данных и прогностического моделирования с данными, лишенными памяти. Эти алгоритмы подходят для данных вне памяти и могут включать небольшие отклонения от алгоритмов в памяти. Возможности включают в себя:

  • k - означает кластеризацию

  • Линейная регрессия

  • Обобщенная линейная регрессия

  • Логистическая регрессия

  • Дискриминантный анализ

Рабочий процесс машинного обучения для данных из памяти в MATLAB аналогичен данным из памяти:

  1. Предварительно обработать

  2. Исследовать

  3. Разработка модели

  4. Проверка модели

  5. Масштабирование до больших объемов данных

Этот пример следует аналогичной структуре при разработке прогнозной модели задержек авиакомпаний. Данные включают большой файл информации о рейсах авиакомпании с 1987 по 2008 год. Целью примера является прогнозирование задержки отправления на основе ряда переменных.

Подробные сведения об основных аспектах массивов tall приведены в примере Анализ больших данных в MATLAB с использованием массивов Tall. Этот пример расширяет анализ, включив в него машинное обучение с помощью массивов tall.

Создание таблицы данных авиакомпании

Хранилище данных - это хранилище для наборов данных, слишком больших для размещения в памяти. В качестве первого шага для создания массива высокого уровня из внешнего источника данных можно создать хранилище данных из нескольких различных форматов файлов.

Создание хранилища данных для файла образца airlinesmall.csv. Выберите интересующие переменные, обработайте 'NA' значения как отсутствующие данные и создайте таблицу предварительного просмотра данных.

ds = datastore(fullfile(matlabroot,'toolbox','matlab','demos','airlinesmall.csv'));
ds.SelectedVariableNames = {'Year','Month','DayofMonth','DayOfWeek',...
    'DepTime','ArrDelay','DepDelay','Distance'};
ds.TreatAsMissing = 'NA';
pre = preview(ds)
pre=8×8 table
    Year    Month    DayofMonth    DayOfWeek    DepTime    ArrDelay    DepDelay    Distance
    ____    _____    __________    _________    _______    ________    ________    ________

    1987     10          21            3          642          8          12         308   
    1987     10          26            1         1021          8           1         296   
    1987     10          23            5         2055         21          20         480   
    1987     10          23            5         1332         13          12         296   
    1987     10          22            4          629          4          -1         373   
    1987     10          28            3         1446         59          63         308   
    1987     10           8            4          928          3          -2         447   
    1987     10          10            6          859         11          -1         954   

Создайте таблицу высокого уровня, поддерживаемую хранилищем данных, чтобы упростить работу с данными. Базовый тип данных массива высокого уровня зависит от типа хранилища данных. В этом случае хранилище данных представляет собой табличный текст и возвращает высокую таблицу. Дисплей содержит предварительный просмотр данных с указанием на то, что размер неизвестен.

tt = tall(ds)
tt =

  Mx8 tall table

    Year    Month    DayofMonth    DayOfWeek    DepTime    ArrDelay    DepDelay    Distance
    ____    _____    __________    _________    _______    ________    ________    ________

    1987     10          21            3          642          8          12         308   
    1987     10          26            1         1021          8           1         296   
    1987     10          23            5         2055         21          20         480   
    1987     10          23            5         1332         13          12         296   
    1987     10          22            4          629          4          -1         373   
    1987     10          28            3         1446         59          63         308   
    1987     10           8            4          928          3          -2         447   
    1987     10          10            6          859         11          -1         954   
     :        :          :             :           :          :           :           :
     :        :          :             :           :          :           :           :

Данные предварительной обработки

Этот пример предназначен для более подробного изучения времени дня и дня недели. Преобразуйте день недели в категориальные данные с метками и определите час дня из числовой переменной времени отправления.

tt.DayOfWeek = categorical(tt.DayOfWeek,1:7,{'Sun','Mon','Tues',...
    'Wed','Thu','Fri','Sat'});
tt.Hr = discretize(tt.DepTime,0:100:2400,0:23)
tt =

  Mx9 tall table

    Year    Month    DayofMonth    DayOfWeek    DepTime    ArrDelay    DepDelay    Distance    Hr
    ____    _____    __________    _________    _______    ________    ________    ________    __

    1987     10          21          Tues         642          8          12         308        6
    1987     10          26          Sun         1021          8           1         296       10
    1987     10          23          Thu         2055         21          20         480       20
    1987     10          23          Thu         1332         13          12         296       13
    1987     10          22          Wed          629          4          -1         373        6
    1987     10          28          Tues        1446         59          63         308       14
    1987     10           8          Wed          928          3          -2         447        9
    1987     10          10          Fri          859         11          -1         954        8
     :        :          :             :           :          :           :           :        :
     :        :          :             :           :          :           :           :        :

Включать только годы после 2000 и игнорировать строки с отсутствующими данными. Определите интересующие данные по логическому условию.

idx = tt.Year >= 2000 & ...
    ~any(ismissing(tt),2);
tt = tt(idx,:);

Изучение данных по группам

Для массивов tall доступен ряд исследовательских функций. Например, grpstats функция вычисляет сгруппированную статистику массивов tall. Изучение данных путем определения централизованности и распространения данных с помощью сводной статистики, сгруппированной по дням недели. Также изучите корреляцию между задержкой отправления и задержкой прибытия.

g = grpstats(tt(:,{'ArrDelay','DepDelay','DayOfWeek'}),'DayOfWeek',...
    {'mean','std','skewness','kurtosis'})
g =

  Mx11 tall table

    GroupLabel    DayOfWeek    GroupCount    mean_ArrDelay    std_ArrDelay    skewness_ArrDelay    kurtosis_ArrDelay    mean_DepDelay    std_DepDelay    skewness_DepDelay    kurtosis_DepDelay
    __________    _________    __________    _____________    ____________    _________________    _________________    _____________    ____________    _________________    _________________

        ?             ?            ?               ?               ?                  ?                    ?                  ?               ?                  ?                    ?        
        ?             ?            ?               ?               ?                  ?                    ?                  ?               ?                  ?                    ?        
        ?             ?            ?               ?               ?                  ?                    ?                  ?               ?                  ?                    ?        
        :             :            :               :               :                  :                    :                  :               :                  :                    :
        :             :            :               :               :                  :                    :                  :               :                  :                    :
C = corr(tt.DepDelay,tt.ArrDelay)
C =

  MxNx... tall array

    ?    ?    ?    ...
    ?    ?    ?    ...
    ?    ?    ?    ...
    :    :    :
    :    :    :

Эти команды создают больше массивов tall. Команды не выполняются до тех пор, пока результаты не будут явно собраны в рабочую область. gather команда запускает выполнение и пытается минимизировать количество проходов, необходимых для выполнения вычислений через данные. gather требует, чтобы результирующие переменные помещались в память.

[statsByDay,C] = gather(g,C)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 2.9 sec
Evaluation completed in 4.2 sec
statsByDay=7×11 table
    GroupLabel    DayOfWeek    GroupCount    mean_ArrDelay    std_ArrDelay    skewness_ArrDelay    kurtosis_ArrDelay    mean_DepDelay    std_DepDelay    skewness_DepDelay    kurtosis_DepDelay
    __________    _________    __________    _____________    ____________    _________________    _________________    _____________    ____________    _________________    _________________

     {'Fri' }       Fri           7339          4.1512             32.1             7.082               120.53             7.0857           29.339            8.9387               168.37      
     {'Mon' }       Mon           8443          5.2487           32.453            4.5811               37.175             6.8319           28.573            5.6468               50.271      
     {'Sat' }       Sat           8045           7.132           33.108            3.6457               22.991             9.1557           29.731            4.5135               31.228      
     {'Sun' }       Sun           8570          7.7515           36.003            5.7943                80.91             9.3324           32.516            7.2146               118.25      
     {'Thu' }       Thu           8601          10.053            36.18            4.1381               37.051             10.923           34.708            1.1414               138.38      
     {'Tues'}       Tues          8381          6.4786           32.322             4.374               38.694             7.6083           28.394            5.2012               46.249      
     {'Wed' }       Wed           8489          9.3324           37.406            5.1638               57.479                 10           33.426            6.4336               85.426      

C = 0.8966

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

Изучите влияние дня недели и часа дня и получите дополнительную статистическую информацию, такую как стандартная ошибка среднего значения и 95% доверительный интервал для среднего значения. Можно передать всю таблицу высот и указать, с какими переменными выполнять вычисления.

byDayHr = grpstats(tt,{'Hr','DayOfWeek'},...
    {'mean','sem','meanci'},'DataVar','DepDelay');
byDayHr = gather(byDayHr);
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 2 sec
Evaluation completed in 2.6 sec

Из-за разбиения данных массива высокого уровня выходные данные могут быть неупорядоченными. Измените порядок данных в памяти для дальнейшего изучения.

x = unstack(byDayHr(:,{'Hr','DayOfWeek','mean_DepDelay'}),...
    'mean_DepDelay','DayOfWeek');
x = sortrows(x)
x=24×8 table
    Hr      Sun        Mon         Tues        Wed        Thu        Fri        Sat  
    __    _______    ________    ________    _______    _______    _______    _______

     0     38.519      71.914      39.656     34.667         90     25.536     65.579
     1     45.846      27.875        93.6     125.23     52.765     38.091     29.182
     2        NaN          39         102        NaN      78.25       -1.5        NaN
     3        NaN         NaN         NaN        NaN     -377.5       53.5        NaN
     4         -7     -6.2857          -7    -7.3333      -10.5         -5        NaN
     5    -2.2409     -3.7099     -4.0146    -3.9565    -3.5897    -3.5766    -4.1474
     6        0.4     -1.8909     -1.9802    -1.8304    -1.3578    0.84161    -2.2537
     7     3.4173    -0.47222    -0.18893    0.71546       0.08      1.069    -1.3221
     8     2.3759      1.4054      1.6745     2.2345     2.9668     1.6727    0.88213
     9     2.5325      1.6805      2.7656      2.683     5.6138     3.4838     2.5011
    10       6.37      5.2868      3.6822     7.5773     5.3372     6.9391     4.9979
    11     6.9946      4.9165      5.5639     5.5936     7.0435     4.8989     5.2839
    12      5.673      5.1193      5.7081     7.9178     7.5269     8.0625     7.4686
    13     8.0879      7.1017      5.0857     8.8082     8.2878     8.0675     6.2107
    14     9.5164      5.8343       7.416     9.5954     8.6667     6.0677      8.444
    15     8.1257      4.8802      7.4726     9.8674     10.235      7.167     8.6219
      ⋮

Визуализация данных в массивах Tall

В настоящее время можно визуализировать данные массива высокого уровня с помощью histogram, histogram2, binScatterPlot, и ksdensity. Все визуализации запускают выполнение аналогично вызову gather функция.

Использовать binScatterPlot для изучения взаимосвязи между Hr и DepDelay переменные.

binScatterPlot(tt.Hr,tt.DepDelay,'Gamma',0.25)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.98 sec
Evaluation completed in 1.1 sec
ylim([0 500])
xlabel('Time of Day')
ylabel('Delay (Minutes)')

Figure contains an axes and other objects of type uicontrol. The axes contains an object of type histogram2.

Как отмечено на выходном дисплее, визуализации часто проходят через данные два прохода: один для выполнения гибки, а другой для выполнения связанного вычисления и создания визуализации.

Разделение данных на наборы обучения и проверки

Для разработки модели машинного обучения полезно зарезервировать часть данных для обучения и разработки модели и другую часть данных для тестирования модели. Существует ряд способов разделения данных на наборы обучения и проверки.

Использовать datasample для получения случайной выборки данных. Затем использовать cvpartition для разделения данных на тестовые и обучающие наборы. Чтобы получить нестратифицированные секции, задайте однородную группирующую переменную путем умножения выборок данных на ноль.

Для воспроизводимости задайте начальное число генератора случайных чисел с помощью tallrng. Результаты могут варьироваться в зависимости от количества работников и среды выполнения для массивов tall. Дополнительные сведения см. в разделе Управление местом запуска кода.

tallrng('default')
data = datasample(tt,25000,'Replace',false);
groups = 0*data.DepDelay;
y = cvpartition(groups,'HoldOut',1/3);
dataTrain = data(training(y),:); 
dataTest = data(test(y),:);

Подгонка контролируемой модели обучения

Создайте модель для прогнозирования задержки отправления на основе нескольких переменных. Функция модели линейной регрессии fitlm ведет себя аналогично функции в памяти. Однако вычисления с массивами tall приводят к CompactLinearModel, что является более эффективным для больших наборов данных. Фитинг модели запускает выполнение, поскольку это итеративный процесс.

model = fitlm(dataTrain,'ResponseVar','DepDelay')
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 1.3 sec
- Pass 2 of 2: Completed in 3 sec
Evaluation completed in 5 sec
model = 
Compact linear regression model:
    DepDelay ~ [Linear formula with 9 terms in 8 predictors]

Estimated Coefficients:
                       Estimate         SE         tStat        pValue  
                      __________    __________    ________    __________

    (Intercept)           30.715        75.873     0.40482       0.68562
    Year                -0.01585      0.037853    -0.41872       0.67543
    Month                0.03009      0.028097      1.0709       0.28421
    DayofMonth        -0.0094266      0.010903    -0.86457       0.38729
    DayOfWeek_Mon       -0.36333       0.35527     -1.0227       0.30648
    DayOfWeek_Tues       -0.2858       0.35245    -0.81091       0.41743
    DayOfWeek_Wed       -0.56082       0.35309     -1.5883       0.11224
    DayOfWeek_Thu       -0.25295       0.35239    -0.71782       0.47288
    DayOfWeek_Fri        0.91768       0.36625      2.5056      0.012234
    DayOfWeek_Sat        0.45668       0.35785      1.2762       0.20191
    DepTime            -0.011551     0.0053851      -2.145      0.031964
    ArrDelay              0.8081      0.002875      281.08             0
    Distance           0.0012881    0.00016887      7.6281    2.5106e-14
    Hr                    1.4058       0.53785      2.6138     0.0089613


Number of observations: 16667, Error degrees of freedom: 16653
Root Mean Squared Error: 12.4
R-squared: 0.834,  Adjusted R-Squared: 0.833
F-statistic vs. constant model: 6.41e+03, p-value = 0

Прогнозирование и проверка модели

На дисплее отображается информация о соответствии, а также коэффициенты и соответствующая статистика коэффициентов.

model переменная содержит информацию о подогнанной модели в качестве свойств, доступ к которым можно получить с помощью точечной нотации. Либо дважды щелкните переменную в рабочей области для интерактивного просмотра свойств.

model.Rsquared
ans = struct with fields:
    Ordinary: 0.8335
    Adjusted: 0.8334

Спрогнозировать новые значения на основе модели, вычислить остатки и визуализировать с помощью гистограммы. predict Функция предсказывает новые значения как для высоких данных, так и для данных в памяти.

pred = predict(model,dataTest);
err = pred - dataTest.DepDelay;
figure
histogram(err,'BinLimits',[-100 100],'Normalization','pdf')
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 1.8 sec
- Pass 2 of 2: Completed in 1.3 sec
Evaluation completed in 3.6 sec
title('Histogram of Residuals')

Figure contains an axes. The axes with title Histogram of Residuals contains an object of type histogram.

Оценка и корректировка модели

При просмотре выходных значений p на дисплее некоторые переменные могут оказаться ненужными в модели. Можно уменьшить сложность модели, удалив эти переменные.

Более внимательно изучите значимость переменных в модели, используя anova.

a = anova(model)
a=9×5 table
                    SumSq        DF        MeanSq         F         pValue  
                  __________    _____    __________    _______    __________

    Year               26.88        1         26.88    0.17533       0.67543
    Month             175.84        1        175.84     1.1469       0.28421
    DayofMonth         114.6        1         114.6    0.74749       0.38729
    DayOfWeek         3691.4        6        615.23     4.0129    0.00050851
    DepTime           705.42        1        705.42     4.6012      0.031964
    ArrDelay      1.2112e+07        1    1.2112e+07      79004             0
    Distance          8920.9        1        8920.9     58.188    2.5106e-14
    Hr                1047.5        1        1047.5     6.8321     0.0089613
    Error         2.5531e+06    16653        153.31                         

На основе значений p переменные Year, Month, и DayOfMonth не являются значимыми для этой модели, поэтому их можно удалить, не оказывая негативного влияния на качество модели.

Для дальнейшего изучения этих параметров модели используйте интерактивные визуализации, такие как plotSlice, plotInterations, и plotEffects. Например, использовать plotEffects чтобы изучить оценочное влияние, которое каждая прогнозирующая переменная оказывает на задержку отправления.

plotEffects(model)

Figure contains an axes. The axes contains 10 objects of type line.

Основываясь на этих расчетах, ArrDelay является основным эффектом в модели (он сильно коррелирует с DepDelay). Другие эффекты заметны, но оказывают гораздо меньшее влияние. Кроме того, Hr был определен из DepTimeпоэтому для модели необходима только одна из этих переменных.

Уменьшите число переменных, чтобы исключить все компоненты даты, а затем поместите новую модель.

model2 = fitlm(dataTrain,'DepDelay ~ DepTime + ArrDelay + Distance')
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 1.5 sec
model2 = 
Compact linear regression model:
    DepDelay ~ 1 + DepTime + ArrDelay + Distance

Estimated Coefficients:
                   Estimate         SE         tStat       pValue  
                   _________    __________    _______    __________

    (Intercept)      -1.4646       0.31696    -4.6207    3.8538e-06
    DepTime        0.0025087    0.00020401     12.297    1.3333e-34
    ArrDelay         0.80767     0.0028712      281.3             0
    Distance       0.0012981    0.00016886     7.6875    1.5838e-14


Number of observations: 16667, Error degrees of freedom: 16663
Root Mean Squared Error: 12.4
R-squared: 0.833,  Adjusted R-Squared: 0.833
F-statistic vs. constant model: 2.77e+04, p-value = 0

Разработка модели

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

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

Сбор подмножества данных в рабочую область и использование stepwiselm итеративно разработать модель в памяти.

subset = gather(dataTest);
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.68 sec
Evaluation completed in 0.72 sec
sModel = stepwiselm(subset,'ResponseVar','DepDelay')
1. Adding ArrDelay, FStat = 42200.3016, pValue = 0
2. Adding DepTime, FStat = 51.7918, pValue = 6.70647e-13
3. Adding DepTime:ArrDelay, FStat = 42.4982, pValue = 7.48624e-11
4. Adding Distance, FStat = 15.4303, pValue = 8.62963e-05
5. Adding ArrDelay:Distance, FStat = 231.9012, pValue = 1.135326e-51
6. Adding DayOfWeek, FStat = 3.4704, pValue = 0.0019917
7. Adding DayOfWeek:ArrDelay, FStat = 26.334, pValue = 3.16911e-31
8. Adding DayOfWeek:DepTime, FStat = 2.1732, pValue = 0.042528
sModel = 
Linear regression model:
    DepDelay ~ [Linear formula with 9 terms in 4 predictors]

Estimated Coefficients:
                                Estimate          SE         tStat        pValue  
                               ___________    __________    ________    __________

    (Intercept)                     1.1799        1.0675      1.1053       0.26904
    DayOfWeek_Mon                  -2.1377        1.4298     -1.4951       0.13493
    DayOfWeek_Tues                 -4.2868        1.4683     -2.9196     0.0035137
    DayOfWeek_Wed                  -1.6233         1.476     -1.0998       0.27145
    DayOfWeek_Thu                 -0.74772        1.5226    -0.49109       0.62338
    DayOfWeek_Fri                  -1.7618        1.5079     -1.1683        0.2427
    DayOfWeek_Sat                  -2.1121        1.5214     -1.3882       0.16511
    DepTime                     7.5229e-05    0.00073613     0.10219        0.9186
    ArrDelay                        0.8671      0.013836      62.669             0
    Distance                     0.0015163    0.00023426      6.4728    1.0167e-10
    DayOfWeek_Mon:DepTime        0.0017633     0.0010106      1.7448      0.081056
    DayOfWeek_Tues:DepTime       0.0032578     0.0010331      3.1534     0.0016194
    DayOfWeek_Wed:DepTime       0.00097506      0.001044     0.93398       0.35034
    DayOfWeek_Thu:DepTime        0.0012517     0.0010694      1.1705       0.24184
    DayOfWeek_Fri:DepTime        0.0026464     0.0010711      2.4707      0.013504
    DayOfWeek_Sat:DepTime        0.0021477     0.0010646      2.0174      0.043689
    DayOfWeek_Mon:ArrDelay        -0.11023      0.014744     -7.4767     8.399e-14
    DayOfWeek_Tues:ArrDelay       -0.14589      0.014814     -9.8482    9.2943e-23
    DayOfWeek_Wed:ArrDelay       -0.041878      0.012849     -3.2593     0.0011215
    DayOfWeek_Thu:ArrDelay       -0.096741      0.013308     -7.2693    3.9414e-13
    DayOfWeek_Fri:ArrDelay       -0.077713      0.015462     -5.0259    5.1147e-07
    DayOfWeek_Sat:ArrDelay        -0.13669      0.014652      -9.329    1.3471e-20
    DepTime:ArrDelay            6.4148e-05    7.7372e-06      8.2909    1.3002e-16
    ArrDelay:Distance          -0.00010512    7.3888e-06     -14.227    2.1138e-45


Number of observations: 8333, Error degrees of freedom: 8309
Root Mean Squared Error: 12
R-squared: 0.845,  Adjusted R-Squared: 0.845
F-statistic vs. constant model: 1.97e+03, p-value = 0

Модель, которая является результатом пошаговой посадки, включает в себя условия взаимодействия.

Теперь попробуйте подогнать модель к высоким данным с помощью fitlm с формулой, возвращенной stepwiselm.

model3 = fitlm(dataTrain,sModel.Formula)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 1.8 sec
Evaluation completed in 2 sec
model3 = 
Compact linear regression model:
    DepDelay ~ [Linear formula with 9 terms in 4 predictors]

Estimated Coefficients:
                                Estimate          SE         tStat        pValue  
                               ___________    __________    ________    __________

    (Intercept)                   -0.31595       0.74499     -0.4241        0.6715
    DayOfWeek_Mon                 -0.64218        1.0473    -0.61316       0.53978
    DayOfWeek_Tues                -0.90163        1.0383    -0.86836       0.38521
    DayOfWeek_Wed                  -1.0798        1.0417     -1.0365       0.29997
    DayOfWeek_Thu                  -3.2765        1.0379      -3.157     0.0015967
    DayOfWeek_Fri                  0.44193        1.0813     0.40869       0.68277
    DayOfWeek_Sat                   1.1428        1.0777      1.0604       0.28899
    DepTime                      0.0014188    0.00051612      2.7489     0.0059853
    ArrDelay                       0.72526      0.011907      60.913             0
    Distance                     0.0014824    0.00017027      8.7059    3.4423e-18
    DayOfWeek_Mon:DepTime       0.00040994    0.00073548     0.55738       0.57728
    DayOfWeek_Tues:DepTime      0.00051826    0.00073645     0.70373       0.48161
    DayOfWeek_Wed:DepTime       0.00058426    0.00073695     0.79281        0.4279
    DayOfWeek_Thu:DepTime        0.0026229    0.00073649      3.5614    0.00036991
    DayOfWeek_Fri:DepTime        0.0002959    0.00077194     0.38332       0.70149
    DayOfWeek_Sat:DepTime      -0.00060921    0.00075776    -0.80396       0.42143
    DayOfWeek_Mon:ArrDelay       -0.034886      0.010435     -3.3432    0.00082993
    DayOfWeek_Tues:ArrDelay     -0.0073661      0.010113    -0.72837        0.4664
    DayOfWeek_Wed:ArrDelay       -0.028158     0.0099004     -2.8441     0.0044594
    DayOfWeek_Thu:ArrDelay       -0.061065      0.010381     -5.8821    4.1275e-09
    DayOfWeek_Fri:ArrDelay        0.052437      0.010927      4.7987    1.6111e-06
    DayOfWeek_Sat:ArrDelay        0.014205       0.01039      1.3671        0.1716
    DepTime:ArrDelay            7.2632e-05    5.3946e-06      13.464     4.196e-41
    ArrDelay:Distance          -2.4743e-05    4.6508e-06     -5.3203    1.0496e-07


Number of observations: 16667, Error degrees of freedom: 16643
Root Mean Squared Error: 12.3
R-squared: 0.837,  Adjusted R-Squared: 0.836
F-statistic vs. constant model: 3.7e+03, p-value = 0

Можно повторить этот процесс, чтобы продолжить коррекцию линейной модели. Однако в этом случае следует изучить различные типы регрессии, которые могут быть более подходящими для этих данных. Например, если не требуется включать задержку поступления, этот тип линейной модели больше не подходит. Дополнительные сведения см. в разделе Логистическая регрессия с массивами Tall.

Масштабировать до искры

Ключевая возможность массивов tall в MATLAB и Statistics and Machine Learning Toolbox заключается в подключении к таким платформам, как Hadoop и Spark. Можно даже скомпилировать код и запустить его на Spark с помощью MATLAB Compiler™. Дополнительные сведения об использовании этих продуктов см. в разделе Расширение массивов с другими продуктами:

  • Toolbox™ базы данных

  • Параллельные вычисления Toolbox™

  • Параллельный Server™ MATLAB ®

  • MATLAB Compiler™

Связанные темы