일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- python
- mp4fpsmod
- JanusGateway
- PytestPluginManager
- tolerated
- 코루틴 컨텍스트
- 겨울 부산
- Spring Batch
- table not found
- VARCHAR (1)
- addhooks
- JanusWebRTC
- 자원부족
- 코루틴 빌더
- terminal
- pytest
- 달인막창
- JanusWebRTCServer
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- preemption #
- 티스토리챌린지
- 개성국밥
- Value too long for column
- JanusWebRTCGateway
- PersistenceContext
- 깡돼후
- vfr video
- kotlin
- taint
- 오블완
너와 나의 스토리
Data stream & Online Machine Learning 본문
출처: https://medium.com/analytics-vidhya/data-streams-and-online-machine-learning-in-python-a382e9e8d06a
빅데이터 특징
- Volume: 데이터 크기
- Velocity: 데이터가 생성되거나 데이터 파이프 라인을 통해 공유되는 속도
- Variety
빅데이터의 속도(velocity) 속성에 초점을 맞춰서 설명.
파이썬에서 어떻게 데이터 스트림을 다루고, 들어오는 데이터 스트림에 적응하기 위해 온라인 러링 기술을 사용한 머신 러닝 모델을 훈련시킬 수 있을까 ?
전통적인 머신 러닝 프로세스는 정적인 입력 데이터 파일로 시작된다.
Supervised learning process
1. 프로세스는 입력 파일로 라벨이 포함된 정적 데이터 파일을 수신하고, 탐색 데이터 분석을 수행하고,
기능 엔지니어링을 수행하고, 데이터 레코드를 train/test/validation set으로 분리하며 시작됩니다.
2. 훈련(train) 데이터 레코드를 사용해서 모델을 훈련하고, 테스트(test) 데이터 레코드를 사용하여 모델 파라미터를
미세 조정하고, 유효성 검사(validation) 데이터 레코드의 성능 메트릭스를 기반으로 모델 선택을 수행한다.
3. 잘 훈련된 모델을 생산에 적용하여 모르는 데이터 레코드에 대한 예측/분류를 수행한다.
이 모델은 정적 입력 파일에서 관찰된 패턴으로 제한되며 실시간 동작 변화에 적응할 수 없다.
새로운 트레이닝 데이터가 들어오면 처음부터 다시 훈련시켜야 하는데 이는 자원 집약적이고 시간 소모적인 프로세스일 수 있다. 비지니스 응용 프로그램은 이를 감당할 수 없다.
-> Online learning은 이 문제를 해결할 수 있다.
Online Learning
트레이닝 데이터의 가용성이 높을수록 새 레코드 세트에 대한 모델 성능이 향상된다.
Incremental/Online learning algorithm은 주어진 훈련 데이터 $t_{0}$,$t_{1}$,...,$t_{n}$로 만들어진 일련의 모델 $f_{0}$,$f_{1}$,...,$f_{n}$을 점진적으로 훈련시켜 모델을 생성하는 알고리즘이다.
$t_{i}$=($x_{i}$,$y_{i}$)로 라벨링되며 $f_{i}$는 f(i-1)의 파라미터와데이터 세그먼트 $t_{i}$ 데이터의 최근 파라미터 어데이트에 의존하는 모델이다.
Online training이 유용할 때
1. 모델 훈련과 적용이 기기에서 발생해야 하고, 훈련 데이터가 너무 민감하여(사생활) 오프라인 환경으로 이동할 수 없는 경우. 하나의 일반화된 모델이 모든 사용자의 행동을 처리할 수 없는 경우
2. 네트워크 트래픽으로 인해 새 훈련 데이터를 오프라인 프로세스 환경으로 전송할 수 없거나 장치가 오프라인 모드로 완전히 작동해야하는 경우.
ex) 해상의 운송 선박을 안내하는 내비게이션 시스템은 IoT 장치로부터 홈 오피스로 데이터를 로드하기 위해 안정된 네트워크 연결을 가질 수 없다.
3. 주어진 시간 포인트에서 단일 기기의 메모리에는 들어가지 않을 정도로 큰 training data set일 때
4. 모든 기기에서 새 모델을 재교육하고 배포하려면 많은 비용이 들 때
Data stream
: 이벤트가 발생할 때 즉시 데이터를 사용할 수 있는 위치
실시간이거나 거의 실시간일 수 있다.
이벤트로부터 데이터를 수집하고 저장한 후 에플리케이션에 파일을 전송하는 대신, 이벤트가 발생할 때 애플리케이션에서 데이터를 사용할 수 있다. ex) 신용카드 결제
Kafka
Kafka는 분산된 publish-subscibe 메세징 시스템이다.
이는 웹 페이지 클릭 수, 로그 집계 및 스티림 처리와 같은 처리량이 많은 메시징 응용 프로그램을 처리하는데 사용됨.
Kafka의 3가지 주요 keyword - producer(publisher) / consumer(subscibers) / topic
응용프로그램은 이벤트가 발생하면 실시간으로 Kafka에 기록 할 수 있고(스트림에 메시지 게시) 다른 응용 프로그램은 주어진 오프셋에서 테이프에서 읽을 수 있다(스트림에서 메시지를 소비함)
Kafka 메세징 환경에서 여러개의 데이터 스트림은 공존할 수 있다. 이들은 서로간에 topic 이름으로 구별된다.
ex) Youtube
- 시청자는 채널(topic)을 구독할 수 있다.
- 채널 주인(producer)은 채널에 새로운 컨텐츠(event)를 넣을 수 있다
- 구독자들(consumers)은 새로운 컨텐츠에 대한 공지를 받는다
- 채널 주인은 여러개의 채널을 운영할 수 있다.
- 한 채널은 많은 구독자를 가질 수 있다.
- 구독자는 또한 여러개의 채널을 구독할 수 있다.
'Data Analysis > Machine learning' 카테고리의 다른 글
딥러닝과 머신러닝 차이 (0) | 2019.07.17 |
---|---|
Neural Network - 모두를 위한 딥러닝 (0) | 2019.07.17 |
QRF(Quantile regression forest) (0) | 2019.07.15 |
RNN(Recurrent Neural Network) (0) | 2019.07.11 |
ARIMA(autoregressive integrated moving average)란? (0) | 2019.07.11 |