Data명세서.md 5.39 KB
Newer Older
1
2
### _데이터 명세서_

3
4
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>

5
6
7
8
9
10
11
12
<br>

# 1. Data Directory Structure

    data
      ∟ Local Code (Do/도)
        ∟ Local Code (SGG/시군구)
          ∟ Local Code (EMD/읍면동)
13
14
15
16
            ∟ Outside
              ∟ YYYY (연)
                ∟ YYYYMM (연/월)
                  ∟ YYYYMMDD (연/월/일)
17
                    ∟ weather.csv
18
19
20
21
22
23
            ∟ Users
              ∟ ID (사용자 개인 ID)
                ∟ YYYY (연)
                  ∟ YYYYMM (연/월)
                    ∟ YYYYMMDD (연/월/일)
                      ∟ weather.csv
24
25
                      ∟ analysis_parameters.csv
                      ∟ predict_parameters.csv
26

27
28
29
30
31
32
33
데이터가 저장되는 경로의 구조입니다.

- 1차 : 지역별 대분류
- 2차 : 사용자와 외부 정보 분류
- 3차 : 연 / 월 / 일 분류

<br><br>
34
35
36
37
38

# 2. Data Format

데이터들은 CSV(Comma Separated Values) 형식의 파일로 저장됩니다.<br><br>

39
## Ouside Data - weather.csv
40
41
42
43
44
45
46
47
48

외부 데이터는 다음과 같은 형식으로 저장됩니다.

| Month | Date | Hour | Minute | Temperature | Humidity |   Press   | Wind Speed |
| :---: | :--: | :--: | :----: | :---------: | :------: | :-------: | :--------: |
|  월   |  일  |  시  |   분   |   온도(℃)   | 습도(%)  | 기압(hPa) | 풍속(m/s)  |

<br><br>

49
## User Side Data - weather.csv
50
51
52

사용자가 설정한 장소의 데이터는 다음과 같은 형식으로 저장됩니다.

53
54
55
| Month | Date | Hour | Minute | Temperature | Humidity | Lights |
| :---: | :--: | :--: | :----: | :---------: | :------: | :----: |
|  월   |  일  |  시  |   분   |   온도(℃)   | 습도(%)  |  광도  |
56
57
58

<br><br>

59
60
61
62
63
64
65
66
67
68
## User Side Data - parameters.csv

Linear Regression을 진행하며 조정된 가중치와 편향 값입니다. 마지막 한개의 값이 편향이며, 이외의 값은 가중치 입니다.

| Weights |  …  | Bias |
| :-----: | :-: | :--: |
| 가중치  |  …  | 편향 |

<br><br>

69
70
# 3. Data Processing

71
EUE가 제일 중요하게 수행해야할 부분입니다. 데이터에 대해 선형회귀 분석을 진행합니다. 이 결과를 바탕으로 단위 시간 후의 온도를 예측해봅니다.
72
73
74
75
76
77
78
79
각 데이터들 마다 그 크기가 다양해, 크기가 클 수록 결과에 많은 영향을 미칩니다. 이에 따라 **_Z 점수 정규화_**를 진행하겠습니다.

- [정규화](<https://en.wikipedia.org/wiki/Normalization_(statistics)>)
- [z 점수 (표준 점수)](https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%EC%A0%90%EC%88%98)

예측 결과는 표준 점수로 나올 것이며, 해당 점수에 실내 온도의 표준편차를 곱하고, 평균을 더해 줌으로써 예측한 온도 값을 구할 수 있습니다.

$$z ={x - m} \over { \theta }$$ -> $$x = z * \theta + m$$
80
81
82
83
84
85
86
87
88
89
90

## Input Data

- 공통 데이터

  - 월 ( Month )
  - 일 ( Date )
  - 시 ( Hour )

- 외부 데이터

91
92
93
94
  - 온도 ( Out Temperature )
  - 습도 ( Out Humidity )
  - 기압 ( Out Pressure )
  - 풍속 ( Out Wind Speed )
95
96

- 사용자 데이터
97
98
99
  - 온도 ( Temperature )
  - 습도 ( Humidity )
  - 광도 ( Lights )
100
101
102
103
104
105
106
107
108
109
110
111
112

<br>

## Output Data

- 사용자 장소의 미래 온도

  : 현재 시간에 들어온 데이터들을 통해서 다음 30분, 한시간의 데이터를 예측합니다.<br><br>

## Modeling Method

[Linear Regression](https://ko.wikipedia.org/wiki/선형_회귀)를 통해서 데이터들의 선형 관계를 파악 후 다음의 온도를 예측해보려 합니다.

113
매일 자정(Day K) 데이터 처리 과정이 진행 됩니다. 따라서 (Day K - 1)의 데이터들과 (Day K - 1)까지 사용된 가중치 데이터들을 이용해 Linear Regression을 진행합니다. 데이터 처리 과정이 진행된 후의 가중치들은 (Day K)의 가중치 파일로 생성되어 저장됩니다.
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

## Data Processing Files

데이터 처리에 관한 부분은 파이썬 코드로 진행 됩니다.

    server
      ∟ src
        ∟ ...
        ∟ data_processing
          ∟ linear_regression.py
          ∟ main.py
          ∟ preprocessing.py

1. 매일 자정이 되면 서버는 child process를 생성해 **/src/data_processing/main.py** 를 호출합니다. <br><br>
2. main.py는 DB에 관한 정보를 넘겨받아, data들이 존재하는 링크를 획득합니다. <br><br>
3. 링크들을 **/src/data_processing/preprocessing.py**의 preprocessing 메소드로 넘겨줍니다. <br><br>
4. preprocessing 메소드는 수집된 데이터들과 이전까지 진행한 변수들의 정보를 연산 가능한 상태로 가공하여 반환합니다. <br><br>

- 가공 후의 데이터 타입 및 Shape
  | 변수 명 | 의미 | Shape |
  | :---:|:---:|:---:|
  |train_x|정규화된 수집 데이터 | (n , 1)|
  |train_t| 정규화된 온도 값|(n, 1)|
  |weights| 가중치|(10, 1) or None|
  |bias |편향|float or None|
  |mean |각 데이터 범주의 평균| (10, 1)|
  |std_d |각 데이터 범주의 표준 편차| (10, 1)|

  <br><br>

  Preprocessing 과정에서 구해진 평균과 표준 오차는 사용자의 링크 하위에 **prediction_parameters.csv**로 저장합니다.

<br><br>

5. 가공된 데이터들을 바탕으로 학습률이 0.05이며, 비용 함수는 평균제곱 오차(MSE)인 선형회귀 분석을 진행합니다.<br><br>
6. 선형 회귀 분석이 후 생긴 가중치와 편향을 **analysis_parameters.csv**로 저장합니다.<br><br>