Nesnelerin interneti platformları için makine öğrenmesi tabanlı bir tahmin modülü
A machine learning based prediction module for internet of things platforms
Yazar: HALİL GÜLAÇAR
Danışman: DR. ÖĞR. ÜYESİ YUSUF YASLAN
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2018
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Makine öğrenmesi yöntemleri = Machine learning methods ; Nesnelerin interneti = Internet of things ; Veri madenciliği = Data mining

Özet:
Ağ teknolojilerindeki gelişmeler ile birlikte, son yıllarda internete bağlanabilen nesne sayısında önemli bir artış meydana gelmiştir. İnternete bağlanabilen nesne sayısının milyarlar ile ölçülmeye başlaması, çoğunluğu sensör niteliği taşıyan bu nesnelerin izlenmesi, yönetilmesi ve verilerinin analiz edilmesi eylemlerini lüks olmaktan çıkarıp zorunluluk haline getirmiştir. Bunun sonucu olarak, nesnelerin interneti platformları ortaya çıkmıştır. Nesnelerin interneti platformları sayesinde, platforma bağlanan nesnelerin uzaktan izlenebilmesi, emir verilebilmesi ve ortam bağımsız bir platform üzerinden yönetilebilmesi mümkün kılınmıştır. 
Bu tez çalışması kapsamında, bir nesnelerin interneti platformu olan ve Avrupa Birliği (AB) 7. Çerçeve Programı (FP7) destekli proje olan VITAL (Virtualized programmable InTerfAces for smart, secure and cost-effective IoT depLoyments in smart cities) üzerinde kayıtlı sensörler için, belirli aralıklarla kısa ve uzun süreli veri tahmini yapan bir tahmin modülü geliştirilmiştir. Modül için yapılan çalışmalar önyüz ve arkauç web yazılım çalışmaları ve makine öğrenmesi çalışmaları olarak iki ana başlık altında toplanabilir.
Modülün VITAL platformu ve hizmet alıcısı ile iletişimi sağlayan, makine öğrenmesi çalışmaları sonucunda belirlenen regresyon modelinin sunucu üzerinde işlerliğini sağlayan kısımları için yapılan çalışmalar önyüz ve arkauç web yazılım çalışmaları olarak adlandırılmıştır. Bu çalışmalar sırasında Java, RESTful, Weka, MongoDB, HTML, CSS, JavaScript teknolojileri kullanılmıştır.
Modülün makine öğrenmesi çalışmaları ise Python, Scikit-learn ve MongoDB teknolojileri kullanılarak gerçekleştirilmiş olup, web sunucusu üzerinde çalıştırılacak modelin belirlenmesi noktasında kritik bir rol almıştır. Bu çalışmalar için İstanbul Büyükşehir Belediyesi (İBB) Trafik Kontrol Merkezi (TKM) tarafından D100 karayolu üzerine yerleştirilmiş, VITAL platformuna bağlı, hız ölçümü yapan 122 sensörün 1 Ocak 2014 – 31 Aralık 2014 tarihleri arasında ölçtükleri araç hız verileri kullanılmış ve sensörlerin 30 dakika sonraki hızlarının asgari hata ile tahmin edilmesi hedeflenmiştir.
Makine öğrenmesi çalışmalarının ilk aşamasında verilerin hazırlanması işlemi gerçeklenmiştir. Öncelikle koordinat bilgisi bulunmayan, bazı aylarda hiç veri göndermemiş olan ve yolun uç noktalarında oldukları için komşu sensörleri bulunmayan sensörler veri kümesinden çıkarılmıştır. İkinci olarak, komşu sensör etkisinin ölçülmesi amacı ile, koordinatları bilinen fakat komşuluk ilişkileri belirtilmemiş sensörlerin komşuluk ilişkilerinin saptanması işlemi yapılmıştır. Örneklem sensörlerinin veri gönderme sıklığı sabit olmamakla birlikte ortalama 1,5 dakikada bir veri gönderilmektedirler. Son olarak, bu verilerin zamansal anlamda ortaklanması ve yüksek salınımlardan arındırılması amacı ile 5'er dakikalık zaman dilimleri içinde ölçüm değerlerinin ortalamaları alınmış, veri kümesi sonraki aşamalara hazır hale getirilmiştir.
Bir sonraki aşama olan öznitelik vektörünün belirlenmesi işlemi için sensörün, 15 dakikalık zaman aralıklarıyla seçilen ve 60 dakika önceki ölçümüne kadar varan önceki hız verileri, komşu sensörlerinin verileri, tahmin edilecek zamana ait gün, saat ve dakika dilimi bilgileri kullanılmıştır. Oluşturulan öznitelik kümeleri z-score yöntemi ile normalleştirilmiştir. 
Veri kümesi, 2 ay modelin eğitilmesi ve 1 ay sınanması için kullanılacak şekilde 2+1 kayan pencere yöntemi ile parçalara ayrılmıştır. Bu parçalar üzerinde regresyon ve sınıflandırma işlemleri yapılmıştır. Regresyon işlemi için Karar Ağacı Regresyon (KAR), Gradient Boosting Regresyon (GBR), K-Nearest Neighbours Regresyon (KNN), Kernel Ridge Regresyon (KRR), Random Forest Regresyon (RFR), Destek Vektör Regresyon (DVR) yöntemleri uygulanmıştır. Tahminlerin doğruluk değeri ise Root Mean Square Error (RMSE) yöntemi ile değerlendirilmiştir. Sınıflandırma işlemi için ise Karar Ağacı Sınıflandırıcı (KAS), Gradient Boosting Sınıflandırıcı (GBS), K-Nearest Neighbours Sınıflandırıcı (KNN), Random Forest Sınıflandırıcı (RFS), Destek Vektör Sınıflandırıcı (DVS) yöntemleri uygulanmıştır. Tahminlerin doğruluk değeri ise yüzdelik başarı oranı ile değerlendirilmiştir.
Sonuç olarak, regresyon işlemleri için yöntemler arasında büyük farklılıklar bulunmamakla birlikte KRR yöntemi 2 önceki sensör verisinin de dahil edildiği öznitelik kümesi üzerinde, diğer kombinasyonlara nazaran daha iyi tahminlerde bulunmuştur. Bununla birlikte, komşu sensör ilişkisinin tüm sensörler için gerçeklenememesi ve web uygulamasının üzerinde çalıştığı sunucu özellikleri göz önüne alınarak VITAL Tahmin Modülü içinde komşu sensör özelliğinin yer almadığı ve yüksek işlem gücü gerektirmemesi açısından KAR yönteminin kullanıldığı bir yapı oluşturulmuştur.

Abstract:
In recent years, one of the most popular topics in computer science is internet of things (IoT). Developments in network technologies enable that objects can more easily connect to wireless network and rapidly send and receive data. These improvements cause that more different types of objects, used in more different areas, are connected to wireless networks. This situation makes monitoring and managing of these objects necessary. IoT platforms are developed in order to meet this need. Users can monitor sensors' current status and manage sensors in IoT platforms.
Another popular topic is smart city, which is a multidisciplinary topic. Making smarter city means monitoring and managing city resources in a central control system. Therefore, city authorities, which aims to make their cities smarter, focus on IoT platforms. They can monitor many physical changes from air quality to traffic status in one system by connecting their city's sensors to IoT platforms. However, it isn't enough for now. Prediction of sensor observations in the future is also critical in order to early response for possible negative situations. In this thesis work, a machine leaning based prediction module is developed for an IoT platform named as VITAL (Virtualized programmable InTerfAces for smart, secure and cost-effective IoT depLoyments in smart cities).
VITAL, which is an internet of things platform, produced as product of European Union (EU) 7th Framework Program (FP7) supported project, is used as sample platform for prediction module. VITAL platform enables to connect directly sensors and existing sensor clouds which are local IoT platforms. In these ways, many types of sensors from speed to weather in many locations from İstanbul, Turkey to Galway, Ireland are connected to VITAL platform. A prediction module, that predicts short and long term sensor data, is developed using Java, RESTful, Weka, MongoDB, HTML, CSS, JavaScript technologies and mounted to VITAL IoT platform. VITAL Prediction Module development works can be collected under two main phases as frontend and backend web software works and machine learning works.
Frontend and backend web software works describe development works on parts of the module that enable communication with VITAL Security Module and Data Management Service (DMS) module, communication with client using RESTful, backend and frontend services. Additionally, web software works include regression operations, whose methods are specified according to results of machine learning operations, on VITAL server. 
As the first product of these works, "Service.war" web application is developed using Java programming language, Maven package manager and RESTful web service technologies. It receives predicted data request from client. Then, it communicates with VITAL Security module in order to check the client's access token which is sent in request header. It receives predicted data from MongoDB database according to request body. It has also frontend application that is written by HTML, CSS and JavaScript technologies in order to display records in VITAL platform. 
Secondly, "Train.jar" application is developed using Java programming language, Maven package manager, RESTful web service and Weka machine learning tool. It gets sensor data from VITAL DMS module and trains selected regression method on these data. It dumps produced models into a folder name "Models". Then, it predicts long-term data which don't need to get simultaneous measurement data. Long term predicted data are inserted into MongoDB database. It is scheduled to work once a week and receives 2 weeks sensor data for training operation.
Finally, "Predict.jar" is developed using Java programming language, Maven package manager, RESTful web service and Weka machine learning tool. It receives simultaneous measurements from VITAL DMS and trained models in "Models" folder. Then, it runs trained models on received data and produces predicted data for following 2 hours. As the last operation, it inserts short-term prediction results into MongoDB database. It is scheduled to work once a 15 minutes and receives 1 hour sensor data for prediction operation. 
Machine learning works played a critical role for specification of machine learning model which is run on web server by "Train.jar" and "Predict.jar". Python programming language, Scikit-learn machine learning tool and MongoDB database technologies are used during these works. For machine learning works, 122 vehicle speed sensors, whose local cloud is mounted to VITAL platform by Istanbul Metropolitan Municipality (IMM) Traffic Control Center (TCC), are selected as sample sensor set. These sensors are placed on D100 road. This road is one of the most problematic and chaotic roads in Istanbul. Because, 2 international airports and 1 bridge, that connects Asia and Europe continents, are located on this road. Sensors' speed measurements between 1 January 2014 and 31 December 2014 are selected as base dataset. Prediction of speed measurements at 30 minutes ahead with minimum error is aimed for machine learning works.
The first phase of machine learning works is data pre-processing operations. Firstly, sensors have following lacks are removed from dataset: 
•	Sensors that have no coordinate information 
•	Sensors that don't send any measurement data in some months
•	Sensors that don't have enough number of neighbour sensor because of their locations
Dataset includes coordinate information of sensors, but it doesn't include neighbourhood information. Therefore, neighbourhood relations between sensors are detected by using coodinate information as second operation. Selected sensors send data once in approximately 1.5 minutes. Finally, sensor measurements are averaged in 5 minutes time slices in order to dedifferentiate measurement times and avoid high fluctuations.
The next phase is determination of feature vector of machine learning model. To do this, following features are selected: speed measurements of sensors at 0, 15, 30, 45 and 60 minutes ago, measurements of previous 2 and next 2 neighbour sensors, datetime-base features which are weekday, hour and 15 minutes time slice binary vectors. Generated feature sets are normalized by using z-score method. 
Feature set is splitted to 10 sub feature sets by 2+1 sliding window method, which means that data measured in the first 2 months of each window are used for training and third month data are used for testing operations, then train-test window is slided to next month. 
On generated sub feature sets, following regression methods are applied: Decesion Tree Regressor (KAR), Gradient Boosting Regressor (GBR), K-Nearest Neighbours Regressor (KNN), Kernel Ridge Regressor (KRR), Random Forest Regressor (RFR), Support Vector Regressor (DVR). Prediction results are evaulated by using Root Mean Square Error (RMSE). Additionally, following classification methods are applied: Decesion Tree Classifier (KAS), Gradient Boosting Classifier (GBS), K-Nearest Neighbours Classifier (KNN), Random Forest Classifier (RFS), Support Vector Classifier (DVS). Prediction results are evaulated by using classification accuracy.
In result of study, for regression operations, there is no big differences between average RMSE scores of feature vectors. But, it is observed that feature vector, that includes old sensor measurements, predicted datetime's weekday, hour and time slice information, previous second sensor's data, gives the best result with 14.49 average RMSE score. Additionally, Kernel Ridge Regressor (KRR) gives the best average results on feature vectors. The minimum RMSE score (13.79) is observed in results of KRR method on feature vector with previous second sensor's measurement (jv=[-2]). 
For classification operations, it is observed that feature vector, that includes old sensor measurements, predicted datetime's weekday, hour and time slice information, gives the best result with 74.19 accuracy. Additionally, Support Vector Classifiers (DVS) gives the best average results on feature vectors. The maximum accuracy (75.34) is observed in results of DVS method on feature vector with previous one sensor's and next one sensor's measurements (jv=[-1,+1]).
As a product of this thesis work, VITAL Prediction Module is developed. Feature vector that doesn't include neighborhood relation between sensors, is used in the module, because of the fact that VITAL platform doesn't have any neighborhood relation for sensors. One of the critical issues for IoT platforms like VITAL, is rapid access to information. Additionally, VITAL servers doesn't allocate enough computational power for modules. Because of these reasons, Decision Tree Regression (KAR) method is used for prediction of sensor data. In conclusion, VITAL Prediction Module is published as HTTP/REST APIs and a frontend application for VITAL users.