15 49.0138 8.38624 1 1 4000 1 https://womaneng.com 300

One Hot Encoding Nedir – Nasıl Yapılır?

 

Makine öğrenme algoritmaları doğrudan kategorik veriler üzerinde çalışmamaktadır bu yüzden verilerimizin sayısal verilere dönüştürülmesi gerekmektedir.

Bu yazımda sizlere Python’da derin öğrenmeyle sınıflandırma problemlerinde kullanmak üzere verilerimizin one hot encode şeklinde dönüştürülmesinden bahsedeceğim. Scikit-learn ve Keras  kütüphanelerini kullanarak örnek üzerinden açıklamaya çalışacağım.

One Hot Encoding Nedir?

One Hot Encoding, kategorik değişkenlerin ikili (binary) olarak temsil edilmesi anlamına gelmektedir. Bu işlem ilk önce kategorik değerlerin tamsayı değerleriyle eşlenmesini gerektirir. Daha sonra, her bir tamsayı değeri, 1 ile işaretlenmiş tamsayı indeksi dışında ki tüm değerleri   sıfır  olan bir ikili vektör olarak temsil edilir. Örneğin aşağıda 3 kategoride veri vardır apple,chicken ve broccoli bu alanlar binary olarak ayrıştırıldığında Apple için ilk satır 1 iken diğerleri 0 oluyor Diğer veri içinde aynı şekilde sayısal veriye çevirme işlemi devem ediyor. 

One Hot Encoding Nasıl Çalışıyor?

Bir örnek yaparak açıklamaya çalışalım.

‘Kırmızı’ ve ‘yeşil’ değerlerini içeren bir dizi etiketimiz olduğunu varsayalım.

Kırmızı için bir tamsayıve yeşil için 1 tamsayı değerini atayabiliriz. Bu sayıları her zaman bu etiketlere atadığımız sürece bu işleme tamsayı kodlaması denmektedir. Tutarlılık önemlidir, böylece kodlamayı daha sonra tersine çevirebilir ve bir tahmin yapılması durumunda etiketler tamsayı değerlerini geri alabiliriz.

Daha sonra, her bir tamsayı değerini temsil eden bir ikili vektör oluşturabiliriz. Vektör, 2 olası tamsayı değeri için 2 uzunluğuna sahip olacaktır.

0 olarak kodlanan ‘kırmızı’ etiket, sıfırıncı indeksin 1 değeriyle işaretlendiği birinci indeksinin ise 09 olarak işlendiği bir ikili vektör [1, 0] ile temsil edilir. Buna karşılık, 1 olarak kodlanan ‘yeşil’ etiket ise, İlk indeksinin 0 değeri ile işaretlendiği ikili vektör [0, 1] ile temsil edilebilir.

  • Aşağıdaki gibi bir veri setimiz olsun.

‘red’, ‘red’, ‘green’

  • Veri setimizin tam sayılar ile temsil edilmiş şekli aşağıdaki gibi olsun.
0,0,1
  • One Hot Encoding yapılmış halide aşağıda yer almaktadır.
1
2
3
[1, 0]
[1, 0]
[0, 1]

Neden One Hot Encoding Kullanıyoruz?

Bir One Hot Encoding, kategorik verilerin temsilinin daha etkileyici ve kolay olmasını sağlar.

Birçok makine öğrenimi algoritması doğrudan kategorik verilerle çalışamaz bu yüzden, kategoriler sayılara dönüştürülmelidir. Bu işlem kategorik olan giriş ve çıkış değişkenleri için gereklidir.

 Bu, kategoriler arasında doğal sıralı bir ilişki olduğunda örneğin sıcaklık gibi, “soğuk”, “sıcak” ve “ılık” etiketleri gibi tamsayı değerlerinde sorunlara yol açabilir. 

Bir örnek olarak hayvan kategorisin de  “köpek” ve “kedi” etiketleri verelim ve sayısallaştıralım.  Bu işlem, ağın model için problemi daha kolay hale getirmesine yardımcı olabilir. Çıkış değişkeni için one hot encoding kullanıldığında, tek bir etikete göre daha nüanslı bir tahmin kümesi sunulabilmektedir.

Sklearn Üzerinde Bir Örnek Yapalım

Sklearn üzerinde de bir örnek göstererek konunun kafamızda daha iyi bir yer etmesini sağlayalım.  Örneğin elimde ‘Zeynep’ şeklinde String bir veri var bunu one hot encoding ile binary şekilde etiketlendirmek isytiyorum .

a,b,c…z ‘ye kadar alfabemiz 1’den 25’ e kadar numerik olarak belirlidir.

Bizde her bir harfin numerik olarak karşılığını bulalım. Bütün bu tablolar ve işlemler  sciket-learn üzerinde yer almaktadır. Sırasıyla ‘zeynep’ verimizin  0. indeksinden başlanarak sayısal karşılığı aşağıdaki tabloda yer almaktadır.

Son olarakta aşağıda ‘zeynep’ kelimesinin one hot encoding ilemi sonucu çevirilmiş hali verilmiştir.  26 boyutlu bir vektör üzerinde her harfin sayısal karşılığına denk gelen değeri 1 diğer alanlar 0 olacak şekilde düzenlenmiştir.

‘z’ => 25  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]

zeynep
[25, 4, 24, 13, 4, 15]
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

Bu yazıda neler öğrendik; Kategorik verilerin makine öğrenmesi işlemlerinde analiz edilmesi zor olduğu için bu verilerin binary olarak ifade edilmesi sonucu daha etkili ve hızlı sonuç alabileceğimiz veri setleri elde etmemiz gerektiğini ve bu işlemin temelde nasıl yapıldığını öğrenmeye çalıştık umarım faydalı olmuştur. Teşekkürler.

 

Bir önceki yazımız olan Soft Clustering - Yumuşak Kümelenme Nedir ? başlıklı makalemizde büyük veri, fuzzy kümelenme ve hard kümeleme hakkında bilgiler verilmektedir.

Paylaş:
Önceki
Soft Clustering – Yumuşak Kümelenme Nedir ?
HAKKIMDA
Zeynep Küçük

Hi, I’m Zeynep I am studying in computer engineering in Samsun. I love to share and write about anything that interests me in tech, so welcome on my blog. I’d be really glad to get in touch with you! Don’t forget you can always contact me by email for any inquiries.Follow me on social media.

0 Yorum

Yorumla

This site uses Akismet to reduce spam. Learn how your comment data is processed.