Önemli özellikler nasıl belirtilir?


15

Birçok veri kaynağından oluşan bir dizi gevşek yapılandırılmış veri (örneğin, Web tabloları / Bağlantılı Açık Veri) varsayalım. Bunu izleyen ortak bir şema yoktur ve her kaynak, değerleri tanımlamak için eş anlamlı öznitelikler kullanabilir (örn. "Milliyet" ve "bornIn").

Amacım, bir şekilde tanımladıkları varlıkları "tanımlayan" bazı "önemli" özellikler bulmaktır. Dolayısıyla, böyle bir özellik için aynı değeri bulduğumda, iki tanımın büyük olasılıkla aynı varlık (örneğin aynı kişi) hakkında olduğunu bileceğim.

Örneğin, "lastName" özelliği "milliyet" özelliğinden daha ayrımcıdır.

Diğerlerinden daha önemli nitelikleri (istatistiksel olarak) nasıl bulabilirim?

Saf bir çözüm, her bir özelliğin değerlerinin ortalama IDF'sini almak ve bunu özelliğin "önem" faktörü yapmak olacaktır. Benzer bir yaklaşım, her özellik için kaç farklı değerin göründüğünü saymak olacaktır.

Makine öğreniminde özellik veya özellik seçimi terimini gördüm, ancak kalan özellikleri atmak istemiyorum, sadece en önemlilerine daha fazla ağırlık koymak istiyorum.

Yanıtlar:


16

Olası bir çözüm, her bir özellikle ilişkili bilgi kazancını hesaplamaktır :

Bilgi Kazancı

Başlangıçta tüm veri kümesine sahipsiniz ve her bir öğenin bilgi kazancını hesaplayın. En iyi bilgi kazanımına sahip öğe, veri kümesini bölümlemek için kullanmanız gereken öğedir (öğenin değerlerini göz önünde bulundurarak). Ardından, her öğe için aynı hesaplamaları yapın (ancak seçilenler) ve her zaman girişleri veri kümenizden en iyi tanımlayan / farklılaştıranı seçin .

Bu tür hesaplamalar için mevcut uygulamalar vardır. Karar ağaçları genellikle özellik seçimlerini en iyi bilgi kazancı olan özelliklere dayandırır. Ortaya çıkan ağaç yapısını bu önemli öğeleri bulmak için kullanabilirsiniz .


Bu entropi mi? Kafam karıştı.
Valentas

Geç cevap verdiğim için özür dilerim. To kazanmak bilgiyi sağlamaktır azaltmak genel entropi; yani temelde aynı kavramlar. "Entropi" ve "bilgi kazancı" tanımlarına bir göz atın.
Rubens

7

Aslında burada cevaplanacak birden fazla soru var:

  1. Şematik / gevşek / eksik veriler üzerinde çalışma
  2. Bir kişiyi etiketlemek (denetimsiz olarak anladığım kadarıyla) ve tanımlayıcı nasıl oluşturulur
  3. Kişiyi tanımlamak için hangi özellikleri kullanmanız gerektiğini size söyleyebilmesi için sisteminizi nasıl eğitebilirsiniz

Rubens'in belirttiği gibi, bir kişiyi nasıl etiketleyeceğinizi belirlemenin bir yolunu bulduysanız, bilgi kazancına dayalı en önemli özellikleri hesaplamak için karar ağacı yöntemlerini, özellikle Rasgele Ormanları kullanabilirsiniz .

Bununla birlikte, herhangi bir etiket bilginiz yoksa, ön özellik seçimi için bazı uzman görünümlerini kullanabilirsiniz. Bundan sonra etiketlerinizi almak için denetimsiz sınıflandırma yaparsınız . Son olarak, Random Forest veya Bayesian İnanç Ağları gibi diğer yöntemleri kullanarak en önemli alanları seçebilirsiniz .

Tüm bunları başarmak için eksiksiz veri setine de ihtiyacınız var. Veri kümeniz gevşekse, farklı isimlerle aynı şeyi gösteren özellikleri birleştirmek için manuel veya sezgisel olarak bir yol bulmalısınız. Dahası, Beklenti Maksimizasyon yöntemi gibi imputation tekniklerini kullanabilir ve veri kümenizi tamamlayabilirsiniz. Veya Bayesian Ağları ile çalışabilir ve eksik alanları olduğu gibi bırakabilirsiniz.


2

Orada bir sürü teknik var. Bilgi sisteminizde bir karar özniteliği veya etiketler varsa, bulduğum en iyi yol kaba küme temelli öznitelik azaltmayı kullanmaktır. Qiang Shen ve Richard Jensen'ın hızlı azaltma algoritmasına göz atın.

Etiketlenmemiş verileriniz varsa Ana Bileşen Analizi'ni (PCA) kontrol edin .


0

Sadece bunun uğruna, neredeyse 5 yıl sonra, başka birine yardımcı olması durumunda yeni olmayan bu problemi veya doktoramın bir katkısını çözmek için doktoramda gerçekte kullandığım şeyi paylaşabileceğimi düşündüm.

Önemliyi özelliklerini seçmek için kullanılan ölçü (F-tedbir aka) harmonik ortalaması arasındaki supportve discriminability.

Bir p özniteliğinin desteği, veri kümemizdeki varlıkların bu öznitelik için ne sıklıkta değerler içerdiğini sezgisel olarak içerir:

support(p) = |instances(p)|/ |D|, 

burada (p) örnekleri, p için bir değere sahip varlıklar kümesidir ve | D | veri kümesi D'deki varlıkların sayısıdır.

discriminability(p) = |values(p)| / |instances(p)|, 

burada değerler (p), p özelliğinin veri kümemizde sahip olabileceği (bir küme olduğundan farklı) değerler kümesidir. Bu, aslında bu özellik için bir değeri olan varlıkların sayısı ile normalleştirilir.

Başka bir deyişle, destek, veri kümesinde p'nin görünme sıklığını ölçer ve ayırt edilebilirlik, bu özniteliğin "anahtar" ne kadar yakın olduğunu gösterir.

Daha fazla bilgi için tezimi (Bölüm 4.3.2) okuyabilir veya EDBT 2019 belgesinde (Bölüm 2) daha kısa bir sürüm bulabilirsiniz .

Yapıcı cevaplarınız için hepinize teşekkürler!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.