주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

tall형 배열과 머신러닝을 활용하여 TDMS 파일의 데이터 분석하기

R2022a 이후

이 예제는 TDMS 파일에 저장된 데이터에 대해 빅데이터 분석을 수행하는 방법을 보여줍니다.

로지스틱 회귀 분석 및 기타 기법을 활용하여 tall형 배열에 대한 데이터 분석을 수행할 수 있습니다. tall형 배열은 컴퓨터 메모리에 모두 담기에는 너무 큰 데이터를 나타냅니다. 이 예제에서는 TDMS 파일로 저장된 여러 항공사의 도착 시간 데이터를 사용하여 항공편 지연 확률을 예측합니다.

TDMS 파일에서 데이터 액세스

tdmsDatastore 함수를 사용하여 TDMS 파일의 데이터에 액세스할 수 있도록 TDMSDatastore 객체를 생성합니다. SelectedChannelGroupSelectedChannels 속성을 사용하여 각각 읽을 채널 그룹과 채널 이름을 선택하십시오.

ds = tdmsDatastore('airlinesmall.tdms');
ds.SelectedChannelGroup = "ChannelGroup1";
ds.SelectedChannels = {'DayOfWeek','UniqueCarrier',...
    'ArrDelay','DepDelay','Distance'};

데이터저장소를 tall형 배열로 변환

TDMSDatastore 객체는 데이터를 셀형 배열 형태로 반환합니다. 병렬 환경에서는 셀형 배열이 지원되지 않습니다. 병렬 풀 사용을 피하고, mapreducer 함수를 사용하여 로컬 MATLAB® 세션에서 예제를 실행하십시오. transform 함수를 사용하여 셀형 배열 데이터를 테이블로 변환합니다. 마지막으로, tall 함수를 사용하여 데이터저장소에서 tall형 배열을 생성합니다.

ds = transform(ds, @(x)x{1});
mapreducer(0);
tt = tall(ds);
tt.DayOfWeek = categorical(tt.DayOfWeek,1:7,...
    {'Sun','Mon','Tues','Wed','Thu','Fri','Sat'},'Ordinal',true)
tt =

  M×5 tall table

    DayOfWeek    UniqueCarrier    ArrDelay    DepDelay    Distance
    _________    _____________    ________    ________    ________

      Tues           "PS"             8          12         308   
      Sun            "PS"             8           1         296   
      Thu            "PS"            21          20         480   
      Thu            "PS"            13          12         296   
      Wed            "PS"             4          -1         373   
      Tues           "PS"            59          63         308   
      Wed            "PS"             3          -2         447   
      Fri            "PS"            11          -1         954   
        :              :             :           :           :
        :              :             :           :           :

지연된 항공편

LateFlight 변수를 20분 이상 지연된 항공편으로 정의하십시오.

tt.LateFlight = tt.ArrDelay>=20
tt =

  M×6 tall table

    DayOfWeek    UniqueCarrier    ArrDelay    DepDelay    Distance    LateFlight
    _________    _____________    ________    ________    ________    __________

      Tues           "PS"             8          12         308         false   
      Sun            "PS"             8           1         296         false   
      Thu            "PS"            21          20         480         true    
      Thu            "PS"            13          12         296         false   
      Wed            "PS"             4          -1         373         false   
      Tues           "PS"            59          63         308         true    
      Wed            "PS"             3          -2         447         false   
      Fri            "PS"            11          -1         954         false   
        :              :             :           :           :            :
        :              :             :           :           :            :

로지스틱 회귀 모델

fitglm (Statistics and Machine Learning Toolbox) 함수를 사용하여 항공편 지연 확률을 예측하는 모델을 구축하십시오. 이 모델을 활용하면, 각 예측 변수에 대해 개별적으로 관찰된 결과가 예측 변수들을 종합적으로 고려했을 때도 여전히 유효한지 판단하는 데 도움이 될 수 있습니다. 각 개별 예측 변수의 결과에 대한 자세한 내용은 Logistic Regression with Tall Arrays (Statistics and Machine Learning Toolbox)를 참조하십시오.

glm = fitglm(tt,'LateFlight~Distance+DayOfWeek','Distribution','binomial')
Iteration [1]:	  0% completed
Iteration [1]:	 100% completed
Iteration [2]:	  0% completed
Iteration [2]:	 100% completed
Iteration [3]:	  0% completed
Iteration [3]:	 100% completed
Iteration [4]:	  0% completed
Iteration [4]:	 100% completed
Iteration [5]:	  0% completed
Iteration [5]:	 100% completed
glm = 
Compact generalized linear regression model:
    logit(LateFlight) ~ 1 + DayOfWeek + Distance
    Distribution = Binomial

Estimated Coefficients:
                       Estimate         SE         tStat       pValue  
                      __________    __________    _______    __________

    (Intercept)           -1.855      0.023052    -80.469             0
    DayOfWeek_Mon      -0.072603      0.029798    -2.4365       0.01483
    DayOfWeek_Tues      0.026909      0.029239    0.92029       0.35742
    DayOfWeek_Wed         0.2359      0.028276      8.343    7.2452e-17
    DayOfWeek_Thu        0.23569      0.028282     8.3338    7.8286e-17
    DayOfWeek_Fri       -0.19285      0.031583     -6.106    1.0213e-09
    DayOfWeek_Sat       0.033542      0.029702     1.1293       0.25879
    Distance          0.00018373    1.3507e-05     13.602    3.8741e-42


123319 observations, 123311 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 504, p-value = 8.74e-105

모델을 이용한 예측

gather 함수를 사용하여 0에서 3000마일 사이의 거리에 대해 요일별로 항공편 지연 확률을 예측하십시오. 원본 테이블 tt의 처음 100개 행에 인덱스를 생성하여 예측 변수 값을 저장할 테이블을 생성합니다.

x = gather(tt(1:100,{'Distance' 'DayOfWeek'}));
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.2 sec
Evaluation completed in 0.46 sec
x.Distance = linspace(0,3000)';
x.DayOfWeek(:) = 'Sun';
plot(x.Distance,predict(glm,x));

days = {'Sun' 'Mon' 'Tues' 'Wed' 'Thu' 'Fri' 'Sat'};
hold on
for j=2:length(days)
    x.DayOfWeek(:) = days{j};
    plot(x.Distance,predict(glm,x));
end
legend(days)

Figure contains an axes object. The axes object contains 7 objects of type line. These objects represent Sun, Mon, Tues, Wed, Thu, Fri, Sat.

C = gather(crosstab(tt.LateFlight,predict(glm,tt)>.20))
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 1.2 sec
Evaluation completed in 1.3 sec
C = 2×2

       99613        4391
       18394        1125

지연될 확률이 20% 이상으로 예측된 항공편 중 약 20% 또는 1125/(1125 + 4391)가 실제로 지연되었습니다. 남은 항공편 중 16% 미만, 즉 18394/(18394 + 99613)가 지연되었습니다.

참고 항목

함수

도움말 항목