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

Phishing Rehberi - Sivrizeka Para Tırtıklama Yöntemleri ve Korunma Şekilleri

FZ

Phishing, günümüzde yaygın olarak kullanılan bir saldırı yöntemidir. Görsel ve yazılı basında son zamanlarda online dolandırıcılık adı altında sık sık haberler duymaktayız. Phishing yönteminde temel kullanıcıyı kandırarak, kullanıcıya ilişkin kredi kartı bilgileri, banka hesap numaralarından bu hesaba ait internet şifresine kadar birçok özel bilgileri ele geçirmektir.

Kullanılan yöntemlerin başında e-posta ile gönderilen sahte mesajlar gelmektedir. Bu e-posta sanki bir ticari kurumdan(bankalar, alışveriş siteleri vb.) geliyormuş gibi bir izlenim yaratır. Bu, kullanıcının kendisine ilişkin bilgilerini girmesi için kuruma ait bağlantıya(link) tıklamasını içeren bir e-posta olabilir. E-posta içeriği kişisel bilgilerin güncellenmesi, sistemdeki yeniliklerin hesabınızda aktif olması için şifrenizi girin gibi mesajlardır.

Bunu gören kullanıcı e-posta ile gelen mesajdaki bağlantıya tıkladığında kurumun web sitesinin birebir kopyası olan başka bir sayfaya yönlendirilir. Burada girilen şifre gibi özel bilgiler artık başkasının eline geçer.

Tacettin Karadeniz'in FM camiası ile paylaştığı yazısının devamını burada okuyabilirsiniz.

İş İstasyonu Olarak Debian ve Windowmaker

GaripFakir

Linux'un masaüstünde kullanımı ile ilgili genelde Gnome ve KDE masaüstü yöneticileri ön plana çıkmaktadır. Masa üstünde Linux dağıtımı olarak Mandrake ve Suse en çok adı geçen dağıtımlar arasında. Debian Linux dağıtımı ve Windowmaker pencere yönetici kullanılarak neler yapılabileceğini gösteren bir siteye rastladım.
Site, Gürkan Şengün tarafindan hazırlanmış ve Fatih Yılmaz tarafından Türkçe'ye çevrilmiş güzel bir kılavuz niteliğinde.
www.linuks.mine.nu/workstation/index.tr.html

Temel C kültürü

gencbeyin

Steve Maguire'in Hatasız Kodlama isimli kitabını elime aldığımdan itibaren ön kapağında Microsoft Press yazıyor olması hiç rahatımı bozmadı. Bana harika bir kitap gibi gözüküyordu ve gerçekten öyle çıktı. C programlamayı çat pat biliyor, bilgilerimi derinleştirmek için bir kaynak arıyordum, ve tam istediğimi bulmuşum. Burda yazılanların çoğunun open source projelerde uygulandığı da gözümden kaçmadı. Kısacası ANSI C hakkında temel kültür kazandıran bir kitap arıyorsanız, Arkadaş Yayınları'ndan Hatasız Kodlama'yı şiddetle tavsiye ederim.

Matematik Dünyası - Yeni Sayı Çıktı

FZ

Türkiye´nin yegâne popüler matematik ve bilgisayar bilimleri dergisi Matematik Dünyası´nın son sayısı çıktı.

İstanbul Bilgi Üniversitesi desteği ile çıkan derginin son sayının kapak konusu ``2 x 2 = 4´´. Evet yanlış okumadınız. Aşikar gibi görünen bu ifadenin temel kavramlar oluşturulup nasıl ispatlandığını bu sayıda okuyup matematiğin harika dünyasında eğlenceli bir gezintiye çıkabilirsiniz.

Bilgisayar bilimcilerinin ilgisini çekecek bölümlerden biri ise Chris Stephenson´un Bilgisayar Bilimi köşesinde ele aldığı ``Sayıları Tepeleyerek Sıralamak´´ başlıklı makale. Bu yazıda çeşitli sıralama algoritmalarının algoritmik karmaşıklığı inceleniyor ve ilginç örnekler veriliyor.

İstatistiklere göre derginin abone sayısı 4200´ü, satışı ise 8000´i geçmiş durumda ancak Prof. Dr. Ali Nesin, bunun Türkiye´nin nüfusuna (ve genç nüfusuna) sahip bir ülke için hala çok düşük olduğunu vurguluyor haklı olarak. Bu sayının artmasını ümit ediyoruz.

Dil Üstadları ile Araç Ustaları: IDE Ayrımı

FZ

Geliştirici dünyası iki kampa ayrılmıştır. Bir kampta dil üstadları vardır, bu yazılımcılar yüksek seviyeli programlamadan -- birinci-sınıf fonksiyonlar, aşamalı programlama, AOP, MOP, kendi kendini sorgulama -- bahsederler. Araç ustaları ise tümleşik geliştirme ve hata ayıklama araçlarında ustadırlar, kod tamamlama, "refactoring", vs. Dil üstadları Emacs ya da VIM kullanır, bu tür editörler yeni dilleri denemek için daha uygundur. Araç ustaları ise Visual Studio, Eclipse, IntelliJ gibi IDE'leri kullanırlar.

Laszlo ve Groovy gibi yeni diller ya da AOP (Aspect Oriented Programming) gibi dil uzantıları genellikle öncelikli olarak metin-editörü tabanlı yazılım geliştirme ortamlarında ortaya çıkarlar ve ancak ondan bir süre sonra IDE dünyası bu tür desteklere kavuşur. Eğer dil ya da uzantı gerçekten başarılı ise araçlar da bunu desteklemeye başlar. Bu ayrımın tek sebebi araç geliştirmenin dil geliştirmekten zor olması değildir. Asıl mesele bir dile hakim olmak ile bir araç setine hakim olmanın çok farklı iki mantalite olmasıdır, belli bir ölçüye dek bunlar birbirlerini dışlayan alternatiflerdir. Acaba neden? İşte sebepleri...

Oliver Steele'nin The IDE Divide başlıklı makalesini tüm yazılım geliştiricilerin okumasında fayda var. (Not: Şöyle sağlam bir FM üyesi çıksa da bahsi geçen makaleyi Türk diline kazandırsa... hani yani küçük bir olasılık olsa da, belki diyorum, belki biri üstlenir, FM'ye bir katkıda bulunur...)