ํ์ ์ดํ์ ์ ๋์ฐฉ ์์ ์๊ฐ(ETA)์ ์ค์ํ ์ ๋ณด์ด๋ค.
ETA ์ ๋ณด๋ ํนํ ์นด์นด์ค ํ์ ๋ฐฐ์ฐจ ์๊ณ ๋ฆฌ์ฆ์์๋ ์ฃผ์ ์ ๋ณด๋ก ์ฌ์ฉ๋๋ฉฐ, ETA score๊ฐ ๋ฎ์(๊ณ ๊ฐ์๊ฒ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋๋ฌํ ์ ์๋) ๊ธฐ์ฌ์๊ฒ ์ฐ์ ๋ฐฐ์ฐจ๋๋ค.
ํฌ๊ฒ ๊ฒฝ๋ก ์ค์ , ๊ทธ๋ฆฌ๊ณ ํด๋น ๊ฒฝ๋ก์ ํด๋นํ๋ ์์ ์๊ฐ์ ๊ณ์ฐํ๋ ๊ณผ์ ์ผ๋ก ๋ชจ๋ธ์ด ๊ตฌ์ฑ๋๋ฉฐ, ETA๋ ์ค์๊ฐ ์์ธก์ด ํ์ํ ํ์คํฌ๋ก, latency ์ต์ ํ๋ ๋ชจ๋ธ ์ค๊ณ์ ์ค์ํ๊ฒ ๊ณ ๋ ค๋์ด์ผ ํ๋ค.
๊ฐ ๊ตฌ์ญ ๋ณ๋ก, ์์นจ, ์ ์ฌ, ์ ๋ ๊ณผ ๊ฐ์ ์๊ฐ๋์ ๋ฐ๋ฅธ ๊ฑฐ๋ฆฌ ๋น time duration ๊ฐ์ batch ํ์ต์ผ๋ก ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋์ด ์ ์ฅํ๋ ๊ฒ์ ์ ์ํ๋ค. ๊ฐ ๊ตฌ์ญ ๋ณ๋ก ๊ฑฐ๋ฆฌ ๋น ์ด๋ ์๊ฐ์ด ์ ์๋๋ฏ๋ก, ์ค์ ETA ์์ธก์์๋ ์ด๋ ๊ฒฝ๋ก ๋ด ์กด์ฌํ๋ ์ก๊ฐํ ๊ตฌ์ญ N๊ฐ์ ๋ํด, O(N)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ ์ฐ์ฐ ์๊ฐ์ด ์์ฉ ๊ฐ๋ฅํ ์์ค์ผ๋ก ๋จ์ด์ง ๊ฒ์ด๋ผ ์์๋๋ค.
1. feature: Rush hour ํผ์ก ์๊ฐ ์งํ
์ฐ์ Rush hour๋ผ ๋ถ๋ฆฌ๋ ์ถํด๊ทผ ์๊ฐ, ์ ์ฌ ๋๋ ์ ๋ ์๊ฐ ๋์ ์ฐจ๋ ์ด๋๋์ ํฌ๊ฒ ์ฆ๊ฐํ๋ค. ๊ฐ์ ๊ฑฐ๋ฆฌ๋ผ๋ ์ด์ ๊ฐ์ ํน์ ์๊ฐ๋์์๋ ์ด๋ ์๊ฐ์ด ์ฆ๊ฐํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์ ํ๋ ๊ฒ์ ๊ฐ ๊ตฌ์ญ์ ์๊ฐ ๋ณ time scaling factor (s>0)์ด๋ค.
์ด๊ธฐ ๋ชจ๋ธ์๋ ์์์ ์ผ๋ก ์ถํด๊ทผ, ์์ฌ ์๊ฐ์ ์ง์ ํ๊ณ ์ด ๋์ scaling factor๋ฅผ 2, 1.5 ๋ฑ์ผ๋ก ๊ฒฝํ์ ์ผ๋ก ์ง์ ํ๋ค.
์ดํ ์ ํํ distribution์ ์ถ์ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ํผ์ก ๊ตฌ์ญ ์งํ์ ์ถ์ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ํ์ ํ๊ณ ์ ํ๋ค.
2. feature: ํผ์ก ๊ตฌ์ญ ์งํ
๊ทธ๋ฆฌ๊ณ ํน์ง ๊ตฌ์ญ์ ์ธ๊ตฌ ๋ฐ๋ ๋๋น ๋๋ก๊ฐ ๋์ง ์๊ฑฐ๋, ์ ๋ ์ธ๊ตฌ๊ฐ ๋ง์ ํนํ ๋งํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ์ง๋ฐฉ ์๋์์ ๊ฒฝ์ฐ์๋ ๋์ ๋์์ ๋๊น์ง ๊ฐ๋ ๋ฐ์ 1์๊ฐ์ด ์ฑ ๊ฑธ๋ฆฌ์ง ์์ง๋ง ์์ธ์ ๊ฒฝ์ฐ ์ ๋ ์ธ๊ตฌ๊ฐ ๋ง์ ํจ์ฌ ์งง์ ์งํ์ฒ ์ญ 5 ์ ๊ฑฐ์ฅ ์ด๋ด์ ๊ฑฐ๋ฆฌ์์๋ ๋์ผํ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๋ฌํ ์งํ๋ฅผ ETA์ ๋ฐ์ํ๊ธฐ ์ํด์๋ ์ ์ฒด ์ง์ญ์ ์์ ๊ตฌ์ญ์ผ๋ก ์ชผ๊ฐ๊ณ ๊ฐ ์ง์ญ๋ณ๋ก scailing factor๋ฅผ ์ฐพ์์ผ ํ๋ค.
์๋์ ๊ฐ์ด ์ก๊ฐํ ๊ตฌ์ญ์ผ๋ก ๋๋๊ณ , ํ์์ ์ฌ์ ๊ณผ์ ์ ์ค์๊ฐ GPS ์ขํ ๊ฐ์ ์์งํ์ฌ ์ด ๊ฐ์ ๋ฐํ์ผ๋ก, ์ค์๊ฐ ์์น ๊ตฌ์ญ ๋ฒํธ๋ฅผ ์์ฑ ์ด ๋ฐ์ดํฐ๋ก ๊ตฌ์ญ ๋ณ๋ก gpa ๋ค์ด๊ฐ ์๊ฐ, ๋์จ ์๊ฐ, ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฑฐ๋ฆฌ ์ธ ๊ฐ์ง feature๋ฅผ ์์ฑํ๋ค.
์ค์๊ฐ ์ ๋ณด ์์ง timestamp ๋ณ [x, y] ๊ฐ์ผ๋ก๋ถํฐ [๊ตฌ์ญ ๋ฒํธ, ๋ค์ด๊ฐ ์๊ฐ, ๋์จ ์๊ฐ, ์ด๋ ๊ฑฐ๋ฆฌ, ์ด๋ ์๊ฐ]์ feature๋ฅผ ์์ฑํ ์ ์๊ณ , ํผ์ก ์๊ฐ ์งํ๋ [๋ค์ด๊ฐ ์๊ฐ, ๋์จ ์๊ฐ, ์ด๋ ์๊ฐ] ๊ทธ๋ฆฌ๊ณ ํผ์ก ๊ตฌ์ญ ์งํ๋ [๊ตฌ์ญ ๋ฒํธ, ์ด๋ ๊ฑฐ๋ฆฌ, ์ด๋ ์๊ฐ] ๋ฅผ ์ ๋ ฅ๊ฐ์ผ๋ก ์์ธก๋ ๊ฒ์ด๋ค.
probabilistic graphical models, ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ์ Variational Autoemcoders(VAE), Gaussian Mixture Models(GMM), Kernel Density Estimation(KDE)์ ๊ฐ์ ๋ถํฌ ์ถ์ ๊ธฐ๋ฒ, ํ๊ท ๋ถ์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋ชจ๋ธ ์๊ณ ๋ฆฌ์ฆ ์ต์ ๋ค์ ๊ณ ๋ คํ์๋ค.
๋ฐ์ดํฐ ์ฐจ์์ด ํฌ์ง ์์, ๋ฐ์ดํฐ๋ก๋ถํฐ distribution์ ์ถ์ ํ๋ unsupervised learning ๋ฐฉ๋ฒ์ธ ์ปค๋ ๋ฐ๋ ์ถ์ ๋ฐฉ์์ผ๋ก ๋ชจ๋ธ์ ์ค๊ณํ๋ ๋ฐฉ์์ ์ ์ํ๋ค.
3. ํ์์ feature: ๋ ์จ, ๊ณผ๊ฑฐ ์ด์ ์ ๋ฐ์ดํฐ
์ถ๊ฐ์ ์ผ๋ก ๋ชจ๋ธ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด์ ๋ ์จ ์ ๋ณด์ ์ด์ ์์ ๊ณผ๊ฑฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ ์จ์ ๊ฒฝ์ฐ์๋ ๋์ด๋ ๋น๊ฐ ์ฌ ๋, ์ฐจ๊ฐ ๋ ๋งํ๋ ๊ฒฝํฅ์ด ์๋ค๋ ์ , ๊ทธ๋ฆฌ๊ณ ์ด์ ์๋ง๋ค ์ดํ ์๋์ ์ฐจ์ด๊ฐ ์์ด ETA์ ๋ฐ์ํ์์ ๋ ๊ฒฐ๊ณผ ์ ํ๋์ ๊ธ์ ์ ์ธ ์ญํ ์ ํ ๊ฒ์ด๋ผ ์์ํ๋ค.
๋ ์จ์ ๊ฒฝ์ฐ, ๊ธฐ์์ฒญ์ ๋๋ค์๋ณด API๊ฐ ๊ตญ์์ ์ง์ญ ๊ทธ๋ฆฌ๊ณ 30๋ถ์ด๋ผ๋ ์งง์ ์ฃผ์ ๊ฐ์๋, ๊ฐ์ ํ๋ฅ , ๊ธฐ์จ, ํํฅ, ํ์, ์ต๋๋ฅผ ๊ฐ์ง๊ณ ์์ด ํ์ต ๋ฐ์ดํฐ๋ก ๊ฐ์ฅ ์ ํฉํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
{
...
"T1H": 26,
"REH": 10,
"SKY": 3,
"RN1": 0
...
}
T1H: ๊ธฐ์จ
REH: ์ต๋
SKY: ํ๋์ํ
RN1: ๊ฐ์๋
์ด์ ์ ์ดํ ์๋๋ ๊ฐ ๊ตฌ์ญ ํต๊ณผ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์งํ ๋ฐ, ์์ธก ์ดํ ์๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ์๋ค๋ฉด ์ด์ ๋ง์ถ ๋ณด์ scaling factor๋ฅผ ์ ์ํ ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง, ๋นจ๋ฆฌ ๊ฐ์ผํ๊ฑฐ๋ ์ฒ์ฒํ ๊ฐ๋ ๋๋ ์ํฉ์ ๋ฐ๋ผ ์ด์ ์์ ์๋๊ฐ ์ ๋์ ์ผ๋ก ๋ณํ ์ ์๊ธฐ ๋๋ฌธ์ ์๊ทน์ ์ผ๋ก ์์ธก๊ฐ์ ๋ฐ์๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
4. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์์ ์ต๋จ ๊ฒฝ๋ก ์์ธก
์๊ฒ ์ชผ๊ฐ ์ก๊ฐํ ๊ตฌ์ญ๋ค์, ์ธ์ ํ ์ก๊ฐํ์ ๊ฐ์ ์ด ์ฐ๊ฒฐ๋ ๋ฌดํฅ ๊ทธ๋ํ์ ๊ฐ ๊ตฌ์ญ ๋ ธ๋ ๋ณ๋ก ์ก๊ฐํ ๋ ๋ณ ๊ธธ์ด์ ์ด๋ ์๊ฐ์ ํฌ๊ธฐ์ ๊ฐ์ ๊ฐ์ง ๊ทธ๋ํ๋ก ์ดํดํ ์ ์๋ค. ์ก๊ฐํ ํ ๋ณ ๊ธธ์ด์ ์ด๋ ์๊ฐ์ ํด๋น ๊ตฌ์ญ์ ์ง๋๋ ์ต์ ์๊ฐ์ด๋ฏ๋ก ์ ์ ํ ๋ ๊ฐ ๋ณ์ ๊ธธ์ด๋ก ์ด๋ ๊ฑฐ๋ฆฌ์ ๊ธฐ์ค์ ์ก์๋ค.
์ดํ ํน์ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋ํ๋ ๊ฐ์ ์ ๊ฐ์ค์น๋ฅผ ์ด๋ํ๋ ค๋ ๋ ธ๋์ ๊ฐ์ค์น๋ก ํด์ํ๋ฉด ํ์์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ ์ ์ํ ๊ทธ๋ํ์์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ๋ก ์นํํ ์ ์๋ค. ๋ฌผ๋ก ์์ธํ ๋๋ก๋ง ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ ์ ํํ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ค.
5. spatial data ๊ด๋ฆฌ ๋ฐฉ๋ฒ: ์ฐจ๋์ด ์ํ ๊ตฌ์ญ ํ๋ณ
์์ ์๊ฐํ ๋ชจ๋ธ ์ค๊ณ์์ ์ ์ฒด ๊ตฌ์ญ์ ์์ ๊ตฌ์ญ์ผ๋ก ๋๋ ๋ค, ๋ฐ์ดํฐ ์์ง ๊ณผ์ ์์ ์ฐจ๋์ด ํด๋น ๊ตฌ์ญ์ด ์ํด ์๋์ง๋ฅผ ํ์ธํด์ผ ํ๋ค.
์ฐ์ ๊ตฌ์ญ์ 6๊ฐ์ (x, y) ์ขํ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ณ , ์ค์ฌ์ (cx, cy)๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ด๊ธฐ ์์น๋ ๊ฐ์ฅ ์ค์ฌ์ ๊ณผ ๊ฐ๊น์ด ๊ตฌ์ญ์ผ๋ก ์ค์ ํ ๋ค์ ์ดํ์๋ ์ค์ฌ์ ์ ๊ธฐ์ค์ผ๋ก 6๋ณ์ linear equation์ผ๋ก ์ ์ํ ๋ค, ์ค์ฌ์ ๊ณผ ํ์์ ํ์ฌ ์์น๋ฅผ ์ฐ๊ฒฐํ ์ ๋ถ์ด 6๋ณ ์ค ํ๋์ ๊ต์ฐจํ์ ๋, ํด๋น ๋ฐฉํฅ์ผ๋ก ์ธ์ ํ ๊ตฌ์ญ์ผ๋ก ์ด๋ํ ๊ฒ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ์ด๋ฅผ ๋ฐ๋ณตํ๋ฉฐ spatial data๋ฅผ ๊ด๋ฆฌํ ์ ์์ ๊ฒ์ด๋ค.
# ๋ ์ ์ ์ง๋๋ ์ง์ ์ ๋ฐฉ์ ์ ๊ณ์ฐ
def line_equation(x1, y1, x2, y2):
slope=(x1-x2)/(y1-y2)
intercept=y1-slope*x1
return slope, intercept
# ๋ ์ง์ ์ด ๊ต์ฐจํ๋์ง ํ๋ณ
def is_intersect(x1, y1, x2, y2, x3, y3, x4, y4):
slope1, intercept1=line_equation(x1, y1, x2, y2)
slope2, intercept2=line_equation(x3, y3, x4, y4)
if slope1==slope2:
return False
intersection_x=(intercept1-intercept2) / (slope2-slope1)
intersection_y=slope1*intersection_x +intercept1
if min(x1, x2) <= intersection_x <= max(x1, x2) and \
min(y1, y2) <= intersection_y <= max(y1, y2) and \
min(x3, x4) <= intersection_x <= max(x3, x4) and \
min(y3, y4) <= intersection_y <= max(y3, y4):
return True
return False