В этом примере показано, как выполнить статистический анализ и машинное обучение на данных , которых не помещаютсях в память, с помощью MATLAB ® и Statistics and Machine Learning Toolbox™.
Длинные массивы и таблицы предназначены для работы с данной , которой не помещаютсей в память,. Этот тип данных состоит из очень большого количества строк (наблюдений) по сравнению с меньшим количеством столбцов (переменных). Вместо записи специализированного кода, учитывающего огромный размер данных, например с помощью MapReduce, можно использовать длинные массивы для работы с большими наборами данных способом, подобным MATLAB массивам в памяти. Основным различием является то, что длинные массивы обычно остаются недооцененными, пока вы не запросите, чтобы вычисления были выполнены.
При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Чтобы запустить пример с использованием локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, измените глобальное окружение выполнения с помощью mapreducer
функция.
mapreducer(0)
Этот пример работает с подмножеством данных на одном компьютере, чтобы разработать линейную регрессионую модель, и затем он масштабируется, чтобы проанализировать весь набор данных. Вы можете масштабировать этот анализ еще дальше:
Работа с данными, которые нельзя считать в память
Работайте с данными, распределенными между кластерами, используя MATLAB Parallel Server™
Интеграция с такими системами больших данных, как Hadoop ® и Spark ®
Несколько неконтролируемых и алгоритмы контролируемого обучения в Statistics and Machine Learning Toolbox доступны для работы с длинными массивами для выполнения интеллектуального анализа данных и прогнозирующего моделирования с данной , которой не помещаютсей в память,. Эти алгоритмы подходят для данных , которых не помещаютсь в память, и могут включать небольшие изменения от алгоритмов в памяти. Возможности включают в себя:
k-средних значений значение кластеризации
Линейная регрессия
Обобщенная линейная регрессия
Логистическая регрессия
Дискриминантный анализ
Рабочий процесс машинного обучения для данных , которых не помещаютсь в память, в MATLAB похож на данные в памяти:
Предварительно обработать
Исследовать
Разрабатывайте модель
Валидация модели
Масштабирование до больших данных
Этот пример следует аналогичной структуре при разработке прогнозирующей модели для задержек авиакомпаний. Данные включают большой файл информации рейса авиакомпаний с 1987 по 2008 год. Цель примера состоит в том, чтобы предсказать задержку вылета на основе ряда переменных.
Подробная информация об основных аспектах длинные массивы содержится в примере Анализ больших данных в MATLAB Использование Длинные массивы. Этот пример расширяет анализ, чтобы включить машинное обучение с длинными массивами.
Datastore является репозиторием для наборов данных, которые являются слишком большими, чтобы помещаться в памяти. Можно создать datastore из ряда различных форматов файлов в качестве первого шага к созданию длинный массив из внешнего источника данных.
Создайте datastore для примера файла 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
Создайте длинная таблица, поддерживаемый datastore, чтобы облегчить работу с данными. Базовый тип данных длинный массив зависит от типа datastore. В этом случае datastore является табличным текстом и возвращает длинная таблица. Это отображение включает предварительный просмотр данных с указанием, что размер неизвестен.
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,:);
Для длинные массивы доступен ряд исследовательских функций. Для примера, grpstats
функция вычисляет сгруппированную статистику длинные массивы. Исследуйте данные путем определения центра и распространения данных с суммарной статистикой, сгруппированной по дням недели. Кроме того, исследуйте корреляцию между задержкой вылета и задержкой прибытия.
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 ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
Эти команды создают больше длинные массивы. Команды не выполняются, пока вы явно не соберете результаты в рабочую область. The 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
⋮
В настоящее время можно визуализировать данные длинный массив с помощью 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)')
Как отмечается на выходном отображении, визуализация часто принимает два прохода через данные: один для выполнения раскладывания и один для выполнения связанного вычисления и получения визуализации.
Чтобы разработать модель машинного обучения, полезно зарезервировать часть данных для обучения и разработки модели и другую часть данных для тестирования модели. Существует несколько способов разделить данные на наборы обучения и валидации.
Использование datasample
для получения случайной выборки данных. Затем используйте cvpartition
разбить данные на тестовые и наборы обучающих данных. Чтобы получить нертифицированные разбиения, установите равномерную сгруппированную переменную путем умножения выборок данных на нуль.
Для воспроизводимости установите seed генератора случайных чисел используя tallrng
. Результаты могут варьироваться в зависимости от количества рабочих процессов и окружения выполнения для длинных массивов. Для получения дополнительной информации смотрите Управление, Где Ваш Код Запуски.
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
ведет себя аналогично функции в памяти. Однако вычисления с длинные массивы приводят к 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
Отображение указывает информацию о подгонке, а также коэффициенты и связанную статистику коэффициентов.
The model
переменная содержит информацию о подобранной модели как свойствах, к которым можно получить доступ с помощью записи через точку. Кроме того, дважды нажатие кнопки переменную в Рабочей области, чтобы исследовать свойства в интерактивном режиме.
model.Rsquared
ans = struct with fields:
Ordinary: 0.8335
Adjusted: 0.8334
Спрогнозируйте новые значения на основе модели, вычислите невязки и визуализируйте с помощью гистограммы. The 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')
Глядя на выходные значения 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)
На основе этих вычислений 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
Можно повторить этот процесс, чтобы продолжить корректировку линейной модели. Однако в этом случае необходимо изучить различные типы регрессии, которые могут быть более подходящими для этих данных. Для примера, если вы не хотите включать задержку прибытия, то этот тип линейной модели больше не подходит. Для получения дополнительной информации см. раздел Логистическая регрессия с длинными массивами.
Ключевой возможностью длинных массивов в MATLAB и Statistics and Machine Learning Toolbox является подключение к таким платформам, как Hadoop и Spark. Можно даже скомпилировать код и запустить его на Spark с помощью MATLAB Compiler™. Дополнительные сведения об использовании этих продуктов см. в разделе Расширение длинных массивов другими продуктами:
Database Toolbox™
Parallel Computing Toolbox™
MATLAB ® Parallel Server™
MATLAB Compiler™