Cumartesi, Nisan 24, 2010

YSA ile Basit bir Zaman Serisi Analizi

Öncelikle tanım ile başlıyalım. " Zaman değişkeniyle ilişlkili bir değişken hakkında, elde edilen gözlem değerlerini zamana göre sıralanmış olarak gösteren serilere, “zaman serisi” denir." detaylı istatistiki açıklamalar için şuraya müracaat edin.

Bizim YSA ile analizinden kast ettiğimiz için  Zaman serisi üzerinde Yapay Sinir Ağları ile ileri ye doğru tahmin yürütmektir. Bunun için Öncelikle Zaman serisini dönüşrümemiz gerekiyor.  Dönüşüm için kullanacağımız varsayımımız da şöyle

"Zaman serisinde bir değer kendinden önce gelen değerlerle ilişkili ve dolayısıyla onlarla tahmin edilebilir"

Mesela Yarınki hava sıcaklığı geçen günlerdeki hava sıcaklıklarıyla İlişkilidir. Bu durumda YSA dizaynı için çıkış değişken saymızı belli zaman serimizin bir sonraki değeri. Giriş değerlerimizde önceki veriler.  Örneğimizde dönersek yarınki Hava sıcaklığı bugünki ile ilişkilidir. Bugünkü de dünküyle, dünkü önceki gündeki ilişkili olduğuna göre onlarda Yarınki hava sıcaklığıyla nispeten etkileri azalarakda olsa ilişkilidir. Burada bir seçim yapmamız lazım Giriş değerleri olarak kullanacağımız verileri ne kadar geriye götüreceğiz.  Onu seçince artık giriş değişken sayımızda belirlenmiş olur.
Mesela bunu 4 seçersek şöyel bir ilişki kurmuş oluruz



Bundan sonrası elimizdeki verileri bu ilişkiye göre hazırlayıp, Bir YSA dizayn edip eğitmek kalıyor. FannTool'un DataProcessing kısmıyla her satıra bir değer gelecek şekilde hazırladığınız verileri. yukarda bahsettiğimiz şekle kolayca sokabilirsiniz.

Basit bir örnek yaparsak, Şöyle bir Zaman Serimiz olsun








Bu verileri,  Çıkışı 1 girişini 9 olan bir YSA ile Modelleyelim. Eğtim aşamasından sonra. Test edelim ve Gerçek sonuçlarla YSA tahminlerinin uyuşmasını kontrol edelim










Grafikdende  göreceğiniz gibi YSA gayet de uygun tahminler vermiş. Peki Aynı YSA'yı kullanarak ileriye doğru tahmin yürütmeye devam edersek ne olur. Yani yarınki değeri YSA ile tahmin edip. sonra bu tahmini giriş gibi kullanıp ertesi günkü değeri hesaplasak

( T1 , T2 , T3 , T4) -> T5
( T2 , T3 , T4, T5 ) -> T6
( T3 , T4 , T5, T6 ) -> T7
...

Hemen FannToolu'muzun  "Run as TS"*  kısmını açıp kaç kere ileriye doğru çalıştıracağını belirtip, sonuçları  alıyoruz. Ve Grafiğimize tekrar bakıyoruz








Hiçde iç açıcı bir bir grafik değil.  Aslında metodumuzun pek çok eksiliği var. Fakat müekemmel diyebileceğimiz bir sistem bile kursak, tahminlerimizdeki hata payı ileriye doğru yayılıyor. Daha detaylı bilgi için Kelebek etkisi ve Kaos Teorisi  konularına bakabilirsiniz. Yok kim okuyacak onu ben filmini seyredeyim diyorsanız, boşuna Kelebek etkisi filimlerine bakmayın. Esas hala izlememişseniz Pi Filmini ** izleyin


Not :
*  Boşuna elinizdeki programda aramayın yakın zaman da yayınlamayı umuduğum versiyonda olacak İnşallah
**  Filminden bir parça
Restate my assumptions.
-One: Mathematics is the language of nature.
-Two: Everything around us can be represented and understood through numbers.
-Three: If you graph the numbers of any system, patterns emerge. Therefore, there are patterns everywhere in nature.
-Evidence: The cycling of disease epidemics,  the wax and wane of caribou populations, sun spot cycles, the rise and fall of the Nile.
So, what about the stock market? The universe of numbers that represents the global economy. Millions of hands at work, billions of minds. A vast network, screaming with life. An organism. A natural organism.
-My hypothesis: Within the stock market,|there is a pattern as well... Right in front of me, hiding behind the numbers. Always has been.

Pazar, Nisan 18, 2010

cvPreProcessor for OpenCv 2.1


Aslında bir yenilik yok. Zaten şu aralar pek de uğraşamıyorum. ama cvPreProcessor'u yayınladıktan sonra OpenCV 'nin 1.1 , 2.0 ve şimdide 2.1 versiyonları çıktı.
Şimdi cvPreProcessor'u kullanmak istiyenlere tekrar derleyi verin yada OpenCv 1.0 'ın dll lerini bulup yanına koyun demekde  pek şık olmuyordu.
Bende En azından windows kullanıcıları için, yanında dll leriyle sadece çalıştırılabilir bir halde yayınlıyorum.

İndirmek için  : cvPreProcessor for OpenCv 2.1
İşinize yaraması umuduyla

Cuma, Nisan 09, 2010

OpenCv 2.1 Çıktı

Evet OpenCv 2.1 sessiz sedasız yayınlandı, Haberdar edelim ve İlk izlenimlerimizi  söyleyelim dedik...

  • Pekçok bug temizlenmiş
  •  OpenMP yerine TBB koymuşlar ( bence malesef  Anlayabildiğim kadarıyla TBB nin iki lisansı var biri ticari 299 $ cık diğeri GPL v2. GPL'inde ticari kullanımı sıkıntılı. BSD gibi ticari uygulamaya uygun bir lisansa sahip olan OpenCv'ye bu haldeki TBB yi yamamak bence çok saçma olmuş. Pek tabiiki Intelin açısından bakılırsa gayet münasip de görünebilir.
  • autotools desteğinide  kaldırmış. Özellikle Linux için gayet kolay oluyordu, artık Linux da da CMake ile cebelleşmemiz lazım.
  • 64 bit derleme desteği geliştirilmiş.
  • Statik derleme imkanı sunulmuş. Gayet güzel  dll dertlerinden kurtuluruz bu sayede...
İlave Notlar  :
  • Statik derleme seçeneği hata veriyor ve build tamamlanamıyor hem VS Express hemde Code Blocks için denedim sonuç aynı
  • OpenCvSharp da OpenCv 2.1 için uygun paketini yayınladı

    Pazar, Nisan 04, 2010

    Yapay Zeka Tıbbın Hizmetinde 4 ( Acute Inflammations )


    FANN 'ın C# ile kullanımını göstermek için uygun bir fırsat bekliyorduk. Ve şimdi karşınızdayız
    Acute Inflammations veri setini kullandık. Veriler bir uzman sistem için oluşturulmuş ama biz YSA kullancağız.


    Konunun detayını aynen aktarıyorum. ( Zaten iyi olmayan ingilizcemle birde Hiç bilmediğim Tıp alınandaki yazıyı çevrime cüretini gösteremedim anlayacağınız )

    The main idea of this data set is to prepare the algorithm of the expert system, which will perform the presumptive diagnosis of two diseases of urinary system. It will be the example of diagnosing of the acute inflammations of urinary bladder and acute nephritises. For better understanding of the problem let us consider definitions of both diseases given by medics. Acute inflammation of urinary bladder is characterised by sudden occurrence of pains in the abdomen region and the urination in form of constant urine pushing, micturition pains and sometimes lack of urine keeping. Temperature of the body is rising, however most often not above 38C. The excreted urine is turbid and sometimes bloody. At proper treatment, symptoms decay usually within several days. However, there is inclination to returns. At persons with acute inflammation of urinary bladder, we should expect that the illness will turn into protracted form.

    Acute nephritis of renal pelvis origin occurs considerably more often at women than at men. It begins with sudden fever, which reaches, and sometimes exceeds 40C. The fever is accompanied by shivers and one- or both-side lumbar pains, which are sometimes very strong. Symptoms of acute inflammation of urinary bladder appear very often. Quite not infrequently there are nausea and vomiting and spread pains of whole abdomen.  The data was created by a medical expert as a data set to test the expert system, which will perform the presumptive diagnosis of two diseases of urinary system. The basis for rules detection was Rough Sets Theory. Each instance represents an potential patient
    Attribute Information:

    a1 Temperature of patient { 35C-42C }
    a2 Occurrence of nausea { yes, no }
    a3 Lumbar pain { yes, no }
    a4 Urine pushing (continuous need for urination) { yes, no }
    a5 Micturition pains { yes, no }
    a6 Burning of urethra, itch, swelling of urethra outlet { yes, no }
    d1 decision: Inflammation of urinary bladder { yes, no }
    d2 decision: Nephritis of renal pelvis origin { yes, no }


     Yapılan işlem diğerlerinden farklı değil aslında. Yinede soracağınız bir şey olursa biz buralardayız. YSA eğitimi için yine FannTool 'u kullandık. ve sonuçda Eğitilen YSA oldukça iyi oldu. Başarısı hem test hemde Eğtim verileri için % 100.

    C# kısmında Basit bir GUI tasarlayıp Giriş değerlerini Kullanıcadan alıp Eğitilmiş YSA'yı bu giriş değerleriyle çalıştırmak. Ve tabii ki sonuçlarıda göstermek.


    Indirmek için :   Acute_Inflammations

    Not :
    • Artık Ben C# kullanıyorum FANN'ı nasıl kullanabilirim ? sorusununda cevabını vermiş oluyoruz. 
    • Böyle el alemin yayınladığı veriler yerine Sizin verilerinizide  kullanılabilir, Mümkün mertebe yardımcı olmaya çalışırız duyrulur...
    • "Yapay Zeka Tıbbın Hizmetinde" serisinin önceki yazıları 1 2 3