본문 바로가기
SingleStoreDB/엔지니어링

TensorFlow, Kafka 및 SingleStore를 이용한 실시간 머신러닝

by 에이플랫폼 [Team SingleStore Korea] 2019. 8. 9.

스트리밍과 분류(classification)을 동시에 할 수 있는 SQL 쿼리 기반의 간단한 머신러닝 파이프라인을 구축하는 방법

TensorFlow는 최고의 머신 러닝 라이브러리 중 하나로 부상했으며 운영 데이터베이스와 결합하면 정교한 머신 러닝 워크 플로우를 신속하게 구축할 수있는 기반을 제공합니다.

이 포스팅에서는 스피드 데이트(Speed Dating) 데이터 셋을 이용한 머신러닝 워크 플로우를 살펴보기 합니다. 이 데모의 전체적인 목표는 머신이 제안해서 매칭과 사람이 직접 다른 사람의 프로필을 보고 하는 매칭과 비교하는 것입니다. 데이터 세트는 Kaggle의 스피드 데이트 실험에서 가져온 것 입니다.

워크 플로의 일부로 SingleStore 파이프 라인을 사용하여 Kafka의 데이터를 실시간으로 데이터베이스로 스트리밍 하는 방법에 대해 자세히 설명 합니다. 데이터를 수집하면 내장된 TensorFlow 알고리즘 중 일부를 사용하여 데이터를 동시에 학습하고 분류하기 위해 TensorFlow와 통합합니다. 마지막으로 머신이 제안한 것과 얼마나 잘 일치하는지 확인합니다.

이 전체 아키텍처는 새로운 데이터 세트로 보다 복잡한 머신러닝 워크 플로우를 생성하기 위한 템플릿을 제공합니다.

TensorFlow의 머신러닝 워크 플로우

우리의 아키텍처는 Kafka를 통해 스트리밍되고 쿼리 가능한 영구 데이터베이스에 저장된 트레인 및 분류(Classification) 데이터로 구성됩니다. 이 경우 SingleStore의 파이프 라인 함수의 장점을 활용하여 데이터베이스에 유지하기 전에 스트림 상황에서 TensorFlow 작업을 실행합니다.

Kafka 측에서는 학습 및 분류라는 두 가지 Kafka 토픽을 설정했습니다. 원시(Raw) 학습 및 분류 데이터는 이러한 Kafka 토픽(topics)에서 SingleStore 파이프 라인으로 스트리밍됩니다.

데이터베이스 쪽에서 speed_dating_matches라는 데이터베이스를 만들고 해당 데이터베이스 내에서 dating_training 및 dating_results라는 두 개의 테이블을 만듭니다.

dating_training은 학습 행을 보여주기 위해 학습 평가의 결과를 배치하는 단일 행 테이블입니다.

dating_results는 잠재적 날짜에 대한 모든 데이터와 이 날짜가 일치한다고 판단되었는지 여부를 나타내는 테이블입니다.

isMatch = 1은 날짜가 일치했음을 의미합니다

isMatch = 0은 날짜가 일치하지 않음을 의미합니다

다음으로 speed_dating_training과 speed_dating_results라는 두 개의 파이프 라인을 만들어 Kafka 토픽의 데이터를 스트리밍하고 해당 데이터를 사용하여 학습이나 분류를 하고 최종 결과를 해당 테이블에 배치합니다.

매칭을 예측하기 위해 머신 러닝 적용

스피드 데이트 정보에는 매력, 지능, 재미, 공유 관심사, 성실 및 야심(Ambition)의 6 가지 특성에 걸쳐 100 개의 우선 순위 포인트를 할당하는 것이 포함됩니다.

또한 살아온 환경, 고향, 학문적 관심사 및 영화, 요가, 여행 및 비디오 게임과 같은 취미가 포함됩니다.

훈련 데이터는 소정의 매칭 세트이고, 분류 데이터는 예측 된 매칭 가능성을 나타냅니다. 이 정보를 통해 학습 데이터에서 일치하는 사람을 찾고 질문에 대한 답변을 사용하여 누가 매칭하는지 확인할 수 있습니다. 거기에서 우리는 데이트 속성과 관심사에 관해 보통 사람이 무엇을 찾는 지, 그리고 보통 사람과 내가 어떤 사람과 어울리는가와 같은 더 자세한 질문을 할 수 있습니다.

또한 전체 데이터 세트에서 쿼리하거나 일치하는 것으로 판단된 데이터 세트의 하위 세트를 쿼리 할 수 ​​있습니다.

내장 TensorFlow 모델 사용

TensorFlow에는 다음과 같은 다양한 내장 모델이 제공됩니다.

DNNClassifer DNNRegressor DNNLinearCombinedClassifier DNNLinearCombinedRegressor LinearClassifier LinearRegressor

이 데모에서는 선형 분류기를 선택하고 다음 데이터 형식의 조합을 기반으로 모델 입력을 기반으로합니다.

CSV 필드 이름 CSV 필드 이름은 CSV를 Pandas 데이터 프레임으로 읽을 때 사용할 이름입니다.

TensorFlow 범주형(categorical) 피쳐 컬럼. 범주 피쳐 컬럼은 이산 숫자로 표현할 수 없는 항목입니다. 거주 국가, 직업 또는 모교와 같은 기능은 모두가 범주형 피쳐 컬럼의 예입니다. TensorFlow의 가장 큰 특징 중 하나는 주어진 범주에 대해 얼마나 많은 고유 값을 가질 지 알 필요가 없으며 희소 벡터 생성을 처리한다는 것 입니다. TensorFlow 문서에서 TensorFlow 선형 모델 학습서의 "기본 범주 피쳐 컬럼(Base Categorical Features Column)"섹션을 참조하시기 바랍니다. .

TensorFlow 연속(continuous) 피쳐 컬럼. 연속 피쳐 컬럼은 숫자로 표현할 수 있는 모든 것입니다. 연령, 급여 및 최대 주행 속도와 같은 기능은 모두 연속 피쳐 컬럼을 사용하여 나타낼 수있는 것의 예입니다. 자세한 정보는 TensorFlow 선형 모델 학습서 의 "기본 연속 피처 열(Base Continuous Feature Columns)"섹션을 참조하시기 바랍니다.

학습 및 분류 데이터 활용

이 예에서 스피드 데이트 데이터 세트의 사람들은 특성, 살아온 삶 및 관심 분야를 나열한 방식으로 구성된 벡터로 표시됩니다.

Person <traits, biographical info, interests>

학습 데이터는

<Person A, Person B, 0>

여기서 최종 값은 일치 또는 일치하지 않는 것을 기준으로 0 또는 1입니다.

분류 데이터는 다음과 같이 전달됩니다.

<Person A, Person B, 0>

여기서 결과는 예측 된 일치를 기준으로 0 또는 1입니다.

다음 다이어그램에서 선형 분류 기준 모델을 학습하기 위해 학습 데이터가 전달되고 일치 가능성에 따라 0 또는 1을 출력하기 위해 분류 데이터가 TensorFlow 모델을 통해 전달됨을 알 수 있습니다.

 

TensorFlow 및 SingleStore로 사랑(Love) 예측

이 인프라를 사용하면 자체 정보를 믹스(mix)에 추가할 수 있습니다. 이 경우 개인의 데이트 정보를 분류 워크 플로우에 제공하고 매칭 가능성을 예측할 수 있습니다. 유효성을 평가하기 위해 매칭 항목을 보고 직접 선택한 항목을 나타내는 지 확인할 수 있습니다.

전체 아키텍처는 여러 가지 장점을 제공합니다. Kafka를 통한 새로운 데이터의 간단한 스트리밍을 지원하고 즉시 사용 가능한 TensorFlow 모델을 사용하며 SQL로 쉽게 쿼리 할 수 있는 형식으로 데이터를 유지합니다. 기본적으로 데이터를 SingleStore로 스트리밍하고 동시에 분류하는 기능을 제공합니다. 이에 대한 자세한 내용은 TensorFlow 모델 제공에 대한 설명서를 참조하시기 바랍니다.

이 애플리케이션의 데모를 실제로 보고 싶다면 Strata Data Conference New York 2017의 10 분짜리 비디오 "Real-Time Machine Learning with TensorFlow, Kafka and SingleStore"를 확인하시기 바랍니다.

https://www.youtube.com/watch?v=g31LFfU9lMI&t=2s

 


https://www.infoworld.com/article/3237166/real-time-machine-learning-with-tensorflow-kafka-and-memsql.html

Real-time machine learning with TensorFlow, Kafka, and MemSQL

How to build a simple machine learning pipeline that allows you to stream and classify simultaneously, while also supporting SQL queries

www.infoworld.com

​※ www.a-platform.biz | info@a-platform.biz