Этот пример показывает, как выполнить статистический анализ и машинное обучение на данных, которые не помещаются в память, с MATLAB® и Statistics and Machine Learning Toolbox™.
Длинные массивы и таблицы разработаны для работы с данными, которые не помещаются в память. Этот тип данных состоит из очень большого количества строк (наблюдения) по сравнению с меньшим числом столбцов (переменные). Вместо того, чтобы писать специализированный код, который учитывает огромный размер данных, такой как с MapReduce, длинные массивы позволяют вам работать с большими наборами данных способом, подобным массивам MATLAB в оперативной памяти. Принципиальное различие - то, что длинные массивы обычно остаются неоцененными, пока вы не запрашиваете, чтобы вычисления были выполнены.
Когда вы выполняете вычисления на длинных массивах, среда выполнения по умолчанию использует или локальный сеанс работы с MATLAB или локальный параллельный пул (если у вас есть Parallel Computing Toolbox™). Можно использовать функцию mapreducer
, чтобы изменить среду выполнения.
Этот пример работает с подмножеством данных по одиночному компьютеру, чтобы разработать модель линейной регрессии, и затем это масштабирует, чтобы анализировать весь набор данных. Можно увеличить этот анализ еще больше к:
Работа с данными, которые не могут быть считаны в память
Работа с данными, распределенными на кластерах с помощью MATLAB Parallel Server™
Объединяйтесь с большими системами передачи и обработки данных как Hadoop® и Spark®
Несколько безнадзорных и контролируемых алгоритмов изучения в Statistics and Machine Learning Toolbox доступны, чтобы работать с длинными массивами, чтобы выполнить анализ данных и прогнозирующее моделирование с данными, которые не помещаются в память. Эти алгоритмы подходят для данных, которые не помещаются в память, и могут включать небольшие изменения из алгоритмов в оперативной памяти. Возможности включают:
кластеризация k-средств
Линейная регрессия
Обобщенная линейная регрессия
Логистическая регрессия
Дискриминантный анализ
Рабочий процесс машинного обучения для данных, которые не помещаются в память, в MATLAB подобен данным в оперативной памяти:
Предварительно обработать
Исследовать
Модель Develop
Модель Validate
Масштабируйте до больших данных
Этот пример следует за подобной структурой в разработке прогнозирующей модели для задержек авиакомпании. Данные включают большой файл информации о полете от 1 987 до 2008. Цель в качестве примера состоит в том, чтобы предсказать исходную задержку на основе многих переменных.
Детали об основных аспектах длинных массивов включены в пример Анализ больших данных в MATLAB Используя Длинные массивы (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 является табличным текстом и возвращает tall table. Отображение включает предварительный просмотр данных с индикацией, что размер неизвестен.
tt = tall(ds)
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). tt = M×8 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 = M×9 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 = M×11 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 = M×N×... tall array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
Эти команды производят больше длинных массивов. Команды не выполняются, пока вы явным образом не собираете результаты в рабочую область. Команда gather
инициировала выполнение и пытается минимизировать количество передач, требуемых через данные выполнять вычисления. gather
требует, чтобы получившиеся переменные поместились в память.
[statsByDay,C] = gather(g,C)
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 13 sec Evaluation completed in 22 sec statsByDay = 7×11 table GroupLabel DayOfWeek GroupCount mean_ArrDelay std_ArrDelay skewness_ArrDelay kurtosis_ArrDelay mean_DepDelay std_DepDelay skewness_DepDelay kurtosis_DepDelay __________ _________ __________ _____________ ____________ _________________ _________________ _____________ ____________ _________________ _________________ 'Wed' Wed 8489 9.3324 37.406 5.1638 57.479 10 33.426 6.4336 85.426 'Fri' Fri 7339 4.1512 32.1 7.082 120.53 7.0857 29.339 8.9387 168.37 'Sat' Sat 8045 7.132 33.108 3.6457 22.991 9.1557 29.731 4.5135 31.228 'Tues' Tues 8381 6.4786 32.322 4.374 38.694 7.6083 28.394 5.2012 46.249 'Mon' Mon 8443 5.2487 32.453 4.5811 37.175 6.8319 28.573 5.6468 50.271 '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 C = 0.8966
Переменные, содержащие результаты, являются теперь переменными в оперативной памяти в Рабочей области. На основе этих вычислений изменение происходит в данных и существует корреляция между задержками, которые можно исследовать далее.
Исследуйте эффект дня недели и часа дня и получите дополнительную статистическую информацию, такую как стандартная погрешность среднего значения и 95%-го доверительного интервала для среднего значения. Можно передать целую длинную таблицу и задать который переменные выполнить вычисления на.
byDayHr = grpstats(tt,{'Hr','DayOfWeek'},... {'mean','sem','meanci'},'DataVar','DepDelay'); byDayHr = gather(byDayHr);
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 3 sec Evaluation completed in 6.7 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 16 12.302 7.4968 11.406 12.413 12.874 10.962 12.908 17 11.47 8.9495 10.658 12.961 13.487 7.9034 8.9327 18 15.148 13.849 11.266 15.406 16.706 11.022 13.042 19 14.77 11.618 15.053 17.561 21.032 12.644 16.404 20 17.711 13.942 17.105 22.382 25.945 11.223 22.152 21 23.727 17.276 23.092 25.794 28.828 14.011 22.682 22 29.383 24.949 28.265 30.649 37.38 24.328 36.272 23 38.296 33.966 34.904 47.592 49.523 29.5 44.122
В настоящее время можно визуализировать данные о длинном массиве с помощью histogram
, histogram2
, binScatterPlot
и ksdensity
. Визуализация все триггерное выполнение, подобное вызыванию функции gather
.
Используйте binScatterPlot
, чтобы исследовать отношение между переменными Hr
и DepDelay
.
binScatterPlot(tt.Hr,tt.DepDelay,'Gamma',0.25) ylim([0 500]) xlabel('Time of Day') ylabel('Delay (Minutes)')
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.5 sec Evaluation completed in 1.7 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.4 sec Evaluation completed in 1.4 sec
Как отмечено в выходном отображении, визуализация часто берет два прохода через данные: один, чтобы выполнить раскладывание, и один, чтобы выполнить сгруппированное вычисление и произвести визуализацию.
Чтобы разработать модель машинного обучения, полезно зарезервировать часть данных, чтобы обучить и разработать модель и другую часть данных, чтобы протестировать модель. Много путей существуют для вас, чтобы разделить данные в наборы обучения и валидации.
Используйте datasample
, чтобы получить случайную выборку данных. Затем используйте cvpartition
, чтобы разделить данные в наборы тестов и наборы обучающих данных. Чтобы получить нерасслоенные разделы, установите универсальную группирующую переменную путем умножения выборок данных на нуль.
Для воспроизводимости, набор seed генератора случайных чисел с помощью tallrng
. Результаты могут отличаться в зависимости от количества рабочих и среды выполнения для длинных массивов. Для получения дополнительной информации смотрите Управление Где Ваши Выполнения Кода (MATLAB).
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 Parallel Pool 'local': - Pass 1 of 2: Completed in 2.3 sec - Pass 2 of 2: Completed in 3.7 sec Evaluation completed in 6.1 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') title('Histogram of Residuals')
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 2: Completed in 3.6 sec - Pass 2 of 2: Completed in 2.2 sec Evaluation completed in 6.1 sec
При рассмотрении выходных 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 Parallel Pool 'local': - Pass 1 of 2: Completed in 1.2 sec - Pass 2 of 2: Completed in 2 sec Evaluation completed in 3.2 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); sModel = stepwiselm(subset,'ResponseVar','DepDelay')
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.8 sec Evaluation completed in 1.8 sec 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 Parallel Pool 'local': - Pass 1 of 2: Completed in 1.5 sec - Pass 2 of 2: Completed in 1.4 sec Evaluation completed in 3 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™. Смотрите Расширение длинных массивов с помощью других продуктов (MATLAB) для получения дополнительной информации об использовании этих продуктов:
Database Toolbox™
Parallel Computing Toolbox™
MATLAB® Parallel Server™
MATLAB Compiler™