Bagaimana cara menentukan atribut penting?

15

Asumsikan satu set data yang terstruktur secara longgar (misalnya tabel Web / Linked Open Data), terdiri dari banyak sumber data. Tidak ada skema umum yang diikuti oleh data dan setiap sumber dapat menggunakan atribut sinonim untuk menggambarkan nilai-nilai (misalnya "kebangsaan" vs "bornIn").

Tujuan saya adalah menemukan beberapa atribut "penting" yang entah bagaimana "mendefinisikan" entitas yang mereka gambarkan. Jadi, ketika saya menemukan nilai yang sama untuk atribut seperti itu, saya akan tahu bahwa kedua deskripsi tersebut kemungkinan besar tentang entitas yang sama (misalnya orang yang sama).

Misalnya, atribut "nama belakang" lebih diskriminatif daripada atribut "kebangsaan".

Bagaimana saya (secara statistik) menemukan atribut yang lebih penting daripada yang lain?

Solusi naif adalah dengan mengambil IDF rata-rata dari nilai setiap atribut dan menjadikan ini sebagai faktor "penting" dari atribut. Pendekatan serupa akan menghitung berapa banyak nilai yang berbeda muncul untuk setiap atribut.

Saya telah melihat fitur fitur, atau pemilihan atribut dalam pembelajaran mesin, tetapi saya tidak ingin membuang atribut yang tersisa, saya hanya ingin meletakkan bobot yang lebih tinggi ke yang paling penting.

vefthym
sumber

Jawaban:

16

Solusi yang mungkin adalah menghitung perolehan informasi yang terkait dengan setiap atribut:

Keuntungan Informasi

Awalnya Anda memiliki seluruh dataset, dan menghitung perolehan informasi setiap item. Item dengan gain informasi terbaik adalah yang harus Anda gunakan untuk mempartisi dataset (mempertimbangkan nilai-nilai item). Kemudian, lakukan perhitungan yang sama untuk setiap item (tetapi yang dipilih), dan selalu pilih yang paling menggambarkan / membedakan entri dari dataset Anda.

Ada implementasi yang tersedia untuk perhitungan seperti itu. Decision tree biasanya mendasarkan pemilihan fitur mereka pada fitur dengan perolehan informasi terbaik. Anda dapat menggunakan struktur pohon yang dihasilkan untuk menemukan barang - barang penting ini .

Rubens
sumber
Apakah entropi ini? Saya bingung.
Valentas
Maaf atas jawaban yang terlambat. Untuk mendapatkan informasi berarti mengurangi keseluruhan entropi; jadi mereka pada dasarnya konsep yang sama. Lihatlah definisi "entropi" dan "perolehan informasi".
Rubens
7

Sebenarnya ada lebih dari satu pertanyaan untuk dijawab di sini:

  1. Cara bekerja pada schemaless / data longgar / hilang
  2. Cara memberi label pada seseorang (dari apa yang saya pahami tanpa pengawasan) dan membuat pengenal
  3. Cara melatih sistem Anda sehingga dapat memberi tahu Anda atribut mana yang harus Anda gunakan untuk mengidentifikasi orang tersebut

Seperti yang disebutkan Rubens, Anda dapat menggunakan metode pohon keputusan , khususnya Hutan Acak untuk menghitung atribut paling penting berdasarkan perolehan informasi jika Anda telah menemukan cara untuk mengidentifikasi cara memberi label pada seseorang.

Namun, jika Anda tidak memiliki informasi label apa pun, mungkin Anda dapat menggunakan beberapa tampilan pakar untuk pemilihan atribut awal. Setelah itu kamu buat klasifikasi tanpa pengawasan untuk mengambil label Anda. Terakhir, Anda dapat memilih bidang yang paling penting menggunakan Random Forest atau metode lain seperti Bayesian Belief Networks .

Untuk mencapai semua itu, Anda juga perlu kumpulan data lengkap. Jika kumpulan data Anda longgar, Anda harus mencari secara manual atau heuristik atribut yang menunjukkan hal yang sama dengan nama yang berbeda. Terlebih lagi, Anda dapat menggunakan imputasi teknik seperti metode Maksimalisasi Ekspektasi dan melengkapi kumpulan data Anda. Atau Anda juga dapat bekerja dengan Bayesian Networks dan dapat meninggalkan bidang yang hilang.

darklordofsoftware
sumber
2

Banyak teknik di luar sana. Jika sistem informasi Anda memiliki atribut keputusan atau label yang dilampirkan, cara terbaik yang saya temukan adalah menggunakan pengurangan atribut berbasis set kasar. Lihat algoritma reduksi cepat oleh Qiang Shen dan Richard Jensen.

Jika Anda memiliki data yang tidak berlabel, periksa Principal Component Analysis (PCA) .

pengguna242782
sumber
0

Demi itu saja, setelah hampir 5 tahun, saya pikir saya mungkin membagikan apa yang sebenarnya saya gunakan dalam PhD saya untuk menyelesaikan masalah ini, yang bukan baru, atau kontribusi PhD saya, kalau-kalau itu membantu orang lain.

Ukuran yang kami gunakan untuk memilih atribut penting adalah mean harmonik (alias F-ukuran) antara supportdan discriminability.

Dukungan atribut p secara intuitif seberapa sering entitas dalam dataset kami mengandung nilai untuk atribut ini:

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

di mana instance (p) adalah himpunan entitas yang memiliki nilai untuk p, dan | D | adalah jumlah entitas dalam dataset D.

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

di mana nilai-nilai (p) adalah himpunan nilai-nilai (berbeda, karena itu himpunan) yang atribut p dapat miliki dalam dataset kami. Itu dinormalisasi oleh jumlah entitas yang sebenarnya memiliki nilai untuk atribut ini.

Dengan kata lain, dukungan mengukur frekuensi di mana p muncul dalam dataset dan diskriminasi menunjukkan seberapa dekat menjadi "kunci" atribut ini.

Untuk lebih jelasnya, Anda dapat membaca disertasi saya (Bagian 4.3.2), atau Anda dapat menemukan versi yang lebih pendek di makalah EDBT 2019 kami (Bagian 2).

Terima kasih atas jawaban konstruktif Anda!

vefthym
sumber