Visualizing Data: Bir Kitap Eleştirisi ve Görselleştirme Örneği

0
FZ
Bu yazıda son zamanlarda gittikçe önem kazanmaya başlayan veri görselleştirme konusuna kısa bir giriş yaptıktan sonra Processing programlama ortamının geliştiricisi Ben Fry'ın bu sene çıkardığı 'Visualizing Data: Exploring and Explaining Data with the Processing Environment' kitabının tanıtımı ve eleştirisini gerçekleştireceğim.

Başka bir deyişle, görselleştirme konusuna ve önemine kısaca değindikten sonra kitabın bu konuda neler söylediği aktaracak ve kitaptan aldığım ilham ile iş dünyasına dair basit bir görselleştirme uygulaması örneği vereceğim: Bilgi Üniversitesi'nin eMBA programına gerçekleşen başvuruların yıllara ve coğrafyaya göre dağılımının animasyonu.
Visualizing Data: Exploring and Explaining Data with the Processing Environment Görselleştirme: Neden Bu Kadar Önemli?

Herhangi bir düşünceyi, veriyi, bilgiyi karşımızdaki bir ya da birçok insana anlatmanın etkili yollarından biri de şekiller, grafikler, animasyonlar ve benzeri görsel öğeler kullanmaktır. İnsan zihni, beyindeki aşırı özelleşmiş görme sisteminin paralel bilgi işleme gücünü devreye soktuğu için görsel bilgi aktarımı, doğrusal yani çizgisel olarak aktarılabilen 'yazılı' veya 'sadece sözel' bilgi aktarımına kıyasla çok daha kısa sürede, çok daha kısıtlı bir alanın çok daha verimli kullanılmasını sağladığı gibi kişinin söz konusu bilgiyi çok daha kalıcı olarak hafızasına yerleştirmesini de sağlar.

Bilginin kitaplara dökülmeye başladığı ilk günden beri, tıp, mühendislik, coğrafya, vb. alanlardaki kitaplarda şemalar, grafikler, haritalar, vb. şekillerde karşımıza çıkan klasikleşmiş görselleştirme örnekleri yukarıda vurguladığımız hususların uzun zamandır göz önünde bulundurulduğuna bir işarettir.

Günümüzde ise veri görselleştirme ('data visualization') artık farklı boyutları bünyesinde barındırmaya ve başka bir kulvardan ilerlemeye başlamıştır. Yüzyıllar bir yana, 20-30 yıl öncesine kıyasla dahi elimizdeki veri miktarının ivmesi gittikçe artmakta, kurduğumuz bilimsel, finansal, vb. modellerdeki ilişkiler karmaşıklaşmakta; bir nevi veri okyanusunda yüzen kişilerin farklı veri tabanlarından akan verileri birbirleri ile ilişkilendirip sonra da elde ettikleri öngörüleri ve perspektifleri başkaları ile kolayca paylaşabilecek grafikleri, animasyonları hazırlayabilmeleri gittikçe bir uzmanlık haline gelmektedir.

Acaba bu uzmanlık alanına girmek isteyen, yani veriyi kolay anlaşılması için açık seçik ve çarpıcı şekilde grafiklere, animasyonlara dökmek isteyen insanların aynı zamanda bilgisayar uzmanı olması şart mıdır?

Görselleştirme: Hangi Araçlar ve Neden Processing?

Bugün sahip olduğumuz yazılımlara baktığımızda görüyoruz ki çok çeşitli görselleştirmeler için hepimizin bir bilgisayar programcısı, uzmanı olması şart değil. Programlamaya dair hiç eğitim almamış insanlar PowerPoint, EXCEL, vb. araçlarla pek çok grafik ve animasyon üretmekte, sayılarla haşır neşir olan ama programlama uzmanı olmayan istatistikçiler de SPPS, R, vb. yazılımlarla gösterişli grafikleri üretebilmektedirler.

Ancak hazır sunum araçlarının, istatistik yazılımlarının ve benzeri türde programların getirdiği şablonlara dayalı grafik üretimi maalesef dikensiz gül bahçesi değildir. Her şeyden önce eldeki veriyi en iyi temsil edecek grafik şablonunu seçmek her zaman başarılı şekilde verilebilen bir karar değildir ve sunumlar yanlış şekilde saçma sapan kullanılmış pasta grafikler yahut gereksiz üç boyutlu çubuk grafiklerle doludur. Bu yetmezmiş gibi ya elinizdeki veriye uygun hiçbir şablon yoksa? Ya üç boyuttan fazlasını barındıran bir veri setiniz varsa? Yahut yepyeni bir görselleştirme yöntemi aklınıza geldiyse? Neden kendinizi kısıtlayasınız? Yepyeni grafik ve animasyon türleri yaratmak işinize gelmez miydi? Peki ama bunun için bilgisayar programlama uzmanı olmanız şart mı?

Processing'in yaratıcısı Ben Fry, yıllar önce bu soruya 'hayır!' cevabını verdi ve Processing isimli görsel veri geliştirme ortamını insanlarla paylaşmaya başladı. Processing programlama dili ve ortamı şu anda dünyada pek çok üniversitenin görsel iletişim tasarım bölümlerinde, programlama işinden çok anlamayan ve haklı olarak anlamak da istemeyen tasarımcıların, görselleştirme araştırmacılarının kullandığı basit ama güçlü bir araç haline geldi.

Java programlama dilini üstüne inşa edilmiş Processing, kendisini kullanan tasarımcıyı Java'nın pek çok detayından ve hamallığından kurtardığı gibi geliştirme ortamı ile sonuçları hızlıca test etme ve çıkan ürünü çeşitli şekillerde paketleyip kolayca Internet üzerinden paylaşabilme imkanı sunmaktadır. Pek çok grafik ve animasyon işini çok az kod yazarak ifade etmeye imkan tanımasının yanısıra uzman Java programcılarının da kendi programlarında kullanabilecekleri bir kütüphane olarak da sunulduğu için sadece tasarımcılara değil uzman programcılara da yardımcı olabilecek durumdadır. Beklendiği gibi sistem pek çok örnekle ve fonksiyon belgelendirmesi ile gelmektedir ancak görselleştirme gibi soyut ve geniş bir alan söz konusu olduğunda aracın kendisi ve kullanım kılavuzu tek başına ne kadar yeterli olabilir?

Visualizing Data: Verilerinizi Processing ile Keşfetme ve Açıklama Kılavuzu

Sorunun cevabı yine Ben Fry tarafından yazılmış ve 2008 yılının Ocak ayında çıkmış 'Visualizing Data: Exploring and Explaining Data with the Processing Environment' kitabında yer almaktadır. Bu eser, Processing ile ilgilensin ilgilenmesin tüm görselleştirme araştırmacılarının, pratik olarak bir veriyi görsel şekilde sunmak üzere tasarım yapanların ve programcıların faydalanabileceği değerli bir kaynaktır.

Ben Fry, kitapta önce genel olarak herhangi bir görselleştirme projesinde takip edilmesi gereken adımları anlatmakta ve ardından çeşitli verilerin ve veri tabanlarının Processing ile nasıl görsel bir ortamda sunulabileceklerine dair somut örnekler vermektedir.

Kitaptaki somut uygulamalardan birkaç örnek vermek gerekirse: haritalarla farklı veri tabanlarını birleştirme, zaman serileri, bağlantıları ve korelasyonları alışık olmadığımız şekillerde gösterme, karmaşık veri kümelerini 'scatterplot' ile açıklama, ağaç yapıları ve özyineleme ile ağaç haritaları ('treemaps') kullanarak bilgisayarınızdaki verilere kuşbakışı göz atmak, çizgeler (graflar) ve ağları kullanarak görsel veri madenciliği, vs.

Kitap bu somut örneklerden ve faydalı ipuçlarından sonra hemen her türlü görselleştirme uygulamasında ihtiyaç duyulacak veri tabanı bağlantıları, veri çözümleme ('parsing'), düzenli ifadeler ve benzeri konuların Processing ile nasıl gerçekleştirilebileceği ve Processing'in herhangi bir Java programlama ortamında bir kütüphane gibi nasıl kullanılabileceğine dair kısa kılavuzlar sunmaktadır.

Fry, kitabında pek çok konuya değinmekle ve somut uygulama örnekleri vermekle birlikte kitabın isminin biraz iddialı olduğu kabul edilebilir çünkü eserde veri görselleştirmeye dair ciddi bir çerçeve ve teorik bakış açısı sunup sonra bunu pratik problem çözümlerine uygulama yaklaşımından ziyade "bakın şunu da yapabilirsiniz, böyle bir teknikle şu tür veriyi Processing animasyonu olarak sunarsınız, güzel olur" tarzı yaklaşım hakim görünmektedir. MIT Media Laboratuvarı ortamında Estetik ve Hesaplama dalında doktora çalışması yapmış ve Carnegie Mellon School of Design'da ders vermis Ben Fry'dan böyle bir şeyi beklemek fazla olmazdı diye düşünüyorum. Kitaba güç katabilecek bir başka güzellik de belki Processing'in tıpkı diğer grafik araçlar gibi nasıl yanlış kullanılabileceğine dair birkaç örnek olabilirdi ancak tabii bunu düzgün yapabilmek için de az önce bahsettiğim teorik çerçevenin oturtulmuş olması gerekirdi.

Bir Görselleştirme Örneği: eMBA Öğrenci Başvurularının Yıllara ve İllere Göre Dağılımının Animasyonu

Bu örnekte temelde yukarıda eleştirdiğim kitabın 'Mapping' başlıklı üçüncü bölümündeki bilgilerden faydalandım. Processing ortamının kurulumunun gayet rahat gerçekleştiğini belirtmeliyim. Bu tür şeyleri kodlamak açısından C, C# ve Java aşinalığım pek çok açıdan rahat etmemi sağladı ancak Processing'e hafif bir giriş yapmış bir tasarımcının dahi kolayca anlayabileceği bir örnek olduğuna inanıyorum.

İstanbul Bilgi Üniversitesi tarafından 8 yıldır sürdürülen ve Türkiye'deki ilk 'Internet üzerinden işletme yüksek lisansı eğitimi' programı olan eMBA sisteminin veritabanındaki yıllık başvuru verilerini kullandım. Amacım çok basit bir arayüz ile Türkiye'nin hangi illerinde eMBA başvuru yığılması olduğunu göstermek ve yıllar içinde ilerledikçe hangi illerde nasıl bir değişim olduğunu kolayca gösterebilmekti.

eMBA Başvurularının Yıllara ve İllere Göre Dağılımı - Processing ile Bir Görselleştirme Örneği

Amacıma hizmet edebilecek bir Türkiye haritası grafiği bulduktan ve eMBA veritabanındaki başvuru verilerini çektikten sonra bunları Processing içinde harmanlamak ve biraz test etmek birkaç saatlik vaktimi aldı. Processing'e artı bir puanı ise bu çalışmamı paketleyip paylaşmaya çalıştığımda verdim. Uygulamamı hem kendi başına çalışabilir bir Java uygulaması hem de bir web sayfasında görüntülenebilecek Java applet tabanlı şekilde, HTML sayfaları ve ilgili linkleri de (kaynak kod, kullanılan diğer malzemeler, vs.) içerir halde paketleyip bana sunması için Processing menüsünden ilgili Export seçeneğini seçmem ve çıkan dizini web siteme yollamam yeterli olmuştu.

Burada bahsettiğim örneği http://ileriseviye.org/stuff/ProcessingAppletDemo/ adresinde inceleyebilir, üzerine tıkladıktan sonra N ve P tuşları ile yıllar içinde ilerleyebilir ve Processing kaynak kodunu inceleyebilirsiniz.

Görselleştirmenin Ötesi ve Sonuç

Bu kısa makalede görselleştirme kavramına kısaca değinip Processing görselleştirme ortamını geliştiren Ben Fry'ın yazdığı 'Visualizing Data' kitabını eleştirmeye çalıştım ve kitaptan aldığım ilham ile geliştirdiğim basit bir görselleştirme uygulaması örneği sundum. Fry'ın bu kitabı ile birlikte Toby Segaran'ın 'Programming Collective Intelligence: Building Smart Web 2.0 Applications' kitabı paralel olarak okunursa çok daha faydalı olacağı kanaatindeyim çünkü modern veri madenciliği ve makina öğrenme yöntemleri ile güçlü görselleştirme teknikleri ve araçları bir araya gelince daha önce akıl edilmemiş çok farklı bakış açıları sunmanın mümkün olacağını düşünüyorum. Ayrıca her ne kadar Processing güçlü bir platforma dayanıyor olsa da Java yerine dinamik dillere dayanan görselleştirme ortamlarının hızlı prototip üretimi konusunda tasarımcıya ve / veya programcıya daha çok esneklik sunabileceğini düşünüyorum, bunlara bir örnek olarak Python tabanlı NodeBox gösterilebilir. Ve tabii son bir öneri olarak görselleştirme ile ilgilenen tasarımcıların değil ama belki programcıların faydalanabileceği bir kitaplık olan UbiGraph'ın da ismini anmadan geçemiyorum yazıyı bitirirken çünkü her ne kadar başka bir yazının konusu olabilecek kadar detaylı bir uygulama olsa birlikte görselleştirme bağlamında nelerin yapılabileceğine dair güzel bir örnek.

Tıpkı bahsi geçen kitapların bana ilham vermiş olduğu gibi bu yazının da bazı okurlara bazı güzel işler için ilham vermesini temenni ederim.

Not: Verdiğim örnekteki eMBA uygulaması için bana gerekli Türkiye haritasını sağlayan Boran Puhaloğlu'na teşekkürler.

Emre Sevinç, 29 Ekim 2088
Bilgisayar Bilimleri Bölümü
İstanbul Bilgi Üniversitesi

Yazının özgün adresi: http://ileriseviye.org/blog/?p=1116

Görüşler

0
FZ
Kendi yazıma yorum yapayım, Ben Fry'ı vermediği için eleştirdiğim teorik çerçeveyi şu anda yani ne tür veri için ne tür görselleştirme kullanılabilir sorusunun cevabını Dan Roam'un 'The Back of the Napkin: Solving Problems and Selling Ideas with Pictures' kitabı veriyor gibi görünüyor (kitabı henüz yarıladım ve şu anda gayet olumlu izlenimlerim var) [1, 2]. Bitirince muhtemelen Türkçe LibraryThing.com sayfamda yorum yazarım.

1- http://www.amazon.com/Back-Napkin-Solving-Problems-Pictures/dp/1591841992
2- http://www.thebackofthenapkin.com/
Görüş belirtmek için giriş yapın...

İlgili Yazılar

rsync ile Windows makinelerin Debian/GNU Linux'a yedeklenmesi

ctengiz

Uzunca bir süredir ağ içerisinde yer alan kullanıcılara ait MS Windows makinelerinin yedeklenmesi için bir çözüm arayışı içerisindeydim. Sistemin sahip olması gereken özellikleri şu şekilde sıralayabilirim :
  1. Yedek makinesinin yönetimi kolay olmalı.
  2. Sistem ağ üzerinden çalışmalı.
  3. Yalnızca değişen dosyaları yedekleyecek kadar akıllı olmalı.
  4. Çok fazla ağ trafiğine sebep olmamalı.
  5. GNU/GPL yazılımlar ile minumum maliyete sahip olmalı.
  6. Son kullanıcı için kullanımı kolay olmalı.
  7. Kendi başına zamanlanmış yedekler alabilmeli.
Bu yazıda bu hedeflere nasıl ulaşılabilineceği anlatılyor.

İleti Kuyrukları İle Daha Etkin ve Performanslı Programlama

malkocoglu

Programlararası bilgi göndermeğe yardımcı olan ileti kuyrukları (message queue) bilgi işlemcilerin elindeki önemli silahlardan biridir. Özellikle bilgi alışverişi yapan sistemler farklı amaçlarla, zamanlarda, ve programcılar tarafından kurulmuş sistemler olunca, bağlantıyı kurmak için ileti kuyrukları daha uygun oluyor. IBM MQ Series üzerinden anlattığımız bu konunun yararlı olacağını umuyoruz.

MQ Series - İleti Kuyruğu

MQ Series Nasıl Kurulur

Kitap Eleştirisi: Süper Hesap Uzmanları

FZ

Makine öğrenmesi konusu ile ilgilendiğim için askere gitmeden önce Ian Ayres'in 'Süper Hesap Uzmanları : Sayılarla Düşünmek Neden Zeki Olmanın Yeni Bir Yoludur' kitabını okumuştum. 2008 yılının Mart ayında Türkçesi yayımlanmış kitabın makine öğrenmesi, veri madenciliği ve genel anlamda istatistiğin gücü ile ilgilenen herkesin okuması gereken türden bir kitap olduğuna inanıyorum. Yani işadamları da bilgisayar yazılımcıları da çözmeye çalıştıkları problemleri daha iyi anlamak ve daha akıllıca çözümler geliştirmek için bu kitaptan feyz alabilirler.

Her ne kadar söz konusu kitap (Freakonomics'in yazarlarıdan) Steven D. Levitt gibi yazarların övgüsüne nail olmuşsa da hem içerik hem de çeviri konusunda bazı eleştirileri hak ediyor. Kitabı okurken not ettiğim bazı noktaları aşağıda listeledim:

Gutenberg Projesi Artık Sesli

melitical

1971 'den beri devam eden Gutenberg Projesi dahilinde artık sesli kitaplar da var. Farklı dillerde sesli kitaplar ücretsiz olarak dinlenebilecek.

e-Bergi Eylül Sayısı Yayında

anonim

e-bergi eylül sayısı çıktı. Hem de sizlerden gelen yoğun ilgi üzerine aylık programlama sorumuzun ikincisiyle!