Bu eğitimde, transkriptomik verilerle doğrusal regresyonun nasıl kullanılacağını tartışacağım, bu ilk bölümde doğrusal regresyon ve arkasındaki matematiği tanıtacağım.
Bu, öğreticinin indeksidir, böylece ilginizi çeken bölümü seçebilirsiniz
Önceki eğitimlerde, denetimsiz teknikler kullandık, bu eğitimde gen ifade verilerini kullanarak doğrusal sınıflandırıcılara odaklanacağız.
Başlangıç için denetimli öğrenme nedir? Kavramsal olarak, bir görev üzerinde çalıştığınızı ve sonuçların doğru olup olmadığını birinin kontrol ettiğini hayal edin. Benzer şekilde, bir eğitim algoritmanız var ve verileri etiketlediniz. Veri setinin her bir örneği (veya veri gözlemi), algoritmanın tahmin etmesi gereken bir etiket sunar. Önceki eğitimde, algoritmanın etiketini vermedik, veri kümesi özelliklerine dayanan kümeleme algoritmaları, numunelerin hangi gruba ait olduğunu bulmak zorundaydı. In denetimsiz öğrenmeEtiketleri sağlamıyoruz, kategorilere ayırmak için algoritmalar kullanıyoruz (bir alt küme tanımlamak için, bu bir etiket olarak düşünülebilir). Denetimli öğrenmede, algoritma etiketli veri gözlemini öğrenir, bir cevap sağlar ve tahminin doğru olup olmadığını etiket üzerinde kontrol edebilir. Basit bir örnek olarak, hayvan görüntülerinden oluşan bir veri kümesine bakarsak, hayvanın adıyla etiketlenmiş algoritma görüntülerini sağlayacağız. Algoritma daha sonra hayvanları nasıl ayırt edeceğinizi öğrenecek ve yetenek olup olmadığını test etmek için yeni görünmeyen görüntüleri kullanabilirsiniz.
kavramsal olarak denetimli öğrenmeyi kullandığınız iki ana alan vardır:
Genel olarak, makine öğreniminin algoritmalar olduğunu söyleyebiliriz (değişkenler arasındaki ilişkiyi tanımlayan matematiksel prosedürler, genellikle bağımsız bir değişken ve birçok bağımlı değişken). Doğrusal sınıflandırıcılar (veya gerileyenler) söz konusu olduğunda, bu öğreticinin konusu, amaç çıkarımdır(popülasyonun bir örneğini temsil eden toplanan verilerden, genel popülasyon hakkında içgörüler elde edilir). Doğrusal ve lojistik regresör, değişkenler arasındaki ilişkiye dair çıkarımlar yaptığı için yeni veriler üzerinde tahminlerde bulunabilir. Böylece, bu istatistiksel yöntemleri kullanarak, bağımlı ve bağımsız değişkenler arasındaki ilişki hakkında bilgi elde ederiz. Genel bir örnek olarak, bazı tıbbi parametrelerin (bağımsız değişkenler) ve metastaz gelişiminin (bağımlı değişken) bir veri kümesine sahibiz, yeni analiz edilen hastaların metastaz geliştirip geliştirmeyeceğini bu veri kümesinde tahmin etmek için doğrusal bir model oluşturabiliriz. Model ayrıca hangi değişkenlerin metastaz geliştirme riskiyle daha fazla ilişkili olduğu hakkında bilgi verebilir (örneğin, boyut, lenf düğümü tutulumu). Diğer yandan,derin öğrenme algoritmaları daha karmaşıktır ve daha doğru tahmine odaklanır (doğrusal olmayan ilişkileri de hesaba kattıkları için değişkenler arasındaki ilişkiyi takip etmek daha zordur) ve bu nedenle "kara kutu" olarak kabul edilirler. Bu algoritmalar aşağıdaki eğitimlerin odak noktası olacaktır.
Özetle, en az bir değişkenin (bağımlı) diğer değişkenlere bağlı olduğu varsayımına dayanarak, bir ilişki kurmaya çalışıyoruz. Bu, değişkenleri diğerleriyle tatmin edici bir şekilde eşleyen bir işlev aracılığıyla elde edilir.
Genel bir terminoloji olarak:
Şekil 3, bir regresyon problemi kavramını sunar, eğer bağımsız değişkenler (X) olan bir eğitim setimiz varsa, X'i bağımlı değişkenimiz (y) ile eşlemek için bir fonksiyon (h) kullanabiliriz.
Bu noktaları daha ayrıntılı olarak tartışacağız, ancak başlamak için doğrusal modellere ihtiyacımız var:
Veri kümesiyle başlayalım. Bu öğreticide kullanılan veri kümesi Warnat-Herresthal ve ark. (3). Lösemiden birçok veri setini topladılar ve yeniden analiz ettiler. Veri seti ve mikroarray teknikleri, önceki eğitimde ayrıntılı olarak sunulmuştur.
Bu öğreticiyi Google Colab'da python'da yazıyorum. Önceki veri setinde görüldüğü gibi
Veri kümesini Google Drive'a zaten aktardığınızı varsaydım.
%reload_ext autoreload %autoreload 2 %matplotlib inline from google.colab import drive drive.mount(‘/content/gdrive’, force_remount=True)
#import necessary library import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import umap #dataset data = pd.read_table("/content/gdrive/My Drive/aml/201028_GSE122505_Leukemia_clean.txt", sep = "\t")
#table of the disease data.disease.value_counts()
#removing some disease type data["disease"] = np.where(data["disease"] == "Diabetes_Type_I" , "Diabetes", data["disease"]) data["disease"] = np.where(data["disease"] == "Diabetes_Type_II" , "Diabetes", data["disease"]) other = ['CML','clinically_isolated_syndrome', 'MDS', 'DS_transient_myeloproliferative_disorder'] data = data[~data.disease.isin(other)] data.disease.value_counts()
selected = ['AML','ALL'] data = data[data.disease.isin(selected)] data.disease.value_counts()
target = data[“disease”] df = data.drop(“disease”, 1) df = df.drop(“GSM”, 1) df = df.drop(“FAB”, 1) df.shape
df = df.drop(df.var()[(df.var() < 0.3)].index, axis=1) from scipy.stats import zscore df = df.apply(zscore) df.shape
Bu bölümde sahnenin arkasındaki matematiği daha iyi anlatacağım, sadece nasıl uygulanacağıyla ilgileniyorsanız bu bölümü atlayabilirsiniz.
Bu harika öğreticide daha fazla ayrıntı bulabilirsiniz: burada
Doğrusal regresyon , bilinmeyen değişken yalnızca iki işlem kullanılarak hesaplanabiliyorsa, bilinmeyen bir değişkeni (y) bazı bilinen değişkenlere (x veya girdiler) dayalı olarak tahmin etmek için istatistiksel bir süreç olarak tanımlanabilir: skaler çarpma ve toplama (doğrusal bir ilişki) .
Başlangıç olarak, çalışılan saatler ile yüzde puanı arasında doğrusal bir ilişki. Bu durumda, bağımlı değişken yüzde puanıdır (y) ve çalışılan saatler bağımsız değişkendir (x). Her veri noktası bir öğrencidir.
Düz bir çizginin denklemi y = mx + b'dir. M ile doğrunun eğimini tanımlarız ve b kesişme noktasıdır. Birden fazla girdimiz olduğu için denklemimizi değiştirmemiz gerekiyor.
Çoğu durumda, m ve b aslında B1 ve B0 olarak belirtilir.
Kavram olarak, bilinmeyen değişkenimizi (y) bilinen değişkenlerimizin değerinden başlayarak tahmin etmek istiyoruz. Küçük bir gösterim olarak, X ve Y gerçek sayılar olabilir, bu nedenle bunu X = Y = IR olarak tanımlayabiliriz. Düz bir çizginin denklemini gördüğümüz için, bunu ağırlıklı girdilerin toplamı ve bir önyargı ekleyerek hesaplayabiliriz. Daha resmi:
Xi bir girdidir, wi bu girdiyle ilişkili ağırlıktır ve b sapmadır.
Biraz daha kolaylaştırmak için, önyargıyı her zaman aynı değere sahip (1'e eşit) bir değişkene (kesişme) eşit olarak kabul edebiliriz. Şu an için denklemi basitleştirebiliriz.
Veri kümemizi göz önünde bulundurarak, mxn girdi değişkenlerinden oluşan bir matrisimiz var (burada m, gözlemin sayısı ve n, özelliklerin veya değişkenlerin sayısıdır) ve bağımlı değişkenimiz için bir boyut n vektörüne sahibiz. Matris gösterimindeki son denklemi dönüştürmek istiyoruz (başlık altında algoritma tam olarak bunu yapıyor). Aşağıda, bir veri noktası için ağırlıklı toplamımız var, basit bir deyişle iki vektörün çarpımıdır (karşılık gelen ağırlıkları depolayan sütun vektörü için girdi matrisimizin satır vektörü.
Sonuç skalerdir. Hesaplamayı bir puan için yapmak istiyorsanız, formül budur.
Tüm y değişkeni için hesaplama yapmak istiyorsak, bir vektör için bir matrisi çarpmanız gerekir (girdi matrisini X olarak göstereceğiz. Y şimdi bir vektör, X bir matris ve w, daha önce gördüğümüz vektördür .
Bir vektör için bir matrisi çarparken hatırlamak için. Bir vektörlü (boyut n) bir matrisin (boyut mxn) çarpımı, m boyutlu bir vektördür. Genel formül:
Örnek olarak, bir A matrisimiz (boyut 2 x 3) ve bir boyut 3 vektörümüz varsa, önce birinci satırı ve sonra ikinci satırı çarparız. Sonuç, 2. boyutun bir vektörüdür.
Veri setimizi düşünürseniz, bu durumda, biz 2 veri noktası (üç giriş değişkeni) ile ilişkili 3 ağırlık ve y değişkeninin iki noktasını hesaplıyoruz.
Girdileri biliyoruz (bunlar veri kümesi değişkenlerimizdir) şimdi ağırlıkları bulmalıyız. Ağırlıklar örneklerden öğrenilmiştir. Genel olarak, girdilere (X) ve etiketli örneğe (veya regresyonda bağımlı değişken y'nin karşılık gelen değerine) sahip olduğumuz bir eğitim setimiz vardır. Buna dayanarak, w'yi hesaplamak için x ve y değerlerini kullanıyoruz.
En basit haliyle, w için basit çözme ile emsal denklemden türetebiliriz.
Bir varsayım yapmak gerekir, veri noktalarının sayısı girdi sayısından en az bir fazla olmalıdır (yani, diyelim ki, en az 5 gözleme ihtiyacımız olan 4 girdi değişkenimiz var). Bu bir regresyon doğrusudur (teknik olarak, yalnızca n giriş bire eşit olduğunda, 2 için bir düzlem, 3 için bir 3-d düzlem vb. Olduğunda bir regresyon çizgisidir).
Bu denklem aslında ideal bir durum içindir. Çoğu zaman, veri noktalarımız mükemmel bir çizgiye uymuyor (Şekil 3'te bir örnek olarak, veri noktaları, regresyon çizgimizin etrafında bazı rastgele gürültüler olduğu gibi, doğru üzerinde mükemmel değiller). Bu, w için kesin bir çözüm bulamadığımız anlamına gelir, o zaman amaç ağırlıklarımız için en iyi çözümü bulmaktır. Denklemin çözümü yoksa, teknik olarak y, X'in sütun uzayına ait değildir. Yani, y kullanmak yerine, X sütun uzayındaki izdüşümünü kullanacağız. Bunu nasıl yapabiliriz? X'in devrikini denklemin her iki tarafıyla çarpmaya başlıyoruz ve sonra denklemi çözüyoruz.
Matris transpozisyonunu anlamak için, şekilde bazı örnekler bulabilirsiniz:
Genel bir kural olarak, matrisin devrikini hesaplamak istiyorsanız, soldaki ilk noktadan aşağıya (sağdaki son nokta) başlayarak çapraz bir eksen görüntülersiniz ve ardından matrisi yansıtırsınız (hayali çizgi, simetri ekseni). Alternatif olarak, matrisi saat yönünde (90 derece) döndürürsünüz, ardından ilkiyle sonuncusu gibi satırları değiştirmeye başlarsınız ve bu şekilde devam edersiniz (şekildeki ilk matrise bakarak, birinci ve üçüncüyü değiştirirsiniz, ikincisi ise konumunda kalır. ).
Bir matrisin tersi hakkında, A -> A-1. Burada 2x2 boyutunda bir matris örneği, farklı matris boyutu için hesaplamak çok daha karmaşıktır ve birçok farklı yöntem vardır, eğer kazmak istiyorsanız şu makaleleri okuyabilirsiniz: burada ve burada
Matematik yaklaşımı
W'yi bulmak için izleyebileceğiniz başka bir yaklaşım daha var ve bu matematiktir. Bunu kısaca tartışacağız. Bir hata fonksiyonu fikrinden önce tartıştık. Bu durumda, yaptığımız şey bir hata fonksiyonu tanımlamak ve fonksiyonumuzu en aza indiren ağırlıkları bulmak için hesap kullanmaktır. Daha iyi anlamak için geri adım atalım. En kolay durumda, sadece bir giriş değişkenimiz ve bir bağımlı değişkenimiz var. Daha önce de söylediğimiz gibi, hattımız ile veri noktaları arasında mükemmel bir uyuşma yok. Pratikte bir fonksiyonumuz var:
𝑓 (𝐱) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ + 𝑏ᵣ𝑥ᵣ
girdiler ve çıktılar arasındaki bağımlılıkları hesaplayan. Bu fonksiyonla, her girdi için çıktıyı tahmin ediyoruz. Her gözlem için, tahminimiz ile kesin referans değeri arasındaki uyuşmayı hesaplayabiliriz:
𝑦ᵢ - 𝑓 (𝐱ᵢ)
Bu farka artık denir. Buradaki fikir, kalıntıları en küçük değere düşürmek için en iyi ağırlığı bulmaktır. Genel olarak, bu senaryoda en iyi ağırlığı bulmak için sıradan en küçük kareler yöntemini kullanırsınız, artık karelerin (SSR) toplamını formülle en aza indirirsiniz.
SSR = Σᵢ (𝑦ᵢ - 𝑓 (𝐱ᵢ)) ²
Bu en basit durumdur, ancak burada bir girdi matrisimiz var. Buradaki fonksiyon tam olarak aynı şeyi yapıyor, her bir gerçek y ile bizim y tahminimiz (regresyon modeli ile elde edilen) arasındaki farkı hesaba katıyor. Sonra bu farkların kareleri alınır ve hepsi toplanır. Bunu matris gösteriminde şu şekilde yazabiliriz:
Aynı görüşe göre, fikir bu fonksiyonun minimumunu bulmaktır (gradyanın sıfır olduğu yer burası olmalıdır). Denklemi kısaca tartışacağız, ancak süreçle ilgileniyorsanız burada ek ayrıntılar bulabilirsiniz .
bu gradyanı hesaplamak içindir:
O zaman w için çözmemiz gerekiyor (sonuçta ağırlıklarla ilgileniyoruz). Böylece sıfıra eşitledik.
Gördüğünüz gibi bu çözüm aynı, bir doğrusal cebir yaklaşımı bulduk. Bu, karesel hataların toplamını en aza indirmenin ve X'in sütun uzayındaki y projeksiyonunun aynı sonucu verdiği anlamına gelir. Bu çözüm, bir çözüme sahip olmak için matrisin tersine çevrilebilir olması gerektiğini söylüyor. Bu gereksinim genellikle girdi değişkenlerinden daha fazla gözlemimiz olduğunda karşılanır.
Kritik bir nokta bulduk, ancak bu noktanın fonksiyonun minimum veya maksimum noktası olup olmadığını bilmiyoruz. Nasıl bilebiliriz? Fonksiyonun dışbükeyliğini veya içbükeyliğini belirlemek için Hessian matrisini hesaplamalıyız. Hessian matrisi temel olarak birçok değişkenli bir fonksiyonun yerel eğriliğini tanımlar. Daha fazla bilgiyi burada bulabilirsiniz .
Bir z vektörü için (gerçek değerlerden) çarpacağız.
Burada tutulması gereken önemli olan, fonksiyonumuzun dışbükey olmasıdır, bu nedenle w için çözüm, fonksiyonun minimum noktasıdır (aradığımız da buydu).
Stokastik Gradyan İniş (SGD)
Kaputun arkasında, scikit-learn sıradan en küçük kareler yöntemini kullanıyor. Ancak, bir ceza terimi kullandığınızda stokastik gradyan iniş (SGD) kullanılıyor. Cezayı tartışacağımız için, SGD'yi kısaca tartışacağız (diğer eğitimlerde SGD'yi derinlemesine inceleyeceğiz çünkü sinir ağlarıyla yüzleşirken ayrıntılı olarak tartışmak daha mantıklı olacaktır). Kısaca tartışmak gerekirse, SGD'nin güçlü bir algoritma olduğunu ve birçok makine öğrenimi tekniği için optimizasyonda kritik olduğunu söyleyebiliriz.
Biz örneklerden öğreniyoruz bu yana, (giriş değişkeni X ve bağımlı değişken y ile) bir eğitim seti var ve biz bir işlev bulmak istiyoruz, hızla özetlemek için h : X → Y h (xi) karşılık gelen iyi bir belirleyicisi olduğunu yi. Y'yi x'in doğrusal bir fonksiyonu olarak tahmin etmeyi planlıyorsak:
θ , ağırlığımızın başka bir gösterimidir ve bu denklemi daha önce gördüğümüz gibi yeniden yazıyoruz:
Ve buradan, daha önce söylediğimiz gibi, bir J maliyet fonksiyonu hesaplayabiliriz, ana fikir, ah (xi) nin yi'ye ne kadar yakın olduğunu belirleyen bir fonksiyonu hesaplamaktır. Kare hatası kullanmamızın ana nedenlerinden biri, çözülmesinin daha kolay olmasıdır (türev doğrusal bir fonksiyondur, dolayısıyla çözülmesi kolaydır):
Şimdi bu işlevi en aza indirmek için gradyan inişini kullanacağız. Basit bir deyişle, gradyan inişi bir başlangıç ağırlığıyla (θ) başlar ve tekrar tekrar günceller. Güncelleme, farklı ağırlıklara sahip olduğumuz için J'nin tüm değerleri içindir.
Bu, öğrenme oranı (α) olarak adlandırılan önceden tanımlanmış belirli bir miktar ile güncellenir. Algoritma bu adımı (α boyutunun) alır ve ağırlığı (θ) yinelemeli olarak değiştirerek J'yi en aza indiren bir değere yaklaşır. Algoritma J'nin en dik düşüşü yönünde bir adım atar. Bu şu şekilde gösterilebilir:
tek bir eğitim örneği için bu güncelleme kuralıdır:
Hangisi daha geneldir (kısmi türevi kullanmanız gerekir):
Denklemden ve yukarıdaki şekilden anlayabildiğimiz gibi, SGD, tahmini bir değer (h (x)) ile gerçek değer (y) arasındaki farkın kısmi türevini çarparak, parametreleri α (öğrenme oranı ). Somut olarak, basit kelimelerdeki türev, parametre güncellemesini minimuma doğru sürerken (değişimin yönünü verir), öğrenme oranı parametrenin değerini ne kadar değiştirmeniz gerektiğini belirtir.
SGD hakkında daha fazla ayrıntı için: burada
Bizim bağlamımızda:
Α'nın öğrenme oranı olduğunu unutmayın, daha sonra detaylı olarak tartışacağız. Gradyan hesaplanıyor:
Önyargı-Varyans ödünleşimi
Tartışılacak son nokta, Önyargı-Varyans değiş tokuşudur. Bu denklemle başlayalım:
Bu denklem, y'yi tahmin etmek istiyorsanız, bunun X (bir ağırlık için çarpılır) artı varyansı σ ^ 2 olan normal olarak dağıtılan bir hata terimi kombinasyonu olduğunu gösterir .
Daha sonra dediğimiz gibi, tahmini ağırlıkları β-hat (gerçek β'den biraz farklı olan) elde etmek için bir kayıp fonksiyonunu en aza indiriyoruz.
Sırayla en küçük kareler (OLS) yöntemini kullanan:
Şimdiye kadar yeni bir şey yok. Önyargı gerçek nüfus parametresi ve beklenen tahmincisi arasındaki farktır. Temel olarak tahminlerin doğruluğunu ölçer. E beklentileri karşılıyor.
Varyans yayılımı ölçerken (belirsizlik de denir)
Ve artıklardan σ ^ 2'yi tahmin edebiliriz :
Bu hesaplamalar hakkında daha fazla ayrıntı istiyorsanız: burada
Bu terimlerin ne olduğunu anlamanın basit bir yolu, boğa gözü resmine bakmaktır. Boğanın gözü gerçek popülasyondur ve tahmin etmek istiyoruz β, sürgünler tahminlerimizin değeridir (bu durumda 4 farklı tahminci).
Hem varyansın hem de önyargının düşük olmasını , yüksek değerlerin kötü tahminlere yol açmasını istiyoruz. Gerçekte, model hatası 3 kısımdan oluşur: önyargı, varyans ve açıklanamayan kısım.
Özellikle, OLS'de sorun, aralarında yüksek düzeyde korelasyon bulunan çok fazla tahmin değişkeninden dolayı varyanstır ve ayrıca girdilerin sayısına bağlıdır (m n'ye yaklaşıyorsa, varyans sonsuza yakındır).
Genel olarak çözüm, bir miktar önyargı getirme pahasına varyansı azaltmaktır. Bu, düzenlileştirme ilkesidir (bu eğitimin sonraki bölümünde tartışılacaktır). Bir sonraki şekil bu noktayı özetlemektedir. Kavram, girdi sayısının artmasının karmaşıklık yaratması ve varyansın artmasıdır. Aynı zamanda önyargı azalır. Doğru noktada, basit doğrusal regresyona sahibiz. Yani fikir, en uygun noktaya ulaşmaktır.
Yasal Uyarı: Bu makale yalnızca eğitim amaçlıdır. Kimseyi web sitelerini, özellikle de bu tür eylemlere karşı hüküm ve koşulları olabilecek web mülklerini kazımaya teşvik etmiyoruz.
Gerçek dünya analitik uygulamaları genellikle, her biri veritabanlarında depolanan verilere doğrudan erişime ihtiyaç duyan çeşitli programlama dilleri kullanılarak oluşturulur. Nihai hedef, veri çıkarmadan (SQL ile), model geliştirmeye ve sürekli performans izlemeye kadar otomatik bir analitik işlem hattı oluşturmaktır.
Bu gönderi, DFINITY ekibinin merkezi olmayan bulut vizyonunu ve bunun geleneksel blok zinciri ve Amazon Web Servisleri gibi mevcut bulut sağlayıcılarıyla ilişkisini araştırıyor. Büyük ölçekli bir ağ tarafından uygulanan DFINITY teknolojisinin gösterimleri 2017 sonbaharında yapılacak ve bunu, 2018 yazının başlarında piyasaya sürülmesi beklenen “açık bulut” ağıyla kâr amacı gütmeyen vakıf için bir Ana bağış toplama izleyecektir. .
Kedi Felix'in 9. doğum gününde, yetişkin hayatımın en büyük kayıplarından birini hatırlıyorum - 2013'teki Sophie'm. Bu makaleyi yazdım ve 2013'te bu platformda kısaca paylaştım.
Jesenko ve benim 20 yıllık evlilik yolculuğumuza nasıl başladığımıza dair başlangıç hikayemizi pek kimse bilmiyor. Bazılarının, ilk dairemizi birlikte doldurmak için yeterince para kazanmamanın çok erken zamanlarıyla ilgili olabileceğinden eminim.
İnsanlar sanata çekilir. On yıldan fazla bir süredir araştırmacılar, izleme sanatının sağlığımız ve esenliğimiz üzerindeki olumlu etkisini araştırıyorlar.