Bilgisayar Bilimleri Lisansüstü Programı - Yüksek Lisans
Bu koleksiyon için kalıcı URI
Gözat
Konu "Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol" ile Bilgisayar Bilimleri Lisansüstü Programı - Yüksek Lisans'a göz atma
Sayfa başına sonuç
Sıralama Seçenekleri
-
ÖgeAraç Renk Tanıma Sistemi(Bilişim Enstitüsü, ) Dule, Erida ; Gökmen, Muhittin ; 371524 ; Bilgisayar Bilimleri ; Computer ScienceSon yıllarda, teknolojinin gelişmesiyle uzaktan algılama ve tanıma sistemleri hayatımızın her alanına girmeye başladı. Çoklu ortamların giderek yaygınlaşması ve ucuzlamasıyla birlikte renk tanıma ile ilgili çalışmalar önem kazanmıştır. Çünkü, renk, resim ve video gibi görsel öğelerde nesneleri ayırt etmek için önemli bir özelliktir. Ancak, renk ışık kaynağının açısına ve şiddetine, gölgeye, hava koşullarına ve kameranın bakış açısına göre değiştiği için görüntüleri gösteren sabit bir eleman değildir. Bu nedenle dış ortam görüntülerinde yansıyan yüzeyli nesnelerin renklerinin tanınması zor ve ilgi çekici bir problemdir. Bu çalışmada dış ortamda ve hareket halindeki araçların renklerini tanıyan gerçek zamanlı bir sistem geliştirilmeye çalışılmıştır. Sistemi gerçekleştirmek için farklı renk tanıma bölgeleri, farklı öznitelikler ve farklı sınıflandırma yöntemleri kullanılmış veya geliştirilmiş, aralarındaki en iyi kombinasyon bulunmaya çalışılmıştır. Sistem yedi farklı rengi tanımak için tasarlanmıştır: beyaz, gri, kırmızı, mavi, sarı, siyah ve yeşil. Araç görüntülerinden meydana gelen veri tabanının oluşturulması için otoban kenarına kameralı bir bilgisayar düzeneği kurulmuş ve yoldan geçen hareket halindeki araçların görüntüleri çekilmiştir. Bu video görüntülerinin her bir karesi plaka tanıma sistemi kullanılarak elekten geçirilmekte ve plakalı araçların olduğu görüntüler seçilmektedir. Böylece görüntülerdeki cismin bir araç olduğu %99 oranında saptanmış olmaktadır. Renk tanıma sistemi bu işlemden sonra devreye girmektedir. İlk olarak, aynı araca ait peş peşe görüntülerden araç renk tanıma (ART) sisteminde kullanılacak olan görüntüye ?Uygun Kare Seçimi? algoritması ile karar verilmektedir. Uygun kare seçimi yapıldıktan sonra, seçilen görüntüdeki aracın renginin belirlenmesi için uygun bölgenin (ROI : Region of Interest) seçilmesi gerekmektedir. ROI seçimi için üç yöntem denemiş, iki yöntemde karar kılınmıştır: kaput parçası ROI ve yarım araç ROI. Kaput parçası ROI betik (piksel) seçerek oluşturulan öznitelik vektörleri için, yarım araç ROI ise histogram tabanlı öznitelik vektörlerinin oluşturulması için daha uygun yöntemlerdir. Bu çalışmada üç farklı öznitelik vektörü oluşturma yöntemi geliştirilmiştir. Bunlar histogram tabanlı öznitelik vektörü, ekli histogram tabanlı öznitelik vektörü ve piksel tabanlı öznitelik vektörü oluşturma yöntemleridir. Öznitelik vektörleri, renklerin ifade edildiği farklı renk uzayı bileşenlerinden oluşturulmaktadırlar. Piksel tabanlı yöntemde her bir öznitelik, rengin sayısal ortamda ifade edildiği bileşenleri cinsinden (RGB) ve bu bileşenlerin normalize rgb, HSV, L*a*b, L-color gibi farklı renk uzaylarına çevrilmesiyle elde edilen sayısal değerini ifade etmektedir. Histogram tabanlı öznitelik oluşturma tekniğinde ise, renk uzayı bileşenlerinden bir ve iki boyutlu normalize histogramlar oluşturulmaktadır. Öznitelik vektörleri ise bir yada birden çok histogramın art arda sıralanması ile elde edilmektedirler. Araç renk tanıma sisteminde son olarak öznitelik vektörlerinin sınıflandırması algoritması yer almaktadır. Bu aşamada Şablon Eşleştirme (TM), K En Yakın Koşu (K-NN), Yapay Sinir Ağları (ANN) ve Destek Vektör Makineleri (SVM) sınıflandırma modelleri araştırılmış, farklı koşullarda yapılan testler sonucunda en iyi performansı veren sınıflandırma yöntemi seçilmiştir. Sınıflandırma aşamasında bir ileri adım olarak Karar Ağacı oluşturulmuştur. Karar ağacı oluşturulurken iki yaklaşım izlenmiştir: Biri tahmini yaklaşım ile ağaç oluşturma diğeri ise hesaplamalı yaklaşım ile eğitim kümesi kullanılarak Iterative Dichotomiser 3 (ID3) algoritması yardımıyla karar ağacının oluşturulması. Tahmini karar ağacı yönteminde ağacı oluştururken izlenen yaklaşım, renkleri en farklı özelliklerine göre ayırmak olarak söylenebilir. Ağacın kökünden başlanarak her karar düğümünde her sınıflandırma yönteminin, her bir öznitelik vektörü oluşturma yöntemi ve her bir öznitelik vektörü için sınıflandırma oraları hesaplandı. Testler sonucunda yukarıda sıralanan tüm yöntemlerin birbirleriyle nasıl çalıştıkları ve performansları elde edilmiş oldu. Yapılan testler sonucunda piksel tabanlı öznitelik vektörleri kullanılarak elde edilen en yüksek başarı oranı ANN sınıflandırıcısı ve ?Rn Gn H S L b I1 I2 L1 L3 ?1? öznitelik vektörü ile %82.1 olarak bulunmuştur. Histogram tabanlı öznitelik vektörlerinin sınıflandırılmalarıyla yapılan testlerde de yine ANN modeli diğer sınıflandırıcılardan daha iyi performans sağlamış ve ?RnGn SH Gray1 L-b L1-L2 L1-L3? histogram öznitelik vektörü yarım araç ROI'de %83.89 başarı oranını yakalamıştır. Oluşturulan histogramların normalize edilmeleri ve bin sayısındaki değişiklik renk tanıma performansını önemli ölçüde arttırdığı, öznitelik vektörünün birim vektör haline getirilmesinin ise renk tanıma performansını değiştirmediği gözlenmiştir. Tahmini karar ağacının oluşturulmasıyla yapılan demeler sonucunda öznitelik vektörlerinin türüne göre oluşturulan üç farklı karar ağaçlarının başarı oranları sırasıyla histogram ağacı (histogram öznitelik vektörlerin sınıflandırılması), ekli histogram ağacı ve orta değer ağacının (piksel öznitelik vektörlerinin sınıflandırılması) performansları olarak sıralanmaktadır. Karar ağaçlarının her düğümünde en iyi renk tanıma sonucunun veren farklı öznitelik vektörü ve sınıflandırma modeli çiftleri elde edilmiş, histogram ağacında kök düğümünde R?G?B (renkli) ve R=G=B (renksiz) olarak ayrıştırılan örnekleri en iyi ayıran öznitelik vektörü ve sınıflandırıcı çifti ?RnGn SV Gray1 Gray2 a-b L1-L2 L1-L3? : TM iken, R?G?B düğümünde örnekleri kırmızı, sarı ve mavi-yeşil renk sınıflarına en iyi ayıran öznitelik ve sınıflandırıcı çifti ise ?RnGn SH Gray2 a-b L-a L1-L3? ve ANN modelidir. Histogram tahmini ağacı ile sınıflandırma yapılırsa sistemin toplam başarısı %87,828 olarak elde edilmektedir. Farklı sınıflandırma modeli ve öznitelik vektörleri ile oluşturulan tahmin ağaç sınıflandırma yöntemi daha yüksek başarı oranları vermesine rağmen, gerçek zamanlı bir sistemde oluşan zaman kısıtı nedeniyle tercih edilmeyebilir. Bu durumda histogram tabanlı öznitelik vektörü ?RnGn SH Gray1 L-b L1-L2 L1-L3? , yarım araç ROI veri kümesi kullanılarak ANN sınıflandırıcısı araçların renk tanıma işlemi için seçilmelidir.
-
ÖgeGenetik Programlama İçin Alana Özgü Programlama Dili(Bilişim Enstitüsü, ) Çayıroğlu, Cem Basar ; Uyar, A. Sima ; 371517 ; Bilgisayar Bilimleri ; Computer ScienceGenetik Programlama[1] (GP) evrimsel algoritmaların bir formu olup, bireylerin temsil ediliş şekli ağaçtır. Genetik programlama ile uğraşan araştırmacılar çalışmalarının tasarım, uygulamaya geçiş ve de test aşamalarında birçok yardımcı araç kullanırlar. Bu araçlar içinde C++ ve Java tabanlı çatılar son yıllarda en çok kullanılan çatılardır. Bu çatılar GP projelerinde uygulamaya geçiş süresini kısaltmakta fakat genelde taban dilleri hakkında derin bilgiye sahip olmayı gerektirmektedir. Dahası, taban programlama dillerinin limitleri yüzünden, araştırmacılar GP alanında projelerinde iyi bir soyutlama yapamamaktadır. Alana özgü diller [2] (DSL) programlama dilleri olup o alana özel olarak tasarlanmıştır. Örnek olarak, SQL bir alana özgü dil olup veritabanlarına özel olarak geliştirilmiştir. Genel amaçlı programlama dilleri ile kıyaslamak gerekirse alana özel diller o alan için daha çok anlatımcıdır çünkü o alanda olan bir algoritmayı anlatabilecek daha doğal bir yol sağlarlar. Bu anlatımcılığı arttıran özeliği sayesinde araştırmacıların üretkenliği artar ve tecrübesiz programcıların bu alanda daha kolay uygulama geliştirmesine yardımcı olur. Bu çalışmada, genetik programlama için alana özgü bir programlama dili geliştirdik. Alana özgü dil geliştirmek için Xtext[3] adlı Eclipse platformu üzerinde çalışan programlama dili geliştirme aracı kullandık. Xtext gramer denetimi ve de kod üretimi özellikleri vardır. Kod üretimi özelliği sayesinde genel amaçlı programlama dilleri, Xtext tarafından geliştirilmekte olan alana özgü dilden üretilebilir. Alana özgü dil geliştirmek için, ilk olarak genetik programlama alanı analiz edildi. Daha sonrasında geliştirilecek olan dilin grameri tasarlandı. Daha sonraki aşamada ise alana özgü dili Java programlama diline çevirecek kod üretici modül geliştirildi. Geliştirilen alana özgü dil GP 'de bulunan üst seviye operasyonları desteklemektedir. Bunlar arasında; seçme, çaprazlama, mutasyon vardır. Bunun yanında daha alt seviye ağaç işlemlerini de desteklemektedir. Geliştirilen alana özgü dili kullanarak genetik programlama araştırmacıları karışık ağaç işlemlerini kolayca yapabilirler. Geliştirilen primitif komutlar ile araştırmacılar yeni GP operasyonları tanımlayabilirler.
-
ÖgeHareket Algılayan Duyargalar İle Üç Boyutlu Uzayda Hareket Kestirimi(Bilişim Enstitüsü, ) Küççük, Cem ; Altılar, Turgay ; 371520 ; Bilgisayar Bilimleri ; Computer ScienceSon yıllarda bilgisayar bilimleri alanında sanal gerçeklik konusunda yapılan çalışmalarda büyük bir artış gözlemlenmektedir. Sanal gerçeklik kullanıcının, bilgisayar ortamında benzetimi yapılmış gerçek veya sanal bir ortam ile etkileşimde bulunmasına izin veren bir teknolojidir. Sanal gerçeklik ile çok yakından ilgili olan insan-makine ara yüzü tasarımı teknolojileri de kullanıcıların bilgisayar programları ile etkileşimini en üst düzeye çıkarma amacına sahiptir. Bu yaklaşım göz önünde bulundurularak tez kapsamında bir sanal gerçeklik uygulamasında kullanılmak üzere kullanıcının elindeki ve denetimindeki bir nesnenin üç boyutlu uzaydaki hareketinin tespit edilmesi hedeflendi. Bu amaçla üç eksende doğrusal ivme ve açısal hız bilgilerine erişilebilen bir donanım kullanıldı. Üç eksen ivmeölçere (?accelerometer?) ve üç eksen açısal hız duyargasına (?gyroscope?) sahip olan bir ataletsel ölçüm ünitesi (AÖÜ) kullanılarak altı serbestlik derecesine sahip (6 DOF) bir sistem elde edilmektedir. Tez kapsamında elde edilen bu sistem için kalman filtresi kullanılarak üç boyutlu yönelim, hız ve konum kestirimi gerçekleştirildi. AÖÜ'ler başlıca hava/kara/deniz araçlarında (insansızlar da dâhil) olmak üzere birçok farklı alanda kullanılmakta, bu alanlara göre farklı hassasiyetlerdeki ve teknik özelliklerdeki duyargalarla oluşturulmaktadır. İnsansız bir hava aracının ataletsel seyir sisteminde ele alınan hareket kestirimi problemi temelde bir oyunda kullanılan kumandanın hareket kestirimi ile aynı prensiplere sahiptir. Sanal gerçeklik uygulamalarında kullanılmak üzere üretilen ucuz maliyetli duyargaların kararlılığı ve doğruluğu, diğer alanlarda kullanılan duyargalara göre daha azdır. Bu gibi durumlarda kestirim algoritmalarının daha güçlü olması ve ham duyarga verisindeki hataları daha iyi şekilde süzmesi gerekmektedir. Üç eksen ivmeölçer ve açısal hız duyargasından oluşan bu dinamik sistemin durum denklemlerinin, durum geçişlerinin ve hata karakteristiklerinin çıkartılması, bu çıkarımlar kullanılarak bir kestirim ve takip algoritmasının çalıştırılması gerekmektedir. Kalman filtresi ataletsel seyir sistemleri dâhil birçok dinamik sistemin durum kestirimi ve takibi için yaygın olarak kullanılan etkin bir filtredir. Bu yüzden yapılan çalışmalarda kalman filtresi kullanıldı. Yönelim hesaplamalarında kullanılan açı, koordinat dönüşüm matrisi ve dördey (?quaternion?) tabanlı yöntem sonuçları ile kalman filtresi ile düzeltilerek elde edilen sonuçlar karşılaştırıldı ve iyileştirmeler gözlemlendi. Konum kestirimine getirilen hareket sonlandırma yaklaşımı ile iyileştirmeler elde edildi. Yazılım mimarisi açısından modüler, geliştirmeye açık, sisteme uyarlaması kolay, platformdan bağımsız bir hareket kestirim kütüphanesi geliştirildi. Bu kütüphaneyi kullanan uygulamaya yönelik bir arayüz tasarlanarak gerçekleştirildi.
-
ÖgeHeterojen Dağıtılmış Sistemlerde Cephe Atama(Bilişim Enstitüsü, ) Bulu, Samet ; Buzluca, Feza ; 371507 ; Bilgisayar Bilimleri ; Computer ScienceProblemi, nesne adı verilen modüler parçalara ayrıştıran nesneye yönelik programlama günümüzde en sık tercih edilen programlama tekniğidir. Nesneye yönelik programlama her ne kadar ilgilerin ayrıştırılması konusunda büyük imkanlar sağlasa da loglama, performas gözleme, ön bellekleme, kimlik doğrulama ve yetkilendirme gibi dik kesen ilgilerin ele alınmasında zorluklar yaşamaktadır. Cepheye yönelik programlama, dik kesen ilgileri cephe adı verilen parçalara ayrıştıran bir çözüm olarak önerilmiştir. Cephe adlı bu parçalar örme adı verilen bir işlem ile ana programa birleştirilir. Son yıllarda dağıtılmış sistemlerin kullanımının artmasıyla birlikte dağıltılmış cepheye yönelik programlama da popüler hale gelmiştir. Dağıltılmış cepheye yönelik programlamada cepheler, her biri farklı bellek ve işlem gücüne sahip bir dizi düğüme yüklenir. Geleneksel uzak method çağrımına benzer şekilde uzak kesim noktaları tarafından cephe içinde yer alan method benzeri yapılar uzak düğümler üzerinde çalıştırılır. Cephelerin sistem üzerinde nasıl dağıtıldığı önemlidir ve programın performansını etkiler. Çünkü nesneler ile cepheler arasında bir ilişki vardır. Nesneden cepheye bir çağrı olduğunda arada veri transferi gerçekleşir. Bu işlem bir süre gerektirir ve bu süre transfer edilen verinin miktarına ve transfer esnasında kullanılan iletişim yolunun kapasitesine bağlıdır. Dolayısıyla, cepheler dağıtılmış sistem üzerinde düğümlere atanırken düğümlerin işlem kapasiteleri, iletişim yolu parametreleri, transfer edilen veri miktarı gibi sistemin ve programın özellikleri dikkate alınmalıdır. Her ne kadar günümüze kadar çok sayıda iş atama yöntemi tanımlanmış olsa bunların hiç biri cephelerin atanması ile ilgilenmemiştir. Tez kapsamında ilk olarak, heterojen dağıtılmış sistemlerde cephe atama problemi gerekli tüm özellikler dikkate alınarak tanımlanmıştır. Sonrasında dağıtılmış cepheye yönelik programlamada yer alan bu problemi çözmek üzere A*, GA ve PSO algoritmaları uygulanmıştır. Ayrıca dağıtılmış cepheye yönelik program performansını arttırmak üzere cepheleri düğümlere atama işlemi esnasında gerekli cephelerin kopyalarını oluşturan yeni bir algoritma önerilmiştir. Son olarak algoritmaların farklı sistemler ve programlar üzerinde etkinlikleri değerlendirilerek, rastgele atama yapan bir algoritmaya göre sağlamış oldukları performans artışı karşılaştırılmıştır. Yapılan deneyler çok düğüme sahip büyük sistemlerde GA ve PSO algoritmalarının, daha küçük sistemlerde ise A* algoritmasının tercih edilebileceğini göstermiştir. Diğer taraftan cephelerin kopylarının kullanılması belirli bir seviyeye kadar maliyet değerlerini düşürmüş ve performansta artış sağlamıştır. Son olarak cephelerin uygun şekilde atanması dağıtılmış cepheye yönelik program performansını arttırdığı gözlemlenmiştir.
-
ÖgeHibrit Film Öneri Sistemi(Bilişim Enstitüsü, ) Uluyağmur, Mahiye ; Çataltepe, Zehra ; 371572 ; Bilgisayar Bilimleri ; Computer ScienceThe number and kind of available content and the number of users who can view them have increased tremendously in both movie/television and music domains. Therefore, recommendation systems that can accurately recommend to a certain user the set of products that he would most likely be interested and as fast as possible, have become important. While content based recommendation systems use features of products a user has viewed so far and they are domain dependent, domain independent collaborative filtering systems use only the ratings given to each product by a number of users. There are some shortcomings of both collaborative and content-based recommendation systems. Cold-start problem is one of the most important problem of the collaborative filtering systems. If a movie is not watched in the training set, this movie can not be recommended to any user. Content-based system can solve this problem. Moreover if a user is new in the system namely if s/he did not watch any movies, collaborative filtering system can not recommend any movies to this user either. In order to solve the new user problem user demographics can be used, however they tend to be not so reliable for many domains. In our system we first observe the watching behavior of a user for a number of movies and then do recommendations. Content-based recommendation systems rely on content features which need to be extracted. Rating matrices are generally sparse and high dimensional matrices, so it is costly to work with large matrices. In collaborative filtering system matrix factorization methods can generate low dimensional user and item factors to solve the sparsity problem. Content-based recommendation systems rely on content data gathered for a specific user and if too complex models are chosen they may suffer from overspecialization. Different hybrid recommendation systems that integrate content and collaborative recommendation systems have been proposed in the literature. In this thesis, content-based, collaborative and hybrid TV movie recommendation methods are proposed and evaluated. In the content-based recommendation system as the content for a movie, we use information such as movie actor, producer, genre and also words obtained from the movie summaries. In addition to these fields, computed (implicit) ratings which users give to the movies are used in the content-based system. Another recommendation method used in this work is the collaborative filtering method. Collaborative filtering method uses only users? ratings for movies. In this project, we also propose a hybrid movie recommendation system which uses a linear combination of recommendations proposed by the content-based and collaborative filtering methods. Recommendation systems need user ratings. However, for the TV recommendation problem, we do not have explicit ratings from the users. In this thesis, we used the implicit ratings of the movies, which are generated as the percentage of the movie watched by the user over all presentations of the movie. Therefore if a user watched a movie multiple times or different parts in different sessions, the implict rating reflects that. Another contribution of the thesis is the use of different performance evaluation criteria for TV movie recommendation. We evaluate performance of the movie recommendation system by using four evaluation measures. Two of them are the well known information retrieval performance measurements precision and recall. Precision is determined in our system as the number of movies watched by the user in top 10 recommendations divided by 10. High precision means system hits many correct movies in the top 10 recommendation. If a user has watched a lot of content, his/her precision is naturally high. Recall solves this problem since it divides the top 10 hits by the number of movies user u watched in the test set. In addition, two other performance evaluation measures are developed in this thesis: normalized precision and rating weighted normalized precision. Precision gets higher as the number of movies that a user watched in the test set increases and it also gets higher as the number of movies in the test set decreases. Normalized precision takes into account the number of the movies in the test set. Ratio of the number of movies watched by a user and the number of movies in the test set can be used as a normalization term for each user. Normalized precision is precision normalized by this ratio. This ratio is proportional to how much better a recommendation is compared to a uniform random recommendation system to a user who watches movies uniformly random. A recommendation system which recommends movies watched by the user with high ratings is more preferable to another system that recommends the same number of watched movies with low ratings. Rating weighted normalized precision (RWNP) performance measure takes into account the users ratings for the test movies. It is computed as the sum of the ratings of the watched movies in the top 10 recommendations and divided by the ratio of the number of movies that are watched by the user in the test set and the total number of the movies in the test set. The content-based recommendation system uses actor, genre, director and keyword features of movies watched by a user. In the feature extraction phase, first of all a movie-feature matrix which contains the features of all movies in the training set, is created. For a particular user, an existing feature in a watched movie is scaled by the implicit rating for that movie and the sum of the user?s weights for the movie?s features divided by the number of movies that the user watched in the training set gives the weight of a feature for that user. These features are reference features for the recommendation of the test set movies. If a feature weight for a user is greater than the other feature weights it means that the user gives more importance to this feature than the others. This feature weight computation is done separately for four different feature sets: actor, genre, director and keyword. In the test set when movie i will be recommended to the user u, firstly features of the movie i are extracted. Assume that actor feature set is chosen, which actor features movie i contains and whether user u watched such a movie which contains one of these actor features is investigated. If user u watched a movie which contains the actors of the movie i in the training set, then user u rating for movie i is determined by summation of the actor features weights of the user u. While generating ratings according to actor feature set, since usually movies have more than one actor, all available feature weights are summed. On the other hand, according to the director feature set generally there is one director for each movie, so user weights for director features are used directly as ratings for movies. It is observed that ratings generated using the director feature set are more successful than the others, while the genre feature set is also quite successful. Content-based recommendations for each feature set are also combined using three different strategies. Before combination, all generated ratings are normalized to 0-1 range using min-max normalization. In the first combination scheme, different feature sets? ratings are summed directly to generate a new rating for a user to a movie. The second combination scheme takes a weighted sum of the ratings for each feature set. The weight of a feature set is determined as the exponential of the negative mean absolute training set error between the actual ratings and the predicted ratings for that feature set. Weighted sum combination gives better results than sum. The third strategy aims to use the feature set which is likely to be the most successful for a particular user. The feature set with the minimum mean absolute training error for the user is chosen as the feature set to be used for test recommendations. In collaborative filtering, generally explicit feedback recommendation methods where users rank movies explicitly such as likes or dislikes or using scores, are used. However, in TV program recommendation problem, as in many other areas, it is difficult to request the explicit ratings from the user for the programs. Instead of ratings, there is information on how long the user watched an item. For such problems, instead of explicit recommendation methods, implicit methods should be used. In this work, we process the time durations for which users watch the programs to obtain implicit ratings and similar to prior work of others use these ratings for implicit recommendation. The user-movie matrix, which contains the users? ratings for movies can be used to assess similarities between users and movies and hence, for example, movies liked by users similar to the current user can be recommended. However, the user-movie matrix is a very sparse matrix and most user-user and item-item similarities may happen to be just zero. Matrix factorization techniques are used to represent each movie and user in a small number of reduced dimensions where user-item similarities are as close as possible to the ratings given in the training set. We first use the implicit computed ratings as if they are explicit ratings and use explicit matrix factorization methods. While learning the matrix factors, we introduce adaptive learning rate to speed up the learning and we also introduce user/item adaptive regularization. We also use implicit matrix factorization and compare it with the other recommendation methods. Since matrix factorization is a costly procedure which involves many parameters, we also used count based collaborative filtering to measure user-user similarities. In this method when movie i will be recommended to the user u, first the set of users who watched movie i in the training set is obtained. For each of these users, the count of movies liked by user u and that user is used as a similarity between the users. Count based collaborative filtering predicts ratings as the similarity weighted ratings of the users similar to user u for movie i.. In this thesis, we propose two hybrid movie recommendation systems by combining content-based and collaborative recommendation system ratings linearly. The first hybrid system HybridCommonMovie is obtained by combining content-based system and count based collaborative filtering system. The second one HybridMF is generated by combining content-based system and matrix factorization based collaborative filtering system. A weight parameter is used to adjust the contribution of the methods in the linear combination. Experiments were performed to assess the performance of the recommendation algorithms for thirteen months of data. Among all the methods experimented with, the best results are obtained with the HybridCommonMovie systems. For this recommendation system, averaged over all users, precision, recall, normalized precision and rating weighted normalized precision results are better than the other recommendation systems. HybridCommonMovie method also is the method which has the smallest number of parameters that need to be adjusted for different datasets, therefore is the preferred recommendation method for the TV recommendation dataset used in this thesis.