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

D. E. Knuth´tan Özel Dersler

malkocoglu

Dr. Bilgisayar Bilimi'nin kendisinden özel ders almak ister miydiniz? Donald Knuth'un bilgisayar bilim derslerini buradan izleyebilirsiniz.

Matrix ve Felsefe

FZ

Sizin de kafanız Keanu Revees gibi Matrix'ten sonra karıştıysa bu kitap kesinlikle sizin için yazılmış. Eğer film kafanızı karıştırmadıysa, hemen bir doktora görünün. Matrix'i henüz seyretmediyseniz, o zaman bu kitabı mutlaka okumalısınız. Böylece bu filmin insanlar için neden o kadar önemli olduğunu bulursunuz.

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.

SFTP chroot için mini nasıl belgesi

conan

Amaç:
Bilgilerin şifreli olarak transfer edileceği bir sftp sunucusu yaratmak.

İhtiyaçlar:
SFTP kullanıcılarını işletim sistemi dosyalarından uzak tutmak. Bağlantıları için kendilerine özel bir chroot yaratmak.
SFTP kullanıcılarının sunucuya ssh üzerinden ulaşımını engellemek.
Becerebilirsek aynı servisi normal sistem yönetimi işlerinde de kullanabilecek şekilde ayarlamak.

Çözüm:
OpenSSH kaynak kodu içerisindeki sftp-server.c dosyasını yamamak ve kullanıcıları sınırlandıran bir kabuk yaratmak.

Nasıl?

Yazıcıdan Güzel Kod Basmak (Pretty Print)

malkocoglu

Kod gözden geçirme (code review) toplantılarında olmazsa olmaz olan "2 kod sayfası bir yazıcı sayfasına" denk gelecek, ve her satırın numaralı olacak şekilde gosteren bir yazıcı çıktısıdır. Bunun için kullanılan enscript programının kuruluşu, Ghostview, Ghostscript ve Emacs ile yapılan bağlantılarının nasıl olacağını aşağıdaki yazıda anlatılmıştır.

http://www.bilgidata.com/yazi.jsp?dosya=a_enscript.xml