tag:blogger.com,1999:blog-140159762024-03-13T03:18:49.129+03:00Derin Deli MaviPamuk ipliğinden biraz daha sağlam tek bağ: düşünce birliği. O da rüzgarın her an tehdit ettiği bir kandil. Düşünce birliği, düşünen insanlar arasında olur. İnsanların kaçta kaçı düşünür? Düşünenlerin kaçta kaçı karşılaşır ve açılır birbirine.
-- Cemil Meriçbirol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.comBlogger490125tag:blogger.com,1999:blog-14015976.post-31629349629400794892022-12-13T13:43:00.006+03:002022-12-13T13:51:49.767+03:00Innovasyon Yumurtlayan Hindi<h3>Zeka Hakkında Kıssalı Yazılar - 8 <span style="color: red; font-weight: bold;">*</span></h3><h3><span style="color: red; font-weight: bold;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsRf23aycTifQm1OdeYLDJKK2J-kVxYKqXTcvGUtntkQQTzACsREzYpaVQLeomr2kcCQbQX0Uu7AaqHhW9S-S3t-A038JwqxkNTZnkrP1zXvlDT2hG31iBGxQqX30-brguzckvRfCejoX370jabw8lIzq7jNkbm6qtGDU3bHKrnb_zj6sAm-s/s768/turkey.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="768" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsRf23aycTifQm1OdeYLDJKK2J-kVxYKqXTcvGUtntkQQTzACsREzYpaVQLeomr2kcCQbQX0Uu7AaqHhW9S-S3t-A038JwqxkNTZnkrP1zXvlDT2hG31iBGxQqX30-brguzckvRfCejoX370jabw8lIzq7jNkbm6qtGDU3bHKrnb_zj6sAm-s/s320/turkey.jpeg" width="320" /></a></div><br /> </span></h3><p></p><p>Nasrettin hoca malum pekçok yerler yurtlar gezmiş, ilim tahsil etmiş. Memleketler yerler görmüş yanından ayırmadığıda bir hindisi varmış. Hani şu meşhur konuşmasada düşünen hindi.<br />Hoca, Hindinin yumurtası ile karnını doyurup gezmeye, talebeliğe devam edermiş.</p><p>O kadar ilim meclisinden bulunmasından mi bilinmez hindiye bir haller olmuş. Hindinin yumurtalarının içlerinden türlü işler için innovatif fikirler yazan nameler çıkmaya başlamış. Hoca Nasrettin pek de anlamıyormuş bu namelerin maddi karşılığından. Sırtını sıvazlayıp bir öğün karınını doyurana veriyormuş nameleri. Zaman geçtikçe hindinin ünüde yayılmış kulaktan kulağa.</p><p>Gel zaman git zaman, ortalıklar karışmış, bir taraftan Timur, bir taraftan eşkiyalar, ortalığı kasıp kavurmuşlar. Kimseler çıkamamış evlerinden dışarı, Herkes can derdine düşmüş. Böyle karanlık zamanlarda Hocaya gelen gidende olmamış normal olarak. </p><p>Ama zaman bu dururmu yerinde. Kış biter bahar gelir ! Karanlık biter gün doğar ! Çalkantı kesilir sular durulur. Ortalık düzelince Ağalar beyler hocanın kapısına gelmişler. Innovasyonlu Namelerden talep etmişler. </p><p>Hoca : <br /></p><p>- Ağalarım Beylerim malesef ben hindiyi kesip yedim.</p><p>demiş. </p><p>Ağalar Beyler : <br /></p><p>- Ya hoca sen delirdinmi ? Hiç Innovasyon Yumurtlayan hindi kesilirmi ?</p><p>demişler.</p><p>Hoca:<br /><br />- Zaten çokda maddi bir getirisi olmuyordu. Gelip, destek çıkan olmayınca, aç kaldım. Ya Çekip gidecektim diyar-ı küffara doğru. Onun içinde ihtiyardım gidemedim. Sonunda da dayanamayıp kesip yedim, Fikirler Yenmiyor malum. <br /></p><p>demiş. İlave etmiş<br /></p><p>Ey ağalar beyler bu innovatif işler niçin bizim memlekette çıkmıyor deyu hayıflanmayın beyhude, sebebi sizsiniz...</p><p>Not: Üstteki resim<span style="font-weight: normal;"> "Stable Diffusion 2.1 Demo" ile üretilmiştir.<br /></span></p><p> </p><p><i><b>* Zeka Hakkında Kıssalı Yazılar Serisi - <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-1.html">1</a> <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-2.html">2</a> <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-3.html">3</a> <a href="http://derindelimavi.blogspot.com/2007/06/bakan-bilgisayar-gren-bilgisayar.html">4</a> <a href="http://derindelimavi.blogspot.com/2009/09/nasrettin-hocadan-bulank-mantk-dersi.html">5</a> <a href="https://derindelimavi.blogspot.com/2018/06/keloglann-optimizasyonla-imtihan.html">6</a> <a href="https://derindelimavi.blogspot.com/2022/03/paray-veren-innovatif-dudugu-calar.html">7</a><br /></b></i></p>birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-69297816745739765752022-03-28T10:20:00.001+03:002022-03-28T10:50:56.586+03:00Parayı Veren Innovatif Düdüğü Çalar<h3>Zeka Hakkında Kıssalı Yazılar - 7 <span style="color: red; font-weight: bold;">*</span> <br /></h3><p>Zamanlardan bir zaman Bizim Nasrettin Hoca ArGe ye merak salmış. Bir startup kurup Akşehir Tekno Han da bir yer açmış. Çalışma alanı olarak da <b>Innovatif Düdük</b> imalatını seçmiş. Haber tez yayılmış hocamızın marifetleri zaten malum. Kelli felli nice beyler ağalar ziyarete gelmişler.</p><p>Hepsi birer düdük ısmarlamış, ama para veren olmamış.<br />
Hoca tümüne olumlu cevap vermiş:<br />
– Peki, olur demiş…<br />
Beylerden yalnız biri, Hoca’ya şunları söylemiş:<br />
– Hocam banda bir düdük yapın alın şu para da peşinatı olsun demiş</p><p>Hoca demiş kelli felli ağalar beyler geldiler istekde bulundular. Her halde beni kandıracak değiller diye düşünmüş <br /></p><p>Sabah - akşam aylarca çalışıp bütün talepler için düdük prototiplerini imal etmiş. </p><p>Bitirdikçede sahiplerine haber salmış. </p><p>Salmış salmasınada Pek çoğu için gelen giden olmamış.</p><p>Gelenleri çoğuda bahaneler bulup savuşturmuşlar.</p><p>Sadece parayı veren bey düdüğünü teslim alıp parasının kalanını ödemiş.<br /></p><p> Hocada bütün bunlardan sonra malum sözünü söylemiş</p><p><i><b> Parayı veren düdüğü çalar.</b></i></p><p><i><b> </b></i></p><p><i><b>* Zeka Hakkında Kıssalı Yazılar Serisi - <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-1.html">1</a> <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-2.html">2</a> <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-3.html">3</a> <a href="http://derindelimavi.blogspot.com/2007/06/bakan-bilgisayar-gren-bilgisayar.html">4</a> <a href="http://derindelimavi.blogspot.com/2009/09/nasrettin-hocadan-bulank-mantk-dersi.html">5</a> <a href="https://derindelimavi.blogspot.com/2018/06/keloglann-optimizasyonla-imtihan.html">6</a> <br /></b></i></p>birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-3970555029826370592021-08-31T08:55:00.002+03:002021-08-31T08:55:27.018+03:00Ne Yapmalı II<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRpxxhclIjz9HRn8KHyCQN9Tg1J3vacVn5QX-xOEpH4RldsvrBZHqSB5fgmnrc8MmlYxO5bh_7ahlGoCLSIgUMsnfxypBrfVvvVHKBg6rSFLXCFVvXLwY-YnsB4RZzshspDNn-tw/s960/bes_maymun.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="714" data-original-width="960" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRpxxhclIjz9HRn8KHyCQN9Tg1J3vacVn5QX-xOEpH4RldsvrBZHqSB5fgmnrc8MmlYxO5bh_7ahlGoCLSIgUMsnfxypBrfVvvVHKBg6rSFLXCFVvXLwY-YnsB4RZzshspDNn-tw/w400-h297/bes_maymun.jpg" width="400" /></a></div><br /> <p></p><p>Yine bir Kıssayla başlayalım. 5 Maymun deneyi kıssası<span style="color: red;">*</span></p><p><i></i></p><blockquote><p><i>Bilim Adamları bir kafese 5 maymun ve bir merdive ve kafesin tepesinde Muz kuymuşlar. Dışarıyada bir görevli bırakılmış. Ne zaman maymunlardan biri ICAT çıkarıp merdivene tırmanıp muza ulaşmaya çalışsa, görevli soğuk ve tazyikli suyla başta merdivene çıkan olmak üzere bütün maymunları ıslatıp engellemiş. Doğal olarak maymunlar bir süre sonra muza ulaşmaya çalışmaz olmuşlar. Neyse Efendim maymunlardan birini çıkarıp yerine yeni bir maymun koymuşlar. Yeni maymun hemen muzun farkına varıp ICAT çıkarmak için merdivene hamle yapınca. Diğer maymunlar ICAT ÇIKARMA BAŞIMIZA deyu yeni maymunu bir güzel pataklamışlar. Yeni maymunun durumu öğrendiğini gören bilim adamları diğer maymunlarıda birer birer çıkarıp yerlerine yeni maymunlar koymuşlar ve aynı sonuçlar. görülmüş</i></p><p><i>Sonuçda Ortada görevli olmasada Maymunlardan hiç biri ICAT çıkarmaya kalkmıyormuş, Icat çıkarmaya kalkanlarıda maymunlar kendileri pataklıyormuş.</i></p></blockquote><p><i></i></p><p> Geçenki yazımızda ulaştığımız sonuçlardan devam edersek. Toplum olarak Yetenekli ve Zeki bireylerimizi harıcıyoruz.<span style="color: red;">**</span> Hasbel kader yetişenide ICAT çıkarmasın diye dövüyoruz. Ne yapmamız lazım peki. </p><p><b><i>Icat çıkarılıyor diye fertleri cezalandırmayı bırakmalıyız. Toplumun cezalandıracağız diye yüzyılllardır öğrendiği negatifi öğrenmeyi tersine çevirecek çalışmalar yapmalıyız</i></b>.</p><p>Tavuk mu yumurtadan çıkar, Yumurta mı tavukdan çıkar ikilemi gibi bir durum var elbette. Yönetimmi kendini düzeltmeli , Insanlarmı kendini düzeltmeli. İçinden çıkılmaz bir durum. </p><p>Örnek den yola çıkarsak<br />Yönetim olarak Islatmayı bırakıp merdivene çıkılmasını teşvik etmeye kalkıyorsunuz. Merdivene çıkılsın diye verdiğinizi yiyip çıkıyormuş gibi yapan maymunlar olabiliyor. Birey olarak maymunun zaten hiç şansı yok, ya çevresinden ya çevresiyle beraber görevlilerden ceza alabiliyor.<br /></p><p>Sonuç olarak ne tek başına Yönetim Ne tek başına ferdin çözebileceği bir problem değil. Problemin politikaya evrilip çözümsüzlüğe yuvarlanmasıda ayrı bir problem. Duydunuzmu bilmem <a href="https://eksisozluk.com/koci-bey-risalesi--1725373">Koçi Bey risalesi</a> diye bir makale vardır. Osmanlı devletinin kötü gidişatıının raporlandığı bir çalışma, hemde taa Dördüncü murat devrinde. </p><p></p><blockquote><i>Padişah'ların etrafında <b>dalkavuk devlet adamları </b>vardır ve bu yüzden padişah, halkın sorunlarından uzaktır.<br />Tımar ve Zeamet sistemi bozulmuş, topraklar verimsiz, halk rahatsızdır.<br />Rüşvet artmış, memuriyet alım satımı yapılmaya başlanmıştır.<br />Kuruluş felsefesi, disiplin ve devletin beka'sı olan Yeniçeri ocağı artık silahını, padişah, devlet ve millete çevirmiştir.<br />Devlet adamalarının <b>basiretsizliği, eğitimsizliği ve liyakatsizliği</b> sorunları derinleştirmektedir.<br />Giderek her işe hatır karıştı, her şeye göz yumuldu ve hak etmeyenlere bir çok mevkiler verildi, <br />... <br />İyi-kötü belirsiz oldu. İyilerin iyi işlerinin değeri bilinmediği ve kötülerin kötülükleri cezasız kaldığından, âlim ve cahil birbirinden ayrılmadığından, ulemânın kıymeti bilinmediğinden, bilginlerin halk gözünde saygınlığı kalmadı.<br />...<br />âlim ve cahil eşit görülmezse ilim yolu kısa zamanda düzelir. Ancak, aldırış etmemekle âlem elden gider. </i><span> </span></blockquote><blockquote><i>Küfr ile dünya durur, zulm ile durmaz.</i></blockquote><p>Evet Nerdeyse 400 yıl geçmiş ama aynı problemlere sahibiz. O zamandan günümüze pek çok değişik siyasi görüşte insanlar, ülkemizin başına gelmiş ve gitmişleridir. Bu demektir ki Şu zevat zamanı iyiydi , yok aslında öteki zevatı muhterem çok iyiydi demenin hiç bir anlamı yok. Toplumsal bir probleme parmak basıldığında iş hemen siyasete evrilip dipsiz bir kuyuya atılıyor. Lütfen yazımızı böyle değerlendirmeyin. </p><p>Eğer fert olarak yönetimde bir vazife almışsanız, bu problemleri elinizden geldiğince çözmeye çalışın. Yok yanlızca fert iseniz, yönetimlerin düzelebilmesi için ferdin yapabileceği bence yegane şey ; Hiç kimseye ama hiç kimseye yönetim anlamında gözleri tamamen kapalı güvenmeyin. Futbol takımı gibi taraftarlıkdan vaz geçin. Bütün insanlar gibi siyasetçiler de ödül ve ceza sistemiyle hizaya girer. <br /></p><p></p><p>Konumuza devam edersek.<br /></p><p>Bir ideal belkide bir anlamda hayal peşinde yürümek lazım. Kendimize güçlü olduğumuz yönleri gözetleyerek bir görev tanımı yapmalıyız. Görev dışı konulara fazlaca takılmamalıyız. Çünkü bu takıntılar, başarısızlıklarımızın bahanesi hali geliyor. Nice çok yetenekli ve bilgili insanımızın acizlik batağına düştüğünü görüyoruz. Yönetim şöyle, akademi böyle, halk öyle, vs vs ... . Problemlerin kaynağının değiştiremeyeceğimiz sebeplere bağlanması, Acizlik sızlanması döngülerinde yitip gitmeye sebep oluyor. </p><p><br /></p><p>Yine darmadağın bir yazı oldu kusurumuza bakmayın. <br /></p><p><br /></p><p><span style="color: red;"> *</span> kıssası diyorum aslında böyle bir deney yapılmamış. <a href="https://skeptics.stackexchange.com/questions/6828/was-the-experiment-with-five-monkeys-a-ladder-a-banana-and-a-water-spray-condu">bakınız</a><br /></p><p><span style="color: red;">**</span> Pek çok zamanda kendi kendilerini harcadıkları vaki. Mevcut düzeni anlayıp oradan çıkış yolu bulmak yerine, Agresif bir tavrıla ben her zaman haklıyım, her şey tam benim istediğim gibi olmalı. Deyip olmadığında küskünlüklerden bataklığında debelenip kalırlar. Oysa ki Çok yetenekli ve zeki de olsanız, başarılı olabilmeniz için çevrenizden destek almanız gereklidir. Bakınız <a href="#" id="https://www.youtube.com/watch?v=rZ6ZeeP6Sao&feature=youtu.be&t=140" name="https://www.youtube.com/watch?v=rZ6ZeeP6Sao&feature=youtu.be&t=140">Dr Sheldon nın Nobel konuşmasında</a> . " I have been encouraged, sustained, inspired and tolarated" diyerek çok güzel vurguluyor. </p><p></p><br /><p><br /></p><p><br /></p>birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-12838983313095493582020-08-08T11:24:00.000+03:002020-08-08T11:24:47.802+03:00Böyle gelmiş böyle gidecek korkarım Vallah !<p> <br /></p><p><i>Kadının biri çoçuğunun durumuyla ilgili görüşmek üzere öğretmenini ziyaret etmiş </i></p><p><i>Kargaya yavrusu şahan görünürmüş misullu evlanına güzellemeler yaptıktan sonra</i></p><p><i>hocam demiş olur ya bazen bizimki şımarıklık yapar, gürültü yapar, yaramazlık yapar, </i></p><p><i>Hiç çekinmeyin <span style="color: red;">Bütün gücünüzle bir tokat vurun <b>yanında oturan çocuğa</b></span>, hemen susacaktır.</i></p><blockquote><p><i></i></p></blockquote><p><i></i></p><p>Başkalarının </p><p style="margin-left: 40px; text-align: left;">Şımarıklığı ,</p><p style="margin-left: 40px; text-align: left;"> Üç kağıtçılığı,</p><p style="margin-left: 40px; text-align: left;">Hesap bilmezliği</p><p style="margin-left: 40px; text-align: left;">Hovardalığı,</p><p style="margin-left: 40px; text-align: left;">İş bilmezliği,</p><p style="margin-left: 40px; text-align: left;">Beceriksizliği</p><p style="margin-left: 40px; text-align: left;">Yolsuzluğu,</p><p style="margin-left: 40px; text-align: left;">Hırsızlığı,</p><p style="margin-left: 40px; text-align: left;">Arsızlığı,</p><p style="margin-left: 40px; text-align: left;">... <br /></p><p></p><p>yüzünden tokat yemekten BUNALDIM... <br /></p>birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-59091185622578254272020-07-30T11:03:00.004+03:002020-09-23T15:38:08.215+03:00Ne Yapmalı I / Aptal yada Tembelmiyiz ?Kim Ne sorduda Ne yapmalı diye bir başlık açma ihtiyacı duyduk önce oradan başlayalım <br /><div><br /></div><div>"Bilim, Teknoloji ve Yenilik Politikaları Kurulu" tarafından çifter çifter anket linkleri geldi.<br /><br /><div style="margin-left: 40px; text-align: left;"><i>Sayın BİROL KUYUMCU,</i><br /><i>....</i><br /><br /><i>T.C. Cumhurbaşkanlığı Bilim, Teknoloji ve Yenilik Politikaları Kurulu (BTYPK) bünyesinde ve TÜBİTAK’ın teknik desteği ile bir “Yapay Zeka Teknoloji Yol Haritası” hazırlanması çalışması yürütülmektedir. Teknoloji Yol Haritasının; ilgili alt teknolojiler özelinde belirlenecek stratejik hedefler, ülkemizin bu hedeflere ulaşması için geliştirilmesi kritik olan ürün/teknolojiler, bunların geliştirilmesine yönelik Ar-Ge projeleri ve son olarak da geliştirilen kritik ürün/teknolojilerin öncelikli sektörel uygulamaları şeklinde çok katmanlı bir yapıda oluşturulması öngörülmektedir. Teknoloji Yol Haritası, belirlenen konularda somut Ar-Ge ve yenilik hedefleri ile bu hedeflerin gerçekleşmesi için gerekli kilometre taşlarını içerecektir. Bu sayede, bu alanda hedef ve ihtiyaç odaklı, izlenebilir sonuçları olan projelerin desteklenmesi sürecine katkı sağlanacaktır.</i><br /><br /><i>Teknoloji Yol Haritası oluşturulması sürecinin bu aşamasında ülkemizde yapay zeka algortimalarının geliştirilmesi konusunda çalışmalar yapan ve yapay zeka uygulamalarını kendi faaliyet alanlarında kullanan yetkin uzmanlardan, ülkemizin odaklanması gereken stratejik hedefler konusunda katkılar alınacaktır.</i><br /><br /><i>“Yapay Zeka” konusundaki uzmanlığınıza dayanarak, hedef önerilerinizi ve katkılarınızı, .... günü mesai bitimine kadar, aşağıdaki bağlantıdan ulaşabileceğiniz "... formu" aracılığıyla iletmenizden mutluluk duyacağız.</i></div></div><div><br /></div><div>Ilkinde daha kısa ve öneri isteyen bir anket, sonra daha detaylı seçilmiş bazı başlıklar hakkındaki <i>"teknoloji temelli stratejik hedef önerilerinin ve sektörel ihtiyaçların, ülkemizdeki “yapılabilirlik” ve “etki” açısından, yine ekosistemin tüm paydaşlarının değerlendirmeleri"</i> istenmiştir.</div><div><br /></div><div>Anketleri doldurdum ama bence anketle ne derece sonuca ulaşılabilecek bilemiyorum. Hazır blogumuz var kim tutar bizi deyip <i><b>sadece Yapay Zeka değil geniş anlamda Ne yapmalı</b></i> diyerek bir yazı dizisi yazmak istedim. Başlıyoruz...<br /></div><div><div><br /></div><div>Bir Şey Yapmalı da Toplum olarak buna uygun bir yapıya sahip miyiz ?</div></div><div><h3 style="text-align: left;">Aptalmıyız ?</h3>Zeka konusundaki popüler ölçüt IQ değeridir. Irklar üzerinden karşılaştırmalı çalışmalarda yapılmıştır.</div><div style="text-align: left;"><h3><img alt="https://vignette.wikia.nocookie.net/psychology/images/8/88/Sketch-4race-transparent.png/revision/latest?cb=20060222182408" height="268" src="https://vignette.wikia.nocookie.net/psychology/images/8/88/Sketch-4race-transparent.png/revision/latest?cb=20060222182408" width="410" /></h3><div>bakınız : <a href="https://psychology.wikia.org/wiki/Race_and_intelligence">psychology.wikia.org/wiki/Race_and_intelligence</a></div><div><br /></div><div>ırklar arasındaki bu değişimin aldatıcı olduğunu düşünüyoruz Nitekim</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh52tEcYqW9Uxv_pBK24mEHuWjR7czzyz-dw_bAj-m-HxjPbC8XUFJBto5_jstCa4sBFlYJvPL4s2HiGtWqQe4Y279YrGUcVI58nE1w2tSLDWF9kcrREWp_X0KKEoXceJhv3kXdKQ/s702/iq2.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="702" height="318" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh52tEcYqW9Uxv_pBK24mEHuWjR7czzyz-dw_bAj-m-HxjPbC8XUFJBto5_jstCa4sBFlYJvPL4s2HiGtWqQe4Y279YrGUcVI58nE1w2tSLDWF9kcrREWp_X0KKEoXceJhv3kXdKQ/s320/iq2.jpg" width="415" /></a></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><a href="http://thealternativehypothesis.org/index.php/2017/01/07/race-and-iq-the-case-for-genes/" target="_blank">burada</a> : Irkların değişik yerlerde değişik ortalama IQ değerlerine sahip çıkması bu iddiamızı destekliyor.</div><div><br /></div><div>Keza bir gerçeklik payı olsada Bütün Irkların bir gaussian bir dağılımla çok zeki fertlerinin olacağı sonucu çıkıyor. Sonuç olarak bizim yada herhangi bir milletin zeka problemi yok, <span style="color: red;"><b>Zeki insanlarını değerlendirme problemi</b></span> var diyebiliriz sanırım...<br /></div><div></div></div><div style="text-align: left;"><h3>Tembelmiyiz ?</h3></div><div></div><div>Bir Anekdotla başlayalım <br /></div><div><br /></div><div><blockquote><i>"Birinci Dünya savaşının sonlarına doğru Konya ovasının sulanması işlerinde çalışan bir Alman mühendis, Tuz gölü civarında bir köyün arazisini ölçerken duvarın gölgesinde uyuklayan bir Türk köylüsünü görür. Sabahtan beri yakınında çalıştığı halde köylünün bu ölçme işleriyle hiç meşgul olmadığı dikkatini çeker, bu alakasızlıktan dolayı hayret eder ve merakını gidermek maksadıyla onunla konuşmak için yanına yaklaşır. Merhaba der, köylü hiç kımıldamadan uyuklar vaziyette, yarı açık gözleri ile selamını iade eder. Büsbütün hayrete düşen mühendis sorar:</i> <br /></blockquote><blockquote><i>Sabahtan beri burada niçin çalışıyorum biliyormusun ?</i> <br /></blockquote><blockquote><i>Köylü, yine kayıtsız şekilde omuzlarını silker. Mühendis devamla, ben bu arazinin sulanması için çalışıyorum, der;</i> </blockquote><blockquote><i>eğer bu kanallar açılırsa sen bu gün aldığın ürünün iki katını alacaksın diye ilave eder. </i></blockquote><blockquote><i>O vakite kadar uyuklamasına devam eden köylü, bu son sözleri işitir işitmez, gözlerini açar, içlerinde parlayan şeytani bir pırıltı ve dudaklarında beliren bir gülümsemeyle,</i> <br /></blockquote><blockquote><i>öyle ise ben o vakit bugün <b>çalıştığımın yarısı kadar çalışacağım </b>diye haykırır."<span style="color: #2b00fe;"><span style="font-size: small;"><b>*</b></span></span></i></blockquote><br /></div><div></div><div>Bu anekdot Sosyolojide meşhur coğrafi okulun çağdaş temslcilerinden biri olan Huntington 'ırkların karekteri' adlı eserinde Türk Karekterinden bahsederken geçiyor. Sonuç olarak da "Türklerin tembel ve iktisadi zihniyetten yoksun oldukları " neticesine ulaşıyorlar.</div><div><br /></div><div>Bizce ortada <b>bir gerçek var ama ulaşılan netice yanlış</b>. Dünyanın dört bir yanında burada yetişip gitmiş ama pek çok değişik alanda çok başarılı olmuş Insanımızın varlığı bize göstermektedir ki tembel de değiliz. Bizce böyle davranılmasının arkasında, <b><span style="color: red;">toplum olarak negatif öğrenmeye</span></b> maruz kalmış olmamız vardır.</div><div><br /></div><div>Devamı kısmet olursa devam yazılarımızda...</div><div><br /></div><div><span class="style-scope yt-formatted-string" dir="auto">Her türlü görüş ve önerilerinizi bekleriz.</span></div><div><span class="style-scope yt-formatted-string" dir="auto"><br /></span></div><div><span class="style-scope yt-formatted-string" dir="auto">Notlar :</span></div><div><span class="style-scope yt-formatted-string" dir="auto"><b><span style="color: #2b00fe;">* </span></b><span>Bilimsel Değerlendirme ve Araştırma Metodolojisi / Orhan Türkdoğan S- 212,213</span><b><span style="color: #2b00fe;"><br /></span></b></span></div><div></div>birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-56499540614840380282020-05-17T11:50:00.001+03:002020-05-17T11:51:42.810+03:00Python ile Derin Öğrenme<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWoOQuGQ14vgsMMbN0or_NT4YcH5DZB4vyCCMe4Fe7Xo8o52jS5ukdGOZpVje_48_l8YEhyphenhyphenLl1zNHhFc9sK_fPF_V4G0h0xdVT2AS2SNm29FuP59goKhVJPoG1i7Tkh6hxA5cMHQ/s1600/Python-ile-Derin-%25C3%2596%25C4%259Frenme-3B.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1356" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWoOQuGQ14vgsMMbN0or_NT4YcH5DZB4vyCCMe4Fe7Xo8o52jS5ukdGOZpVje_48_l8YEhyphenhyphenLl1zNHhFc9sK_fPF_V4G0h0xdVT2AS2SNm29FuP59goKhVJPoG1i7Tkh6hxA5cMHQ/s400/Python-ile-Derin-%25C3%2596%25C4%259Frenme-3B.jpg" width="338" /></a></div>
Bazen söylemek istediklerimi çok karmaşık söyleyebiliyorum. Bir önceki <a href="https://derindelimavi.blogspot.com/2020/05/keras-n-akibeti-ile-tensorflow-2x-durumu.html">yazımızda</a> anlatmak istediğimiz özetle şudur. Tek başına Keras kullanmak artık mümkün değil. Tesorflow'a geçmek zorundayız. Ama bunu yaparken Kerasdanda vazgeçmiş olmuyoruz çünkü Tensordlow 2.x den sonra Kerası merkeze almış bir yapısı var.<br />
<br />
Bu konuda Türkçe basılı kaynak isytenlere önerebileceğimiz yegane kaynak kitap "Python ile Derin Öğrenme" kitabıdır. Bu kitap bir tercüme çalışması. Orijinal Halini "<span class="style-scope yt-formatted-string" dir="auto">Francois Chollet" yazmış. </span><br />
<br />
<blockquote class="tr_bq">
<span class="style-scope yt-formatted-string" dir="auto">Orjinal Kitap Linki : <a href="https://www.manning.com/books/deep-learning-with-python">Deep Learning with Python</a></span></blockquote>
<span class="style-scope yt-formatted-string" dir="auto"><br /></span>
<span class="style-scope yt-formatted-string" dir="auto">Tercümesini <a href="https://www.linkedin.com/in/bilgin-aksoy-a61a90110/">Bilgin Aksoy</a> kardeş yaptı. Karınca kararınca bizde düzenlemesine yardımcı old</span>uk. <a href="http://buzdagiyayinevi.com/">Buzdağı yayınevi</a> de basımını yaptı.<br />
<br />
<blockquote class="tr_bq">
Türkçe Kitap Linki : <a href="http://buzdagiyayinevi.com/python-ile-derin-ogrenme/">Python ile Derin Öğrenme</a></blockquote>
<br />
<br />
Kitap tanıtımından alıntı yapalım <br />
<br />
<blockquote class="tr_bq">
<i>Bu kitap, derin öğrenmeyi sıfırdan öğrenecek ya da bilgilerini artıracak herkes için yazılmıştır. Makine öğrenmesi mühendisi, yazılım geliştirici veya üniversite öğrencisi de olsanız bu kitapta değerli sayfalar bulacaksınız.Bu kitap, uygulamalarla ve kod yazarak derin öğrenmeyi öğretmeye çalışmaktadır. Matematiksel notasyon yerine sayısal kavramları kod örnekleriyle açıklayarak makine öğrenmesi, derin öğrenmenin temel fikirleri hakkında uygulamalı bilinç oluşturmaya çalışmaktadır. Ayrıntılı olarak açıklamaların eklendiği 30’dan fazla kod örneğinden, pratik tavsiyelerden ve derin öğrenmeyi somut problemlerin çözümünde kullanmayabaşlamak için gerekli her şeyin detaylı açıklamalarından öğreneceksiniz. Kod örnekleri Python derin öğrenme kütüphanesi Keras’ı arka planda TensorFlow’la kullanmaktadır. Keras en popüler ve hızlı gelişen derin öğrenme kütüphanelerinden biridir ve genelde yeni başlayanlara yaygın olarak tavsiyeedilmektedir. Bu kitabı okuduktan sonra derin öğrenmenin ne olduğu ne zaman uygulanabilir olduğu ve kısıtları hakkında sağlam bir temele sahip olacaksınız. Makineöğrenmesi problemlerine yaklaşmada standart bir yol haritasını ve sıkça karşılaşılan sorunlara nasıl çözüm getireceğinizi öğreneceksiniz. Görüntü sınıflandırma, zaman serisi tahmini, duygu analizi, resim ve metin üretme gibi bilgisayarlı görüden doğal dil işlemeye kadar birçok gerçek hayat probleminde Keras’ı kullanabileceksiniz.</i></blockquote>
Kitabın içeriğiyle ilgili daha detaylı bilgi için <a href="http://buzdagiyayinevi.com/wp-content/uploads/2019/09/Python.pdf">bakınız</a><br />
<br />
Aslında kitap çıkalı epey zaman oldu. Şimdi niçin duyuru yapıyoruz konusuna geçersek. Bu kitaptaki örnek kodların Tensorflow .2x için adaptasyonunu yapalım diye bir çalışma içine girdik.<br />
<br />
<blockquote class="tr_bq">
<a href="https://github.com/birolkuyumcu/deep-learning-with-python-notebooks-tf2.x"><i><b>https://github.com/birolkuyumcu/deep-learning-with-python-notebooks-tf2.x</b></i></a></blockquote>
<br />
Tensorflow adaptasyonu deyince gözünüz korkmasın. Kodun çoğunda değişiklik olmuyor. Kitap yazılalı epey zaman geçmiş bu yüzden Tensorflow adaptasyou olmasada versiyon uyumsuzluğundan düzeltilmesi gereken yerler olabiliyor. Peyder pey kodları düzenleyip paylaşacağız orjinal kodlara bakmak isterseniz <a href="https://github.com/fchollet/deep-learning-with-python-notebooks">burada</a><br />
<br />
<br />
<span class="style-scope yt-formatted-string" dir="auto">Her türlü görüş ve önerilerinizi bekleriz.</span><br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-84202035426954428302020-05-10T10:48:00.004+03:002020-05-10T13:42:56.862+03:00Keras 'ın akibeti ile Tensorflow 2.x durumu <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheoCJYWdDb0VLOZgMrRQfwdG8NiForsn4DUkJ8JuuJ8dsyJORSI5_3uEBNNiPZQgRYTWbUSYP9hytdDSnNCMe6-m0aLzyh9DixZ77nH8Sg8lPXM-ODZ8C2MNEJElHYsIXiq_0Z-w/s1600/keras_vs_tensorflow_wrong_question.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="304" data-original-width="600" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheoCJYWdDb0VLOZgMrRQfwdG8NiForsn4DUkJ8JuuJ8dsyJORSI5_3uEBNNiPZQgRYTWbUSYP9hytdDSnNCMe6-m0aLzyh9DixZ77nH8Sg8lPXM-ODZ8C2MNEJElHYsIXiq_0Z-w/s400/keras_vs_tensorflow_wrong_question.jpg" width="400" /></a></div>
<br />
<br />
Bizi takip edenler bilir. Derin öğrenme kütüphaneleri hakkında yazılar yazmıştık.<br />
<br />
<ul>
<li><a href="https://derindelimavi.blogspot.com/2017/08/derin-ogrenmede-kutuphane-savaslar-1.html">Derin Öğrenmede Kütüphane Savaşları 1</a> </li>
<li><a href="https://derindelimavi.blogspot.com/2017/08/derin-ogrenmede-kutuphane-savaslar-2.html">Derin Öğrenmede Kütüphane Savaşları 2</a></li>
</ul>
<br />
Bizde bu kütüphanleri içinde "Keras" ı tercih etmiştik. Kullanımı kolay, ağ yapısını tasarlamak kolay, lego vari katman eklemeleri ile çalışıyordu. Genel eğitim fonksiyonları ile hafızdan yada dizinden , yada Python Generator kaynaklı şekilde eğitim tasarlamak mümkündü. Üst düzey bir yapısı vardı alta Theano, Tensorflow, CNTK, mxnet gibi diğer kütüphaleri kullanabiliyordu.<br />
<br />
Yukardaki yazılarda bahsettiğim gibi büyük şirketlerin savaş cephesi haline gelmiş bir ortamda, Googleın TF deki tekelci anlayışı. Kerasın yazarının google işe girmiş olması vs durumlar kerasın geleceği hakkında endişelendiriyordu.<br />
<br />
Beklediğimiz gibi Büyük şirketlerin savaşı neticesinde geriye 3 şirket ve 3 Kütüphane kaldı<br />
<ul>
<li>Tensorflow / Google</li>
<li>PyTorch / Facebook</li>
<li>MxNet / Amazon </li>
</ul>
<br />
Theano gelişimi desteksizlikten durduruldu. CNTK ne yapıyor bilen yok. Caffe2 yi PyTorch un içine gömdüler. Keras da müstakil versiyon yani değişik ktüphaneler üzerinde çalışabilen halini DURDURDU. Her tür backend ile çalışan en son versiyon <a href="https://github.com/keras-team/keras/releases/tag/2.2.5">Keras 2.2.5</a> oldu. Duruma üzülsemde bir anlamda da hak vermek zorundaydım Theano zaten duruduruldu, CNTK ve MxNet cepheside Kerasa yeterli desteği çıkmayınca. Geliştiriciler mecburen böyle bir yola girmek zorunda kaldılar. Madem Tensorflow dışındakilerden destek gelmiyor. Tensorflowun içinde ki keras üzerinde yürümeye devam ederiz dediler.<br />
<br />
Yazının başındaki Resmi <br />
<a href="https://www.pyimagesearch.com/2018/10/08/keras-vs-tensorflow-which-one-is-better-and-which-one-should-i-learn/">"If you’re asking “Keras vs. TensorFlow”, you’re asking the wrong question" </a><br />
yazısından
aldım özetle dediği ; Kerasmı Tensorflow mu diye soruyorsanız yanlış
soru soruyorsunuz diyor. Artık zaten böyle bir sorunun hiç bir anlamıda
kalmadı <br />
Ama beklenmeyen şey Tensorflow 2.0 ile oldu. Tensorflow'un merkezine süpriz bir şekilde Keras geçti. Pek çok kaynakda sizde araştırın göreceksinizki eski NN kısmının kullanımının anlatıldığı felan yok. Tensorflow 2.x ile temel kısımlar keras üzerinden anlatılmaya başladı ve şimdilik öyle de devam edecek gibi görünüyor.<br />
<br />
<br />
Elbette herşey güllük gülüstanlık değil. Tensorflow 2.x geçmekle öğrenmemiz gereken yeni şeylerde var. Mesela verilerle ilgili kısımlar için "tf.data" kullanmayı öğrenmek veya Ön eğitimli model kullanımı için TensorFlow Hub kullanmayı öğrenmek gibi. <br />
<br />
<ul>
<li><a href="https://www.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187">Intro to TensorFlow for Deep Learning</a></li>
</ul>
<br />
Udacity de yayınlanan bu <b>ücretsiz kurs</b> ile Keras'dan TF 2.x geçişinizi hızlandırabilirisiniz.<br />
<br />
Bu durumun pek çok avantajları var elbette. Çoklu GPU kullanımı , ve elbette TPU kullanımı artık mümkün. Keza yazdığınız kodu pek çok ortamda çalıştırma imkanına kavuşmuş oluyoruz. En büyük çekincem Kerasın logo vari yapısının bozulup "<a href="https://github.com/tensorflow/docs/blob/master/site/en/guide/keras/custom_layers_and_models.ipynb">subclassing</a>" yapısının mecburi hale getirilmesi. <i>Yeni tip katman tanımlamaları için bu tür "subclassing" sistemi mecburi olabilir ama bu katmanların yine eski metodlarla bir araya getirilebilmesi şartıyla</i>. Bütün yapıyı bu tip bir sisteme dönüştürdüğünüzde Keras kullanmanın zannımca hiç bir anlamı kalmıyor malesef<br />
<br />
<br />
Son olarak Kerasın ana geliştiricsinin fikirleri ve "<span class="style-scope yt-formatted-string" dir="auto">Francois Chollet" in tf.keras'ın <b>detaylarını</b> anlattığı 2 video ile yazımızı tamamlıyoruz.</span><br />
<span class="style-scope yt-formatted-string" dir="auto"><br /></span>
<br />
<ul>
<li><a href="https://www.youtube.com/watch?v=Bo8MY4JpiXE&t=1838s"><span class="style-scope yt-formatted-string" dir="auto">Keras and TensorFlow 2.0</span></a></li>
<li><a href="https://youtu.be/UYRBHFAvLSs?list=PLQY2H8rRoyvzIuB8rZXs7pfyjiSUs8Vza"><span class="style-scope yt-formatted-string" dir="auto">Inside TensorFlow: tf.Keras (part 1)</span></a></li>
<li><span class="style-scope yt-formatted-string" dir="auto"><a href="https://youtu.be/uhzGTijaw8A?list=PLQY2H8rRoyvzIuB8rZXs7pfyjiSUs8Vza">Inside TensorFlow: tf.Keras (part 2)</a></span></li>
</ul>
<br />
<span class="style-scope yt-formatted-string" dir="auto"> Her türlü görüş ve önerilerinizi bekleriz.</span>birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-40634849935700597282019-09-19T17:08:00.002+03:002019-09-19T17:08:57.501+03:00FastText ile Kelime Vektörü OluşturmaBu yazımızda FastText kullanarak nasıl kelime vektörü oluşturabileceğimizi nasıl göreselleştire bileceğimizi göreceğiz.<br />
<br />
<a href="http://derindelimavi.blogspot.com/2019/08/fasttext-ile-hzl-metin-snflandrma-1.html">İlk yazımızda</a> bahsetmiştik<br />
<br />
<blockquote class="tr_bq">
<i>"Sonra Kelime vektörü - <a href="https://www.wikiwand.com/en/Word2vec">word2vec</a>
- denen bir kavram çıkmış ortaya. Her kelime için sabit uzunlukta bir
vektör kullanmak. "Birlikte geçen kelimeler anlamca yakındır" var
sayımından yola çıkılıyor. Başlangıçda aynı yapay sinir ağlarındaki
gibi kelimeler için rastgele seçilmiş vektör değerleri atanıyor. Devasa
derlem - corpus - kullanarak danışmansız şekilde - unsupervised - her
kelime için birlikte geçtiği kelimelere göre bu vektörler güncelleniyor.
"</i></blockquote>
Kelimelerin anlamca yakınlıklarına göre orantılı birer vektöre dönüştürülebilmesinin önemi büyük. Doğal dil işleme ile yapılacak hemen her işte işimize yarar bir başlangıç noktası verir. Mesela bir arama algoritmasında sadece yazdığınız kelimeyi ararsınız. Aynı yada yakın anlama gelen kelimelerin geçtiği yerlere ulaşamazsınız. Anlamca yakın kelimeler ile arama yapabilmek için kelime vektörleri çok işinize yarayacktır. Bir başka aklıma gelen örnek; iki metnin anlamca yakınlığının hesaplanmasında kullanılabilir.<br />
<br />
FastText 'in sitesinde değişik dillerde <a href="https://commoncrawl.org/">Common Crawl</a> ve Wikipedia dan toplanmış derlemler le eğitilmiş hazır kelime vektör modelleri var. Elbette Türkçe içinde var. <br />
<blockquote class="tr_bq">
<i><a href="https://fasttext.cc/docs/en/crawl-vectors.html">fasttext.cc/docs/en/crawl-vectors.html</a></i></blockquote>
Buradan yayınlanan hazır eğitilmiş kelime vekörleri iki formatta sunuluyor. Uzatnısı .bin olan FastText modeli doğrudan yüklüyebiliyorsunuz. Yada uzantısı .txt olan da her satırda başta kelime devamında vektör olacak şekilde hazırlanmış bir metin dosyası olarak.<br />
Hemen baştan uyarayım dosyalar çok büyük ve devasa kelime sayısına sahip. Bu tip bir modeli her bilgisayarda yüklüyebilmeniz pek mümkün olmaz.<br />
<br />
Bu tip genel vektörlerin bir başka handikapıda şudur. Kelimeler çeşitli alanlarda çok farklı anlamlara gelebilmektedir. Sadece eş anlamlı kelimeler için olan bir durum değil bu. Mesela bir başkent ismi turizm ile ilgili metinlerde doğal güzellikleri mesire yerleri felanla geçerken. Uluslar arası politika yazılarında o ülkeyi ifade eden özne olarak kullanılabilir. Böyle durumlarda o kelimenin anlamını yeterince gösterebilen vekötre ulaşamayabiliriz. Bu tip problemlemin kısmen çözümü uygulamanıza has derlem oluşturmak ve eğitimi o derlem üzerinde yapmaktır.<br />
<br />
Türkçe için deneme yapmamıza uygun bir derlem buluyoruz. Derlem konusunda eskiden beri çalışmalarıyla bilinen <a href="http://gurmezin.com/hakkimizda/">Ahmet Aksoy</a> 'un çalışmasını kullanacağız. Bu derlemi Kaggle da veri kümelerinin yayınlandığı kısımda yayınlamışlar.<br />
<br />
<blockquote class="tr_bq">
<i><a href="https://www.kaggle.com/ahmetax/hury-dataset">www.kaggle.com/ahmetax/hury-dataset</a></i></blockquote>
<br />
Bizde ordan indirip FastText GUI ile eğitim yapacağız. Bu derlemde Hürriyet gazetesinden çekilmiş haberler cümlelerine ayrılmış, noktalama işaretleri sayılar ve etkisiz kelimeler - stop words - çıkarılmış. Devam etmeden "stop words" kavramından bahsedelim. Kavram olarak anlamı cümle içlerinde kaldırıldığında anlamı değiştirmeyen kelimeler diyebiliriz. Değişik tercümelerine denk gelmek mümkün ; gereksiz kelimeler, dolgu kelimeler, etkisiz kelimeler vs ...<br />
<br />
Evet elimizde temizlenmiş hazır dermlem var biz bu derlem ile FastText GUI ile gözetimsiz eğitimler yapıp kelime vektörleri oluşturacağız. Elbette fasttext i komut satırında kullanarak yada python paketindeki fonksiyonlarlada eğitimler yapabilirsiniz. GUI için <a href="http://derindelimavi.blogspot.com/2019/09/python-dan-exe-ye-cevirmek.html">çalıştıralbilir paket</a> oluşturduk onu da kullanabilirsiniz.<br />
<br />
İki ana eğitim metodu var skipgram ve cbow bir her ikisi içinde 100 lük vektörler üretecek şekilde eğitimler yaptık. Ek olarak fasttext 'in klasik wor2vect in gelişmişi olduğunu söylemiştik. Başlıca üstünleklerinden biriside kelimeyi harf ngramlar olarakda tutabiliyor olmasıdır. Bu konuyla ilgili eğitimde seçeneklerimiz var. harf ngram kullansın / kullanmasın diye de 2 seçenekli ilave eğitim yaptık. Toplam da 4 eğitim oldu.<br />
<br />
GUI kullanımından bahsedelim biraz<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeavJW7SzFNZJU0oBbXTjktK8A3Rb33lOxkk4gDYqUU9oaZkCAG8OvEHevGslfdokHM_ivVdKFZkwzYYqGHRxtfOgyYdEXFbZZGvwHVrQuJdSxm1eXi7Ia0VZT8jxGaUPAvPlCSQ/s1600/fasttext_gui_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="322" data-original-width="728" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeavJW7SzFNZJU0oBbXTjktK8A3Rb33lOxkk4gDYqUU9oaZkCAG8OvEHevGslfdokHM_ivVdKFZkwzYYqGHRxtfOgyYdEXFbZZGvwHVrQuJdSxm1eXi7Ia0VZT8jxGaUPAvPlCSQ/s400/fasttext_gui_01.jpg" width="400" /></a></div>
<br />
Sol en üstte "<span style="color: red;">Command</span>" kısmındaki açılır listede 4 seçenek var<br />
"<span style="color: red;">skipgram</span>" ve "<span style="color: red;">cbow</span>" gözetimsiz eğitim için kullaınacak seçenekler dir. <br />
"<span style="color: red;">supervised</span>" seçeneği gözetim li eğitim için<br />
"<span style="color: red;">test</span>" de gözetimli eğitimi yapılmış modeli bir veri seti üzerinde çalıştırıp sonuçları görmek için.<br />
<br />
Üstte Ortada "<span style="color: red;">Run Mode</span>" var. burda 2 seçeneğimiz var<br />
"<span style="color: red;">slient</span>" da fasttext arkaplanda ekrana çıktı vermeyecek şekilde çalıştırılır ve sonuçlar işlem bittiğinde GUI de ekranda gösterilir.<br />
"<span style="color: red;">std output</span>" seçeneğini seçtiğinizde fasttext çalışıtırılır ve komut satırı penceresinde çalışmasını ve yazdıklarını görebilirsiniz. fakat işlem bittiğinde yaptıkları GUI ekranına gelmez.<br />
<br />
Harf ngram seçeneğini belirleyen kısım ise altta ortadaki "<span style="color: red;">min char ngram</span>" ve "<span style="color: red;">max char n gram</span> " seçenekleri her ikisinide 0 yaptığınızda harf ngram kullanmayarak eğitimi yapacakdır.<br />
"<span style="color: red;">learning rate</span>" seçeneği başlangıç öğrenme hızıdır. Yapay öğrenme metodlarının çoğundaki anlamda kullanılır en büyük değer 1.0 dır fakat çok büyük olursa hata - loss - değeri küçülmek yerine büyümeye başlıyor ve sonra program çakılıyor. ona dikkat edin<br />
"<span style="color: red;">epoch</span>" ise yine eğitim iterasyonunun ne kadar fazla yapılacağına dair bir parametre, Ne kadar büyük verirseniz o kadar uzun süre çalışır.<br />
"<span style="color: red;">word ngram</span>" için seçenek var. Bir dışında bir seçenekle kelime ngram yapısını kullanmış olursunuz.<br />
"<span style="color: red;">word vector Dimension</span>" seçeneği kelime için üretilecek vektör büyüklüğünü belirler.<br />
<br />
<br />
Eğer eğitimi "slient" yaptıysanız eğitim süresince loss değerinin değişimini gösteren bir grafikde çizdiriyoruz gui altta<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg94p6xWFmoTAIJfhR0bcuw-2gJnblrAwV4ff_x9ziudg6nb2luMgdrI0-RQefx2luIZXFhlWEm1Jy_bTnqi7pUW3RG5P_4m-XX_bf3iQ0k8jNhE4wVHRY8zkwE_6-3il5jjilElA/s1600/fasttext_gui_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="741" data-original-width="1007" height="293" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg94p6xWFmoTAIJfhR0bcuw-2gJnblrAwV4ff_x9ziudg6nb2luMgdrI0-RQefx2luIZXFhlWEm1Jy_bTnqi7pUW3RG5P_4m-XX_bf3iQ0k8jNhE4wVHRY8zkwE_6-3il5jjilElA/s400/fasttext_gui_02.jpg" width="400" /></a></div>
<br />
<br />
FastText kendi içinde multi thread bir yapıda olduğundan çalışırken mesaj almakda epey problem yaşadım. Halada tam çözümü olmayan bir sürü kısmı vardır. Ama yinede komut satırı açıp uzun uzun parametereleri yazmayla uğraşmak zorunda kalmıyorsunuz.<br />
<br />
Gelelim sonuçlara. Yukarda belirttiğim gibi 4 eğitim yapıtık. hepsinde 100 lük vektör oluşturduk.<br />
<ol>
<li>skipgram + subwords ( char ngram ( 3 - 6) )</li>
<li>skipgram sadece kelime bazlı</li>
<li>cbow + subwords ( char ngram ( 3 - 6) )</li>
<li>cbow sadece kelime bazlı</li>
</ol>
<br />
<br />
<br />
sonuçları nasıl görselleştirebiliriz derseniz kelime vektörlerini iki boyuta PCA indirip grafik olarak gösterebiliyoruz. Mesela İlk eğitim sonucu elde edilen vektörlerden rast gele seçilmiş 250 kelime için şöyle bir grafik çıkıyor.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNK2tSOrZ612_tIPOcVqsFAZ02jNLJ8slXOVGsPY98erdX1PjA1X8SuOozl6R7510vQJcm9d6Xk3-8xMaH549XdeWTsMa7bg8LsmeKVEfCMziV2u8qvlbqcsRKSmMxD5Y4GfRaeQ/s1600/fasttext_gui_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="871" data-original-width="894" height="311" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNK2tSOrZ612_tIPOcVqsFAZ02jNLJ8slXOVGsPY98erdX1PjA1X8SuOozl6R7510vQJcm9d6Xk3-8xMaH549XdeWTsMa7bg8LsmeKVEfCMziV2u8qvlbqcsRKSmMxD5Y4GfRaeQ/s320/fasttext_gui_03.jpg" width="320" /></a></div>
<br />
Bazen ilginç bağlantılar görülsede bu şekilde çoğu yerinde karman karışık bir yapı çıkıyor. Bizim anlamca ilgisini bildiğimiz kelimelerden oluşturduğumuz bir listeyi aynı şekilde görselleştirerek bakıyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1BLpZWKcox1uotmkAN8KauP5Jga36cWfHSmQDnVngkZ9PzcKYOoc_oIrvx8Ybyi9lmLLhffwT_scWCbCKkECqbp0PbaUAxK0E05CDdSAjL3Ry53icg5CJjgCcyy2N0NMFjcdTUg/s1600/fasttext_gui_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="867" data-original-width="891" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1BLpZWKcox1uotmkAN8KauP5Jga36cWfHSmQDnVngkZ9PzcKYOoc_oIrvx8Ybyi9lmLLhffwT_scWCbCKkECqbp0PbaUAxK0E05CDdSAjL3Ry53icg5CJjgCcyy2N0NMFjcdTUg/s400/fasttext_gui_04.jpg" width="400" /></a></div>
<br />
<br />
Burda gayet şık bir anlamca uygun bir dağılım görüyoruz. altın, gümüş, elmas, zümrüt, platin gibi değerli maden ve metaller sağ üstte toplanmış. Sol üst tarafa doğru ise toplanan kelimeler ise ; Terör, terörist, cinayet, tecavüz, katil, katiller, pkk, deaş, gibi kelimeler. Hatta "terörizst " diye bir kelime bile var. Biz bu kelimeyi mahsus koyduk aslında böyle bir kelime yok. Ama bu eğitimde harf bazlı ngram kullanıldığından bu kelimenin vektörünü doğru konumlandırabilmiş. Diğer kelimeleride inceleyin benzeri yakınlıklarda konumlandıklarını görebilirsiniz.<br />
<br />
Hemen 2. eğitim sonucuna bakıyoruz<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkzZSHxvKk_463bpAfXRFCIRsG0zy3AgwvDwNEqYdTkSk8IwMhXfz_h5YdfvRSJAqwnuhVnBzPZi5I0i4G9y5zYoIdZI1PglJDS2_NyScZ8eBYjNX-Ti-i7_6M7-3JWKQu_xYqDw/s1600/fasttext_gui_05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="870" data-original-width="889" height="391" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkzZSHxvKk_463bpAfXRFCIRsG0zy3AgwvDwNEqYdTkSk8IwMhXfz_h5YdfvRSJAqwnuhVnBzPZi5I0i4G9y5zYoIdZI1PglJDS2_NyScZ8eBYjNX-Ti-i7_6M7-3JWKQu_xYqDw/s400/fasttext_gui_05.jpg" width="400" /></a></div>
<br />
<br />
burda diğer kelimelerde yine mantıklı ve benzeri sonuçlar görürken "terörizst " kelimesinin nisbeten olması gereken yerde uzukta ortaya çıktığını görüyoruz. Buda harf bazlı ngramın faydası diyelim.<br />
<br />
3. eğitim cbow + subwords sonuç grafiği<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUm9kqmtUNMVb6_Kqvydk61B5AYrgsaYvXxUH96CkwX86YKdyUEKVaKzjdjBWWRinoxoIUBdTKAMK3WSgj8NFf22L4OotsjTMhhFS1azgJHecXs6EpqqUv9yUAmaPk8-BB8DbAYQ/s1600/fasttext_gui_06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="867" data-original-width="886" height="391" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUm9kqmtUNMVb6_Kqvydk61B5AYrgsaYvXxUH96CkwX86YKdyUEKVaKzjdjBWWRinoxoIUBdTKAMK3WSgj8NFf22L4OotsjTMhhFS1azgJHecXs6EpqqUv9yUAmaPk8-BB8DbAYQ/s400/fasttext_gui_06.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
4. eğitim cbow kelime bazlı sonuç grafiği<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin6U9ta31KyeoS6vMb-wz-Ef5islRqqnAXNgi7bZp45gcvnc3t0i4lkwGtingLsSHSqPvfJrJTnAovITWHSmQkmfJUfyAx6DG7uPszINiD1kXyQicDYU8JG8CmNowEE1_8d5mbmA/s1600/fasttext_gui_07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="865" data-original-width="889" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin6U9ta31KyeoS6vMb-wz-Ef5islRqqnAXNgi7bZp45gcvnc3t0i4lkwGtingLsSHSqPvfJrJTnAovITWHSmQkmfJUfyAx6DG7uPszINiD1kXyQicDYU8JG8CmNowEE1_8d5mbmA/s400/fasttext_gui_07.jpg" width="400" /></a></div>
<br />
Eğitim sonrası ulaşılan hata değerleride yazalım<br />
<ol>
<li>skipgram + subwords ( char ngram ( 3 - 6) ) -- <span style="color: red;">Loss : 0.990</span></li>
<li>skipgram sadece kelime bazlı -- <span style="color: red;">Loss : 0.961</span></li>
<li>cbow + subwords ( char ngram ( 3 - 6) ) -- <span style="color: red;">Loss : 1.480</span></li>
<li>cbow sadece kelime bazlı -- <span style="color: red;">Loss : 1.352 </span></li>
</ol>
Evet epey uzun da ols bir yazının daha sonuna geldik. Her türlü görüş ve önerilerinizi bekleriz.<br />
<br />
birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-9029035641426601772019-09-15T08:26:00.001+03:002019-09-15T08:26:53.083+03:00Python dan EXE ye çevirmek...<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgixMTUNst4pqmtoeUtfn-jh4CqrnmIZ6QbDkrydDsKb6ZD7sucS39PisA6fh5Si-QhWMLfFmTdpTXlCr_s8bM_p5gadu8mZmjyr4IKH8ZAWmm0XlT3kZrfzOA6Az58ft2gv_TkbA/s1600/fasttext_gui_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="740" data-original-width="726" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgixMTUNst4pqmtoeUtfn-jh4CqrnmIZ6QbDkrydDsKb6ZD7sucS39PisA6fh5Si-QhWMLfFmTdpTXlCr_s8bM_p5gadu8mZmjyr4IKH8ZAWmm0XlT3kZrfzOA6Az58ft2gv_TkbA/s400/fasttext_gui_01.jpg" width="391" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
C/C++ ile programlamaya başlayan biri olarak Python ile program yazmak oldukça zahmetsiz geliyor. Bir kütüphane kurmak çoğu zaman komut satırında bir "<b><i>pip</i></b>" yazmayla halloluyor. Keza kodun içerisinde de bir "<b><i>import</i></b>" ile kurulmuş kütüphaneyi kullanmaya başlıyabiliyorsunuz.<br />
<br />
C/C++ da olsa bir kütüphaneyi kurmak için ya o kütüphaneyi derlemeniz gerekiyor ya da kullandığınız derleyiciyle derlenmiş kütüphaneyi bulmanız gerekiyor. Keza yazdığınız kodda kütüphaneyi çağırabilmek içinde bir sürü formaliteyi halletmiş olmanız lazım. Bu konu çok sorulduğundan hakkında <a href="http://derindelimavi.blogspot.com/2008/11/ktphane-kullanm.html">Kütüphane kullanım</a>ı diye yazı bile yazmıştık. Bütün bunların üstüne programınızı derleyip çalıştırmışsanız. Çalıştırılabilir halini kolayca başkalarıyla paylaşabiliyordunuz. Yanına eğer gerekiyorsa kullanılan dinamik kütüphaneleri -DLL- koyarak elbette.<br />
<br />
Pythonda bu imkan kolay değil. Kodu verebilirsiniz elbette ama insanlar sadece kullanmak istiyorsa bile mecburen python ve gereken paketleri kurmaları bekleniyor. Helede kullanıcının programlamayla ilgisi yoksa bu seçenek tümden zor oluyor. Yada python dosyalarından çalıştırılabilir dosya çevrimi yapan bir uygulama kullanacaksınız. Bundan önceki 3 yazımızda FastText ve onun için yazdığımız GUI programından bahsettik. GUI programının kullanımını kolaylaştırmak adına bizde exe formatına çevirelim dedik. Ve kolları sıvadık<br />
<br />
Python kodlarını çalıştırılabilir hale getirmek için değişik projeler oluşturulmuş benim görebildiklerimi listeleyim <br />
<ul>
<li><a href="http://www.py2exe.org/">Py2Exe</a></li>
<li><a href="https://anthony-tuininga.github.io/cx_Freeze/">cx_Freeze</a> </li>
<li><a href="http://www.pyinstaller.org/">PyInstaller</a></li>
<li><a href="https://nuitka.net/">Nuitka</a></li>
</ul>
Uzun boylu bir inceleme yapmadık. Kabaca bir araştırma sonrası biz PyInstaller kullanmaya karar verdik. Birileri oturup incleyip karşılaştırma yaparsa bizde seviniriz. Çalışmaların çoğunun yaptığı aslında çevrilmesi için belirlenen python dosyasından o dosyada kullanılan paketleri tespit edip sonra ilgili dönüşümleri yapmasıyla oluyor. Elebette zor bir işlem helede kurulmuş paket sayınız çoksa. Burda önerim yeni bir ortam - virtual environment - kurmanız. Benim bilgisayarımda Anaconda verisyonu var. conda komutuyla hemde python versiyonu seçerek oratm kurabiliyorsunuz<br />
<br />
conda create -n pvinst python=2.7<br />
<br />
komutuyla pvinst isimli bir ortam kurduk. Bu ortamı activate komutuyla aktif edip içine sadece fasttextgui için lazım olan paketleri kuruyoruz. <br />
<ul>
<li><a href="https://wiki.qt.io/PySide">pyside</a> : 1.2.x versiyonu</li>
<li><a href="https://numpy.org/">numpy</a></li>
<li><a href="http://www.pygal.org/en/stable/installing.html">pygal</a></li>
<li>PyInstaller </li>
</ul>
artık pyinstaller komutunu kullanabiliriz. genel hali şöyle <br />
<blockquote class="tr_bq">
<i>usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]<br /> [--add-data <src or="" src:dest="">]<br /> [--add-binary <src or="" src:dest="">] [-p DIR]<br /> [--hidden-import MODULENAME]<br /> [--additional-hooks-dir HOOKSPATH]<br /> [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]<br /> [--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]<br /> [--noupx] [--upx-exclude FILE] [-c] [-w]<br /> [-i <file .ico="" file.exe="" file.icns="" or="">]<br /> [--version-file FILE] [-m <file or="" xml="">] [-r RESOURCE]<br /> [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]<br /> [--win-no-prefer-redirects]<br /> [--osx-bundle-identifier BUNDLE_IDENTIFIER]<br /> [--runtime-tmpdir PATH] [--bootloader-ignore-signals]<br /> [--distpath DIR] [--workpath WORKPATH] [-y]<br /> [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]<br /> scriptname [scriptname ...]<br /> </file></file></src></src></i></blockquote>
biz öyle teferruata felan girmeden<br />
<br />
<blockquote class="tr_bq">
<i>pyinstaller fasttext_gui_main.py --clean</i></blockquote>
<br /><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdvVcI9IEZXGTfQVenAt2IUMPOqDcZ2slCTQF0QyCGvIIzP_GDYnoKVdcbNA_PA2e3trNy89HtnZAYagilZjjQase5gbfmbFCDTOYOMtqH-d32L3YDDTjjRV9bgB_oZUtPT4prKA/s1600/pyinstaller_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="830" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdvVcI9IEZXGTfQVenAt2IUMPOqDcZ2slCTQF0QyCGvIIzP_GDYnoKVdcbNA_PA2e3trNy89HtnZAYagilZjjQase5gbfmbFCDTOYOMtqH-d32L3YDDTjjRV9bgB_oZUtPT4prKA/s400/pyinstaller_01.jpg" width="400" /></a></div>
<br />
diye yazıyoruz ve gereken dosyalar oluşturuluyor. Elbette sonucu denemeniz ve gereken ilave dosyalarıda toplamanız gerekiyor.<br />
<br />
GUI içinde düğmelerde kullanılan görüntü dosayalarını diziniyle birlikte ilgili dizine atıyoruz<br />
GUI programı aslında arkaplanda alt işlem olarak fasttext.exe yi çalışıtırıyor. fasttext.exe de bazı DLL dosyalarına ihtiyaç uduryor onlarıda ekliyoruz.<br />
Her nedence pygal ın css ile kısmında bütün herşey ilgili dizine aktarılmamış. O dosyalarıda ekliyoruz. <br />
artık elimizde çalıştırılabilir FastText GUI var hayırlı olsun<br />
<br />
Indirmek için github hesabının <a href="https://github.com/birolkuyumcu/fasttext_gui/releases">release sayfasına</a> buyrunuz<br />
<br />
bu sayfadaki daki <i>fasttext_gui_main.7z</i> isimli sıkıştırılmış dosyayı indirip açın "fasttext_gui_main.exe" dosyasını çalıştırın<br />
<br />
Her türlü görüş ve öneriliriniz bekleriz. Eğer kısmet olursa FastText yazılarımıza kelime vektörleri ile ilgili konularda devam edeceğiz<br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-60469441136453092432019-08-31T11:37:00.001+03:002019-08-31T11:37:21.926+03:00FastText ile hızlı metin sınıflandırma - 3Bir önceki yazımızda veri kümemimiz ile FastTextGUI kullanarak eğitim işlemini yapmıştık. Eğitim sonucunda uzantısı <b><i>.bin</i></b> olan bir models dosyası oluşturuldu. Bu yazımızda eğittiğmiz modeli nasıl kullanacağımızı göreceğiz.<br />
<br />
Eğtilmiş modeli kullanmanın iki yolu var. Birincisi FastText in komut satırı çalıştırılabilir programını kullanarak. İkinci yolu FastText i python kütüphanesi olarak yükleyerek.<br />
<br />
İlkinden başlıyalım. FastText programının kullanım parametrelerine bakalım<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0rVDimkZlJrT2_FDkpNWQFhTv0g0f7FNgwKWfyVR3Gcjeaj-3QzFNY4LCuwrRTb6rEfyFgf1c6JMVy2xSGVPI1ikG50a0azsNxgkRpj5uJN_XXuTrj_M9YmNFeE9Uz-H8N48kCA/s1600/fasttext_gui_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="308" data-original-width="601" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0rVDimkZlJrT2_FDkpNWQFhTv0g0f7FNgwKWfyVR3Gcjeaj-3QzFNY4LCuwrRTb6rEfyFgf1c6JMVy2xSGVPI1ikG50a0azsNxgkRpj5uJN_XXuTrj_M9YmNFeE9Uz-H8N48kCA/s400/fasttext_gui_01.jpg" width="400" /></a></div>
<br />
Bu seçeneklerden tahmin için "predict" yada "predict-prob" sçeneğini kullanabiliriz. aralarındaki fark ikincisinde tahmin ile birlikte tahin kesinlik ihtimalinide veriyor. Tahmin yapılmasını istediğiniz metinleri her biri bir satır olacak şekilde bir metin dosyasına kaydetmemiz gerekmekdedir. Her tahmin için geçici bir metin dosyası yazdırıp FastText programıyla çalıştırmamız gerekiyor. Bu işlem için bir fonksiyon yazdık<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUKh1OiE82WYGRAuvWjYS5NGWeMLuxbNPxyqwhi8DjOaHJ4Sf12URlpnzpXpsVHZYrtFOe8ZT4DIzBOy54EVguj6I_PCb5wpEznq-x6BuV8uYlMLkWGxlpRj4ql0GZegOxWuWRPg/s1600/fasttext_gui_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="197" data-original-width="606" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUKh1OiE82WYGRAuvWjYS5NGWeMLuxbNPxyqwhi8DjOaHJ4Sf12URlpnzpXpsVHZYrtFOe8ZT4DIzBOy54EVguj6I_PCb5wpEznq-x6BuV8uYlMLkWGxlpRj4ql0GZegOxWuWRPg/s400/fasttext_gui_02.jpg" width="400" /></a></div>
<br />
Kullanım için test için hazırladığımız dosyayı yüklüyoruz. Burdaki gerçek sonuçları da ayırıp sorgumuz yapıyoruz sonuçlarıda gerçek sonuçlarla karşılaştırmak için sckit-learn kütüphanesinin , <i>confusion_matrix</i>, <i>classification_report</i> fonksiyonlarını kullanıyoruz.<br />
<a href="https://www.wikiwand.com/en/Confusion_matrix">confusion_matrix </a>: Karşılaştırma matrisi tahmin edilen ile gerçek değerelri karşılaştırmanıza yarar matrisin bir ekseni gerçek değerler diğer ekseni tahmin edilen değerleri gösterir.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisWX17t5xdlLp6XdHSbx3KpLpJLorESnJiM_Kvl5K3ieOOwc04nsZ_jVzUKN8ulvp8Pnc67q_Ow3kj_2zkQguvjm3PcLjCbC0GbIRw1oCzcEtmkTlyqPgxxXgRpEvfWuCKcWVqUQ/s1600/fasttext_gui_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="269" data-original-width="598" height="178" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisWX17t5xdlLp6XdHSbx3KpLpJLorESnJiM_Kvl5K3ieOOwc04nsZ_jVzUKN8ulvp8Pnc67q_Ow3kj_2zkQguvjm3PcLjCbC0GbIRw1oCzcEtmkTlyqPgxxXgRpEvfWuCKcWVqUQ/s400/fasttext_gui_03.jpg" width="400" /></a></div>
her satır gerçek değerleri gösterir her sutunda tahminleri gösteriyor. Eğer modelimiz %100 başarılı olsaydı satır ve sutun indeksi aynı olan yerlerde her sını için örnek sayısı olan 5 bin dğerini göremiz gerekirdi. Örnek vermek gerekirse ilk sınıfımız olan Şirket sınıfındaki 5 bin örnekden 4767 tanesi <b>Doğru</b> tahmin edilmiş. 39 tanesi 2. sınıf olan Eğitim kurumu olarak <b>Yanlış</b> tahmin edilmiş.<br />
Bir güzelliğide bir birine karıştırılan sınıfların kolaylıkla görülebilmesidir.<br />
<br />
classification_report : fonksiyonu ise sınıf bazında recall: duyarlılık , precision: kesinlik ve bu ikisinin karışımı bir ölçüt olan f1 skorlarını hesaplayıp listler. Adıyla müsemma Sınıflandırıcı raporu düzenler<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxu5Iq7NH2ealCePOCV2XCOvlC3h9T0cm1up0Y9tIGRzhK9GhRU4cuJIs2ajJ3wlYr5-hexDCE6Yu6rmi8Y9fpYroJjupWcI3Vte16fOpQ0XNDoppg_6JuFxLlTJRyCXwfJ4BDgg/s1600/fasttext_gui_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="374" data-original-width="605" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxu5Iq7NH2ealCePOCV2XCOvlC3h9T0cm1up0Y9tIGRzhK9GhRU4cuJIs2ajJ3wlYr5-hexDCE6Yu6rmi8Y9fpYroJjupWcI3Vte16fOpQ0XNDoppg_6JuFxLlTJRyCXwfJ4BDgg/s400/fasttext_gui_04.jpg" width="400" /></a></div>
<br />
<br />
İkinci metodumuz FastText python pakedini yüklemek. Tahmin edebilecğiniz gibi <br />
<blockquote>
<b><i><span><pre><code class="hljs css language-bash">pip install fasttext</code></pre>
</span></i></b></blockquote>
<span></span><br />
<pre><code class="hljs css language-bash"></code></pre>
<br />
şeklinde yapıyorsunuz. <br />
<br />
<blockquote class="tr_bq">
<i>import fasttext</i><br />
<i> model = fasttext.load_model('models/dbpedia_1.bin')</i></blockquote>
<br />
ile yüklüyoruz<br />
tahmin için sorgu listemizi bir yere kaydetmemize gerek yok artık direk çağırıyoruz<br />
<blockquote class="tr_bq">
<i>model.predict(qlist)</i></blockquote>
sonuçları yine ilk örneğimizdeki gibi hesaplattırıyoruz. Aşağı yukarı aynı sonuçlara ulaşıyoruz. Toplamda 98.3 lük başarı değerine ulaşıyor modelimiz. Eğitim aşamasına geri dönüp değişik parametre ayarlarıyla daha iyi sonuçlara ulaşmaya çalışabilirsiniz. Yada ilk aşamaya dönüp Veri kümesi üzerinde değişik ön işlemeler yapıp sonuçlar üzerindeki etkisini gözlemleyebilirisiz . gerisi size kalmış<br />
<br />
FastText hakındaki bu seri yazımızı bitiriyoruz. Üç yazı boyunca yaptıklarımızı github hesabımızdan paylaşıyoruz. Kimbilir belki taş üstüne taş koyan çıkar.<br />
<br />
Bu yazımızdaki kullanım ile ilgili kodlar, "example" dizininde "evaluation_with_executable" ve "evaluation_with_python_binding" isimli ipython dosyalar olarak bulunuyor.<br />
Veri kümesini FastText 'in kullandığı şekle çeviren kod yine "example" dizininde "prepare_data" isminde<br />
<br />
FastTextGUI nin kodlarına ise gui dizinin içinde ulaşabilirsiniz<br />
<br />
<h4>
Projenin github adressi ;</h4>
<blockquote class="tr_bq">
<a href="https://github.com/birolkuyumcu/fasttext_gui"><i> https://github.com/birolkuyumcu/fasttext_gui</i></a> </blockquote>
Her türlü görüş ve önerilerinizi bekleriz.
birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com2tag:blogger.com,1999:blog-14015976.post-89457217252522620842019-08-30T09:14:00.001+03:002019-08-30T09:14:47.767+03:00FastText ile hızlı metin sınıflandırma - 2Metin sınıflandırma için öncelikle bir veri seti bulmamız gerekiyor biz bu yazımız için dbpedia veri kümesini kullanacağız. Sizde uygulama istiyorsanız aşağıdaki linkden indirebilirsiniz<br />
<br />
<div style="text-align: center;">
download : <a href="https://github.com/le-scientifique/torchDatasets/raw/master/dbpedia_csv.tar.gz"><i>https://github.com/le-scientifique/torchDatasets/raw/master/dbpedia_csv.tar.gz</i></a></div>
<br />
Veri Kümesinin açıklamasını okuyoruz. <br />
<blockquote class="tr_bq">
<i>...</i><br />
<i>The DBpedia ontology classification dataset is constructed by picking 14 non-overlapping classes from DBpedia 2014. They are listed in classes.txt. From each of thse 14 ontology classes, we randomly choose 40,000 training samples and 5,000 testing samples. Therefore, the total size of the training dataset is 560,000 and testing dataset 70,000.</i><br />
<i>...</i></blockquote>
Yani DBpedia 2014 den çekilmiş 14 değişik sınıfa ait yazılar başlık + içerik olarak toplanmış. Her sınıf için eğitimde 40 bin test veri seti için 5 bin örnek kaydedilmiş. DBpedia wikipedia da üretilmiş içeriklerin yapısal bir şekilde derlenip torpalanmış halidir diyelim. <a href="https://wiki.dbpedia.org/">DBpedia</a> hakkında daha fazla bilgi için <a href="https://wiki.dbpedia.org/">sitesine</a> gidebilirsiniz. Belkide size lazım olan veri kümesini bu şekilde temin edebilirsiniz...<br />
<br />
<br />
Açıklamanın tamamını veri kümesini indirip açtığınızda "readme" belgesinden okuyabilirsiniz<br />
<br />
veri kümemiz sıkıştırılmış dosya olarak geliyor bulunduğumuz dizine açınca "dbpedia_csv" isimli bir dizine açılıyor<br />
<br />
Sınıf isimlerimizi okuyoruz<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3-57ZHRggviKj16Zlwa0btQQOIy9Mx_qTNoRfg8YyV1tS9YsHni-bfb5_y9wRYXnvm3uEEL6Jvn6LUQEs_W6OyuH68EUSK_gm8N8SSgK3-27xPSm0ve5vQSwYw-ICGqRnK_vqag/s1600/fasttext_gui_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="418" data-original-width="410" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3-57ZHRggviKj16Zlwa0btQQOIy9Mx_qTNoRfg8YyV1tS9YsHni-bfb5_y9wRYXnvm3uEEL6Jvn6LUQEs_W6OyuH68EUSK_gm8N8SSgK3-27xPSm0ve5vQSwYw-ICGqRnK_vqag/s320/fasttext_gui_01.jpg" width="313" /></a></div>
<br />
Şirket , eğitim kurumu, vs diye başlayan 14 başlık var. Başlıkları ayrı yazmışlar çünkü veri kümelerinde yani "dbpedia_csv/train.csv" ve "dbpedia_csv/test.csv" de sınıf isimleri 1 den başlayan sayı olarak yazılmış<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwF8we-uf4z72fYbMwsAO3HImsbMZP0RaVWsxiLR0xvPxNLeuPuDttWV7gVdJUn9U13xVXKlw4Hl4C-FxgdfVAZocGXT6c2Kk6Dqz1_CyTxiLjyYWgmmy8b4FTdYBSvq_iE9obIQ/s1600/fasttext_gui_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="360" data-original-width="668" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwF8we-uf4z72fYbMwsAO3HImsbMZP0RaVWsxiLR0xvPxNLeuPuDttWV7gVdJUn9U13xVXKlw4Hl4C-FxgdfVAZocGXT6c2Kk6Dqz1_CyTxiLjyYWgmmy8b4FTdYBSvq_iE9obIQ/s320/fasttext_gui_02.jpg" width="320" /></a></div>
<br />
FastText eğitim için veri kümesinin bir metin dosyası halinde verilmesini istiyor. İstediği Format ise her satırda bir veri birimi başta "__label__" a hangi sınıf sa onu yazıyoruz sonrasında boşluk ve virgül ile ayrıp satırın devamında o sınıfa ait bir metin yazıyoruz. Bizim metin kısmı başlık ve açıklamda olarak iki parçalı geldiğinden birleştiriyoruz. Etiket olarak yukarıda okuduğumuz sınıf isimlerini kullanıyoruz. Metin verisinde yaptığımız tek işlem ise küçük harfe çevirmek. Veriler sıralı şekilde verilmiş, bizde karışmadan aynı şekilde FastTextin istediği formata çevirip yazıyoruz<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJqz4njP1_cH_eTrOblOUvMbEhcxfGLhtQLbnjINAAKqYMdnYwdJ4HQUyQgCiHlCtXJT0YDRO3QN-BPjGupinTvgMffibRUDzFSIPn2rqKhNyM6eYUqjw4BnKzCCOBCN186giK2A/s1600/fasttext_gui_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="470" data-original-width="608" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJqz4njP1_cH_eTrOblOUvMbEhcxfGLhtQLbnjINAAKqYMdnYwdJ4HQUyQgCiHlCtXJT0YDRO3QN-BPjGupinTvgMffibRUDzFSIPn2rqKhNyM6eYUqjw4BnKzCCOBCN186giK2A/s400/fasttext_gui_03.jpg" width="400" /></a></div>
<br />
aynı işlemi test verisi içinde yapıyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifUc8b1BsMiB8XbdjzT7zGRyl8d01dTsU5rfwfh8ibzHIr2-fxTCHVIepTesdbBod8fxNsH0r_wEqLc4I4sFN0bQ0IRfEeY8D5jeyuAxCqIfXBiRA47DyuNSU9GLi_dT2gsjDpUw/s1600/fasttext_gui_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="454" data-original-width="565" height="321" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifUc8b1BsMiB8XbdjzT7zGRyl8d01dTsU5rfwfh8ibzHIr2-fxTCHVIepTesdbBod8fxNsH0r_wEqLc4I4sFN0bQ0IRfEeY8D5jeyuAxCqIfXBiRA47DyuNSU9GLi_dT2gsjDpUw/s400/fasttext_gui_04.jpg" width="400" /></a></div>
<br />
Evet artık 'dbpedia.train' ve 'dbpedia.test' diye 2 dosyamız oldu içine bakıyoruz<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJBDLzD4cj78zZSE9bE6SOLzW7InpSSCeUwmbbETHtGRefENoP9KZW2cXs5V5mJC8wwq_QzonccNdTuWY_PgvGIZ2YPM4G_UN847rzqfpxcWf1Cyo0Dq-talIka-cMxemBxhOhmg/s1600/fasttext_gui_05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="771" data-original-width="1207" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJBDLzD4cj78zZSE9bE6SOLzW7InpSSCeUwmbbETHtGRefENoP9KZW2cXs5V5mJC8wwq_QzonccNdTuWY_PgvGIZ2YPM4G_UN847rzqfpxcWf1Cyo0Dq-talIka-cMxemBxhOhmg/s400/fasttext_gui_05.jpg" width="400" /></a></div>
<br />
<br />
Bu aşamadan sonra sıra geliyor FastText'e. İki şekilde kullanmak mümkün FastText'i derleyip komut satırından çağırmak , yada Python paketi olarak kurup onu kullanmak. FastText ilk çıktığında python paketi yoktu ve bizde bu eğitim işinde parametere ayarlarını kolay yapabilmek için bir GUI yazdık. Ve halende kullanıyoruz. Fakat malesef kod python2 de kaldı python3 e taşımaya fırsat ve gerek bulamadık daha kullanmak için python2 , pyside , pygal, paketleri gerekiyor. <br />
Görünümü şu şekilde ;<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsnswbNrZNqXfA-SdwPbP0sMar8gitZA6EfDzbjPpFTzbAl6HhY2Nf0ubKDhoBFetntc5Hv4XsU13WmCBRI_tBnpnz-L9m1aC3If2XD5Xk5ImtP1M3WtNXLc-tMufn5Zyf-9S33A/s1600/fasttext_gui_06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="748" data-original-width="725" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsnswbNrZNqXfA-SdwPbP0sMar8gitZA6EfDzbjPpFTzbAl6HhY2Nf0ubKDhoBFetntc5Hv4XsU13WmCBRI_tBnpnz-L9m1aC3If2XD5Xk5ImtP1M3WtNXLc-tMufn5Zyf-9S33A/s400/fasttext_gui_06.jpg" width="387" /></a></div>
<br />
<br />
FastText i kullandığından kelime vektörü hesabı içinde kullanılabilir elbette ama bizim şu anki önreğimiz metin sınıflandırma olduğundan <i><b>command</b></i> kısmında "<i><b>supervised</b></i>" seçeneğine ayarlıyoruz. <i><b>TextFile</b></i> kısmına eğitim veri kümemiz için hazırladığımız dosyayı seçiyoruz. <i><b> </b></i><br />
<i><b>Model File</b></i> kısmında Eğitim sonrası eğitilen modelin ismini belirliyorsunuz. <br />
Sağ üstteki <i><b>Play</b></i> tuşu ile eğitimi başlatabiliyorsunuz. En sağdaki <b>Dur</b> işaretide durdurmak için<br />
Altta <i><b>Learning Rate</b></i> ile başlangıç öğrenme hızını belirliyorsunuz<br />
<i><b>Epoch</b></i> Diğer makina öğrenme metodlarından bildiğiniz gibi eğitim kaç adım yapılacağı<br />
En az kaç defa geçen kelimenin alınacağı, karekter ngramlarında hangi aralığın kullanılacağı, kelime ngramı kaçlık kullanılacağı vs gibi pek çok seçenek var. Ayarlı seçenekler ile başlayıp denemeler yapmak gerekiyor.<br />
<br />
Eğitim bitince eğitim veri kümesinin ismi aynı uzantısı .test olan bir dosya varsa eğitilmiş model ile bu test dosyası çalıştırılıp sonuçda veriyor <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMHUrG_DhX6UnuJklbAoKeKmHB_sS_wHoHLOjwuZ2QwJZCYwWv4E2VSbYWJC0QkVeQtCRxkDvI3Ps6wI-KJtVOZ28NaIuSy1a1kBRH4-D7Y-nVDpl5LJjEuXbIZhIC6vd5LQ4pNQ/s1600/fasttext_gui_07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="739" data-original-width="725" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMHUrG_DhX6UnuJklbAoKeKmHB_sS_wHoHLOjwuZ2QwJZCYwWv4E2VSbYWJC0QkVeQtCRxkDvI3Ps6wI-KJtVOZ28NaIuSy1a1kBRH4-D7Y-nVDpl5LJjEuXbIZhIC6vd5LQ4pNQ/s400/fasttext_gui_07.jpg" width="391" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
Resimden de göreceğiniz üzere<br />
<blockquote class="tr_bq">
<ul>
<li><i>precision: kesinlik 0.983 </i></li>
<li><i>recall: duyarlılık 0.983</i></li>
</ul>
</blockquote>
değerlerine ulaşttık ki gayet güzel sonuçlar<br />
<br />
Eğitim sonunda Loss değerinin düşüşünüde grafik olarak alabiliyorsunuz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuJTPh2LtfzCjEZ2l6d9JgpGDUS3R1U70w9xHQPLOerXJ6zPqYV4q8Hog7qy2wVCG6hglmHN_epBDd4TDDeZIxjFjNNQUPhSWRppbmnk-7hdiAG2MSZHZSqfHzjoPSgIsKSUQMog/s1600/fasttext_gui_08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="759" data-original-width="866" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuJTPh2LtfzCjEZ2l6d9JgpGDUS3R1U70w9xHQPLOerXJ6zPqYV4q8Hog7qy2wVCG6hglmHN_epBDd4TDDeZIxjFjNNQUPhSWRppbmnk-7hdiAG2MSZHZSqfHzjoPSgIsKSUQMog/s400/fasttext_gui_08.jpg" width="400" /></a></div>
<br />
<br />
<br />
Eğitim sonucunda uzantısı bizim belirlediğimiz isimde<br />
uzantısı .bin olarak model dosyası<br />
uzantısı .vec olarak kelime vektörelrinin tutulduğu dosya oluşturulur<br />
FastTextGUI de bunlara ilaveten<br />
uzantısı .log olan eğitim serencamını tutan dosya<br />
uzantısı .svg olan loss düşüş grafiğinin dosyasını oluşturur.<br />
<br />
<br />
Eğittiğimiz modeli kullanmak için sadce uzantısı .bin olan dosya yeterli olmaktadır.<br />
<br />
Eğittiğimiz modelin kullanımını bir sonraki yazımıza bırakıyoruz. Yazı dizimiz bittiğinde bütün kodlar yayınlanacaktır.<br />
<br />
Her türlü görüş ve önerilerinizi bekleriz.birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-33712100937325925472019-08-29T12:16:00.000+03:002019-08-29T12:16:35.227+03:00FastText ile hızlı metin sınıflandırma - 1<h3>
</h3>
<h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik-ucz016YsoVN0_MGNX4m8nrFstFoxRhwW2ICoqOq7ErUbXaPWKYOOOFVzEiGS1SL42p_GlulJeu-eJT3eoVEwjxLwN6IchN8eCBfSlEAwOyosCyWs1hht9bxjagVP8OB0_omnQ/s1600/wordvect.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1102" data-original-width="1280" height="343" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik-ucz016YsoVN0_MGNX4m8nrFstFoxRhwW2ICoqOq7ErUbXaPWKYOOOFVzEiGS1SL42p_GlulJeu-eJT3eoVEwjxLwN6IchN8eCBfSlEAwOyosCyWs1hht9bxjagVP8OB0_omnQ/s400/wordvect.jpg" width="400" /></a></div>
</h3>
<h3>
Girizgah : </h3>
Önce bu konuya nerden girdik ondan bahsetmek istiyorum. Blogda duyuru şeklinde yazmamış olsamda <span id="goog_782661382"></span><a href="https://www.blogger.com/">Linkedin hesabımdan<span id="goog_782661383"></span></a> beni takip edenler biliyor ki artık bir dökümcü değilim. 2016 yılı Temmuz ayın dan beri <a href="http://sefamerve.com/">Sefamerve.com</a> un ArGe kısmında çalışmaktayız. Bu yılın başından beride bölümümüz ArGe merkezi statüsüne kavuştu. <i>"Bir dökümcü ve bir simitçiyle"</i> başlayan macera bizi nerelere götürecek ? Kısmetimizde ne tür <a href="https://derindelimavi.blogspot.com/2012/12/vav-cizmek_2.html">vavlar çizmek</a> var göreceğiz bakalım...<br />
<br />
2017 yılında metin sınıflandırma ile ilgili bir ihtiyacımız oldu. Bu konu daha öncesinda tecrübemizin olmadığı bir alandı. Hızlıca bu problemi nası çözeriz diye araştırır ken <a href="https://fasttext.cc/">FastText</a>'e ulaştık. Çokda beğendik. O zamanlar sadece komut satırından program olarak çalışan hali yayınlanmıştı. Kullanımını kolaylaştırmak için üzerine çala kalem bir GUI yazdık ve kendi işlerimizde kullandık.<br />
<br />
FastText i kullanarak makale çalışmasıda yaptık. <a href="https://www.linkedin.com/in/deniz-kilin%C3%A7-64606622/">Deniz Kılınç</a> hocamızın yayınladığı <a href="https://github.com/denopas/TTC-3600">TTC-3600</a> veri seti üzerinde bir uygulama yaptık. Bu konuda Deniz hocamızın zaten öncesinde yaptığı çalışmalarda vardı. Makalede ismi geçmiyor olsada emekleri büyüktür, teşekkür ederiz. Bu makaleyi biz Japonyada Tokushima üniversitesinde düzenlenen <a href="http://nlpir.net/2019.html">NLPIR 2019</a> konferansına yolladık ve kabul aldık. Yakın zamanda da makalemiz ACM (Association for Computing Machinery) Digital Library altında yayınlandı.<br />
<br />
<a href="https://dl.acm.org/citation.cfm?doid=3342827.3342828">"An automated new approach in fast text classification (fastText): A case study for Turkish text classification without pre-processing"</a><br />
<br />
<h3>
FastText:</h3>
Uzunca girizgahdan sonra esas konumuza dönüyoruz. Elimizde pek çok Yapay Öğrenme - Makine Öğrenmesi - algoritması var. Fakat Bu metodların hepsi sayılar üzerinde çalışıyor. Doğal Dil İşleme üzerinde ki ana problem de burda başlıyor. Metin verisini nasıl sayısallaştırabiliriz ? Kelime bazlı, harf bazlı yada bunların gurupları -ngram- şeklinde yaklaşımlar olmuştur. Kategorik dönüşüm şeklinde ilk akla sistemdir. Kelime sayısının çok büyük olmasıyla devasa vektör uzunluklarıyla sonuçlanabilir.<br />
<br />
Sonra Kelime vektörü - <a href="https://www.wikiwand.com/en/Word2vec">word2vec</a> - denen bir kavram çıkmış ortaya. Her kelime için sabit uzunlukta bir vektör kullanmak. "Birlikte geçen kelimeler anlamca yakındır" var sayımından yola çıkılıyor. Başlangıçda aynı yapay sinir ağlarındaki gibi kelimeler için rastgele seçilmiş vektör değerleri atanıyor. Devasa derlem - corpus - kullanarak danışmansız şekilde - unsupervised - her kelime için birlikte geçtiği kelimelere göre bu vektörler güncelleniyor. Bu öğrenme sürecinin iki ana şekli var. CBOW ve skipgram <br />
<br />
bu iki yapının şematik gösterimi şöyle<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4NWmAQnNaUUNBPXfV4NlEjEqATMImO7zJb0tzyly8-CHzz-NyEcpiO9zMcNvQVOl7SqocPbYMYaNRF1w7t7MHwe2YNpLPTiPMVr-e0LcEtBJwkZRZTnBIQuEwncag79YYXsC9vQ/s1600/cbow_vs_skipgram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="486" data-original-width="833" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4NWmAQnNaUUNBPXfV4NlEjEqATMImO7zJb0tzyly8-CHzz-NyEcpiO9zMcNvQVOl7SqocPbYMYaNRF1w7t7MHwe2YNpLPTiPMVr-e0LcEtBJwkZRZTnBIQuEwncag79YYXsC9vQ/s400/cbow_vs_skipgram.png" width="400" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
cbow da hedef kelime vektörüne o kelimenin etrafında geçen kelimelerin vektörlerinin toplamıyla ulaşılmaya çalışıyor ve bu hedef doğrultusunda vektörler güncelleniyor<br />
skipgramda ise tersine hedef kelimeyle birlikte geçebilecek kelime yada kelime ngramlarına ulaşılmaya çalışıyor ve bu hedef doğrultusunda vektörler güncelleniyor<br />
<br />
<br />
Bir rivayete göre cbow daha hızlı eğitilir ve sık geçen kelimeleri daha iyi temsil eden vektörlere ulaşabilir. Skipgram eğitim veriniz az da olsa iyi çalışır, nadir geçen kelimeleri bile yeterince iyi temsil edebilecek vektörlere ulaşabilir.<br />
<br />
Eğitim sonucunda vektör uzayında benzer anlamlara gelen kelimeler yakın yerlerde kümelendiği gibi<br />
kelime vektörleri uzayında yapılan işlemler de anlammı sonuçlar verebilmektedir. Meşhur örnekler<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaCL8ules0EoqKeyCkW30mPijrP3ZT3kjGx8y10QrD9FxmSxJ5mvSgY-siPXvlBCo975PNXE6qGvDQWMkKU2rdpT5I0geFur3vIxE0dpHior1_G596ZEfI78_u0IFk85abvfgyOg/s1600/w2vec_king.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="348" data-original-width="568" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaCL8ules0EoqKeyCkW30mPijrP3ZT3kjGx8y10QrD9FxmSxJ5mvSgY-siPXvlBCo975PNXE6qGvDQWMkKU2rdpT5I0geFur3vIxE0dpHior1_G596ZEfI78_u0IFk85abvfgyOg/s400/w2vec_king.jpg" width="400" /></a></div>
<br />
Erkek kelimesinin vektöründen Kral keliimesinin vektörünü çıkarıp Kadın kelimesini ilave edine ulaştığımız vektörel değer Kraliçe kelimesinin vektörel kaşılığına ulaşıyor<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLdDXDQdajBHmvhDSlt7QlIIp9hRvwXdxbKSOSxNaUOltGcnTwcfnBfSN2zOD2JFAb6lIvFFnyaYIo35drZ_akAewS1hPxbcrp8AV9T_p4HwF1aEOABzn17WlWnnMBjZ7R0Tc9Ag/s1600/w2vec_countries_capitals.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="591" data-original-width="792" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLdDXDQdajBHmvhDSlt7QlIIp9hRvwXdxbKSOSxNaUOltGcnTwcfnBfSN2zOD2JFAb6lIvFFnyaYIo35drZ_akAewS1hPxbcrp8AV9T_p4HwF1aEOABzn17WlWnnMBjZ7R0Tc9Ag/s400/w2vec_countries_capitals.png" width="400" /></a></div>
<br />
<br />
yada ülkeler ve başkentleri arasında böyle bir vektörel ilişki görülebiliyor. <br />
<br />
Kelimelerin bu tür anlamsal bağ içeren vektörel dönüşümleri elbette doğal dil işleme için elbette çok önemlidir. <br />
<br />
Word2vect metodu 2013 yılında googleda <a href="https://www.wikiwand.com/en/Tomas_Mikolov">Mikolov</a> un liderlik ettiği bir gurup tarafından yapılmıştır. Sonrasında Mikolov Facebook a geçmiş ve FastText bir anlamda bu metodun daha gelişkin halidir.<br />
Temel üstünlüğü kelimeleri harf engramları olarakda görebilmesinden gelmektedir. Halen geliştirilmeye devam edilmektedir. FastText in detayları için aşağıdaki makaleleri incelemenizi tavsiye ederiz. <br />
<ul>
<li><a href="https://arxiv.org/abs/1607.04606">Enriching Word Vectors with Subword Information </a></li>
<li><a href="https://arxiv.org/abs/1607.01759">Bag of Tricks for Efficient Text Classification</a> </li>
<li><a href="https://arxiv.org/abs/1612.03651">FastText.zip: Compressing text classification models </a></li>
</ul>
<br />
<br />
Epeyde teoriden bahsetmişiz gelelim pratiğe. FastText in "supervised" kısmıyla çok başarılı Metin sınıflandırma işleri yapabiliyorsunuz. Hemde küçük harfe dönüştürmek dışında hiç bir ön işlem yapmadan mümkün oluyor. GPU istemiyor. GPU nuz olsa bile RNN bazlı sistemlere göre çok çok çok daha hızlı eğitiliyor.<br />
<br />
Bu yazıy burada noktalayalım bir sonraki yazımızda örnek uygulama yapacağız. Her türlü görüş ve önerilerinizi bekleriz.<br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-26734908923168479012019-07-02T12:33:00.000+03:002019-07-02T14:36:09.928+03:00Sahibinden Üçkağıtçı Proje<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8XTyOBScADGF9_nGWMENt0LakueCP8WTcMJpVbAkjkH7dXC4k6uXwStZSqEDSdrgbhqPj2p46BpQ3JKmxVlHP79sLmHeA4TAfJzeoqa5VEpxY_PJZv1Cx-2dTz5hmhgKBeDGR3Q/s1600/sahibinden_ucka%25C4%259F%25C4%25B1tc%25C4%25B1_proje.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="1017" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8XTyOBScADGF9_nGWMENt0LakueCP8WTcMJpVbAkjkH7dXC4k6uXwStZSqEDSdrgbhqPj2p46BpQ3JKmxVlHP79sLmHeA4TAfJzeoqa5VEpxY_PJZv1Cx-2dTz5hmhgKBeDGR3Q/s400/sahibinden_ucka%25C4%259F%25C4%25B1tc%25C4%25B1_proje.jpg" width="400" /></a></div>
<br />
- Abi biz sizi takip ediyoruz, bizim bir projemiz var ortaklaşa yapalım diye rahatsız ediyoruz<br />
<br />
- Yapalım tabi kardeş, Nedir projeniz<br />
<br />
- Abi projemiz "Görüntü işleme bazlı Yapay Zekalı ! Bahçe rekolte tahmini"<br />
<br />
- Yani ne bekliyorsunuz kafanızda ne var ?<br />
<br />
- Abi Şimdi malum artık her cepte telefon var. Cep telefonundan Ağaçların fotoğraflarını çekecekler. Bu fotoğraflara göre bizim uygulama bu bahçeden şu kadar ürün çıkar diye tahmin yapacak. Nasıl süper fikir ama değilmi abi ?<br />
<br />
- Dabi Dabi süper fikirmiş. Peki kardeş bu fotoğrafların çekimlerini nasıl standartlaştıracaksınız.<br />
<br />
- Ne standardı abi öyle şey mi olur. Alacak vatandaşın biri çekecek. Sistem artık kendisi eline ne gelirse oradan karar verecek.<br />
<br />
- Peki proje esas sahibi kim ?<br />
<br />
- Abi büyük şirketler varmış bahçeleri toptan alıyorlarmış, Bizim bir arkadaşın <i><b>"pek bir yakın tandığı !"</b></i> böyle bir şirketlerde çalışıyormuş. O diyor "<b>yapın projeyi paraya para demezsiniz.</b>"<br />
<br />
- Anladım baştan size para verecek kişi de yok yani<br />
<br />
- Evet abi de ne olacak sanki sen yazarsın görüntü işlemeli ve YZ lı kısımları bizde üzerine bir GUI patlatırız. Oldu bitti işte.<br />
<br />
- Peki kardeş verileri nereden alacaksınız. ?<br />
<br />
- Yine bizim bir arkadaşın <i><b>"pek bir yakın tandığı !" </b></i>nın tanıdığı bahçe sahipleri varmış. Oralardan çekeriz abi<br />
<br />
- Kardeş benim anladığım aslında elinizde para yok , veri de yok, verinin düzgünce çekilebileceği imkanda yok ve hazır müşteride yok.<br />
<br />
- Proje var ya işte abi, sen varsın, biz varız<br />
<br />
- Dabi canım, ama unuttun sen ben yazmış olayım arkadaşın <i><b>"pek bir yakın tandığı !"</b></i> da var<br />
<br />
- Sen işleri niye böyle yokuşa sürüyorsun abi, biraz olumlu baksana<br />
<br />
- Senin bakdığın gibi kolay bir problem değil bu. Şak diye çözüm bekleyemezsin. Helde giriş verisinin standart bir yapısı olmadığında. Aynı ağacı çok değişik şekillerde çekebilirsin mesela bundan düzgün bir sonuç çıkarabilmek pek mümkün olmaz.<br />
<br />
- Ya abi ya okuyoruz hep;<br />
<blockquote class="tr_bq">
Doktordan daha iyi teşhis koyan,<br />
İnsandan daha iyi resim tanıyan<br />
İnsandan daha iyi ses tanıyan,<br />
...</blockquote>
çalışmalar var yalan mı bunlar <br />
<br />
- Yalan değilde sana aktarıldığı gibi abartılı da değil<br />
<br />
- Bir orta yol bulalım abi<br />
<br />
- Bak güzel kardeşim tamam anladım ki anlatamayacağım vaz geçiyorum. Sana çok kestirme bir çözüm sunacağım<br />
<br />
- Dinliyorum abi<br />
<br />
- Geçmiş yılların hasılatlarını alabilirmisin ?<br />
<br />
- Alırız tabi abi<br />
<br />
- Şimdi sen bir Cep telefonu uygulaması yapıyorsun<br />
<br />
- Evet<br />
<br />
- Bu uygulamada ağaç fotoğraflarını çekecekler<br />
<br />
- Geçmiş yılların hasılatlarından ve ağaç sayısından ağaç başına yıllık hasılat miktarlarını gösteren bir zaman serisi oluşturacaksın<br />
<br />
- Evet abi<br />
<br />
- Sonra bu bu serinin ortalamasını ve standart sapmasını bulacaksın<br />
<br />
- Eee abi<br />
<br />
- Formülü yazıyorum bak yaz bir kenara<br />
<blockquote class="tr_bq">
<span style="color: red;"><i><b>Hasılat = Ortalama_Hasılat + Random() * Hasılat_Standart_Sapması</b></i></span></blockquote>
<br />
Uygulamada her ağaç fotoğraf geldikçe bu formülle bir hasılat miktarı hesaplar ve sonuda da hepsini toplarsın bi zahmet.<br />
<br />
- Eee abi Görüntü işleme ve yapay zeka neresinde bunun<br />
<br />
- Elbette reklamında kardeş<br />
<br />
- Süpermiş abi ben hemen çalışmalara ! başlayayım. Peki sen ne isteyeceksin proje için abi<br />
<br />
- Ben bir şey istemiyorum al sana <b>SAHİBİNDEN ÜÇ KAĞITÇI PROJE</b> hayrını gör.<br />
<br />
- Abi peki ucundan kıyısından Yapay Zeka felan da sokuştursak iyi olurdu<br />
<br />
- Şimdi böyle başlayında İlla soran olursa, sonra resimleri az meyveli çok meyveli diye etiketlersen rastgele sayıyı ona göre ayarlarız.<br />
<br />
- Süper olur abi biz bununla hemide <a href="https://www.aa.com.tr/tr/sirkethaberleri/hizmet/sahibindencomun-fotograftan-arac-tanima-ozelligi-en-iyi-secildi/650816"><i><b>Innovasyon ödülü</b></i> </a> bilem alırız<br />
<br />
- Alırsınız elbette neyiniz eksik...<br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-20528036312271394312018-10-08T10:52:00.000+03:002018-10-08T11:04:17.747+03:00DeepCon'18 payment anomaly workshop<a href="http://deepcon.deeplearningturkiye.com/">DeepCon'18</a> geçtiğimiz cuma ve cumartesi günü yapıldı. Yoğun bir katılım vardı. Emeği geçen herkese burdan teşekkür etmek isteriz. Pek çok konu konuşuldu. Bence çok daha önemlisi ilgili insanlar bir araya geldi. İletişim pek çok zaman gelişmedeki temel motor işlevini görür. İnsanların bir şeyler yapma ve öğrenme gayretini görmek, Yada yaptıklarınızın takip edildiğini öğrenmek gayretinizin artmasına vesile oluyor.<br />
<br />
<i><a href="http://sefamerve.com/">SefaMerve.com</a> ArGe Merkezinin</i> çalışmalarından bahsettiğimiz, "Eticarette yapay Zeka Uygulamaları" başlıklı bir sunumumuz oldu. Sunumu <a href="https://www.linkedin.com/in/cuneyt-aksakall%C4%B1/">Cüneyt</a> bey yaptı. Sunumun ilk kısmında "Payment Anomaly" başlıklı bir kısım sonrasında genel yapılanlar anlatıldı. Ben burada İlk kısım için biraz daha teferruatlı bir açıklma yazmak istiyorum. İnşallah birilerine Faydalı olur.<br />
<br />
Bir E-Ticaret firmasının helede Uluslararası satışı varsa pek çok kaynakdan ve çeşitli kurlarda tahsilat yapması gerekmektedir. Pek çok banka, değişik ödeme türleri ( paypal, paybyme vs... ) gibi Değişik ülkelerde çalışmaktadır. Yani sistemin sağlıklı yürüyebilmesi için pek çok tahsilat sisteminide sağlıklı yürüyor olması lazımdır.<br />
<br />
Biz tahsilat sistemindeki olası anormalliklerin tespiti için, her türdeki alt sistem için yapılan saatlik tahsilatların toplamlarını bir zaman serisine dönüştürdük. Sonra 24 saatlik veri ile 25. saat deki değeri tahmin edecek bir model kurduk. Tahmin ve gerçek değer arasındaki belli eşik edeğerinden fazla farklılık ve bu farklılığın belli saat boyunca devam etmesinin bir anomaly olacağını varsaydık.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijEfbKyzcHCFNCyFcLsDTrc4PFVh4KGgaXx9rqAeAx6Qgl1vgITouKRTOsRRFJyON9Hbyf6DTX955h_UV5Vwt7DlstUzkErcyMkZC_2PtPEU_TF4bER-7oZAMyK1xBmNLpu3TcDA/s1600/timse_series.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="250" data-original-width="771" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijEfbKyzcHCFNCyFcLsDTrc4PFVh4KGgaXx9rqAeAx6Qgl1vgITouKRTOsRRFJyON9Hbyf6DTX955h_UV5Vwt7DlstUzkErcyMkZC_2PtPEU_TF4bER-7oZAMyK1xBmNLpu3TcDA/s400/timse_series.jpg" width="400" /></a></div>
<br />
<br />
Çalışmamız bu anlamda klasik bir zaman serisi tahmini modeline benzetilebilir. Bir kaç özelliği var ; çok girişli, çembersel normalizsayon, gurup normalizasyonu.<br />
<br />
<h3>
Circular Normalization:</h3>
Genelde İnsan davranışları için elebtte burda bizim ana ilgimiz olan satın alma için zamanın önemi büyük. Zamanın dönügüleri var. Gün içinde bazı saatlerde satışlar artarken bazı saatlerde çok düşe biliyor. Haftanın günlerine görede bu değişimi gözlemleye biliriz, hafta içi ile hafta sonu davranış farkları olması gibi. Normalde bu döngüsel zaman değerlerinin girişi klasik kategorik veri gibi yapılmaktadır. yani mesela haftanın günleri için.<br />
<blockquote class="tr_bq">
<i>Pazartesi : 0 0 0 0 0 0 1</i><br />
<i>Salı : 0 0 0 0 0 1 0 </i><br />
<i> ...</i><br />
<i>Pazar : 1 0 0 0 0 0 0</i> </blockquote>
gibi Bu durumda her bir günün bir birine uzaklığı eşit olmaktadır. Oysa Cumartesi gününün Pazar gününe uzaklığı ile Çarşamba gününe uzaklığı farklıdır.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlr5XsV_g0TaMKTJgs4WRM1b9XUe5fl79r9iWCgQ4OjQxc09tBj8qal4qyoPmHJMqH32HtXpU2zihpLhnqaz7BWNCyKgBdWQCD9Mm87iBHylpiJcNp6iegZz-Jjy1XJ0sG2a_5FA/s1600/circular_normalization.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="621" data-original-width="657" height="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlr5XsV_g0TaMKTJgs4WRM1b9XUe5fl79r9iWCgQ4OjQxc09tBj8qal4qyoPmHJMqH32HtXpU2zihpLhnqaz7BWNCyKgBdWQCD9Mm87iBHylpiJcNp6iegZz-Jjy1XJ0sG2a_5FA/s400/circular_normalization.png" width="400" /></a></div>
<br />
Biz bu tip döngüsel kategorik değişkenler için Birim çember üzerinde eşit aralıklı noktalar olarak Normalize etmeyi kullandık. Üstteki grafikde olduğu gibi. Pazar Günü pazartesi ve Cumartesi gününe yakındır. Bu şekilde bir dönüşümün bir faydasıda girdi büyüklüğünün küçülmesidir. Kasik metodla kodladığımızda 7 lik vektör olarak kodlayabilirken. Çembersel Normalizasyonla 2 lik vektöre dönüştürmüş oluyoruz. Bu sayede günün hangi saati olduğunuda 24 yerine 2 lik vektör olarak kodluyoruz. Yada Ayın hangi günü olduğunuda 31 lik vektör yerine 2 lik vektör olarak kodlamış oluyoruz. Bu tip bi kodlamanın daha önce uygulandığına dair bir bilgimiz yok. İşin akademik yönünüde klasik metodlarla karşılaştırıp teferruatlı test etme imkanımız olmadı malesef. Tecrübi bir yöntem olarak bahsetmiş oluyoruz.<br />
<br />
<h3>
Grup Normalization :</h3>
Zaman serisinde tedrici genel - belki mevsimsel - bir değişim olabilmektedir. Zaman serisinin normalizasyonunda komple bütün serinin maksimum değerine göre yapılması bizce kısmen problem olabilir. Hele bu genel değeşim çok büyükse. Genel maksimuma göre normalizasyon yerine biz bu çalışmamızda giriş olarak aldığımız 24 saatlik gurubun maksimum değerine göre bir normalizasyon yapmayı tercih ettik.<br />
<br />
<h3>
Multiple Input Model :</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFlATzObYhr11dmbd9dQdMm2twOJtAjmuTZvPX_mEwXg8qjJDDkECt-mLJlou4uIi2JT6tqv3kGE6WxvAVYo60LILzfLFsYl_Vk8O6Iqn5onZp9RXsvfI3PNd5SxVvAaJjnncNBg/s1600/model.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="678" data-original-width="383" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFlATzObYhr11dmbd9dQdMm2twOJtAjmuTZvPX_mEwXg8qjJDDkECt-mLJlou4uIi2JT6tqv3kGE6WxvAVYo60LILzfLFsYl_Vk8O6Iqn5onZp9RXsvfI3PNd5SxVvAaJjnncNBg/s320/model.jpg" width="180" /></a></div>
<br />
Çok girişli bir ağ yapısını kullandık. Çünkü ; Zaman serisi dışında tahmin etmememiz gereken saatin zaman döngüsünde nerede olduğunun da tahmin ile ilgili olduğunu düşündük ve onuda kattık.<br />
İlk girdimiz zaman serisi ve 24 saatlik bir birini takip eden tahsilat değerleri LSTM ile işleniyor.<br />
İkinci girdimiz Zaman ile ilgili verimiz 8 lik bir vektör . ( haftanın günü, saat, ayın günü, ay ) kalsik YSA katmanı - Dense layer - ile işleniyor. Sonrasında bu iki kısım birleştiriliyor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1CV4dxmb4UgtizDR4HVXJVHb4d360QcEI7zj8ySn9_3NzqyTBKCDVcIbBnzG3z5zSD7K2uXGMhyxyxI47W5SoIYxS8W20pxUbkQMZG2wox-93FNcn0lhQhqWo6ZNVD33f7YWQ4Q/s1600/timse_series_anomaly.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="312" data-original-width="792" height="157" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1CV4dxmb4UgtizDR4HVXJVHb4d360QcEI7zj8ySn9_3NzqyTBKCDVcIbBnzG3z5zSD7K2uXGMhyxyxI47W5SoIYxS8W20pxUbkQMZG2wox-93FNcn0lhQhqWo6ZNVD33f7YWQ4Q/s400/timse_series_anomaly.jpg" width="400" /></a></div>
<br />
<br />
Sonuç olarak sıradışı bir anormallik tespiti yaklaşımı üzerine bir çalışma yapmış olduk. Koda ve verilere ve sunuma şağıdaki github sayfamızdan ulaşabilirsiniz<br />
<br />
<blockquote class="tr_bq">
<b><a href="https://github.com/birolkuyumcu/deep_con18_payment_anomaly_workshop">github.com/birolkuyumcu/deep_con18_payment_anomaly_workshop</a></b></blockquote>
<br />
Her türlü görüş ve önerilerinizi bekleriz.<br />
<br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-36822131616131104052018-09-10T12:25:00.000+03:002018-09-10T12:25:10.915+03:00Ses ile Kalp Atışı SınıflandırmaEvet başlığından da anlaşılacağı üzere yine sağlık alanında bir yazımız var. Bu seferek verimizi ses olarak alıyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2L8er4LViXobrUomPe11nHSvVb8PHU5LtMNY0Ut77rJWM-zu26kc-iPE6hPvJ26L7XX4XgTQb1ry81-NYIBFAbCF8b88nbYRd8yYkl1yFd8oGqYVQRGOpP8AnJCMfRHyRYwl5Tg/s1600/Kalp_ses_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="277" data-original-width="730" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2L8er4LViXobrUomPe11nHSvVb8PHU5LtMNY0Ut77rJWM-zu26kc-iPE6hPvJ26L7XX4XgTQb1ry81-NYIBFAbCF8b88nbYRd8yYkl1yFd8oGqYVQRGOpP8AnJCMfRHyRYwl5Tg/s400/Kalp_ses_01.jpg" width="400" /></a></div>
<br />
<br />
Verimizin kaynağı yine Kaggle <br />
<blockquote class="tr_bq">
<a href="https://www.kaggle.com/kinguistics/heartbeat-sounds">https://www.kaggle.com/kinguistics/heartbeat-sounds</a></blockquote>
<br />
Biz kaggle dan ulaşmış olsakda asıl verinin kaynağı 2011 tarihli bir yarışmadan geliyorumuş <br />
<blockquote class="tr_bq">
<a href="http://www.peterjbentley.com/heartchallenge/index.html">http://www.peterjbentley.com/heartchallenge/index.html </a></blockquote>
İki ayrı şekilde kaydedilmiş ses dosyaları var<br />
ilki "<b><i><a href="https://itunes.apple.com/tr/app/istethoscope-pro/id322110006?mt=8">iStethoscope Pro</a></i></b>" isimli bir iphone uygulaması kullanılarak kaydedilmiş sesler <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0BHtN5ovRlaIp3IxCd9A9ypVvanYV2ZYsHyRMQcPKyJad0rERb86GDuaPO_GxT_wSZA8YjeLmHAbOOHPIDsNeT9mNqdAueeZLxhmiE4Xn17W_9Zwm4K21xBvMBZ7mC6tce-LRBA/s1600/Kalp_ses_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="514" data-original-width="690" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0BHtN5ovRlaIp3IxCd9A9ypVvanYV2ZYsHyRMQcPKyJad0rERb86GDuaPO_GxT_wSZA8YjeLmHAbOOHPIDsNeT9mNqdAueeZLxhmiE4Xn17W_9Zwm4K21xBvMBZ7mC6tce-LRBA/s400/Kalp_ses_02.jpg" width="400" /></a></div>
<br />
Kalanlar "DigiScope" marka bir dijital steteskop ile alınmış<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZHQHRmr5IYFNHV1qSONdNjtitTRHD2OCA83CB9yFB5_q7mKT7NV-KA__PMQPvourM6JE2Bp_v27_ahgY2dIHHjn7S3NZhmS41blvkcl7ki4xSL26JslmcWqjs9Zf_vkxOlJOtiA/s1600/Kalp_ses_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="279" data-original-width="500" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZHQHRmr5IYFNHV1qSONdNjtitTRHD2OCA83CB9yFB5_q7mKT7NV-KA__PMQPvourM6JE2Bp_v27_ahgY2dIHHjn7S3NZhmS41blvkcl7ki4xSL26JslmcWqjs9Zf_vkxOlJOtiA/s400/Kalp_ses_03.jpg" width="400" /></a></div>
<br />
<br />
Ses dosyalarının uzunlukları farklı tahmin edeceğiniz gibi ses dosyalarının çoğuda Normal seslerden oluşuyor.<br />
Önce ses dosyalarımızı test ve eğitim olarak iki guruba ayırıyoruz.<br />
Eğitim %80<br />
Test %20<br />
<br />
Bu ayrımdan sonra ses dosyalarımızı 0.5 saniyelik kaydırmayla 2 saniyelik kısımlara bölüyoruz. ve giriş verisi olarak bunu kullanıyoruz.Yani giriş verimiz 2 saniyelik ses sinyali. Elimizdeki ses dosyalarına göre konuşursak ( sample rate 22050 ) 44100 lük vektörü giriş olarak kullanıyoruz.<br />
<br />
<br />Veri dosyalarımızı oluşturduktan sonra tek boyutlu evrişim katmanları kullanan bir ağ tasarladık ve bir sınıflandırıcı eğittik.<br />
<br />
<ul>
<li>Opimizasyon metodu : <a href="https://arxiv.org/abs/1412.6980v8">Adam</a></li>
<li>Toplam parametre sayısı : 1,366,865</li>
<li>Eğitim Epoch sayısı : 29 - earlystop ile -</li>
</ul>
Eğitim grafiği<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv-7HDg-QTMLCoAJTUzr7OIb0uT3Du0r3M6fcGLz6_Iyej1w94quPI2GNF9zx8y32YtvOrtmPZ55gsgpVQKlEe6-exAvsaUIFnFVboh6tP9Qfbo_0Tzhy6wLYHPBs4NtEiUCaptw/s1600/Kalp_ses_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="429" data-original-width="971" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv-7HDg-QTMLCoAJTUzr7OIb0uT3Du0r3M6fcGLz6_Iyej1w94quPI2GNF9zx8y32YtvOrtmPZ55gsgpVQKlEe6-exAvsaUIFnFVboh6tP9Qfbo_0Tzhy6wLYHPBs4NtEiUCaptw/s400/Kalp_ses_04.jpg" width="400" /></a></div>
<br />
Modelin başarısı eğitim için kullandığımız datalarla %95 in üzerinde<br />
<br />
Eğitim için kullanmadığımız datalarla yaptığımız test ve sonuçlarıda şöyle gösterelim<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMq9YfpkoKBcuj62HrHKU5kHz53AYW-5RanCTS8RtbubImxs8QdmgADxK2AmDZgQS9tYghA5KTh84-cocrPpZ6BP_5xLyg_5g1pOL6d4LjLQtaSmikEtU4B7CvHqf5RC1NTSHkqw/s1600/Kalp_ses_05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="279" data-original-width="788" height="141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMq9YfpkoKBcuj62HrHKU5kHz53AYW-5RanCTS8RtbubImxs8QdmgADxK2AmDZgQS9tYghA5KTh84-cocrPpZ6BP_5xLyg_5g1pOL6d4LjLQtaSmikEtU4B7CvHqf5RC1NTSHkqw/s400/Kalp_ses_05.jpg" width="400" /></a></div>
<br />
ortalama %73 -75 arası bir başarı görünüyor.<br />
<br />
Başarının düşük olması ve artımamız gerektiği bir gerçek elbette. Ama sadece ham ses sinyali vererek. Bir dönüşüm -fft mel vs gibi - yapmadan bir sınıflandırıcı eğitilebilmeside zannımca çok önemli bir özellik.<br />
<br />
Fırsat bulabilirde bu çalışmaya tekrar dönebilirmiyiz bilemiyorum ama. Bu çalışmaya devam isteyenlere ilk önce ses sinyalinde kalp atış kısımlarının ayrıştırılması sonrasında bu çalışmanın yapılmasının başarıyı oldukça yükselteceğini düşünüyoruz.<br />
<br />
Her türlü görüş ve önerilerinizi bekleriz.birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-41527153336484142752018-07-08T13:03:00.000+03:002018-07-08T13:03:40.997+03:00EKG Kalp Atışı Sınıflandırması 6<h3>
Sonuçların Analizi ;</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5HnnxqJUUW32dH69nHcubiOgyDBrv5FdK_5Kzmj5VWP8TJ4c_afcSVtVrsqXm1aBPVosqc2710BaDYQA8jV6ELZv68CHeo8uRZxG4U6M-rNmpiwyVKRRP-KQnuLVIosUuMxkTzg/s1600/method_results.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="690" data-original-width="1034" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5HnnxqJUUW32dH69nHcubiOgyDBrv5FdK_5Kzmj5VWP8TJ4c_afcSVtVrsqXm1aBPVosqc2710BaDYQA8jV6ELZv68CHeo8uRZxG4U6M-rNmpiwyVKRRP-KQnuLVIosUuMxkTzg/s400/method_results.png" width="400" /></a></div>
<br />
Kalp atışı sinyalinin sınıflandırılması amacıyla bu yazımıza kadar 9 metodu kullandık. Yukarıda gördüğünüz grafiği bu sonuçları kullanarak oluşturduk.<br />
Tabloyu da görelim sayılar daha net gözüksün<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaMPy2w_2GrLIj3J_jS3DIPcz3WybAT762mHOMckpzNd3KZbnDE0MeQQkvoX4hdkOcPJC5-24QTO6knpx490xq0sdYAW5-Fxn_aH50LanDNiCS074CIPV4vN19ZVWD4pv1Mdxt9w/s1600/result_table.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="303" data-original-width="1259" height="96" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaMPy2w_2GrLIj3J_jS3DIPcz3WybAT762mHOMckpzNd3KZbnDE0MeQQkvoX4hdkOcPJC5-24QTO6knpx490xq0sdYAW5-Fxn_aH50LanDNiCS074CIPV4vN19ZVWD4pv1Mdxt9w/s400/result_table.jpg" width="400" /></a></div>
<br />
Tablodan görüldüğü üzere, Derin öğrenme için uyguladığımız 3 ağ tipinden, Conv1d ve LSTM sırayla ilk iki sıraya yerleştiler. İlk sıradaki Evrişimli yapay sinir ağı, her 3 ölçüt e - precision, recall, f1-score - görede en iyi sonuca ulaştı. Derin öğrenmenin bu iki modelini Boosting metodları takip ediyor. Sırayla Light GBM, Xgboost, CatBoost , üçüncü , dördüncü ve beşinciliğe yerleşiyorlar. Hemde pratik anlamda ulaştıkları sonuçlar bir birlerinden pek farklı değil. Üstelik 'F' tipi sinyal için derin öğrenme metodlarından daha iyi bir sonuca ulaşmış. Sinyal sınıflarının f1-skor değerlerine göre grafiğine bakalım<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzrlRrpRq2nSRHiUhkLewgAp4NV9G_PnxSwQVY5sET8C3b-m2PuRLDqY2HLfxAAqe86r9u-9qvenng3bmDnK0vjMbU04B47-W3Bu6pFSallQWfnLQ8koNtJM9XJYNruFy7R7-EIg/s1600/types_f1_scores.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="618" data-original-width="1023" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzrlRrpRq2nSRHiUhkLewgAp4NV9G_PnxSwQVY5sET8C3b-m2PuRLDqY2HLfxAAqe86r9u-9qvenng3bmDnK0vjMbU04B47-W3Bu6pFSallQWfnLQ8koNtJM9XJYNruFy7R7-EIg/s400/types_f1_scores.png" width="400" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Bu bize gösteriyorki, <b>illa derin öğrenme gibi bir müşkülata girmeye gerek yok</b>. Boosting metodlarıda pek güzel işimizi görebilir.<br />
<br />
Son olarak En başarılı iki metod olan Conv1D ve LSTM sonuçlarını birleştirince - Ensemble -, bir gıdım daha iyileşme oluyor.<br />
<br />
<blockquote class="tr_bq">
Classification Report <br /> precision recall f1-score support<br /><br /> N 0.990 0.997 0.993 18118<br /> S 0.933 0.804 0.864 556<br /> V 0.973 0.954 0.963 1448<br /> F 0.856 0.735 0.791 162<br /> Q 0.997 0.987 0.992 1608<br /><br />avg / total <span style="color: red;"><b>0.987 0.987 0.987</b></span> 21892</blockquote>
Elbette bunlar bizim ulaşabildiğimiz sonuçlar. <a href="https://derindelimavi.blogspot.com/2018/07/ekg-kalp-ats-snflandrmas-3.html">3. yazımızda</a> geçen metodolojiyi çok daha sistematik ve derinlemesine uygulanırsa sonuçların bir nebze daha iyi olabileceğini düşünüyorum. İlk yazılarımızda bahsetmiştik veri kümemiz sınıf bazında dengesiz. Buna dair sınıf bazında ağırlıklar yada özel hata fonksiyonları - loss - denenebilir.<br />
<br />
<h4>
Karşılaştırma ;</h4>
<br />
Veri setini hazırlayanların, yazdığı makalede paylaşılan , sonuç tablosu şöyle ;<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcvpfPS91_zbORDL9prISUTXCNdIFM4VKbnt2L05tQ1c74gXnZuw6PQ8EYtNol3NdDFVzp5JxlMA38uVKmfchWVSOVwGBvPkMm9X-906ykQq-bXlBe0z_rgKCoJOZy3FnJNYP_zw/s1600/paper_table.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="655" data-original-width="691" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcvpfPS91_zbORDL9prISUTXCNdIFM4VKbnt2L05tQ1c74gXnZuw6PQ8EYtNol3NdDFVzp5JxlMA38uVKmfchWVSOVwGBvPkMm9X-906ykQq-bXlBe0z_rgKCoJOZy3FnJNYP_zw/s400/paper_table.jpg" width="400" /></a></div>
Görüldüğü gibi , makaleye göre daha başarılı sonuçlara ulaşmışız. Tabloda geçen diğer çalışmaların aynı veri seti üzerinde yapılmadığından karşılaştırmanın çok sağlıklı olmayacağını düşünüyorum.<br />
<br />
Son olarak <i><b>"müşteri her zaman haklıdır"</b></i> düsturunca.<br />
<br />
<blockquote class="tr_bq">
<i>"</i><i>Bir çalışma yaptık , Doktorlardan daha iyi kalp rahatsızlığını tespit ediyor !!! " </i></blockquote>
mealinde gaflet içinde bir cümle ASLA kurmuyoruz.<br />
Doğrusunun, çalışmanın uygulanabilirliğini, konunun UZMANLARIYLA - yani doktorlarla - görüşerek yapılması gerektiğini söylüyoruz.<br />
<br />
Bunca Yazıyı sabırla okuduysanız tebrik ediyoruz. Her türlü eleştiri , görüş ve önerilerinizi bekleriz.<br />
<br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com2tag:blogger.com,1999:blog-14015976.post-25685229438344195442018-07-07T09:05:00.001+03:002018-07-07T09:05:16.101+03:00EKG Kalp Atışı Sınıflandırması 5<h3>
Derin Öğrenme </h3>
Evet son olarak günümüzün en popüler ve en güçlü yapay öğrenme metodu olan derin öğrenmeye geldi sıra. Malumunuz biz keras kütüphanesini kullanıyoruz. Bu problemi çözmek için 3 tane ağ tasarladık. Hepsi için ortak kullanıdğımız parameterler şöyle<br />
<ul>
<li>batch_size : 128</li>
<li>epochs : 120</li>
<li>optimizer : adam </li>
</ul>
<h4>
Dense ;</h4>
İlki klasik yapay sinir ağı diyebileceğimiz, keras daki "<i>Dense</i>" katmanlarıyla oluşturulmuş bir ağ. Sklearn deki <i>MLP</i> nin benzeri bir çözüm diyebiliriz. Farklılığına gelirsek burda biz bunu keras kütüphanesini kullanarak uyguladık, ve '<i>Dropout</i>' denen katmanlarda ilave ettik.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeNXH9zj3ZxGQuhlUVYEYYvVXGVENyDt4avjwMheroyHS-aJn5yKkP7yydHchQkUyKhX6tTlCf3VecaxM-2u1m2TGigQUqL082yS_qVb1OQz14EZeEktaLYjGxNkTarhr87q0KYg/s1600/heart_beat_dense.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="848" data-original-width="369" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeNXH9zj3ZxGQuhlUVYEYYvVXGVENyDt4avjwMheroyHS-aJn5yKkP7yydHchQkUyKhX6tTlCf3VecaxM-2u1m2TGigQUqL082yS_qVb1OQz14EZeEktaLYjGxNkTarhr87q0KYg/s400/heart_beat_dense.png" width="173" /></a></div>
<br />
Eğitim grafiğimiz<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz-Zvw0TiCPBjEYW3TvHwgSxUlAhuNReR3PW3w6G6qbUuWKSkElV9bf4_dhTnJN5PZmqP4aj3y7P3vOJREtiQWSpphgKcWnfRvGMNcFYRwtueJML7-TIFG02vYCoMjA2K6-spoXg/s1600/dense_training.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="379" data-original-width="813" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz-Zvw0TiCPBjEYW3TvHwgSxUlAhuNReR3PW3w6G6qbUuWKSkElV9bf4_dhTnJN5PZmqP4aj3y7P3vOJREtiQWSpphgKcWnfRvGMNcFYRwtueJML7-TIFG02vYCoMjA2K6-spoXg/s400/dense_training.jpg" width="400" /></a></div>
<br />
Sonucumuz<br />
<blockquote class="tr_bq">
Classification Report <br /> precision recall f1-score support<br /><br /> N 0.983 0.995 0.989 18118<br /> S 0.916 0.664 0.770 556<br /> V 0.951 0.941 0.946 1448<br /> F 0.911 0.698 0.790 162<br /> Q 0.986 0.978 0.982 1608<br /><br />avg / total 0.979 0.980 0.979 21892</blockquote>
<br />
<h4>
Conv1D;</h4>
İkinci olarak Tek boyutlu evrişim katmanlarının kullanıldığı <i>VGG</i> tipi bir ağ tasarladık. Kısaca iki evrişim katmanı sonrasında boyut küçültme - <a href="http://derindelimavi.blogspot.com/2017/10/pooling-terimi-hakknda.html">bakınız pooling</a> - şeklinde tarif edilebilecek bir yapı. <br />
Ağ yapımız böyle<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFrGbGzGWpL_Vr9F0XXo5H1YucQ5B9BhSZ_Y0ry5scR_4ev-OU5Em_5EWMh1NtrBqUeKTp_wuGOcs2jmZAbSdGROgFYGWmm9FQIIPA6OFTfWPjCs7qfLXLSxBQxtggqlzkNQTv6w/s1600/heart_beat_conv1d.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="374" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFrGbGzGWpL_Vr9F0XXo5H1YucQ5B9BhSZ_Y0ry5scR_4ev-OU5Em_5EWMh1NtrBqUeKTp_wuGOcs2jmZAbSdGROgFYGWmm9FQIIPA6OFTfWPjCs7qfLXLSxBQxtggqlzkNQTv6w/s400/heart_beat_conv1d.png" width="92" /></a></div>
<br />
Eğitim Grafiğimiz<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz1U7srXJe3JhGAnArc_aPaM2PQh8_L8THgXIBJtV2whUdXY4Br_c4vTe82r2QlLKHoO9JJHsROto6HTDkruqj_e7K9Z7xf3dFJ3AaBgkApAslbyWJ_Y0TM3_OtDdrOWkfPUF3XQ/s1600/conv1d_training.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="374" data-original-width="825" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz1U7srXJe3JhGAnArc_aPaM2PQh8_L8THgXIBJtV2whUdXY4Br_c4vTe82r2QlLKHoO9JJHsROto6HTDkruqj_e7K9Z7xf3dFJ3AaBgkApAslbyWJ_Y0TM3_OtDdrOWkfPUF3XQ/s400/conv1d_training.jpg" width="400" /></a></div>
<br />
<br />
Sonucumuz<br />
<blockquote class="tr_bq">
Classification Report <br /> precision recall f1-score support<br /><br /> N 0.990 0.996 0.993 18118<br /> S 0.895 0.809 0.850 556<br /> V 0.971 0.950 0.960 1448<br /> F 0.826 0.735 0.778 162<br /> Q 0.998 0.986 0.992 1608<br /><br />avg / total 0.985 0.986 0.986 21892</blockquote>
<br />
<h4>
LSTM;</h4>
Son olarak Özyinelemeli Sinir Ağları - RNN - denen ağ yapısının en bilinen tipi olan LSTM kullanıldı. Bu tip ağlarda vectörel biri giriş değil, zaman da değişen değerler öğrenilir. Dizilimden bir sonuca ulaşma tipine "many to one" diyorlar.<br />
<blockquote class="tr_bq">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmW1yclp7y1ckDOPqaRtPGSG_5ruzRHmmrOxt195zIKaO7KAu80ZrgXb9zpMk0iBmVi31DFkVLKmFetPvRXW2nvDQZeDxIKK0KROLprDNNl4lcfyObmmkhLlwC-b4YXKeVmWPQoA/s1600/rnn_many2one.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="416" data-original-width="256" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmW1yclp7y1ckDOPqaRtPGSG_5ruzRHmmrOxt195zIKaO7KAu80ZrgXb9zpMk0iBmVi31DFkVLKmFetPvRXW2nvDQZeDxIKK0KROLprDNNl4lcfyObmmkhLlwC-b4YXKeVmWPQoA/s320/rnn_many2one.jpg" width="196" /></a></blockquote>
<br />
<blockquote class="tr_bq">
<a href="https://karpathy.github.io/2015/05/21/rnn-effectiveness/">The Unreasonable Effectiveness of Recurrent Neural Networks </a></blockquote>
Andrej Karpathy nin yukardaki yazısından detaylara ulaşabilirsiniz. Konuyu dağıtmadan devam edelim<br />
<br />
Ağ yapımız şöyle<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRjMH7ZygHCi59z15iMGUZP3D803QCZFHZuBW8HWFQXIAna4Ord8dTg7W3JgCM83eLBs7eoRKfk3diWIrHnL94QUmotG_TkxCwm6lDUloJSieTDzaSgy7hWpch2EU1G3IPWJpJtg/s1600/heart_beat_lstm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="627" data-original-width="389" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRjMH7ZygHCi59z15iMGUZP3D803QCZFHZuBW8HWFQXIAna4Ord8dTg7W3JgCM83eLBs7eoRKfk3diWIrHnL94QUmotG_TkxCwm6lDUloJSieTDzaSgy7hWpch2EU1G3IPWJpJtg/s400/heart_beat_lstm.png" width="247" /></a></div>
<br />
<br />
Eğitim Grafiğimiz<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4VEtvQA4UeGap9LkEAx_scK4xK_LyN8plaq3hRgQBqZxGNPYexnnX3XYkrq9bNlTV143-SyDfx7-vvalFg-VjzDdEi4nSu8DwI7fEmykoBrIlBCZyM-uz7fexOoYvT13ii6d7WA/s1600/lstm_training.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="381" data-original-width="816" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4VEtvQA4UeGap9LkEAx_scK4xK_LyN8plaq3hRgQBqZxGNPYexnnX3XYkrq9bNlTV143-SyDfx7-vvalFg-VjzDdEi4nSu8DwI7fEmykoBrIlBCZyM-uz7fexOoYvT13ii6d7WA/s400/lstm_training.jpg" width="400" /></a></div>
<br />
<br />
Sonucumuz<br />
<blockquote class="tr_bq">
Classification Report <br /> precision recall f1-score support<br /><br /> N 0.986 0.997 0.991 18118<br /> S 0.915 0.755 0.828 556<br /> V 0.964 0.938 0.951 1448<br /> F 0.813 0.673 0.736 162<br /> Q 0.996 0.980 0.988 1608<br /><br />avg / total 0.982 0.983 0.982 21892</blockquote>
<br />
Sonuçlar hakkındaki görüşlerimizi bir sonraki yazıya bırakıyoruz. Sadece bu yazımıza kadar denediğimiz metodlardan en başarılısı evrişimli yapay sinir ağını uyguladığımız oldu deyip bitiriyoruz. Her türlü görüş ve önerilerinizi bekleriz.birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-18333889033440129552018-07-04T14:12:00.000+03:002018-07-04T14:12:47.929+03:00EKG Kalp Atışı Sınıflandırması 4<h3>
Gradient Boosting Kütüphaneleri ile Sınıflandırma</h3>
<i><a href="https://www.wikiwand.com/en/Boosting_(machine_learning)">Boosting</a></i> ve <i><a href="https://www.wikiwand.com/en/Gradient_boosting">gradient boosting</a></i> genel algoritmalar. Yaygın olarak bilinen hali karar ağaçlarıyla çalışanı. Çok kaba bir özet geçersek. Zayıf sınıflandırıcılar olan küçük karar ağaçlarının birleştirilmesiyle oluşturulmuş güçlü bir sınıflandırıcı oluşturulmaya çalışılıyor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNiFZeaQDph9zH6ch81_JFSzzwjMGYo7apC1cMDx1sdvb_xRDXQmF9SIEHOwD6ZRIl9Nx9802-NBcetCchBe2kvfwabZ_fr1-36DAgziKMkoR8NZyA8R9FHspCDvXhA5qxKyWUUA/s1600/boosting1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="345" data-original-width="912" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNiFZeaQDph9zH6ch81_JFSzzwjMGYo7apC1cMDx1sdvb_xRDXQmF9SIEHOwD6ZRIl9Nx9802-NBcetCchBe2kvfwabZ_fr1-36DAgziKMkoR8NZyA8R9FHspCDvXhA5qxKyWUUA/s400/boosting1.png" width="400" /></a></div>
<br />
<br />
Gradient Boost 'un sklearnin içinde de var. Fakat biz harici kütüphaneler olana XGBoost, Light GBM ve CatBoost 'u burada kulanacağız<br />
<br />
<b>XGBoost</b> : İlk çıkan ve popüler olan kütüphane. Özellikle Kaggle yarışmalarında çok kullanılıyordu.<br />
Tantım yazısı ;<br />
<blockquote class="tr_bq">
<i>XGBoost is an optimized distributed gradient boosting library designed to be highly efficient, flexible and portable. It implements machine learning algorithms under the Gradient Boosting framework. XGBoost provides a parallel tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way. The same code runs on major distributed environment (Hadoop, SGE, MPI) and can solve problems beyond billions of examples.</i></blockquote>
<ul>
<li>Sitesi : <a href="https://xgboost.readthedocs.io/">https://xgboost.readthedocs.io</a></li>
<li>Github : <a href="https://github.com/dmlc/xgboost">https://github.com/dmlc/xgboost</a></li>
</ul>
<br />
<b>LightGBM</b> : Microsoft 'un geliştirdiği açık kaynak kodlu bir kütüphane, Epey güçlü ve yaygınlaşmaya başladı.<br />
Tanıtım yazısı;<br />
<blockquote class="tr_bq">
<i> <span class="col-11 text-gray-dark mr-2" itemprop="about">A fast,
distributed, high performance gradient boosting (GBDT, GBRT, GBM or
MART) framework based on decision tree algorithms, used for ranking,
classification and many other machine learning tasks.</span></i></blockquote>
<ul>
<li>Sitesi : <a href="https://lightgbm.readthedocs.io/">https://lightgbm.readthedocs.io</a></li>
<li>Github : <a href="https://github.com/Microsoft/LightGBM">https://github.com/Microsoft/LightGBM</a></li>
</ul>
<br />
<b>CatBoost</b> : Yandex'in geliştirdiği açık kaynak kodlu bir kütüphane, Nispeten çok daha az biliniyor ama en az rakipleri kadar güçlü. Yaygınlaşmaya çalışıyor.<br />
Tanıtım yazısı;<br />
<blockquote class="tr_bq">
<i> CatBoost is an open-source gradient boosting on decision trees library with categorical features support out of the box for Python, R</i></blockquote>
<ul>
<li>Sitesi : <a href="https://catboost.yandex/">https://catboost.yandex/</a></li>
<li>Github : <a href="https://github.com/catboost/catboost">https://github.com/catboost/catboost</a></li>
</ul>
<br />
Konunun detayları hakkında bir kaç bağlantı verip geçiyoruz. <br />
<ul>
<li> <a href="https://xgboost.readthedocs.io/en/latest/model.html#introduction-to-boosted-trees">Introduction to Boosted Trees</a></li>
<li> <a href="https://gormanalysis.com/gradient-boosting-explained/">Gradient Boosting Explained</a></li>
<li> <a href="https://machinelearningmastery.com/gentle-introduction-gradient-boosting-algorithm-machine-learning/">Gentle Introduction to Gradient Boosting</a></li>
<li> <a href="https://www.analyticsvidhya.com/blog/2015/11/quick-introduction-boosting-algorithms-machine-learning/">Quick Introduction to Boosting Algorithms in Machine Learning</a></li>
<li><a href="https://www.analyticsvidhya.com/blog/2017/06/which-algorithm-takes-the-crown-light-gbm-vs-xgboost/"> Which algorithm takes the crown: Light GBM vs XGBOOST? </a></li>
<li><a href="https://www.analyticsvidhya.com/blog/2017/08/catboost-automated-categorical-data/"> CatBoost: A machine learning library to handle categorical (CAT) data automatically</a> </li>
<li> <a href="https://towardsdatascience.com/catboost-vs-light-gbm-vs-xgboost-5f93620723db">CatBoost vs. Light GBM vs. XGBoost</a></li>
<li> <a href="https://www.analyticsvidhya.com/blog/2016/02/complete-guide-parameter-tuning-gradient-boosting-gbm-python/">Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python</a></li>
<li> <a href="https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/">Complete Guide to Parameter Tuning in XGBoost</a></li>
</ul>
<br />
<h3>
Kullanımları </h3>
Sklearn tipi bir kullanımları var. Sınıflandırıcı nesnenizi oluşturuyorsunuz. "<i>fit</i>" fonksiyonu ile eğitim , "<i>predict</i>" fonskisyonu ile tahmin yapıyorsunuz.<br />
<br />
<b>XGboost</b> için : "<a href="https://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier">XGBClassifier</a>" sınıfı kullanılıyor<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSglAvLzm9rkoljVVV78n7IDrub1EwxXBEoMY6mctNbqfsZ53itf45RP1EDgpy7Q_57rznki4LKk67UQ_1MgIQxJqDTtwQXL-aVB9m-sb5YxUDQLSV0gotzp_V08QKNC0Dym7RPw/s1600/xgboost_train.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="188" data-original-width="1008" height="73" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSglAvLzm9rkoljVVV78n7IDrub1EwxXBEoMY6mctNbqfsZ53itf45RP1EDgpy7Q_57rznki4LKk67UQ_1MgIQxJqDTtwQXL-aVB9m-sb5YxUDQLSV0gotzp_V08QKNC0Dym7RPw/s400/xgboost_train.jpg" width="400" /></a></div>
<br />
Sonuç :<br />
precision recall f1-score support<br /><br /> N 0.981 0.999 0.989 18118<br /> S 0.966 0.667 0.789 556<br /> V 0.977 0.921 0.948 1448<br /> F 0.894 0.728 0.803 162<br /> Q 0.994 0.965 0.979 1608<br /><br />avg / total 0.980 0.981 0.980 21892 <br />
<br />
<br />
<b>LightGBM</b> için : "<a href="https://lightgbm.readthedocs.io/en/latest/Python-API.html#lightgbm.LGBMClassifier">LGBMClassifier</a>" sınıfı kullanılıyor<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9WvMIMdRqtD_nmkVqz0iLdH00zDzqGml7kKHii3__uBMZlau6pXbGZiUqJEkIrlZtthX3e64cO4kBcrKmXAWbtTGnvImJwI94eh_DDQ1TrRIx4RLkgNr8RwW0fOliEoMTw7yCKQ/s1600/lgbm_train.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="128" data-original-width="826" height="61" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9WvMIMdRqtD_nmkVqz0iLdH00zDzqGml7kKHii3__uBMZlau6pXbGZiUqJEkIrlZtthX3e64cO4kBcrKmXAWbtTGnvImJwI94eh_DDQ1TrRIx4RLkgNr8RwW0fOliEoMTw7yCKQ/s400/lgbm_train.jpg" width="400" /></a></div>
<br />
Sonuç:<br />
precision recall f1-score support<br /><br /> N 0.982 0.999 0.990 18118<br /> S 0.974 0.683 0.803 556<br /> V 0.980 0.927 0.953 1448<br /> F 0.876 0.741 0.803 162<br /> Q 0.995 0.973 0.984 1608<br /><br />avg / total 0.982 0.982 0.981 21892<br />
<br />
<b>CatBoost</b> için : "<a href="https://tech.yandex.com/catboost/doc/dg/concepts/python-reference_catboostclassifier-docpage/">CatBoostClassifier</a>" sınıfı kullanılıyor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_hgM_sG5bUYV8-EbvR8PK9mMIm9wdjdZnfmzwT55j-tV3jDI_9GfuSv5VaSjcQybiR7RQOQd1uZlLq1wzF6i1iwGJ_8G_nBXsqW_ilFm7mdQ8lUE7G4dnj6pR2wJtwuoWPIk27g/s1600/catboost_train.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="272" data-original-width="821" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_hgM_sG5bUYV8-EbvR8PK9mMIm9wdjdZnfmzwT55j-tV3jDI_9GfuSv5VaSjcQybiR7RQOQd1uZlLq1wzF6i1iwGJ_8G_nBXsqW_ilFm7mdQ8lUE7G4dnj6pR2wJtwuoWPIk27g/s400/catboost_train.jpg" width="400" /></a></div>
<br />
<br />
Sonuç :<br />
precision recall f1-score support<br /><br /> N 0.982 0.997 0.989 18118<br /> S 0.931 0.680 0.786 556<br /> V 0.973 0.918 0.945 1448<br /> F 0.848 0.722 0.780 162<br /> Q 0.987 0.972 0.980 1608<br /><br />avg / total 0.979 0.980 0.979 21892<br />
<br />
Sonuçlar çok büyük farklılık göstermiyor.<br />
Boosting kütüphaneleri ile yaptığımız denemelerin sonuçları böyl. Bir sonraki yazımızda kısmetse derin öğrenme ile aynı probleme çözüm bulmaya çalışacağız. Her türlü görüş ve önerilerinizi bekleriz. <br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-10939501040444716312018-07-03T09:12:00.001+03:002018-07-08T12:03:28.005+03:00EKG Kalp Atışı Sınıflandırması 3<h3>
Scikit-Learn ile Sınıflandırma</h3>
<a href="http://scikit-learn.org/">Scikit-Learn</a> Python 'un standart Yapay Öğrenme kütüphanesidir. Kalp atışı sınıflandırma problemi için bu kütüphane ile başlayacağız. Bu kütüphane devasa bir kütüphane aklınıza gelen hemen her tür metod için sınıflar, fonksiyonlar eklenmiştir. Pek çok sınıflandırıcıda hali hazırda emrinize amade beklemedektedir<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOyB_eyk9bJN1mg6FGLgQsAiG0X19yo2n9ZRBV2EERtmjD_BEfTLMJ8F_M8CSH4yifRxjgS9EAoE73lDLxuqoenWiUkmkJrVz6WatluWk4zuteTt6pjS2krh4jnh9NHYh1sI0eow/s1600/classifier_comparision.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="1600" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOyB_eyk9bJN1mg6FGLgQsAiG0X19yo2n9ZRBV2EERtmjD_BEfTLMJ8F_M8CSH4yifRxjgS9EAoE73lDLxuqoenWiUkmkJrVz6WatluWk4zuteTt6pjS2krh4jnh9NHYh1sI0eow/s400/classifier_comparision.jpg" width="400" /></a></div>
<br />
Yukardaki resim sınıflandırıcı metdolarını karşılaştırmak için yazılmış <a href="http://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html#classifier-comparison">örnek kodun</a> çıktısıdır.<br />
<br />
Sınıflandırıcı için alt sınırımızdan bahsetmiştik geçenki yazımızda. Bütün örneklere normal dersek %82 başarılı çıkıyordu. Önce onu deneyelim<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKAZ1s53HRntggtw02ous_og0P0VLjJtjzaou2JX_ooF7RPfSQUVp-JUNMdu2pSQiChiiFSGcHyfZwpCOCfaUt93WY3g1XJ1V2xg_YJkJVGNnB33rEztcxHRO-ruy69fNJ3mezVw/s1600/base_line.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="275" data-original-width="989" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKAZ1s53HRntggtw02ous_og0P0VLjJtjzaou2JX_ooF7RPfSQUVp-JUNMdu2pSQiChiiFSGcHyfZwpCOCfaUt93WY3g1XJ1V2xg_YJkJVGNnB33rEztcxHRO-ruy69fNJ3mezVw/s400/base_line.jpg" width="400" /></a></div>
<br />
Bu basit ve sade tahmin sistemi bizim alt çizgimiz bu yöntemle ulaştığımız sonuçlardan daha iyi sonuca ulaşamayan, sınıflandırcı metodlarını bu problem için kullanmanın anlamı yok.<br />
<br />
Verimiz hazır, sklearn 'ün bir sürü sınıflandırıcısı da elimizin altında. Bundan sonra izleyeceğimiz metodloji şöyle<br />
<ol>
<li>Sınıflandırıcı Nesnesini oluştur. </li>
<li>Eğitim verisi ile modeli eğit - fit fonksiyonu -</li>
<li>Eğitilmiş model ile doğrulama verisinden tahmin yaptır - predict -</li>
<li>Tahmin edilmiş değerlerle gerçek değerleri karşılaştır - classification_report fonksiyonu -</li>
<li>Karşılaştırılımış sonuçlar yeterince iyi ise 8. maddeye git</li>
<li>Karşılaştırılımış sonuçları daha iyi hale getirmesni umduğumuz parametre değişikliklerini yap</li>
<li>Yeni parametrelerle 1. maddeye dön</li>
<li>Eğitilmiş model ile test verisinden tahmin yaptır - predict -</li>
<li> Tahmin edilmiş değerlerle gerçek değerleri karşılaştır - classification_report fonksiyonu -</li>
</ol>
bu admlardan en muğlak olan 6. olan daha iyi sonuca ulaştıracak parametre değişikliği. Bunu yapabilmek için ilk etapta Sınıflandırıcı nasıl çalışır , parametreler ne anlama gelir, bilgi sahibi olmamız lazım. Bunlara ek olarak hangi tür verilerde hangi tip değişiklikler olumlu etkiliyor gibi tecrübe de gerekiyor. İlki İçin okuyup araştıracaksınız. İkincisi için tecrübe edeceksiniz. <br />
<br />
Başlayalım denemelere 3 tip sınıflandırıcı deneyeceğiz. <br />
<h3>
KNN - K-En Yakın Komşuluk</h3>
Genellikle KNN olan kısaltılmış adıyla bilinir. KNN genel anlamda hem sınıflandırma hem de regresyon için kullanılabilir. Sklearn de sınıflandırıcı olarak kullanmak için "<a href="http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html">KNeighborsClassifier</a>" kullanılır. Metodda veriler vektörel olarak ifade edilir. Tahmin işlemi için verilen vektör K adet en yakın komşusunun durumuna göre cevaplanır. Eğer Sınıflandırma problemi ise, K adet komşunun sınıflarının oy çokluğudur. Eğer regresyon ise En Yakın K adet komşusunun değerlerinin ortalamasıdır.<br />
Mesela aşağıdaki grafikte rengi belli olmayan noktanın sınıfı, kendisine en yakın K = 3 komşusunun<br />
rengine göre seçilir.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDk6yqHsCasWRUkbEnhKIhGBTVFJEMFu80k_SpI_eyYDUMo-3g7nMN6qJ2VkJMa5bLIiVD_Ms-RmVL-jL5owsvZjwABFpXPeZ7GWvEv0JBxzsgwOLNEx1S-nWMCMXl72HMLDD83A/s1600/knn.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="462" data-original-width="868" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDk6yqHsCasWRUkbEnhKIhGBTVFJEMFu80k_SpI_eyYDUMo-3g7nMN6qJ2VkJMa5bLIiVD_Ms-RmVL-jL5owsvZjwABFpXPeZ7GWvEv0JBxzsgwOLNEx1S-nWMCMXl72HMLDD83A/s400/knn.jpg" width="400" /></a></div>
<br />
2 komşusu kırmızı, bir komşusu mavi, sonuç kırmızıdır.<br />
<br />
<br />
<h3>
SVM – Destekleyici Vektör Makinesi</h3>
Support Vector Machines; Destekçi Vektör Makinesi diye tercüme edilse de Türkçe kaynakların pek çoğunda kısaltma ismiyle SVM olarak geçer. Çekirdek -kernel- fonksiyonu ile veriler hiper uzaya aktarılır, guruplar arası hiper düzlemler hesaplanır. Bu düzleme en yakın veriler - ki destek vektörleri denir - kullanılarak, düzlem guruplar arası en optimum konuma yerleştirilir.<br />
Sınıflandırma aşamasında da veri hiper uzaya aktarılır ve eğitim verisiyle oluşturulmuş hiper düzleme olan konumuna göre değerlendirilir.<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_aT8J3bs8wvvJaWVy2EJMwoUnGWiZfQJNePol3XcXnSrv40VXjO0furpUWUVP9WzeJ40n8w0TUQ5jCVLrYdC4TBGJZ69kw88YZKbiKZ1VCXUR-lXaCLmm2MH4afyx1CfIFmL4w/s1600/svm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="272" data-original-width="361" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC_aT8J3bs8wvvJaWVy2EJMwoUnGWiZfQJNePol3XcXnSrv40VXjO0furpUWUVP9WzeJ40n8w0TUQ5jCVLrYdC4TBGJZ69kw88YZKbiKZ1VCXUR-lXaCLmm2MH4afyx1CfIFmL4w/s320/svm.jpg" width="320" /></a></div>
<br />
Grafikle kafanızda canlandırmaya çalışalım. Kırmızı ve mavi iki ayrı sınıfa ait veriler ve uzayda şekildeki gibi görünsün. Bu iki gurubu ayrıştıran bir doğru bulalım. Fakat şöyle bir durum var; bu iki gurubu ayrıştıran sonsuz sayıda doğru bulunabilir. Bir kaç tanesini kesik çizgili olarak çizdik. SVM eğitimi ile doğrumuzu guruplar arası en optimum yere taşıyoruz. Grafikteki yeşil çizgi gibi. Doğru bir kez tespit edildikten sonra kullanımı kolaydır. Bulduğumuz doğrunun solunda kalanlar mavi, sağında kalanlar kırmızıdır.<br />
Sklearn de sınıflandırıcı olarak kullanmak için "<a href="http://cikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html">SVC</a>" kullanılır.<br />
<br />
<h3>
Yapay Sinir Ağı</h3>
Klasik çok katmanlı Yapay Sinir Ağı. Sklearn de "Multi-layer Perceptron" diye geçiyor. Hem regresyon hem sınıflandırma için kullanılabiliyor. Sınıflandırma problemi için "<a href="http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn-neural-network-mlpclassifier">MLPClassifier</a>" kullanılıyor. Metodun çalışma sistemi için açıklama yazmayacağım, Çünkü eski yazılarımızda çok fazla işlediğimiz bir konu. Biraz zahmet olacak ama kusura bakmayın...<br />
<br />
<h3>
Sonuçlar</h3>
<h4>
KNN </h4>
precision recall f1-score support<br />
<br />
N 0.979 0.995 0.987 18118<br />
S 0.882 0.671 0.762 556<br />
V 0.946 0.906 0.926 1448<br />
F 0.791 0.679 0.731 162<br />
Q 0.994 0.954 0.973 1608<br />
<br />
avg / total 0.974 0.975 0.974 21892<br />
<br />
<h4>
SVM</h4>
precision recall f1-score support<br />
<br />
N 0.961 1.000 0.980 18118<br />
S 0.984 0.570 0.722 556<br />
V 0.987 0.772 0.866 1448<br />
F 0.854 0.648 0.737 162<br />
Q 0.999 0.917 0.957 1608<br />
<br />
avg / total 0.966 0.965 0.962 21892<br />
<h4>
YSA</h4>
precision recall f1-score support<br />
<br />
N 0.980 0.995 0.987 18118<br />
S 0.886 0.631 0.737 556<br />
V 0.966 0.901 0.932 1448<br />
F 0.815 0.654 0.726 162<br />
Q 0.979 0.979 0.979 1608<br />
<br />
avg / total 0.975 0.976 0.975 21892<br />
<br />
Sklearn ile yaptığımız denemelerin sonuçları böyle bundan sonraki aynı konulu yazılarımızda, Başka kütüphaneler ve metodlarla denemeler yapmaya çalışacağız. Her türlü görüş ve önerilerinizi bekleriz.<br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com2tag:blogger.com,1999:blog-14015976.post-63002225015464982452018-07-01T12:29:00.002+03:002018-07-08T12:04:09.798+03:00EKG Kalp Atışı Sınıflandırması 2<h3>
Veri kümesini okuma</h3>
Indirdiğimiz sıkıştırılmış dosyayı açtığımızda 4 tane csv dosya çıkıyor. Bu dosyalardan ikis bizim kullanacağımız "MIT-BIH Arrhythmia" isimli veri kümesine ait. csv uzantılı dosyalar metin tipinde ve değerler arasında genellikle 'virgülle ayrılmış dosyalardır. <br />
<blockquote class="tr_bq">
<i>"mitbih_train.csv" : 188 sutunlu son sutun etiket değeri ve 87554 örnek içeriyor</i><br />
<i>"mitbih_test.csv" : 188 sutunlu son sutun etiket değeri ve 21892 örnek içeriyor</i></blockquote>
Veriler hazırda eğitim ve test için ayrılmış durumda ama biz ilave bir ayrım daha getireceğiz. Doğrulama - validation - denen bu ayrılmış veri tıpkı test verisi gibi doğrudan eğitmde kullanılmaz. Fakat eğitim algoritmalarının hemen hemen her türünde ayarlamanız gereken parametreler vardır. Hiper parametre denen bu değişkenlerin değişimi ile aynı model aynı veri kümesi için çok değişik sonuçlar verebilir. Değişkenlerin en doğru değerlerinin tespiti için teorik bir formül yoktur. En iyi sonuca ulaşmak için genellikle denemeler yapılır. Deneme sonucunun iyi yada kötü olduğuna ancak eğitim de kullanılmamış verilere nasıl sonuçlar verdiğine bakarak karar verilir. İşte Doğrulama verisi diye geçen kısmın amacı budur. Test verisiyle Doğrulama verisi aynı olamazmı. Olur hatta genelliklede öyle yapılır. Eğer yeterince fazla veriniz varsa ayrı ayrı olması daha doğru olur. Çünkü peyder pey hiperparametrelerle modelimizin performansını yükseltiriz. Ama farkında olmadan eğitim için kullanmadığımız veriden gelen bilgilerle düzeltmeler yapmış olabiliriz. Bu durumda test için ulaştığımız sonuçlara güvenemeyebiliriz. Biz bu çalışmada bunu uygulamak amaçlı 3 e ayıracağız.<br />
Eğitim verisinin %20 sini doğrulama verisi olarak ayırıyoruz. İlk aşamada kullanmayacağız ama sonra hiper parametre ayarlarında kullanmak üzere ayıracağız.<br />
<br />
csv uzantılı dosyaları okumanın pek çok yolu vardır. Biz numpy nin <i>loadtxt</i> fonksiyonunu kullanıyoruz ve sklearn 'ün <i>train_test_split</i> fonksiyonuyla doğrulama - validation - kısmını ayırıyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHEQYbV5J4VgW7pWK64p-zEAmpemsnQ5nsEf4hkNkOdGzQVCWN7_7f0oryz3O6d_QmUgEAQnyvb-9VOvZLWFMplG0X5jMmxuAE0PNGvKdI8aXNTSj3x-ayxpEGAii82H9EI4DD1A/s1600/heart_beat_load_data.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="369" data-original-width="1007" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHEQYbV5J4VgW7pWK64p-zEAmpemsnQ5nsEf4hkNkOdGzQVCWN7_7f0oryz3O6d_QmUgEAQnyvb-9VOvZLWFMplG0X5jMmxuAE0PNGvKdI8aXNTSj3x-ayxpEGAii82H9EI4DD1A/s400/heart_beat_load_data.jpg" width="400" /></a></div>
<br />
<br />
Dataların dağılımlarına bakıyoruz. Hangi sınıfdan ne kadar örnek var bunu görmek önemli.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk_-wMYX0J8RVt0fA8wStEPBZYYAEwOHxfl0m1n8wwjPOf1LQq5NJlsDvY62N4Zf9lXa7YXvqvT0ZVOZrTd3sJ-Ay7TQq_S7zJD3zYArn3U33KkW2vjnfOdmc9nM2nJrwmt43Ggw/s1600/heat_beat_data_distrb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="420" data-original-width="655" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk_-wMYX0J8RVt0fA8wStEPBZYYAEwOHxfl0m1n8wwjPOf1LQq5NJlsDvY62N4Zf9lXa7YXvqvT0ZVOZrTd3sJ-Ay7TQq_S7zJD3zYArn3U33KkW2vjnfOdmc9nM2nJrwmt43Ggw/s400/heat_beat_data_distrb.jpg" width="400" /></a></div>
<br />
Örnek verelim. Eğitim verimizdeki Normal örneklerin sayısı, eğitim veri sayımızın %82 kusuruna denk geliyor. Yani her örneğe doğru diyen bir sınıflandırma modeli toplamda %82 doğrulukta başarılıymış gibi görünür. Bunun ana sebebi veri kümesindeki dengesiz veri dağılımıdır. Ama gerçek hayatta da çoğunlukla bu tip dengesiz verilerle uğraşmak gerekiyor. Dengesiz veri kümesi problemi çok geniş burda geçiştirmenin anlamı yok. Eğer kısmet olursa bir başka yazıda yazarız inşallah.<br />
<br />
Bu dağılımla tek başına doğruluk - accuracy - değerinin bir şey ifade etmediğini başka ölçüm -metric - kıstaslarına bakmak gerektiğini anlıyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA6I2u1KzqcgiQquJh9TZf2PPEKxc4TKWEKCOon2grwolKVYUjz6WtpVf1y8uWi_RdOyBTEvBVJaPinmuoMbmLVPWo4iUYsJr-1pYq829LLDrkO4CnMaqMBvhfKXSfmMOnaZ9RAQ/s1600/false-positive.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="474" data-original-width="630" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA6I2u1KzqcgiQquJh9TZf2PPEKxc4TKWEKCOon2grwolKVYUjz6WtpVf1y8uWi_RdOyBTEvBVJaPinmuoMbmLVPWo4iUYsJr-1pYq829LLDrkO4CnMaqMBvhfKXSfmMOnaZ9RAQ/s400/false-positive.png" width="400" /></a></div>
<br />
<br />
Çok sınıflı bir tahmin yapmaya çalışıyoruz. Yukardaki resim örneğindeki gibi İki hata durumumuz var;<br />
"Hamile olmayana hamilesin" diyebiliriz.<br />
Yada tersi "hamile olana hamile değilsin" denebilir.<br />
Bunun dışındaki iki doğru seçenek var ;<br />
"hamileye hamile"<br />
"hamile olmayana hamile değilsin"<br />
demek <br />
Bu ana tanımlar sonrası bunlardan hesaplanan recall (duyarlılık) , precision (kesinlik) ve f1 skoru denen ölçütler var. Bunları <i>sklearn</i> ün <i>classification_report</i> ile hesaplattırabiliyoruz. Teferruatlarına bakmak isterseniz internette, Ölçüt çeşitleri ve nasıl hesaplandıklar iyi ve kötü yanları ile ilgili pek çok kaynak bulabilirsiniz. Mesela bakınız; <a href="https://medium.com/@hakkikaansimsek/s%C4%B1n%C4%B1fland%C4%B1rma-modellerinde-ba%C5%9Far%C4%B1-kriterleri-2d86488799c6">"Sınıflandırma Modellerinde Başarı Kriterleri"</a><br />
<br />
<br />
Yazı uzunluğu okunabilirlik limitini aşmak üzere,<br />
Veri kümesi üzerinde çeşitli Yapay Öğrenme metodlarının denenmesini bir dahaki yazımıza bırakıyoruz. Buraya kadar sabırla
okuğunuz için teşekkürler. <br />
Her türlü görüş ve önerilerinizi bekleriz.<br />
<blockquote class="tr_bq">
</blockquote>
birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-41890511556930159992018-06-30T10:20:00.001+03:002018-06-30T10:21:47.440+03:00EKG Kalp Atışı Sınıflandırması 1<h3>
Giriş :</h3>
<br />
<h3>
</h3>
Malumunuz Kalp en hayati organlarımızdan biri. Ölüm sebeplerinin başlıcalarından biride kalp krizi. EKG de kalbin gidişatını doktorlara gösteren temel bir test. Hatta kardiyolojiye gidip selam verseniz. EKG çektir derler. Konuyu dağıtmadan, teferruatlı bilgi için konunun uzmanlarına ulaşın. deyip geçelim.<br />
<br />
Bizim konuyla ilgimiz, EKG verileri ile sınıflandırma çalışması yapılması konusunda. Çok popüler bir test ve önemli olması sebebiyle, internette pek çok veriye ulaşmanız mümkün. Biz burdaki çalışmamızda, Kaggle da <span class="profile__head-display-name"><i><b><a href="https://www.kaggle.com/shayanfazeli">Shayan Fazeli</a></b> </i>tarafından </span>yayınlanmış olan <i><b><a href="https://www.kaggle.com/shayanfazeli/heartbeat/">"HeartBeat"</a></b> </i>veri kümesini kullanacağız.<br />
<br />
Bu veri kümesi;<br />
"ECG Heartbeat Classification: A Deep Transferable Representation" <br />
Mohammad Kachuee, Shayan Fazeli, Majid Sarrafzadeh<br />
University of California, Los Angeles (UCLA)<br />
Los Angeles, USA<br />
<a href="https://arxiv.org/abs/1805.00794" rel="nofollow"><i>arXiv preprint arXiv:1805.00794 (2018)</i></a><br />
<br />
çalışmada kullanılmıştır.<br />
Normalde Bir EKG test sonucu<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx3KlhVWxxIEY_bt7sYFschdaN7xrudWWy3qkBEZ2WfMoyJ56STwqg29atxi2awdq23K5AKZTHwZ3Tk2wZfIE9kJih06jOPmR3tk4htFwvR8j8Tj1_zaQMKdM50wR3-hpQNi44Tg/s1600/EKG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="657" data-original-width="1131" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx3KlhVWxxIEY_bt7sYFschdaN7xrudWWy3qkBEZ2WfMoyJ56STwqg29atxi2awdq23K5AKZTHwZ3Tk2wZfIE9kJih06jOPmR3tk4htFwvR8j8Tj1_zaQMKdM50wR3-hpQNi44Tg/s400/EKG.jpg" width="400" /></a></div>
şeklinde görnür. Bu makalede Bu tip EKG ölçümü alınıp, Temizlenip, kalp atımlarına ayrılıp standartlaştırılmıştır.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdoJo05U3O8kCU8xPewpVwS1-RajITBNQs6rqh-juWHuqkMj2KFNmoC35v9iylTzvoZJdbAmKJkEYcPtLgCm_DV_A_hvedsqwMSnbmbmKbEW3m_gn_Q_Xd05GlHgZ5fpYtvouL-w/s1600/heart_beat_signal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="651" data-original-width="1123" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdoJo05U3O8kCU8xPewpVwS1-RajITBNQs6rqh-juWHuqkMj2KFNmoC35v9iylTzvoZJdbAmKJkEYcPtLgCm_DV_A_hvedsqwMSnbmbmKbEW3m_gn_Q_Xd05GlHgZ5fpYtvouL-w/s400/heart_beat_signal.jpg" width="400" /></a></div>
<br />
Bölünmüş ve normalize edilmiş kalp atım siyaline gerekiyorsa sonuna sıfırlar doldurularak - padding- stanart bir uzuluğa - 187 - getirilmiştir. <br />
Bu kalp atım siyalinin etiket değeri olarak 5 seçenek var<br />
['N', 'S', 'V', 'F', 'Q']<br />
<br />
yukarda bahsettiğimiz makalenin tablo 1 de bu sınıfların açıklaması olarak<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHq9XjOG2Yta1vibw8TVzvUQt0zcHNDKHGeaRnAx98Xm4UfAKGlpWHoxNs9yC5aNUmtYM3lBGqMDq55vWc1MRTIWRd-3io8Oulw0x7unE-OkJ2lP_ALevL4qAC49vBaacWtPwdxw/s1600/heart_beat_labels.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="625" data-original-width="615" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHq9XjOG2Yta1vibw8TVzvUQt0zcHNDKHGeaRnAx98Xm4UfAKGlpWHoxNs9yC5aNUmtYM3lBGqMDq55vWc1MRTIWRd-3io8Oulw0x7unE-OkJ2lP_ALevL4qAC49vBaacWtPwdxw/s400/heart_beat_labels.jpg" width="392" /></a></div>
<br />
<br />
yazılmıştır. Aslında bu verileri <a href="https://www.physionet.org/physiobank/database/mitdb/" rel="nofollow">the MIT-BIH Arrhythmia Dataset </a>alıp dönüştürmüşler. Biz hazır temizlenmiş ve düzenlenmiş olduğu için tercih ettik. Sağlık alanında pek çok değişik veriye bu siteden ulaşabilirsiniz.<br />
<blockquote class="tr_bq">
<i><a href="https://physionet.org/physiobank/database/">https://physionet.org/physiobank/database/</a></i></blockquote>
Eğer sağlık alanındaki çalışmalara ilgi duyuyorsanız. Uygulama yapmak istiyor ve veri kümesi arıyorsanız. Yukardaki siteyi inceleminizi tavsiye ederiz.<br />
<br />
Verimize geri dönersek, 187 lik bir vectör şeklinde kalp atım sinyalimiz var. Bu sinyalin 5 sınıf içinden hangisine ait olduğunu tahmin edecek bir sistem geliştirmemiz gerekiyor.<br />
<br />
Kaggle dan veri dosyasını indirip bir dizine açıyoruz. Veri kümesinde iki farklı veri kümesi var. Biz <b>mitbih</b> ile başlayan 5 sınıflı "MIT-BIH Arrhythmia" isimli veri kümesini kullanacağız.<br />
<blockquote class="tr_bq">
<i>"mitbih_train.csv" : 188 sutunlu son sutun etiket değeri ve 87554 örnek içeriyor</i><br />
<i>"mitbih_test.csv" : 188 sutunlu son sutun etiket değeri ve 21892 örnek içeriyor</i></blockquote>
Elimizdeki veri kümesi üzerinde değişik metodlarla çalışma yapmak istiyoruz. Bu çalışmaları takip eden yazılarımıza bırakıyoruz.<br />
Şimdilik anlatacaklarımız bu kadar. Bayda uzamış, buraya kadar sabırla
okuğunuz için teşekkürler . Her türlü görüş ve önerilerinizi bekleriz.
birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-44618928687392393352018-06-18T13:04:00.001+03:002018-06-18T13:12:00.882+03:00Keloğlanın Optimizasyonla imtihanı<h3>
Zeka Hakkında Kıssalı Yazılar - 6 <span style="color: red; font-weight: bold;">*</span></h3>
<span style="color: red; font-weight: bold;"> </span> <br />
Evvel zaman içinde kalbur saman içinde. Develer tellal iken, pireler berber iken, ben annemim beşiğini tıngır mıngır sallar iken, bir varmış bir yokmuş.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8EksHhcD1SYFp-KWTdFm1h8Cbj5mbf6968rkToiqRZ_m8lrED8Y0XyNW7mOHeaYm5SoPfOLoDrZRX2xERFUvXzizwcu3sjMV7Bm3BhMoNVQA43_CfHU3DmtitHCBkwYvtBpXzQw/s1600/kelo%25C4%259Flan_ayk%25C4%25B1z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="484" data-original-width="664" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8EksHhcD1SYFp-KWTdFm1h8Cbj5mbf6968rkToiqRZ_m8lrED8Y0XyNW7mOHeaYm5SoPfOLoDrZRX2xERFUvXzizwcu3sjMV7Bm3BhMoNVQA43_CfHU3DmtitHCBkwYvtBpXzQw/s400/kelo%25C4%259Flan_ayk%25C4%25B1z.jpg" width="400" /></a></div>
<br />
<br />
<br />
<br />
Diyarın birinde bir garip keloğlan varmış. Sevdiceği Aykız ile mutlu mesut yaşarmış. Mutlu mesut yeknesaklığından sıkılan YZ Cadısı, Aykızın zihnini çalıvermiş. Aykız keloğlanı, tanımaz, bilmez olmuş. Aykızın zihninide "<i>Optimizasyon</i>" namlı diyarda bir kuyuya saklamış. YZ cadısı bütün bütün kötüde değilmiş, sadece macera seyretmek istermiş. Bu yüzden Keloğlana Aykızın zihnini bulabilmesi için çeşitli alet edavat bırakmış.<br />
<br />
Keloğlan önce afallamış, bu alet edavatlar nedir, ne işe yarar. Optimizasyon diyarı nerdedir, nasıl gidilir, üzerinde nasıl gezilir ? Kel kafacığında deli sorular dolanırken, aklına <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-3.html">"Tarihteki ilk YZ projesini"</a> yürüten Nasrettin Hoca gelir. YZ cadısının bıraktıklarını toparlayıp, çalar hocanın kapısını.<br />
<br />
Hoca keloğlanın anllattıklarını dinler. Bırakılan alet edavatları inceler. Sonra başlar anlatmaya;<br />
<br />
Evlat optimizasyon denen diyar, büyülü bir diyardır. YZ Cadısı Aykızın zihnini billur bir şişede su olarak o diyarda bir kuyuda saklamış. O diyara dünyevi araçlarla uğraşamazsın şu bırakılan sihirli halılardan birini seçmen lazım. Halı seni her halükarda o diyara götürüp bırakır. Bırakacağı yeri sen seçemezsin ama Halının köşelerinde ecnebi lisanı ile yazılmış ;"<i>glorot , lecun , xavier , gaussian</i>" diye geçen tılsımlar var. Bu tılsımlardan bazısının bazısından daha uygun noktaya inmeni sağlayacağına inanılıyor. Denemeden bilinmez.<br />
<br />
İndikten sonra karayolu ile ilerlemen lazım. Karayolunda seyahat etmek için şu çizmeleri kullanacaksın. Bu çizmeyi giyerek 1 arşından 100 bin arşınlık mesafeye kadar değişen " <i>learning rate</i> " uzaklıklara zıplaya bilirsin. Uzaklık ayarını çizmenin bağcığıyla ayarlıyabiliyorsun.<br />
<br />
Son olarak bu çok gözlü heybe var. İçlerinde milyonlarca minyatür kristal kürecikler var. Optimizasyon diyarında sayısız kuyu ve kuyularda sayısız billur şişeler varmış. Doğru kuyu ve elbette doğru billur şişeyi bulabilmek için bu kristal kürecikleri kullanacaksın. Bu kristal kürecikler sana gideceğin yön ve uzaklığa dair bilgicik verir. Her kürecik sana kısmen doğru kısmende yalan söyler. Bu yüzden tek birinin göstergesine güvenemezsin. Sen bir seferde aklında tutabileceğin kadar küreyi çıkar sonuçları birleştir ve ortalamasını al ve o yönde hareket et. Her hareketin öncesinde bu işlemi farklı küreciklerle yap. Küreckler bazen yalan söylüyor dedikya. Seni yanlış bir kuyuyada götürebilirler. Bu yüzden En başta küreckler den bir kısmını - <i>Test Verisi</i> - ayır. ve Hareket için asla kullanma. Kalanların hepsini gurup gurup kullanıp hepsi bitince. Bu ayırdığın küreckiklerle ulaştığın noktanın sonucunu test edebilirsin.<br />
<br />
Hocadan gereken taktikleri alan keloğlan, halıya binip çıkmış yola. İlk indiği noktada hedefine hızlıca varacağını umarak çizmesinin hızını en yükseğe çıkarmış. Ama görmüşki bir o yana bir bu yana tutarsızca zıplayıp durmuş. Keza zıplamalar sırasında pek çok vadinin üzerinden geçdiği görmüş. O zaman farkına varmış ki çok yavaş giderse hedefine ulaşması çoook uzun sürecek, çok hızlı giderse kontrol edemediği pek çok alanı geçecek. Böylece ilk optimzasyonunu çizme hızını düzgün seçmek olduğunu anlamış. Hızını orta dereceye alıp birazda böyle devam etmeye başlamış. Yaklaştığımı anladıkça biraz dahada yavaşlarım demiş.<br />
Her seferinde seçtiği küreciklerden çıkan sonuca göre yön belirleyip giderken, farketmiş ki kısmi de olsa her seferde yalpalar yapmaktaymış. Bu yaplalamaları azaltıp daha hızlı yol alabilmek için önceki seferlerde küreciklerin söylediklerinide kısmen hesaba katayım demiş - <i>momentum</i> - Böylece daha düzgün bir yol almay başlamış.<br />
Derken güzel bir konuma ulaşmış. Ulaşmış ama ulaştığı yerde hareket için kullanmadığı kürecikler - <i>Test Verisi </i> - doğru yerde olmadığını gösteriyormuş. Hareket için kullandığı kürecikler hedefe ulaştık diyorlarkerken, diğerleri ulaştığımız yerin yanlış olduğunu söylüyormuş - <i>Local Minimum</i> -<br />
Ne yapacağını şaşırmış kalmış. Düşünürken, farkına varmış ki kürecikler yalan üzerinde ittifaka varıyor. Sonra, Küreciklerin yeterli olacağını düşünüp sadece birazını aldığını, çoğunu boşuna yük olur deyip bıraktığını hatırlamış. Geri dönüp bütün kürecikleri yüklenmiş ve baştan başlamış. <br />
Küre sayısının artması sebebiyle, ilerlemesi çok daha uzun sürmüş ama Küreciklerde yalan üzerinde ittifak edememişler. Peyder pey gerçek hedefe doğru ilerleyebildiğini hareket için kullanmadığı küreciklerden görmüş. Uzun bir yolculuktan sonra hedefine varmış Billur şişeyi bulup Aykıza götürmüş. Billur şişedeki suyu içen Aykız eski haline dönmüş...<br />
<br />
Gökten üç elma düşmüş biri Hinton'un biri Lecun'un biride Ng nin başına ...<br />
<br />
* Zeka Hakkında Kıssalı Yazılar Serisi - <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-1.html">1</a> <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-2.html">2</a> <a href="http://derindelimavi.blogspot.com/2005/06/zeka-hakknda-kssal-yazlar-3.html">3</a> <a href="http://derindelimavi.blogspot.com/2007/06/bakan-bilgisayar-gren-bilgisayar.html">4</a> <a href="http://derindelimavi.blogspot.com/2009/09/nasrettin-hocadan-bulank-mantk-dersi.html">5</a><br />
<br />birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-72668582849726862982018-05-01T23:06:00.000+03:002018-05-01T23:06:32.723+03:00b-sequence - 1<pre> <img height="177" src="data:image/png;base64,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xeCztUcu4c0tsWs/qYiIiIiINIlCaRtU6mh+p7R3fARBVoOnvt/OsowD/ObcfiTHHHtPaMeIECb07sR/0rKPON80t9hOgs4oFRERERGRJlAobYNK7U4imzF9FyDEZqVvQiS7CsoZ06MjV4zq0uDnnD8smX3FdlbuLjzk/TnFleqUioiIiIhIkyiUtjFOtwe709Ps5bsAw1La0y7IyuMXDcJiafjM07MHxBMWbD1k4FG5w0WJ3UW8QqmIiIiIiDSBQmkbU+5wAfgklN4/pS/f3j2Brh3Dvbo+LNjGOQPi+XJ9Dg6XG6jeTwo6o1RERERERJpGobSNKbVXh9Lm7ikFiAoNokvHsEZ9zsxhyZTYXSzclg/A/tozSqN0RqmIiIiIiDSeQmkb48tQ2hSn9epEx/BgPltbvYQ3p1idUhERERERaTqF0jamrG75bvMGHTWVzWphxpAk5m/No8TurFu+m6BQKiIiIiIiTaBQ2saU2p1A4DqlADOHJlHl8vDNhlxyiiuJCQsiNMgasHpERERERKTtClyykSap65QGMJQOTYmha8cwPkvLJizYqjNKRURERESkydQpbWPq9pT6YPpuUxmGwcyhySzfeYCN2SXaTyoiIiIiIk2mUNrG/G/QUWD2lNY6f2gSpll9JExCtCbvioiIiIhI0yiUtjFlDidWi0FoUGC/dT1iIxjSORrQ5F0REREREWk6hdI2pszuIiLEhmEYgS6FmUOTAbSnVEREREREmkyDjtqYUrsroJN367tgWDI/7ihgTM+OgS5FRERERETaqNaRbsRrpY7qTmlr0D48mFevGxXoMkREREREpA3T8t02pqwVdUpFRERERESaS6G0jSl1OAM+eVdERERERMRXFErbmNpBRyIiIiIiIicChdI2ptTuIkLLd0VERERE5AShUNrGlDq0p1RERERERE4cCqVtiMPlpsrlIVLLd0VERERE5AShUNqGlNldANpTKiIiIiIiJwyF0jakzFEdSjV9V0REREREThQKpW1IaW2nVHtKRURERETkBKFQ2obUhlINOhIRERERkROFQmkbUrd8N0TLd0VERERE5MSgUNqGlDmcgJbvioiIiIjIiUOhtA3R8l0RERERETnRKJS2IaU6EkZERERERE4wCqVtSJnDRZDVIMSmb5uIiIiIiJwYlG7akFK7k8jQIAzDCHQpIiIiIiIiPqFQ2oaU2V1auisiIiIiIicUhdI2pMyhUCoiIiIiIicWhdI2pMTu0uRdERERERE5oSiUtiFlCqUiIiIiInKCUShtQ7R8V0RERERETjQKpW1I7fRdERERERGRE4VCaRthmmZ1p1TLd0VERERE5ASiUNpGOFwenG5Ty3dFREREROSE4lUoNQxjimEY2wzDyDAM46GjfDzaMIz/GoaxzjCMTYZhzPJ9qSe3UrsLgCh1SkVERERE5ATSYCg1DMMKzAamAgOAKwzDGHDYZbcBm03THAKcATxpGEawj2s9qZU5qkOplu+KiIiIiMiJxJtO6WggwzTNnaZpVgHvAzMPu8YEIg3DMIAIoBBw+bTSk1xZTac0IlwQ9z8AABnqSURBVESDjkRERERE5MThTShNBjLrvZ1V8776XgD6A/uADcBdpml6fFKhANWTdwGdUyoiIiIiIicUXw06mgykAUnAUOAFwzCiDr/IMIybDMNYZRjGqvz8fB996ZNDae3yXQ06EhERERGRE4g3oTQbSKn3duea99U3C/jUrJYB7AL6HX5Dpmm+bJrmSNM0R8bGxja15pNS7fJddUpFRERERORE4k0o/RnobRhG95rhRZcD/znsmr3AJADDMOKBvsBOXxZ6svvf8l3tKRURERERkRNHg2030zRdhmHcDnwLWIHXTdPcZBjGzTUfnwM8CrxpGMYGwAAeNE2zwI91n3Rqp++Gh1gDXImIiIiIiIjveLUW1DTNr4CvDnvfnHqv7wPO8W1pUl+pw0WwzUKITaFUREREREROHL4adCR+Vmp3EaX9pCIiIiIicoJRKG0jyuwuTd4VEREREZETjkJpG1HmcBGhTqmIiIiIiJxgFErbiFK7k8gQTd4VEREREZETi0JpG1FqV6dUREREREROPAqlbUSZw0Wk9pSKiIiIiMgJRqG0jSi1u4hUp1RERERERE4wCqX/397dx1h+nfUB/z47++6dnY3tfQE7WzvgGAWkBLokvLVNS9MaCk0roWJaCm1FLWijQqGtQivRF6lSpVR9URUapWl4EYioBUQsGkgqaAEhSp2EiDoJC64hid3srJ1w52Vn7sydndM/5s56PLszc2eZO3fm+vORVp77u+fOHK2PvPv185xzDoHWmoOOAACAsSSUHgLd3mpurraccdARAAAwZoTSQ2Cu20sS7bsAAMDYEUoPgbmllSRC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" width="400" /></pre>
<pre> </pre>
<pre>Nedir bu sayılardaki düzen ?</pre>
<pre>
</pre>
<pre>1 2 3 5 7 10 11 12 14 16 19 20 21 23 25 28 29 30 32 34 </pre>
<pre>37 38 39 41 43 46 47 48 50 52 55 56 57 59 61 64 65 66 </pre>
<pre>68 70 73 74 75 77 79 82 83 84 86 88 91 92 93 95 97 100 </pre>
<pre>101 102 104 106 109 110 111 113 115 118 119 120 122 124 </pre>
<pre>127 128 129 131 133 136 137 138 140 142 145 146 147 149 </pre>
<pre>151 154 155 156 158 160 163 164 165 167 169 172 173 174 </pre>
<pre>176 178 181 182 183 185 187 190 191 192 194 196 199 200 </pre>
<pre>201 203 205 208 209 210 212 214 217 218 219 221 223 226 </pre>
<pre>227 228 230 232 235 236 237 239 241 244 245 246 248 250 </pre>
<pre>253 254 255 257 259 262 263 264 266 268 271 272 273 275 </pre>
<pre>277 280 281 282 284 286 289 290 291 293 295 298 299 300 </pre>
<pre>302 304 307 308 309 311 313 316 317 318 320 322 325 326 </pre>
<pre>327 329 331 334 335 336 338 340 343 344 345 347 349 352 </pre>
<pre>353 354 356 358 361 362 363 365 367 370 371 372 374 376 </pre>
<pre>379 380 381 383 385 388 389 390 392 394 397 398 399 401 </pre>
<pre>403 406 407 408 410 412 415 416 417 419 421 424 425 426 </pre>
<pre>428 430 433 434 435 437 439 442 443 444 446 448 451 452 </pre>
<pre>453 455 457 460 461 462 464 466 469 470 471 473 475 478 </pre>
<pre>479 480 482 484 487 488 489 491 493 496 497 498 500 502 </pre>
<pre>505 506 507 509 511 514 515 516 518 520 523 524 525 527 </pre>
<pre>529 532 533 534 536 538 541 542 543 545 547 550 551 552 </pre>
<pre>554 556 559 560 561 563 565 568 569 570 572 574 577 578 </pre>
<pre>579 581 583 586 587 588 590 592 595 596 597 599 601 604 </pre>
<pre>605 606 608 610 613 614 615 617 619 622 623 624 626 628 </pre>
<pre>631 632 633 635 637 640 641 642 644 646 649 650 651 653 </pre>
<pre>655 658 659 660 662 664 667 668 669 671 673 676 677 678 </pre>
<pre>680 682 685 686 687 689 691 694 695 696 698 700 703 704 </pre>
<pre>705 707 709 712 713 714 716 718 721 722 723 725 727 730 </pre>
<pre>731 732 734 736 739 740 741 743 745 748 749 750 752 754 </pre>
<pre>757 758 759 761 763 766 767 768 770 772 775 776 777 779 </pre>
<pre>781 784 785 786 788 790 793 794 795 797 799 802 803 804 </pre>
<pre>806 808 811 812 813 815 817 820 821 822 824 826 829 830 </pre>
<pre>831 833 835 838 839 840 842 844 847 848 849 851 853 856 </pre>
<pre>857 858 860 862 865 866 867 869 871 874 875 876 878 880 </pre>
<pre>883 884 885 887 889 892 893 894 896 898 901 902 903 905 </pre>
<pre>907 910 911 912 914 916 919 920 921 923 925 928 929 930 </pre>
<pre>932 934 937 938 939 941 943 946 947 948 950 952 955 956 </pre>
<pre>957 959 961 964 965 966 968 970 973 974 975 977 979 982 </pre>
<pre>983 984 986 988 991 992 993 995 997 1000 1001 1002 1004 </pre>
<pre>1006 1009 1010 1011 1013 1015 1018 1019 1020 1022 1024 </pre>
<pre>1027 1028 1029 1031 1033 1036 1037 1038 1040 1042 1045 </pre>
<pre>1046 1047 1049 1051 1054 1055 1056 1058 1060 1063 1064 </pre>
<pre>1065 1067 1069 1072 1073 1074 1076 1078 1081 1082 1083 </pre>
<pre>1085 1087 1090 1091 1092 1094 1096 1099 1100 1101 1103 </pre>
<pre>1105 1108 1109 1110 1112 1114 1117 1118 1119 1121 1123 </pre>
<pre>1126 1127 1128 1130 1132 1135 1136 1137 1139 1141 1144 </pre>
<pre>1145 1146 1148 1150 1153 1154 1155 1157 1159 1162 1163 </pre>
<pre>1164 1166 1168 1171 1172 1173 1175 1177 1180 1181 1182 </pre>
<pre>1184 1186 1189 1190 1191 1193 1195 1198 1199 1200 1202 </pre>
<pre>1204 1207 1208 1209 1211 1213 1216 1217 1218 1220 1222 </pre>
<pre>1225 1226 1227 1229 1231 1234 1235 1236 1238 1240 1243 </pre>
<pre>1244 1245 1247 1249 1252 1253 1254 1256 1258 1261 1262 </pre>
<pre>1263 1265 1267 1270 1271 1272 1274 1276 1279 1280 1281 </pre>
<pre>1283 1285 1288 1289 1290 1292 1294 1297 1298 1299 1301 </pre>
<pre>1303 1306 1307 1308 1310 1312 1315 1316 1317 1319 1321 </pre>
<pre>1324 1325 1326 1328 1330 1333 1334 1335 1337 1339 1342 </pre>
<pre>1343 1344 1346 1348 1351 1352 1353 1355 1357 1360 1361 </pre>
<pre>1362 1364 1366 1369 1370 1371 1373 1375 1378 1379 1380 </pre>
<pre>1382 1384 1387 1388 1389 1391 1393 1396 1397 1398 1400 </pre>
<pre>1402 1405 1406 1407 1409 1411 1414 1415 1416 1418 1420 </pre>
<pre>1423 1424 1425 1427 1429 1432 1433 1434 1436 1438 1441 </pre>
<pre>1442 1443 1445 1447 1450 1451 1452 1454 1456 1459 1460 </pre>
<pre>1461 1463 1465 1468 1469 1470 1472 1474 1477 1478 1479 </pre>
<pre>1481 1483 1486 1487 1488 1490 1492 1495 1496 1497 1499 </pre>
<pre>1501 1504 1505 1506 1508 1510 1513 1514 1515 1517 1519 </pre>
<pre>1522 1523 1524 1526 1528 1531 1532 1533 1535 1537 1540 </pre>
<pre>1541 1542 1544 1546 1549 1550 1551 1553 1555 1558 1559 </pre>
<pre>1560 1562 1564 1567 1568 1569 1571 1573 1576 1577 1578 </pre>
<pre>1580 1582 1585 1586 1587 1589 1591 1594 1595 1596 1598 </pre>
<pre>1600 1603 1604 1605 1607 1609 1612 1613 1614 1616 1618 </pre>
<pre>1621 1622 1623 1625 1627 1630 1631 1632 1634 1636 1639 </pre>
<pre>1640 1641 1643 1645 1648 1649 1650 1652 1654 1657 1658 </pre>
<pre>1659 1661 1663 1666 1667 1668 1670 1672 1675 1676 1677 </pre>
<pre>1679 1681 1684 1685 1686 1688 1690 1693 1694 1695 1697 </pre>
<pre>1699 1702 1703 1704 1706 1708 1711 1712 1713 1715 1717 </pre>
<pre>1720 1721 1722 1724 1726 1729 1730 1731 1733 1735 1738 </pre>
<pre>1739 1740 1742 1744 1747 1748 1749 1751 1753 1756 1757 </pre>
<pre>1758 1760 1762 1765 1766 1767 1769 1771 1774 1775 1776 </pre>
<pre>1778 1780 1783 1784 1785 1787 1789 1792 1793 1794 1796 </pre>
<pre>1798 1801 1802 1803 1805 1807 1810 1811 1812 1814 1816 </pre>
<pre>1819 1820 1821 1823 1825 1828 1829 1830 1832 1834 1837 </pre>
<pre>1838 1839 1841 1843 1846 1847 1848 1850 1852 1855 1856 </pre>
<pre>1857 1859 1861 1864 1865 1866 1868 1870 1873 1874 1875 </pre>
<pre>1877 1879 1882 1883 1884 1886 1888 1891 1892 1893 1895 </pre>
<pre>1897 1900 1901 1902 1904 1906 1909 1910 1911 1913 1915 </pre>
<pre>1918 1919 1920 1922 1924 1927 1928 1929 1931 1933 1936 </pre>
<pre>1937 1938 1940 1942 1945 1946 1947 1949 1951 1954 1955 </pre>
<pre>1956 1958 1960 1963 1964 1965 1967 1969 1972 1973 1974 </pre>
<pre>1976 1978 1981 1982 1983 1985 1987 1990 1991 1992 1994 </pre>
<pre>1996 1999 2000 2001 2003 2005 2008 2009 2010 2012 2014 </pre>
<pre>2017 2018 2019 2021 2023 2026 2027 2028 2030 2032 2035 </pre>
<pre>2036 2037 2039 2041 2044 2045 2046 2048 2050 2053 2054</pre>
<pre>
</pre>
birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1tag:blogger.com,1999:blog-14015976.post-79698230506025955322018-04-02T14:51:00.004+03:002018-04-02T14:51:55.168+03:00Kelime Kök Ayırıcı<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ib0ix4_VDOEkdCKps1_XuBmiqh_aC09Pf3PJFPwSEMLbtfcLH2YyTqilW_ikK4Kr6cm8PO3qpVkerHmJUqLRsUcn0eBV8gmbFoHov6mM_iSX2XbBx3C3AoQ6eJiMUw9dvb2leA/s1600/kok.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="776" data-original-width="1155" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ib0ix4_VDOEkdCKps1_XuBmiqh_aC09Pf3PJFPwSEMLbtfcLH2YyTqilW_ikK4Kr6cm8PO3qpVkerHmJUqLRsUcn0eBV8gmbFoHov6mM_iSX2XbBx3C3AoQ6eJiMUw9dvb2leA/s400/kok.png" width="400" /></a></div>
<br />
<br />
Artık Yapay Sinir Ağları Doğal Dil İşleme ( NLP ) alanında da kendini gösteriyor. Yoğun olarak derin öğrenme algoritmalarının kullanıldığı yeni çözümler boy gösteriyor.<br />
Yabancı kaynaklarda Doğal Dil İşleme ile ilgilendiğinizde elinizdeki metin verisinin temel temizleme yaklaşımı şu şekildedir.<br />
<ol>
<li><i>Kelimleri ayır</i></li>
<li><i>Kelimelrin kökünü bul - stem -</i></li>
<li><i>Anlama etki etmeyen genel kelimeleri at - stop words -</i></li>
</ol>
Bu şekilde bir temizleme ile yapılmak istenen şey Anlamı bozmadan Kelime sayısını azaltmaktır. Böyle temizleme faliyetine girişmeksizin yapılan bir modellemede kelime sayısının astronomik boyutlara fırlamasına ve modelin çok kompleksleşip, öğrenememesine sebep olabiliyor.<br />
<br />
İngilizce gibi bir dilde kök bulmanın genellikle pek bir ters etkisi olmuyor Fakat, Türkçede yapısı gereği sondan eklerle bazen fazlasıyla anlam değişikliği oluyor. Bu yüzden yapılacak çalışmada buna dikkat etmek gerekiyor.<br />
<br />
bir örnek verelim<br />
<br />
<blockquote class="tr_bq">
<i>gözüm ağrıyordu. göz doktoruna gitttim. gözlük numaram değişmiş. </i><br />
<i>gözlüğümün çerçeveside eskimişti. gözlükçüye gidince, yeni bir gözlük çerçevesi de aldım.</i></blockquote>
<br />
göz, gözüm ,gözlük,, gözlüğümün gözlükçüye, gözlük ... diye geçen kelimelrin hepsinin köküne göz demek anlamı bozar.<br />
<blockquote class="tr_bq">
gözüm => göz<br />
gözlüğümün => gözlük <br />
gözlükçüye => gözlükçü</blockquote>
daha doğru bir yaklaşım gibi. Elbette bir anlam kaybı var ama nispeten daha doğru gibi geliyor bana. Elbette farklı anlamlı , yazılışlı aynı kelimeler için bir çözüm değil bu.<br />
<br />
Ortada çözümü olmayan genel bir optimizasyon problemi var. Eğer sadece kökü kullansanız, bazı anlamları kaybetme ,htimaliniz var. Tamamını kullandığınızda kelime sayınız astronomik sayılar çıkıyor.<br />
<br />
Kelime vektörleri bu işi çözmezmi ? , Kelime vectörleri dediğimiz sistemde Kelimeler sabit uzunlukta vektörler olarak ifade ediliyor. Temelindeki fikir şudur. Aynı anlamı ifade eden kelimeler aynı bağlamda - context - de kullanılır. Büyük derlemde - corpus - kelimeler birlikte kullanıldıkları kelimelere göre optimize edilerek her birisi için sabit bir vektöre ulaşılıyor. Yakın anlamlı kelimeler kelime vektör uzayında bir birine yakın konumlarda oluyorlar. Burda şöyle bir problem var her kelimenin her türlü ekiyle birlikte yeterli miktarda kullanım metnin olması pek mümkün değil.<br />
<br />
Çok sıkıcı bir girizgah oldu kusuruma bakmayınız. Ama sebebi var.<br />
Bizim bir çalışmamız oldu. Kök bulma işlemini seq2seq bir modele öğretmeye çalıştık. Sağolsun <a href="https://www.linkedin.com/in/ahmet-aksoy-0512b721/">Ahmet Aksoy</a> beyin yayınladığı bir <a href="https://github.com/ahmetax/kalbur/blob/master/veri/KOKBULTEST.txt">veriyi</a> kullanarak eğittik. Bu haliyle bırakmadık <a href="https://www.linkedin.com/in/yavuzkomecoglu/">Yavuz Kömeçoğlu</a> kardeş bu model için etkileşimli bir web sayfası hazırladı.<br />
<br />
<blockquote class="tr_bq">
<a href="https://nlp-kokbulma.herokuapp.com/">nlp-kokbulma.herokuapp.com/</a></blockquote>
<br />
Şimdiki haliyle kullanıcının vereceği kelime için model çalıştırıp bir cevap dönüyor. Kullanıcı Cevabın doğru yada yanlış olup olmadığını ve doğrusunu bildirebiliyor.<br />
<br />
<span style="color: red;"><b>*</b></span> Bu projenin özelliği ne peki. Yukardaki girizgahdan anlayabileceğiniz gibi çok zor bir problemi çözdük gibi bir iddiamız yok. Bu projenin ana özelliği klasik yaklaşımın dışında bir çözüm getirmesi<br />
Klasik yaklaşımda şöyle olursa nasıl yaparım böyle olursa nasıl yaparım diye kurlallar silsilesi kurgulamanız lazım. Hatta karşımıza kurguladığımız hiç bir kurala uymayan bir kelime çıkarsa.<br />
<blockquote class="tr_bq">
if kelime <span style="color: red;">BU</span> ise kök <span style="color: red;">ŞU</span> dur. </blockquote>
demek zorunda kalıyorsunuz.<br />
<br />
Modern yaklaşımlarda Olabildiğince çok veri bularak , Bir birini takip eden bir yapının diziliminden örüntüler çıkarıp istenen sonuca ulaşılmaya çalışılır. Biz bu projede bunu yapmaya çalıştık. Verimizi sağlıklı bir şekilde büyütebilirsek, modelin başarısı artacağını umuyoruz.<br />
<br />
<span style="color: red;"><b>*</b></span> Bir başka büyük özelliği etkileşimli bir şekilde sunuluyor olması. Günümüzde Türkçede Doğal Dil İşleme üzerine çalışma yapacak kişin, ilk toslayacağı duvar, elde hazırda verinin olmayışıdır. Sağ olsunlar Yıldız Üniversitesinden Kemik gurubunun yıllar önce yaptıkları dışında açık şekilde ulaşılabilir bir veri malesef yok. Bu çalışmayla gönüllülerin girdiği yeni kelimeler ve düzeltmelerle çok daha geniş bir verisetine ulaşabilme imkanını sunuyor.<br />
<br />
Bu proje bir rol model olarak düşünülüp çok daha kompleks DDİ ( NLP ) problemleri için çözüm ve veriseti toplama sistemleri düşünülebilir.<br />
<br />
Elbette bunu özel sektörde çalışan ben ve Master tezini vermeye uğraşan Yavuz tek başımıza yapamayız. Kullananlar olması lazım. Kullanıcaların yazdıklarının toparlanıp ayıklanması lazım. Sistemin yeniden eğitilmesi lazım. Epey bir emek gerekiyor. Hatta bence bu bu tip bir proje ve elbette daha gelişmişleri, Akademik olarak sahiplenilmesi gereken projelerden. Biz projeyi çalıştırdık. Kodumuzuda <b><a href="http://deeplearningturkiye.com/">deeplearningturkiye</a></b> gurubunun github hesabında yayınladık<br />
<br />
<blockquote class="tr_bq">
<i><a href="https://github.com/deeplearningturkiye/kelime_kok_ayirici">github.com/deeplearningturkiye/kelime_kok_ayirici</a></i></blockquote>
<br />
<span style="color: red;">Bundan sonra Proje sahiplerini bekliyor.</span><br />
<br />
<h2>
Derin Öğrenme Kısmı:</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLVI93Gmlx6MUs8GbZiZ9GzGeGvIVEqIYYDYU-mjTzkfcS-Qb_jD23iRZGg_TZvbEDNShG8hlZ2LCNEHysQvTQaDuNAJ4BGIETSzLZjpCRhpGvBiz2_H9YBsrMtY7h7S1KZ13xYw/s1600/many2many.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="416" data-original-width="366" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLVI93Gmlx6MUs8GbZiZ9GzGeGvIVEqIYYDYU-mjTzkfcS-Qb_jD23iRZGg_TZvbEDNShG8hlZ2LCNEHysQvTQaDuNAJ4BGIETSzLZjpCRhpGvBiz2_H9YBsrMtY7h7S1KZ13xYw/s400/many2many.jpg" width="351" /></a></div>
<br />
Gelelim işin teknik kısmına Modelimiz Seq2Seq denen yapıda bir ağ. Keras kullanıldı. Kelimeler harf bazlı kodlandı. Harf çeşit sayımız 34. Yani bir harfi 34 uzunluğunda vektör olarak kodluyoruz. Maksimum kelime uzunluğu eldeki veri setine göre 22 olarak belirlendi.<br />
RNN ağ katmanı veriyi zaman bazında istiyor. Bizim durumumuzda kelime uzunluğu 22 olduğundan<br />
22 seferde 34 uzunluklu vektörler. Ağın çıkışıda aynı şekilde kodlanmış olarak sadece Kök kımı üretiliyor.<br />
<br />
Ağın genel yapısına bakalım<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd086t0XJ17HeY_sk2mcILI-TxQzEe87u4dDljb6BHqUCOWtuAf5f4LzToU2_C_ZbRtqL_j4kxAwpy899sndaVAZT2xiXNCpr4yXpw3RTuPO-gtDIwRJtHYrpcKJB42jJm0ANg7w/s1600/model.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="741" data-original-width="547" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd086t0XJ17HeY_sk2mcILI-TxQzEe87u4dDljb6BHqUCOWtuAf5f4LzToU2_C_ZbRtqL_j4kxAwpy899sndaVAZT2xiXNCpr4yXpw3RTuPO-gtDIwRJtHYrpcKJB42jJm0ANg7w/s400/model.png" width="295" /></a></div>
<span id="goog_1323253665"></span><span id="goog_1323253666"></span><br />
çok sade bir çoklu girişden çoklu çıkış -seq2seq- üreten RNN li bir model . Fazladan diyebileceğimiz sadece başta Dikkat - Attention - kısmı var. Giriş deki verilerin önem derecesini öğrenmesi için bir YSA katmanı yerleştiriyoruz ve katmanın çıkışını veri için bir önek katsayısı olarak kullanıyoruz.<br />
<br />
Modeli sade tuttuk çünkü eğitim eğrisi gayet güzel test verisi başarısıda epey yüksek.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir_nEpF2WIVzqFwUOb9JDqSaJWKWBRF64O3IO6JLG99Phjwjx2VHJ9sEyWUnCVpscfiSkTzInT3eUYv2S3vL-SLWInCEMYfB4vE2pgqzBrxifXfytq3sdphBuH8Y8n76-PjyxtMQ/s1600/acc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="351" data-original-width="745" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir_nEpF2WIVzqFwUOb9JDqSaJWKWBRF64O3IO6JLG99Phjwjx2VHJ9sEyWUnCVpscfiSkTzInT3eUYv2S3vL-SLWInCEMYfB4vE2pgqzBrxifXfytq3sdphBuH8Y8n76-PjyxtMQ/s400/acc.png" width="400" /></a></div>
<br />
Elbette Verilerin çoğalması ile Modelede ilaveler gerekebilir. Kodda kerasın çeşitli callback fonksiyonları kullanıldı. Onlardanda bahsedelim.<br />
<br />
<ul>
<li><b>EarlyStopping </b>: Eğitim esnasında takip ettiğiniz değerde belirleyeceğiniz adım -epoch - boyunca iyileşme yoksa eğitim veridiğiniz adım sayısından önce durduruluyor. Bizim kodumuzda 9 adım boyunca test verisi başarımında bir iyileşme olmuyorsa duryor.</li>
<li><b>ReduceLROnPlateau</b> : Eğitim esnasında takip ettiğiniz değerde belirleyeceğiniz adım -epoch - boyunca iyileşme yoksa Öğrenme hızını sizin belirleyeceğiniz bir katsayıyla çarparak küçültüyor. Bizim kodumuzda 2 adım boyunca test verisi başarımında bir iyileşme olmuyorsa Öğrenme hızı 0.5 çarpılarak yarıya indiriliyor.</li>
<li><b>ModelCheckpoint</b> : Eğitim esnasında her adım sonunda belirleyeceğiniz şartlara göre modelin komple yada sadece ağırlıklarının kaydedilmesi işini yapar. Bizim kodumuzda test verisi başarım değerinde bir yükselme olmuşsa kaydediyor.</li>
<li><b>CSVLogger</b> : Eğitim esnasında her adım sonunda , hem eğitim hem test verisi için , Hata değeri - loss - başarım değeri - acc - . Ve öğrenme hızı - learning rate - değerlerini kaydeder.</li>
</ul>
<br />
Bizim anlatacaklarımız bu kadar. Bayda uzamız buraya kadar sabırla okuğunuz için teşekkürler . Her türlü görüş ve önerilerinizi bekleriz.birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com0tag:blogger.com,1999:blog-14015976.post-24700037897960881712018-03-15T09:39:00.000+03:002018-03-15T09:39:00.567+03:00Sesim nasıl görünüyor ?<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwFOYNC1bSVP6YqDx6bxNOsl8UtW3JLc95ua06Q8hhKSxJfeMDWmlJSrkNqcpAmrXY71dQHfLDupPv2SWq5X9epr98V1kW3y_0YYUhFchdfrq3rGlCHy3pRQubRFbRw5Ua7uEV-w/s1600/sesim.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwFOYNC1bSVP6YqDx6bxNOsl8UtW3JLc95ua06Q8hhKSxJfeMDWmlJSrkNqcpAmrXY71dQHfLDupPv2SWq5X9epr98V1kW3y_0YYUhFchdfrq3rGlCHy3pRQubRFbRw5Ua7uEV-w/s400/sesim.png" width="400" /></a></div>
<br />
Fırsat buldukça Kaggle daki yarışmalara bakıyoruz. Pek çok alanda verilerle uğraşabilme imkanı veriyor. Geçenlerde Kaggle da Ses tanıma üzerine bir yarışma açıldı. <br />
<blockquote class="tr_bq">
<a href="https://www.kaggle.com/c/tensorflow-speech-recognition-challenge"><i>TensorFlow Speech Recognition Challenge</i></a></blockquote>
Binlerce farklı kişi tarafından seslendirilmiş 30 kelimelik 1 saniye uzunluğunda bir veriseti. 65.000 kayıt var. Seçilmiş on kelime<br />
<blockquote class="tr_bq">
<i>yes, no, up, down, left, right, on, off, stop, go</i></blockquote>
ve bu kelimelerin dışındaki kelimelere - unknown - bilinmiyor. Veya sessizlik yada konuşma dışı seslere - silence - sessizlik ilavesi ile 12 sınıflı bir sınıflandırma problemi olarak verilmişti.<br />
<br />
Klasik spektrogram dönüşümleri ve arkasına evrişimli sinir ağları ile sınıflandırma işlemleri yapılıyordu bizde öyle yaptık ilk etapta. Yarışma sonunda <span>0.82579</span> lik bir başarıya ancak ulaşa bildik yarışmanın birincisinin başarısı 0.91060. pekde parlak bir sonuç değil 1315 katılımcının içinde 441. olabilmişiz. Neyse asıl konumuz bu değil.<br />
<br />
Hazır elimizde veri varken ses verisini poincare plot metoduyla bir görüntüye dönüştürsek ve üzerinde (CNN ) Evrişimli Sinir Ağı denesek diye bir çalışma yaptık. Hatırlarsanız bu konuda benim büyük bir umudum var. Bir çalışmaya başlamıştım ama devam edememişdim.<br />
<blockquote class="tr_bq">
<i><a href="http://derindelimavi.blogspot.com.tr/2016/04/poincare-plot-feature-extraction-1.html">Poincare Plot Feature Extraction</a></i></blockquote>
Ses için öznitelik çıkarma yerine doğrudan ölçeklendirip renkli bir görüntüye çevirmeyi denedik.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaydOgyZCgirY6NviiUd0DFPekHQsclXyOAUa1SpNhtQEZzxOmZjkJGtlU-Z5HCdEtgVxGpg2wsXo7q7WGs08GKqrTmV3anPeOGrklisJQZkcJv7lHLMhOjcpgbmFE3aiKwITJIg/s1600/sound2img01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="816" data-original-width="826" height="395" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaydOgyZCgirY6NviiUd0DFPekHQsclXyOAUa1SpNhtQEZzxOmZjkJGtlU-Z5HCdEtgVxGpg2wsXo7q7WGs08GKqrTmV3anPeOGrklisJQZkcJv7lHLMhOjcpgbmFE3aiKwITJIg/s400/sound2img01.png" width="400" /></a></div>
Yukarda 'two' ve 'stop' kelimeleri için üretilmiş resimlerden örnekler görüyorsunuz.<br />
Sonuçlar hiçde iyi çıkmadı malesef. Üzerinde çalışmak gerekiyor elbette. Ama estetik ve fraktalvari grafiklerde çıkmıştı. Kaybolup gitmesindedik ve koda döküp yayınladık. <br />
<blockquote class="tr_bq">
<a href="https://github.com/birolkuyumcu/sound2image">github.com/birolkuyumcu/sound2image</a></blockquote>
<b>sound2img.py</b> ; ses dosyasını okuyor ve rastgele belli büyüklükteki - kodda 4096 - parçalarını seçip görüntüye dönüştürüyor ve png formatında kaydediyor. Mesela en üstte gördüğünüz resim "sesim nasıl görünüyor" sesinin tamamının resme dönüştürülmüş hali.<br />
<br />
<b>play_sound_with_imgs</b> ; ses dosyasını okuyor. Bir taraftan ses çalınırken diğer taraftan çalınan kısmıda görüntüye dönüştürüp ekranda gösteriliyor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ9B5Osvh8MRsK7NCfv3MypGAuRR61uB5TWVg_87HqscJh3soyYGAvof3UB6kA_NntGkihKvQKQeIf6Hjuhg5w7gPX10afjBOqypYwUtuxlCA_AE0Awt1aNgd-04271S45DtUseQ/s1600/%25C5%259Feyh%25C5%259Famil.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="555" data-original-width="854" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ9B5Osvh8MRsK7NCfv3MypGAuRR61uB5TWVg_87HqscJh3soyYGAvof3UB6kA_NntGkihKvQKQeIf6Hjuhg5w7gPX10afjBOqypYwUtuxlCA_AE0Awt1aNgd-04271S45DtUseQ/s400/%25C5%259Feyh%25C5%259Famil.png" width="400" /></a></div>
<br />
<br />
mesala yukardakiler Çetin Akdenizin bağlamayla çaldığı <a href="https://www.youtube.com/watch?v=dtJwB7yUOWs">Şeyh Şamil</a> ezgisinden.<br />
<br />
<br />
Birilerinin işine yaraması umuduyla. Her türlü görüş ve önerilerinizi bekleriz. birol kuyumcuhttp://www.blogger.com/profile/09572588641225833614noreply@blogger.com1