Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Estadísticas y aprendizaje automático con Big Data usando Tall arrays

En este ejemplo se muestra cómo realizar análisis estadísticos y aprendizaje automático en datos fuera de memoria con MATLAB® y estadísticas y herramientas de aprendizaje automático™.

Las tablas y matrices altas están diseñadas para trabajar con datos que no son de memoria. Este tipo de datos consta de un número muy grande de filas (observaciones) en comparación con un número menor de columnas (variables). En lugar de escribir código especializado que tenga en cuenta el enorme tamaño de los datos, como con MapReduce, las matrices altas le permiten trabajar con grandes conjuntos de datos de forma similar a los arreglos de discos de MATLAB en memoria. La diferencia fundamental es que las matrices altas normalmente permanecen sin evaluar hasta que se solicita que se realicen los cálculos.

Al ejecutar cálculos en matrices altas, el entorno de ejecución predeterminado utiliza la sesión de MATLAB local o un grupo paralelo local (si tiene Parallel Computing Toolbox™). Puede utilizar la función para cambiar el entorno de ejecución.mapreducer

Este ejemplo funciona con un subconjunto de datos en un único equipo para desarrollar un modelo de regresión lineal y, a continuación, se escala para analizar todo el conjunto de datos. Puede escalar aún más este análisis para:

  • Trabaje con datos que no se pueden leer en la memoria

  • Trabaje con datos distribuidos entre clústeres utilizando MATLAB Parallel Server™

  • Integre con sistemas de macrodatos como Hadoop® y Spark®

Introducción al aprendizaje automático con Tall arrays

Varios algoritmos de aprendizaje supervisados y no supervisados en estadísticas y machine learning Toolbox están disponibles para trabajar con matrices altas para realizar la minería de datos y el modelado predictivo con datos de memoria no disponible. Estos algoritmos son apropiados para los datos fuera de memoria y pueden incluir ligeras variaciones de los algoritmos en memoria. Las capacidades incluyen:

  • k-means clustering

  • La regresión lineal

  • La regresión lineal generalizada

  • La regresión logística

  • El análisis discriminante

El flujo de trabajo de aprendizaje automático para datos fuera de memoria en MATLAB es similar a los datos en memoria:

  1. Preprocesar

  2. Explorar

  3. Desarrolle el modelo

  4. Valide el modelo

  5. Escale hasta datos más grandes

Este ejemplo sigue una estructura similar en el desarrollo de un modelo predictivo para retrasos en las aerolíneas. Los datos incluyen un gran archivo de información de vuelo de la aerolínea de 1987 a 2008. El objetivo de ejemplo es predecir el retardo de salida en función de un número de variables.

En el ejemplo se incluyen detalles sobre los aspectos fundamentales de las matrices altas.Analice Big Data en MATLAB con Tall arrays (MATLAB) Este ejemplo amplía el análisis para incluir el aprendizaje automático con matrices altas.

Crear tabla alta de datos de aerolíneas

Un almacén de datos es un repositorio para recopilaciones de información que son demasiado grandes para caber en la memoria. Puede crear un almacén de datos a partir de varios formatos de archivo diferentes como primer paso para crear una matriz alta a partir de un origen de datos externo.

Cree un almacén de datos para el archivo de ejemplo.airlinesmall.csv Seleccione las variables de interés, trate los valores como datos faltantes y genere una tabla de vista previa de los datos.'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     

Cree una tabla alta respaldada por el almacén de datos para facilitar el trabajo con los mismos. El tipo de datos subyacente de una matriz alta depende del tipo de almacén de datos. En este caso, el almacén de datos es texto tabular y devuelve una tabla alta. La pantalla incluye una vista previa de los datos, indicando que el tamaño es desconocido.

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         :        :          :             :           :          :           :           :      :        :          :             :           :          :           :           :  

Preprocesar datos

Este ejemplo tiene como objetivo explorar la hora del día y el día de la semana con más detalle. Convierta el día de la semana en datos categóricos con etiquetas y determine la hora del día desde la variable de tiempo de salida numérica.

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      :        :          :             :           :          :           :           :        :      :        :          :             :           :          :           :           :        :  

Incluya solo años después de 2000 e ignore las filas con datos faltantes. Identifique los datos de interés por condición lógica.

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

Explore datos por grupo

Hay varias funciones exploratorias disponibles para matrices altas. Para obtener una lista de las funciones de estadísticas admitidas, consulte.Soporte para Tall array, notas de uso y limitaciones

La función calcula las estadísticas agrupadas de matrices altas.grpstats Explore los datos determinando la centralidad y la propagación de los datos con estadísticas de Resumen agrupadas por día de la semana. Además, explore la correlación entre el retardo de salida y el retardo de llegada.

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      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    :  

Estos comandos producen matrices más altas. Los comandos no se ejecutan hasta que recopile explícitamente los resultados en el área de trabajo. El comando desencadena la ejecución e intenta minimizar el número de pasadas requeridas a través de los datos para realizar los cálculos. requiere que las variables resultantes quepan en la memoria.gathergather

[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  

Las variables que contienen los resultados son ahora variables en memoria en el espacio de trabajo. De acuerdo con estos cálculos, la variación ocurre en los datos y hay correlación entre los retrasos que usted puede investigar más lejos.

Explore el efecto del día de la semana y la hora del día y obtenga información estadística adicional, como el error estándar de la media y el intervalo de confianza del 95% para la media. Puede pasar toda la tabla alta y especificar qué variables para realizar cálculos.

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 

Debido a la partición de datos de la matriz alta, la salida puede ser desordenada. Reorganizar los datos en la memoria para su posterior exploración.

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  

Visualice datos en Tall arrays

Actualmente, puede visualizar datos de matriz altos mediante,,, y.histogramhistogram2binScatterPlotksdensity Todas las visualizaciones desencadenan la ejecución, similar a llamar a la función.gather

Se usa para examinar la relación entre las variables y.binScatterPlotHrDepDelay

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 

Como se indica en la pantalla de salida, las visualizaciones a menudo toman dos pasadas a través de los datos: una para realizar la discretización y otra para realizar el cálculo de binned y producir la visualización.

Dividir datos en conjuntos de entrenamiento y validación

Para desarrollar un modelo de aprendizaje automático, es útil reservar parte de los datos para entrenar y desarrollar el modelo y otra parte de los datos para probar el modelo. Existen varias formas de dividir los datos en conjuntos de entrenamiento y validación.

Se utiliza para obtener un muestreo aleatorio de los datos.datasample A continuación, utilice para dividir los datos en conjuntos de prueba y entrenamiento.cvpartition Para obtener particiones no estratificadas, establezca una variable de agrupación uniforme multiplicando las muestras de datos por cero.

Para reproducibilidad, establezca la semilla del generador de números aleatorios utilizando.tallrng Los resultados pueden variar en función del número de trabajadores y del entorno de ejecución de los arrays altos. Para obtener más información, consulte.Controle dónde se ejecuta el código (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),:); 

Ajustar modelo de aprendizaje supervisado

Cree un modelo para predecir el retardo de salida en función de varias variables. La función de modelo de regresión lineal se comporta de forma similar a la función en memoria.fitlm Sin embargo, los cálculos con matrices altas resultan en a, que es más eficiente para grandes conjuntos de datos.CompactLinearModel El ajuste del modelo desencadena la ejecución porque es un proceso iterativo.

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 

Predecir y validar el modelo

La pantalla indica información de ajuste, así como coeficientes y estadísticas de coeficiente asociadas.

La variable contiene información sobre el modelo ajustado como propiedades, a las que puede acceder mediante la notación de puntos.model Como alternativa, haga doble clic en la variable en el espacio de trabajo para explorar las propiedades de forma interactiva.

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

Predecir nuevos valores basados en el modelo, calcular los residuales y visualizarlos utilizando un histograma. La función predice nuevos valores para los datos altos y en memoria.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 

Evalúe y ajuste el modelo

Mirando los valores p de salida en la pantalla, algunas variables podrían ser innecesarias en el modelo. Puede reducir la complejidad del modelo eliminando estas variables.

Examine la importancia de las variables en el modelo más estrechamente utilizando.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                           

En función de los valores p, las variables y no son significativas para este modelo, puede eliminarlas sin afectar negativamente a la calidad del modelo.YearMonthDayOfMonth

Para explorar aún más estos parámetros del modelo, utilice visualizaciones interactivas como, y.plotSliceplotInterationsplotEffects Por ejemplo, se utiliza para examinar el efecto estimado que tiene cada variable predictora en el retardo de salida.plotEffects

plotEffects(model) 

En base a estos cálculos, es el efecto principal en el modelo (está altamente correlacionado con).ArrDelayDepDelay Los otros efectos son observables, pero tienen mucho menos impacto. Además, se determinó a partir de, por lo que sólo una de estas variables es necesaria para el modelo.HrDepTime

Reduzca el número de variables para excluir todos los componentes de fecha y, a continuación, ajuste un nuevo modelo.

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 

Desarrollo de modelos

Incluso con el modelo simplificado, puede ser útil para ajustar aún más las relaciones entre las variables e incluir interacciones específicas. Para experimentar más, repita este flujo de trabajo con matrices altas más pequeñas. Para el rendimiento mientras se ajusta el modelo, puede considerar trabajar con una pequeña extracción de datos en memoria antes de escalar verticalmente a toda la matriz alta.

En este ejemplo, puede usar la funcionalidad como la regresión escalonada, que es adecuada para el desarrollo de modelos iterativos en memoria. Después de ajustar el modelo, puede escalar verticalmente para usar matrices altas.

Recopile un subconjunto de los datos en el área de trabajo y utilírelos para desarrollar el modelo de forma iterativa en la memoria.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 

El modelo que resulta del ajuste escalonado incluye términos de interacción.

Ahora intente ajustar un modelo para los datos altos mediante el uso con la fórmula devuelta por.fitlmstepwiselm

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 

Puede repetir este proceso para continuar con el ajuste del modelo lineal. Sin embargo, en este caso, debe explorar los diferentes tipos de regresión que podrían ser más apropiados para estos datos. Por ejemplo, si no desea incluir el retardo de llegada, este tipo de modelo lineal ya no es adecuado. Consulte para obtener más información.Regresión logística con Tall arrays

Escale a Spark

Una de las principales capacidades de las matrices altas en MATLAB y estadística y machine learning Toolbox es la conectividad a plataformas como Hadoop y Spark. Incluso puede compilar el código y ejecutarlo en Spark con MATLAB Compiler™. Consulte para obtener más información sobre el uso de estos productos:Extienda los arrays altos con otros productos (MATLAB)

  • Database Toolbox™

  • Caja de herramientas de computación paralela™

  • MATLAB® servidor paralelo™

  • Compilador de MATLAB™