Metrik kualitas dalam pembelajaran mesin. Metrik dalam Masalah Pembelajaran Mesin

Pada elemen di dalam setiap daftar. Urutan parsial biasanya ditentukan dengan menentukan skor untuk setiap elemen (misalnya, "relevan" atau "tidak relevan"; lebih dari dua nilai dimungkinkan). Tujuan dari model peringkat adalah untuk memperkirakan dan menggeneralisasi dengan cara terbaik (dalam arti tertentu) metode peringkat dalam set pelatihan untuk data baru.

Ranking learning masih merupakan bidang penelitian yang cukup muda, berkembang pesat yang muncul pada tahun 2000-an dengan munculnya minat di bidang temu kembali informasi dalam penerapan metode pembelajaran mesin untuk masalah peringkat.

YouTube perguruan tinggi

  • 1 / 5

    Selama pelatihan model peringkat dan selama operasinya, setiap pasangan kueri dokumen diterjemahkan ke dalam vektor numerik fitur peringkat (juga disebut faktor peringkat atau sinyal) yang mencirikan properti dokumen, kueri, dan hubungannya. Tanda-tanda tersebut dapat dibagi menjadi tiga kelompok:

    Berikut ini adalah beberapa contoh fitur pemeringkatan yang digunakan dalam kumpulan data LETOR yang terkenal di bidang ini:

    • Nilai ukuran TF, TF-IDF, BM25, dan model bahasa yang sesuai dengan permintaan berbagai bidang dokumen (judul, URL, teks isi, teks tautan);
    • Panjang dan jumlah IDF dari zona dokumen;
    • Peringkat dokumen diperoleh dengan berbagai varian algoritma peringkat tautan seperti PageRank dan HITS.

    Metrik kualitas peringkat

    Ada beberapa metrik di mana kinerja algoritme peringkat pada sampel dinilai dan dibandingkan dengan penilai. Seringkali, parameter model peringkat cenderung disesuaikan sedemikian rupa untuk memaksimalkan nilai salah satu metrik ini.

    Contoh metrik:

    Klasifikasi algoritma

    Dalam artikelnya "Learning to Rank for Information Retrieval" dan pidato di konferensi tematik, Tai-Yang Liu dari Microsoft Research Asia menganalisis metode yang ada untuk memecahkan masalah pemeringkatan pengajaran dan mengusulkan klasifikasi mereka menjadi tiga pendekatan, tergantung pada representasi input yang digunakan. .data dan fungsi penalti:

    Pendekatan pointwise

    Catatan (edit)

    1. Tie-Yan Liu (2009), Belajar Peringkat untuk Pengambilan Informasi, Yayasan dan Tren Pengambilan Informasi: Vol. 3: Tidak 3, hal. 225-331, ISBN 978-1-60198-244-5, DOI 10.1561 / 1500000016... Slide dari pidato T. Lew di WWW 2009 tersedia.

    Pada arus keluar pelanggan dari operator telekomunikasi.


    Mari kita memuat perpustakaan yang diperlukan dan melihat datanya

    impor panda sebagai pd impor matplotlib.pyplot sebagai plt dari matplotlib.pylab impor rc, plot impor seaborn sebagai sns dari sklearn.preprocessing impor LabelmbleEncoder, OneHotEncoder dari sklearn.model_selection impor cross_val_score dari sklearn.linear_modelression GrainFormalization_modelression GrainFormalization dari sklearn.metrics impor presisi_recall_curve, klasifikasi_laporan dari sklearn.model_selection impor train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")


    df.head (5)

    Pra-pemrosesan data

    # Mari kita membuat pemetaan kolom biner # dan mengkodekan keadaan dengan pengkodean dummy (untuk kesederhanaan, lebih baik tidak melakukan ini untuk model kayu) d = ("Ya": 1, "Tidak": 0) df ["Rencana internasional "] = df [" Paket internasional "]. Peta (d) df [" Paket pesan suara "] = df [" Paket pesan suara "]. Peta (d) df [" Churn "] = df [" Churn "] Astype (" int64 " ) le = LabelEncoder () df ["State"] = le.fit_transform (df ["State"]) ohe = OneHotEncoder (sparse = False) encoded_state = ohe.fit_transform (df ["State"] .values.reshape (- 1, 1)) tmp = pd.DataFrame (encoded_state, kolom = ["state" + str (i) for i in range (encoded_state.shape)]) df = pd.concat (, axis = 1)

    Akurasi, presisi, dan daya ingat

    Sebelum beralih ke metrik itu sendiri, perlu untuk memperkenalkan konsep penting untuk menggambarkan metrik ini dalam hal kesalahan klasifikasi - matriks kebingungan(matriks kesalahan).
    Misalkan kita memiliki dua kelas dan algoritma yang memprediksi kepemilikan setiap objek ke salah satu kelas, maka matriks kesalahan klasifikasi akan terlihat seperti ini:


    Benar Positif (TP) Positif Palsu (FP)
    Negatif Palsu (FN) Negatif Benar (TN)

    Berikut adalah respon dari algoritma pada objek tersebut, dan merupakan label kelas yang sebenarnya pada objek tersebut.
    Jadi, ada dua jenis kesalahan klasifikasi: False Negative (FN) dan False Positive (FP).


    Pelatihan algoritma dan konstruksi matriks kesalahan

    X = df.drop ("Churn", axis = 1) y = df ["Churn"] # Bagi sampel menjadi train dan test, semua metrik akan dievaluasi pada dataset test X_train, X_test, y_train, y_test = train_test_split ( X, y , stratify = y, test_size = 0.33, random_state = 42) # Latih regresi logistik asli lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Gunakan fungsi membangun matriks kesalahan dari sklearn dokumentasi def plot_confusion_matrix (cm, class , normalize = False, title = "(! LANG: Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matriks kebingungan") plt.savefig("conf_matrix.png") plt.show()!}


    Ketepatan

    Metrik yang intuitif, jelas, dan hampir tidak digunakan adalah akurasi - persentase jawaban yang benar dari algoritme:



    Metrik ini tidak berguna dalam masalah dengan kelas yang tidak setara, dan mudah untuk menunjukkannya dengan sebuah contoh.


    Katakanlah kita ingin mengevaluasi kinerja filter email spam. Kami memiliki 100 email non-spam, 90 di antaranya pengklasifikasi kami diidentifikasi dengan benar (Benar Negatif = 90, Positif Palsu = 10), dan 10 email spam, 5 di antaranya pengklasifikasi juga diidentifikasi dengan benar (Benar Positif = 5, Negatif Palsu = lima ).
    Kemudian akurasi:



    Namun, jika kami hanya memprediksi semua email sebagai non-spam, kami akan mendapatkan akurasi yang lebih tinggi:



    Pada saat yang sama, model kami sama sekali tidak memiliki kekuatan prediksi, karena awalnya kami ingin mengidentifikasi pesan spam. Untuk mengatasinya, kita akan terbantu dengan transisi dari metrik umum untuk semua kelas ke indikator kualitas kelas yang terpisah.

    Presisi, recall dan F-measure

    Untuk menilai kinerja algoritme pada masing-masing kelas secara terpisah, kami memperkenalkan metrik presisi dan recall.




    Presisi dapat diartikan sebagai proporsi objek yang disebut oleh classifier sebagai positif dan pada saat yang sama benar-benar positif, dan recall menunjukkan berapa proporsi objek dari kelas positif dari semua objek dari kelas positif yang ditemukan oleh algoritma.



    Pengenalan presisi yang tidak memungkinkan kita untuk menulis semua objek ke dalam satu kelas, karena dalam hal ini kita mendapatkan peningkatan tingkat Positif Palsu. Recall menunjukkan kemampuan algoritma untuk mendeteksi kelas tertentu secara umum, dan presisi menunjukkan kemampuan untuk membedakan kelas ini dari kelas lain.


    Seperti yang kami catat sebelumnya, ada dua jenis kesalahan klasifikasi: Positif Palsu dan Negatif Palsu. Dalam statistik, jenis kesalahan pertama disebut kesalahan Tipe I, dan yang kedua disebut kesalahan Tipe II. Dalam masalah kami menentukan churn pelanggan, kesalahan jenis pertama adalah penerimaan pelanggan setia untuk pelanggan keluar, karena hipotesis nol kami adalah tidak ada pelanggan yang keluar, dan kami menolak hipotesis ini. Dengan demikian, kesalahan jenis kedua adalah "melewatkan" pelanggan yang keluar dan penerimaan hipotesis nol yang salah.


    Presisi dan recall tidak bergantung, berbeda dengan akurasi, pada rasio kelas dan oleh karena itu dapat diterapkan dalam kondisi sampel yang tidak seimbang.
    Seringkali dalam praktik nyata, tugasnya adalah menemukan keseimbangan optimal (untuk pelanggan) antara dua metrik ini. Contoh klasik adalah masalah menentukan churn pelanggan.
    Jelas kita tidak dapat menemukan dari semua pelanggan keluar dan hanya mereka. Namun, setelah mengidentifikasi strategi dan sumber daya untuk retensi pelanggan, kami dapat memilih ambang batas yang diperlukan untuk presisi dan penarikan kembali. Misalnya, Anda dapat berfokus untuk mempertahankan hanya pelanggan dengan hasil tinggi atau mereka yang kemungkinan besar akan pergi karena kami memiliki sumber daya pusat panggilan yang terbatas.


    Biasanya, ketika mengoptimalkan hyperparameters dari suatu algoritma (misalnya, dalam kasus iterasi di atas grid GridSearchCV), satu metrik digunakan, peningkatan yang kami harapkan akan terlihat pada sampel uji.
    Ada beberapa cara berbeda untuk menggabungkan presisi dan daya ingat ke dalam ukuran kualitas agregat. F-measure (secara umum) - presisi dan recall rata-rata harmonik:



    Dalam hal ini, ini menentukan bobot akurasi dalam metrik, dan ketika ini adalah rata-rata harmonik (dengan faktor 2, sehingga dalam kasus presisi = 1 dan mengingat = 1 untuk memiliki)
    F-measure mencapai maksimum ketika kelengkapan dan presisi sama dengan satu, dan mendekati nol jika salah satu argumen mendekati nol.
    Sklearn memiliki fungsi yang berguna _metrics.classification laporan, yang mengembalikan recall, precision, dan F-measure untuk setiap class, serta jumlah instance dari setiap class.


    report = klasifikasi_laporan (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) print (laporan)
    kelas presisi mengingat f1-skor mendukung
    Tidak diaduk 0.88 0.97 0.93 941
    Dikocok 0.60 0.25 0.35 159
    rata-rata / total 0.84 0.87 0.84 1100

    Perlu dicatat di sini bahwa dalam kasus masalah dengan kelas yang tidak seimbang, yang berlaku dalam praktik nyata, sering kali perlu menggunakan teknik modifikasi buatan dari kumpulan data untuk menyamakan rasio kelas. Ada banyak dari mereka, dan kami tidak akan menyentuhnya, Anda dapat melihat beberapa metode dan memilih salah satu yang sesuai dengan tugas Anda.

    AUC-ROC dan AUC-PR

    Saat mengonversi jawaban sebenarnya dari algoritme (sebagai aturan, probabilitas milik suatu kelas, lihat SVM secara terpisah) menjadi label biner, kita harus memilih beberapa ambang di mana 0 menjadi 1. Ambang batas yang sama dengan 0,5 tampak alami dan dekat , tetapi ternyata tidak selalu optimal, misalnya pada kekurangan keseimbangan kelas di atas.


    Salah satu cara untuk mengevaluasi model secara keseluruhan, tanpa terikat pada ambang batas tertentu, adalah AUC-ROC (atau ROC AUC) - area ( SEBUAH rea kamu nder C urve) di bawah kurva kesalahan ( R penerima HAI bekerja C kurva karakteristik). Kurva ini merupakan garis dari (0,0) sampai (1,1) pada koordinat True Positive Rate (TPR) dan False Positive Rate (FPR):




    Kita sudah tahu TPR, ini adalah kelengkapan, dan FPR menunjukkan berapa proporsi objek dari kelas negatif yang diprediksi oleh algoritma secara tidak benar. Dalam kasus ideal, ketika pengklasifikasi tidak membuat kesalahan (FPR = 0, TPR = 1), kita mendapatkan luas di bawah kurva sama dengan satu; jika tidak, ketika pengklasifikasi secara acak mengeluarkan probabilitas kelas, AUC-ROC akan cenderung 0,5, karena pengklasifikasi akan mengeluarkan jumlah TP dan FP yang sama.
    Setiap titik pada grafik sesuai dengan pilihan ambang batas tertentu. Area di bawah kurva dalam hal ini menunjukkan kualitas algoritme (lebih banyak lebih baik), selain itu, kecuraman kurva itu sendiri penting - kami ingin memaksimalkan TPR dengan meminimalkan FPR, yang berarti kurva kami idealnya cenderung cenderung titik (0,1).


    Kode gambar kurva ROC

    sns.set (font_scale = 1.5) sns.set_color_codes ("muted") plt.figure (figsize = (10, 8)) fpr, tpr, thresholds = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "kurva ROC") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate ") plt.ylabel (" Tingkat Positif Benar ") plt.title (" Kurva ROC ") plt.savefig (" ROC.png ") plt.show ()



    Kriteria AUC-ROC tahan terhadap kelas yang tidak seimbang (peringatan spoiler: sayangnya, tidak semuanya begitu jelas) dan dapat diartikan sebagai probabilitas bahwa objek positif yang dipilih secara acak akan diberi peringkat lebih tinggi oleh pengklasifikasi (akan memiliki probabilitas lebih tinggi untuk menjadi positif) daripada objek negatif yang dipilih secara acak ...


    Pertimbangkan masalah berikut: kita perlu memilih 100 dokumen yang relevan dari 1 juta dokumen. Kami telah menguasai dua algoritma:

    • Algoritma 1 mengembalikan 100 dokumen, 90 di antaranya relevan. Jadi,

    • Algoritma 2 mengembalikan 2000 dokumen, 90 di antaranya relevan. Jadi,


    Kemungkinan besar, kami akan memilih algoritme pertama yang menghasilkan sangat sedikit Positif Palsu dibandingkan dengan pesaingnya. Tetapi perbedaan False Positive Rate antara kedua algoritma ini sangat kecil - hanya 0,0019. Ini adalah konsekuensi dari fakta bahwa AUC-ROC mengukur proporsi Positif Palsu relatif terhadap Negatif Benar, dan dalam masalah di mana kelas kedua (lebih besar) tidak begitu penting bagi kami, itu mungkin tidak memberikan gambaran yang sepenuhnya memadai ketika membandingkan algoritme .


    Untuk memperbaiki situasi, mari kembali ke kelengkapan dan akurasi:

    • Algoritma 1

    • Algoritma 2


    Di sini, perbedaan signifikan antara kedua algoritma sudah terlihat - akurasi 0,855!


    Precision dan recall juga digunakan untuk membuat kurva dan, seperti AUC-ROC, mencari area di bawahnya.



    Dapat dicatat di sini bahwa pada kumpulan data kecil, area di bawah kurva PR bisa terlalu optimis, karena dihitung menggunakan metode trapesium, tetapi biasanya ada cukup data dalam tugas tersebut. Untuk detail tentang hubungan antara AUC-ROC dan AUC-PR, lihat di sini.

    Kerugian Logistik

    Fungsi kerugian logistik berdiri sendiri, didefinisikan sebagai:



    berikut adalah respon dari algoritma pada objek ke-, adalah label kelas yang sebenarnya pada objek ke-, dan ukuran sampel.


    Detail tentang interpretasi matematis dari fungsi kerugian logistik telah ditulis dalam kerangka posting tentang model linier.
    Metrik ini jarang muncul dalam persyaratan bisnis, tetapi sering kali dalam tugas di kaggle.
    Secara intuitif, minimisasi logloss dapat dianggap sebagai tugas memaksimalkan akurasi dengan menghukum prediksi yang salah. Namun, perlu dicatat bahwa logloss sangat menghukum untuk keyakinan pengklasifikasi dalam jawaban yang salah.


    Mari kita pertimbangkan sebuah contoh:


    def logloss_crutch (y_true, y_pred, eps = 1e-15): return - (y_true * np.log (y_pred) + (1 - y_true) * np.log (1 - y_pred)) print ("Logloss dengan klasifikasi tidak pasti% f "% logloss_crutch (1, 0.5)) >> Logloss dengan klasifikasi tidak pasti 0.693147 print (" Logloss dengan klasifikasi yakin dan jawaban benar% f "% logloss_crutch (1, 0.9)) >> Logloss dengan klasifikasi yakin dan jawaban benar 0.105361 print (" Logloss dengan klasifikasi yakin dan Jawaban salah% f "% logloss_crutch (1, 0.1)) >> Logloss dengan klasifikasi yakin dan jawaban salah 2.302585

    Perhatikan bagaimana logloss telah berkembang secara dramatis dengan jawaban yang salah dan klasifikasi yang meyakinkan!
    Akibatnya, kesalahan pada satu objek dapat mengakibatkan degradasi yang signifikan dari kesalahan sampel secara keseluruhan. Objek semacam itu seringkali merupakan outlier, yang harus diingat untuk disaring atau dipertimbangkan secara terpisah.
    Semuanya masuk ke tempatnya jika Anda menggambar grafik logloss:



    Dapat dilihat bahwa semakin mendekati nol respons algoritma dengan ground truth = 1, semakin tinggi nilai error dan semakin curam kurvanya.

    Mari kita rangkum:

    • Dalam kasus klasifikasi multi-kelas, Anda perlu hati-hati memantau metrik masing-masing kelas dan mengikuti logika keputusan tugas daripada mengoptimalkan metrik
    • Dalam kasus kelas yang tidak setara, perlu untuk memilih keseimbangan kelas untuk pelatihan dan metrik yang akan mencerminkan kualitas klasifikasi dengan benar.
    • dan madrugado untuk bantuan dengan artikel ini.

    Bab ini menyajikan metode populer untuk menilai kualitas model klasifikasi, yang, antara lain, digunakan dalam karya lain tentang topik ini. Deskripsi dan justifikasi metrik yang digunakan untuk penilaian ini diberikan.

    Metrik penilaian kualitas

    Akurasi penuh

    Metrik ini adalah salah satu metrik universal yang paling sederhana dan sekaligus universal untuk menilai kinerja algoritma klasifikasi. Nilai koefisien ini dihitung sebagai proporsi objek yang diklasifikasikan dengan benar dari jumlah total objek dalam sampel. Metrik ini populer karena kesederhanaannya dan kemampuannya untuk memperluas ke sejumlah kelas. Kerugian utama dari metrik ini adalah bahwa ia memberikan bobot yang sama untuk semua dokumen, yang mungkin salah dalam kasus perpindahan yang kuat dari dokumen dalam set pelatihan ke satu atau lebih kelas. Metrik ini dapat memiliki nilai tinggi, tetapi pengklasifikasi dalam kelas yang sama dapat menunjukkan kualitas pekerjaan yang sangat rendah. Pada saat yang sama, metrik tidak menandakan hal ini dengan cara apa pun.

    Presisi, kelengkapan, dan ukuran-F

    Metrik seperti presisi dan recall untuk pertama kalinya digunakan secara luas dalam menilai kinerja sistem memecahkan masalah pencarian informasi. Keakuratan sistem dalam satu kelas adalah proporsi objek yang benar-benar milik kelas tertentu relatif terhadap semua objek yang ditugaskan oleh sistem ke kelas ini. Kelengkapan dinyatakan sebagai proporsi objek yang ditemukan oleh pengklasifikasi milik kelas relatif terhadap semua objek kelas ini. Tabel 4 merupakan tabel kontingensi dari kelas tersendiri, dimana TP (positif benar) adalah keputusan positif benar, TN (negatif benar) adalah keputusan negatif benar, FP (positif palsu) adalah keputusan positif palsu, dan FN (negatif palsu ) adalah salah satu keputusan -negatif.

    Tabel 1 - Tabel kontingensi kelas objek

    Dengan demikian, presisi dan kelengkapan dihitung sebagai:

    F-measure menggabungkan informasi tentang akurasi dan kelengkapan dari algoritma yang dievaluasi. Ini dihitung sebagai rata-rata harmonik dari indikator akurasi dan kelengkapan:

    Karena kenyataan bahwa ukuran-F dihitung secara terpisah untuk setiap kelas, akan lebih mudah untuk menggunakannya untuk mencari dan menganalisis kesalahan spesifik dari algoritma, untuk mengevaluasi klasifikasi dengan beberapa kelas. Selain itu, dalam kasus sejumlah besar kelas, diperlukan karakteristik yang akan menggabungkan kelengkapan dan akurasi untuk semua kelas dan mencirikan perilaku sistem secara keseluruhan. Dalam karya ini, nilai agregat berikut digunakan untuk tujuan ini: presisi makro, yang dihitung sebagai rata-rata aritmatika dari akurasi untuk semua kelas, penarikan makro, yang dihitung sebagai rata-rata aritmatika dari kelengkapan untuk semua kelas, dan makro F-ukuran (Macro F-score), yang merupakan rata-rata harmonik di antara mereka.

    Validasi silang

    Validasi silang adalah salah satu metode paling umum untuk melakukan pengujian penuh dan menilai kinerja berbagai algoritma pembelajaran mesin. Untuk sampel independen, metode ini memungkinkan seseorang untuk mendapatkan perkiraan probabilitas kesalahan yang tidak bias, berbeda dengan kesalahan rata-rata pada sampel yang dilatih, yang dapat menjadi perkiraan bias dari probabilitas kesalahan karena overfitting dari algoritma. Keuntungan lain dari prosedur ini adalah kemampuan untuk memperoleh perkiraan probabilitas kesalahan algoritma, tanpa adanya sampel kontrol yang dirancang khusus untuk pengujian.

    Mari kita asumsikan bahwa adalah satu set deskripsi fitur objek di mana sampel kasus penggunaan yang terbatas ditentukan, di mana adalah satu set kelas yang terbatas. Pemetaan diberikan yang menetapkan algoritme ke pilihan kasus penggunaan yang sewenang-wenang. Kemudian kualitas algoritma untuk sampel sewenang-wenang dari preseden diperkirakan menggunakan kualitas fungsional:

    di mana beberapa fungsi non-negatif yang mengembalikan nilai kesalahan algoritma dengan label kelas yang benar.

    Halo, Habr!

    Dalam tugas pembelajaran mesin, metrik digunakan untuk menilai kualitas model dan membandingkan berbagai algoritme, dan pemilihan serta analisisnya merupakan bagian tak terpisahkan dari pekerjaan seorang datasatanist.

    Dalam artikel ini, kita akan melihat beberapa kriteria kualitas dalam masalah klasifikasi, membahas apa yang penting saat memilih metrik dan apa yang bisa salah.

    Metrik dalam masalah klasifikasi

    Untuk mendemonstrasikan fitur yang berguna sklearn dan representasi visual dari metrik, kami akan menggunakan dataset kami pada churn pelanggan operator telekomunikasi, yang kami temui di artikel pertama kursus.

    Mari kita memuat perpustakaan yang diperlukan dan melihat datanya

    Impor panda sebagai pd impor matplotlib.pyplot sebagai plt dari matplotlib.pylab impor rc, plot impor seaborn sebagai sns dari sklearn.preprocessing impor Labelmblencoder, OneHotEncoder dari sklearn.model_selection impor cross_val_score dari sklearn.linear_modelression Dari sklearnression GrainFormalization GrainFormalization. dari sklearn.metrics impor presisi_recall_curve, klasifikasi_laporan dari sklearn.model_selection impor train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")

    Df.head (5)

    Pra-pemrosesan data

    # Mari kita membuat pemetaan kolom biner # dan mengkodekan keadaan dengan pengkodean dummy (untuk kesederhanaan, lebih baik tidak melakukan ini untuk model kayu) d = ("Ya": 1, "Tidak": 0) df ["Rencana internasional "] = df [" Paket internasional "]. Peta (d) df [" Paket pesan suara "] = df [" Paket pesan suara "]. Peta (d) df [" Churn "] = df [" Churn "] Astype (" int64 " ) le = LabelEncoder () df ["State"] = le.fit_transform (df ["State"]) ohe = OneHotEncoder (sparse = False) encoded_state = ohe.fit_transform (df ["State"] .values.reshape (- 1, 1)) tmp = pd.DataFrame (encoded_state, kolom = ["state" + str (i) for i in range (encoded_state.shape)]) df = pd.concat (, axis = 1)

    Akurasi, presisi, dan daya ingat

    Sebelum beralih ke metrik itu sendiri, perlu untuk memperkenalkan konsep penting untuk menggambarkan metrik ini dalam hal kesalahan klasifikasi - matriks kebingungan(matriks kesalahan).
    Misalkan kita memiliki dua kelas dan algoritma yang memprediksi kepemilikan setiap objek ke salah satu kelas, maka matriks kesalahan klasifikasi akan terlihat seperti ini:

    Benar Positif (TP) Positif Palsu (FP)
    Negatif Palsu (FN) Negatif Benar (TN)

    ini adalah respon dari algoritma pada objek, dan

    Label kelas sebenarnya pada objek ini.
    Jadi, ada dua jenis kesalahan klasifikasi: False Negative (FN) dan False Positive (FP).

    Pelatihan algoritma dan konstruksi matriks kesalahan

    X = df.drop ("Churn", axis = 1) y = df ["Churn"] # Bagi sampel menjadi train dan test, semua metrik akan dievaluasi pada dataset test X_train, X_test, y_train, y_test = train_test_split ( X, y , stratify = y, test_size = 0.33, random_state = 42) # Latih regresi logistik asli lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Gunakan fungsi untuk membangun matriks kesalahan dari sklearn dokumentasi def plot_confusion_matrix (cm, class , normalize = False, title = "(! LANG: Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matriks kebingungan") plt.savefig("conf_matrix.png") plt.show()!}

    Ketepatan

    Metrik yang intuitif, jelas, dan hampir tidak digunakan adalah akurasi - persentase jawaban yang benar dari algoritme:

    Metrik ini tidak berguna dalam masalah dengan kelas yang tidak setara dan mudah untuk menunjukkannya dengan sebuah contoh.

    Katakanlah kita ingin mengevaluasi kinerja filter email spam. Kami memiliki 100 email non-spam, 90 di antaranya pengklasifikasi kami diidentifikasi dengan benar (Benar Negatif = 90, Positif Palsu = 10) dan 10 email spam, 5 di antaranya pengklasifikasi juga diidentifikasi dengan benar (Benar Positif = 5, Negatif Palsu = 5 ) .
    Kemudian akurasi:

    Namun, jika kami hanya memprediksi semua email sebagai non-spam, kami akan mendapatkan akurasi yang lebih tinggi:

    Pada saat yang sama, model kami tidak memiliki kekuatan prediksi sama sekali, karena kami awalnya ingin mengidentifikasi pesan spam. Untuk mengatasinya, kita akan terbantu dengan transisi dari metrik umum untuk semua kelas ke indikator kualitas kelas yang terpisah.

    Presisi, recall dan F-measure

    Untuk menilai kinerja algoritme pada masing-masing kelas secara terpisah, kami memperkenalkan metrik presisi dan recall.

    Presisi dapat diartikan sebagai proporsi objek yang disebut oleh classifier sebagai positif dan pada saat yang sama benar-benar positif, dan recall menunjukkan berapa proporsi objek dari kelas positif dari semua objek dari kelas positif yang ditemukan oleh algoritma.

    Pengenalan presisi yang tidak memungkinkan kita untuk menulis semua objek ke dalam satu kelas, karena dalam hal ini kita mendapatkan peningkatan tingkat Positif Palsu. Recall menunjukkan kemampuan algoritma untuk mendeteksi kelas tertentu secara umum, dan presisi menunjukkan kemampuan untuk membedakan kelas ini dari kelas lain.

    Seperti yang kami catat sebelumnya, ada dua jenis kesalahan klasifikasi: Positif Palsu dan Negatif Palsu. Dalam statistik, jenis kesalahan pertama disebut kesalahan Tipe I, dan yang kedua disebut kesalahan Tipe II. Dalam masalah kami menentukan churn pelanggan, kesalahan jenis pertama adalah penerimaan pelanggan setia untuk pelanggan keluar, karena hipotesis nol kami adalah tidak ada pelanggan yang pergi, dan kami menolak hipotesis ini. Dengan demikian, kesalahan jenis kedua adalah "melewatkan" pelanggan yang keluar dan penerimaan hipotesis nol yang salah.

    Presisi dan recall tidak bergantung, berbeda dengan akurasi, pada rasio kelas dan oleh karena itu dapat diterapkan dalam kondisi sampel yang tidak seimbang.
    Seringkali dalam praktik nyata, tugasnya adalah menemukan keseimbangan optimal (untuk pelanggan) antara dua metrik ini. Contoh klasik adalah masalah menentukan churn pelanggan.
    Jelas kita tidak dapat menemukan dari semua pelanggan keluar dan hanya mereka. Tetapi setelah mengidentifikasi strategi dan sumber daya untuk retensi pelanggan, kami dapat memilih ambang batas presisi dan penarikan yang diperlukan. Misalnya, Anda dapat berfokus untuk mempertahankan hanya pelanggan dengan hasil tinggi atau mereka yang lebih cenderung melaporkan, karena kami dibatasi oleh sumber daya pusat panggilan.

    Biasanya, ketika mengoptimalkan hyperparameters dari suatu algoritma (misalnya, dalam kasus iterasi di atas grid GridSearchCV), satu metrik digunakan, peningkatan yang kami harapkan akan terlihat pada sampel uji.
    Ada beberapa cara berbeda untuk menggabungkan presisi dan daya ingat ke dalam ukuran kualitas agregat. F-ukuran (secara umum

    ) - presisi rata-rata harmonik dan recall:

    dalam hal ini menentukan bobot akurasi dalam metrik dan untuk

    ini adalah mean harmonik (dengan pengali 2, sehingga dalam kasus presisi = 1 dan recall = 1, kami memiliki

    )
    F-measure mencapai maksimum ketika kelengkapan dan akurasi sama dengan satu dan mendekati nol jika salah satu argumen mendekati nol.
    Sklearn memiliki fungsi yang berguna _metrics.classification laporan mengembalikan ingatan, presisi dan ukuran-F untuk masing-masing kelas, serta jumlah instance dari setiap kelas.

    Laporan = klasifikasi_laporan (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) print (laporan)

    kelas presisi mengingat f1-skor mendukung
    Tidak diaduk 0.88 0.97 0.93 941
    Dikocok 0.60 0.25 0.35 159
    rata-rata / total 0.84 0.87 0.84 1100

    Perlu dicatat di sini bahwa dalam kasus masalah dengan kelas yang tidak seimbang, yang berlaku dalam praktik nyata, sering kali perlu menggunakan teknik modifikasi buatan dari kumpulan data untuk menyamakan rasio kelas. Ada banyak dari mereka dan kami tidak akan menyentuhnya, Anda dapat melihat beberapa metode dan memilih salah satu yang sesuai dengan tugas Anda.

    AUC-ROC dan AUC-PR

    Saat mengonversi jawaban sebenarnya dari algoritme (sebagai aturan, probabilitas milik suatu kelas, lihat SVM secara terpisah) menjadi label biner, kita harus memilih beberapa ambang di mana 0 menjadi 1. Ambang batas yang sama dengan 0,5 tampak alami dan dekat , tetapi ternyata tidak selalu optimal, misalnya pada kekurangan keseimbangan kelas di atas.

    Salah satu cara untuk mengevaluasi model secara keseluruhan, tanpa terikat pada ambang batas tertentu, adalah AUC-ROC (atau ROC AUC) - area ( SEBUAH rea kamu nder C urve) di bawah kurva kesalahan ( R penerima HAI bekerja C kurva karakteristik). Kurva ini merupakan garis dari (0,0) sampai (1,1) pada koordinat True Positive Rate (TPR) dan False Positive Rate (FPR):

    Kita sudah tahu TPR, ini adalah kelengkapan, dan FPR menunjukkan berapa proporsi objek dari kelas negatif yang diprediksi oleh algoritma secara tidak benar. Idealnya, ketika pengklasifikasi tidak membuat kesalahan (FPR = 0, TPR = 1), kita akan mendapatkan luas di bawah kurva sama dengan satu, sebaliknya, ketika pengklasifikasi secara acak mengeluarkan probabilitas kelas, AUC-ROC akan cenderung 0,5, karena classifier akan mengeluarkan jumlah TP dan FP yang sama.
    Setiap titik pada grafik sesuai dengan pilihan ambang batas tertentu. Area di bawah kurva dalam hal ini menunjukkan kualitas algoritme (lebih banyak lebih baik), selain itu, kecuraman kurva itu sendiri penting - kami ingin memaksimalkan TPR dengan meminimalkan FPR, yang berarti kurva kami idealnya cenderung cenderung titik (0,1).

    Kode gambar kurva ROC

    Sns.set (font_scale = 1.5) sns.set_color_codes ("muted") plt.figure (figsize = (10, 8)) fpr, tpr, thresholds = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "kurva ROC") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate ") plt.ylabel (" Tingkat Positif Benar ") plt.title (" Kurva ROC ") plt.savefig (" ROC.png ") plt.show ()

    Kriteria AUC-ROC tahan terhadap kelas yang tidak seimbang (spoiler: sayangnya, tetapi tidak semuanya begitu jelas) dan dapat diartikan sebagai probabilitas bahwa objek positif yang dipilih secara acak akan diberi peringkat oleh pengklasifikasi yang lebih tinggi (akan memiliki probabilitas yang lebih tinggi untuk menjadi positif) daripada objek negatif yang dipilih secara acak.

    Pertimbangkan masalah berikut: kita perlu memilih 100 dokumen yang relevan dari 1 juta dokumen. Kami telah menguasai dua algoritma:

    • Algoritma 1 mengembalikan 100 dokumen, 90 di antaranya relevan. Jadi,
    • Algoritma 2 mengembalikan 2000 dokumen, 90 di antaranya relevan. Jadi,

    Kemungkinan besar, kami akan memilih algoritme pertama yang menghasilkan sangat sedikit Positif Palsu dibandingkan dengan pesaingnya. Tetapi perbedaan False Positive Rate antara kedua algoritma ini sangat kecil - hanya 0,0019. Ini adalah konsekuensi dari fakta bahwa AUC-ROC mengukur proporsi Positif Palsu relatif terhadap Negatif Benar, dan dalam masalah di mana kelas kedua (lebih besar) tidak begitu penting bagi kami, itu mungkin tidak memberikan gambaran yang sepenuhnya memadai ketika membandingkan algoritme .

    Untuk memperbaiki situasi, mari kembali ke kelengkapan dan akurasi:

    • Algoritma 1
    • Algoritma 2

    Di sini, perbedaan signifikan antara kedua algoritma sudah terlihat - akurasi 0,855!

    Precision dan recall juga digunakan untuk membuat kurva dan, seperti AUC-ROC, mencari area di bawahnya.

    Dapat dicatat di sini bahwa pada kumpulan data kecil, area di bawah kurva PR bisa terlalu optimis, karena dihitung menggunakan metode trapesium, tetapi biasanya ada cukup data dalam tugas tersebut. Untuk detail tentang hubungan antara AUC-ROC dan AUC-PR, lihat di sini.

    Kerugian Logistik

    Fungsi kerugian logistik berdiri sendiri, didefinisikan sebagai:

    ini adalah jawaban algoritme untuk

    objek ohm,

    label kelas yang sebenarnya pada

    Objek ohm, dan

    ukuran sampel.

    Detail tentang interpretasi matematis dari fungsi kerugian logistik telah ditulis dalam kerangka posting tentang model linier.
    Metrik ini jarang muncul dalam persyaratan bisnis, tetapi sering kali dalam tugas di kaggle.
    Secara intuitif, minimisasi logloss dapat dianggap sebagai tugas memaksimalkan akurasi dengan menghukum kesalahan prediksi. Namun, perlu dicatat bahwa logloss sangat menghukum untuk keyakinan pengklasifikasi dalam jawaban yang salah.

    Mari kita pertimbangkan sebuah contoh:

    Def logloss_crutch (y_true, y_pred, eps = 1e-15): return - (y_true * np.log (y_pred) + (1 - y_true) * np.log (1 - y_pred)) print ("Logloss dengan klasifikasi tidak pasti% f "% logloss_crutch (1, 0.5)) >> Logloss dengan klasifikasi tidak pasti 0.693147 print (" Logloss dengan klasifikasi yakin dan jawaban benar% f "% logloss_crutch (1, 0.9)) >> Logloss dengan klasifikasi yakin dan jawaban benar 0.105361 print (" Logloss dengan klasifikasi yakin dan Jawaban salah% f "% logloss_crutch (1, 0.1)) >> Logloss dengan klasifikasi yakin dan jawaban salah 2.302585

    Perhatikan bagaimana logloss telah berkembang secara dramatis dengan jawaban yang salah dan klasifikasi yang meyakinkan!
    Akibatnya, kesalahan pada satu objek dapat mengakibatkan degradasi yang signifikan dari kesalahan sampel secara keseluruhan. Objek semacam itu seringkali merupakan outlier, yang harus diingat untuk disaring atau dipertimbangkan secara terpisah.
    Semuanya masuk ke tempatnya jika Anda menggambar grafik logloss:

    Dapat dilihat bahwa semakin mendekati nol respons algoritma dengan ground truth = 1, semakin tinggi nilai error dan semakin curam kurvanya.

    Menyimpulkan:

    • Dalam kasus klasifikasi multi-kelas, Anda perlu hati-hati memantau metrik masing-masing kelas dan mengikuti logika keputusan tugas daripada mengoptimalkan metrik
    • Dalam kasus kelas yang tidak setara, perlu untuk memilih keseimbangan kelas untuk pelatihan dan metrik yang akan mencerminkan kualitas klasifikasi dengan benar.
    • Pilihan metrik harus dilakukan dengan fokus pada area subjek, pra-pemrosesan data dan, mungkin, segmentasi (seperti dalam kasus membagi menjadi pelanggan kaya dan miskin)

    tautan yang bermanfaat

    1. Kursus Evgeny Sokolov: Seminar tentang pilihan model (ada informasi tentang metrik masalah regresi)
    2. Masalah pada AUC-ROC dari A.G. Dyakonova
    3. Anda dapat membaca lebih lanjut tentang metrik lain di kaggle. Tautan ke kompetisi tempat digunakannya telah ditambahkan ke deskripsi setiap metrik
    4. Presentasi oleh Bogdan Melnik alias ld86 tentang pelatihan sampel tidak seimbang

    UDC 519.816

    S.V. SEMENIKHIN L.A. DENISOVA

    Universitas Teknik Negeri Omsk

    METODE PEMBELAJARAN MESIN RANGE

    BERDASARKAN ALGORITMA GENETIK YANG DIMODIFIKASI UNTUK METRIK YRSO

    Masalah peringkat dokumen pada halaman hasil pencarian informasi dan masalah mesin pembelajaran peringkat dipertimbangkan. Sebuah pendekatan diusulkan untuk mengoptimalkan fungsi peringkat menggunakan metrik kualitas NOCO berdasarkan algoritma genetika yang dimodifikasi. Penelitian algoritma yang dikembangkan (pada koleksi tes LETO ^ dilakukan dan efektivitasnya untuk pembelajaran mesin peringkat ditunjukkan.

    Kata kunci: temu kembali informasi, peringkat pembelajaran mesin, relevansi, optimasi, algoritma genetika.

    1. Perkenalan. Dalam sistem temu kembali informasi modern (ISS), volume data yang dioperasikan oleh sistem sangat besar sehingga tugas utamanya adalah memberi peringkat dokumen yang relevan sebagai tanggapan atas permintaan pencarian pengguna. Pada tahap pengembangan ISS ini, peringkat pembelajaran mesin (ML) sangat menarik. Pendekatan yang ada untuk ML, berdasarkan metode numerik (khususnya, metode gradien) atau pada perhitungan analitis, memiliki sejumlah kelemahan yang secara signifikan mempengaruhi kualitas pencarian informasi dan waktu yang dibutuhkan untuk menentukan peringkat dokumen yang relevan.

    Pada awal penelitian, pendekatan daftar untuk peringkat pembelajaran mesin dipertimbangkan, yang sebagian besar menggunakan metode penurunan gradien. Dalam pekerjaan yang dipertimbangkan, ML direduksi menjadi optimalisasi metrik kualitas pencarian (SEQ), tetapi hanya metrik yang diwakili oleh fungsi berkelanjutan yang digunakan. Keterbatasan ini sering mengarah pada fakta bahwa, sebagai hasil optimasi, fungsi peringkat memiliki skor yang lebih rendah untuk banyak indikator penting yang diterima (DCG, nDCG, Graded Mean Reciprocal Rank, dll.), yang merupakan fungsi diskrit. Makalah ini mengusulkan penggunaan algoritme genetika (GA) dalam mengajar peringkat untuk meminimalkan fungsi kerugian Huber menggunakan penilaian ahli tentang relevansi sebagai nilai referensi. Pendekatan ML berdasarkan optimalisasi metrik diskrit kualitas pengambilan informasi juga diusulkan.

    2. Pernyataan masalah peringkat pembelajaran mesin. Dalam kebanyakan sistem temu kembali informasi modern, fungsi peringkat dibangun berdasarkan n fungsi peringkat sederhana (PRF) dan dapat ditulis sebagai:

    di mana SRF¡ adalah fungsi peringkat sederhana ke-¡ untuk dokumen d dan kueri q, Wci adalah koefisien bobot dari fungsi peringkat sederhana ke-¡, n adalah jumlah PRF dalam sistem peringkat.

    Selama pembelajaran mesin untuk peringkat, satu set dokumen pencarian B dan kueri O dari kumpulan tes LBTOY digunakan. Untuk semua permintaan deO, pasangan dibentuk dengan setiap dokumen deD. Untuk setiap pasangan tersebut, IRS menentukan nilai relevansi yang digunakan untuk menentukan peringkat hasil pencarian. Untuk mengevaluasi kualitas peringkat, sistem memerlukan nilai relevansi referensi E untuk setiap pasangan kueri dokumen ^, e). Untuk tujuan ini, penilaian ahli tentang relevansi digunakan.

    Untuk melakukan penelitian, digunakan ISS, di mana peringkat dibuat berdasarkan N = 5 fungsi peringkat sederhana SRFi (WC) l = 1, N, yang membentuk kriteria vektor optimalitas:

    di mana WCе (WC) adalah vektor dari parameter variabel; (ШС), (ЯБ) masing-masing adalah ruang parameter dan kriteria vektor.

    Penerapan algoritme genetika untuk peringkat ML memungkinkan untuk memaksimalkan metrik kualitas diskrit seperti nDCG. Metrik nDCG untuk peringkat dokumen di mesin pencari ditentukan sesuai dengan ekspresi:

    DCG @ n = X 2 ---

    RF (q, d) = X WC. SRF., I = 1 1 1

    dimana nilai (p) adalah rata-rata nilai relevansi yang diberikan oleh pakar terhadap dokumen yang berada pada posisi p dalam daftar hasil, gradee; 1 / log2 (2 + p) - koefisien tergantung pada posisi dokumen (dokumen pertama memiliki bobot lebih).

    Kemudian versi NDCG yang dinormalisasi akan ditulis sebagai:

    N000 @ n = RSD @ n / g,

    di mana r adalah faktor normalisasi, yang sama dengan nilai maksimum yang mungkin 0С [dilindungi email] n untuk kueri yang diberikan (yaitu sama dengan OOO dari peringkat ideal).

    Jadi, untuk mengoptimalkan (memaksimalkan) metrik OSS, fungsi tujuan (YM) akan ditulis dalam bentuk berikut

    3. Metrik kualitas peringkat hasil pencarian. Saat memeringkat dokumen dalam hasil pencarian, metrik kualitas bertindak sebagai kriteria. Dari daftar metrik yang berlaku umum untuk menilai kualitas ISS, tiga yang utama dipilih yang menilai akurasi, relevansi dan kelengkapan pencarian informasi.

    1. Kriteria keakuratan pencarian informasi

    dimana a adalah jumlah dokumen relevan yang ditemukan, b adalah jumlah dokumen yang disalahartikan relevan.

    2. Kriteria Bpref, yang mengevaluasi relevansi pencarian informasi, digunakan untuk memproses pekerjaan dengan R dokumen yang relevan dan dihitung dengan rumus

    Bpref = - ^ (1 - Non Re ¡Sebelum (r) / R). (4)

    Di sini, r menunjukkan dokumen relevan yang diketahui, dan NonRelBefore (r) - jumlah dokumen tidak relevan yang diketahui berperingkat lebih tinggi dari r (hanya R pertama dari perkiraan dokumen tidak relevan dari proses yang diperhitungkan dalam perhitungan).

    3. Kriteria kelengkapan hasil pencarian

    r = a / (a ​​+ c),

    dimana a adalah jumlah dokumen relevan yang ditemukan, c adalah jumlah dokumen relevan yang tidak ditemukan.

    4. Koleksi uji. Dalam tugas pembelajaran mesin, pemeringkatan memerlukan sekumpulan dokumen dan kueri dengan skor relevansi terkait yang ditentukan oleh para ahli. Data ini digunakan untuk pembelajaran mesin fungsi peringkat serta untuk penilaian kualitas.

    peringkat hasil pencarian oleh sistem. Dalam proses ML, kumpulan pengujian digunakan sebagai set pelatihan dan, oleh karena itu, memiliki dampak yang signifikan pada hasil. Kumpulan uji dokumen dan permintaan LETOR digunakan untuk penelitian. Koleksi ini digunakan untuk penelitian temu kembali informasi oleh Microsoft Research. Meja 1 menunjukkan karakteristik koleksi tes LETOR.

    5. Algoritma genetika yang dimodifikasi. Untuk menggunakan algoritma genetika dalam pembelajaran mesin untuk peringkat, masalah harus dirumuskan sedemikian rupa sehingga solusinya dikodekan sebagai vektor (genotipe), di mana setiap gen dapat berupa bit, angka, atau objek lain. Dalam hal ini, genotipe diwakili oleh vektor bobot untuk faktor peringkat yang sesuai. Kondisi untuk menghentikan eksekusi algoritma genetika adalah menemukan solusi optimal, habisnya jumlah generasi atau waktu yang dialokasikan untuk evolusi.

    Perlu dicatat bahwa GA paling efektif dalam mencari area ekstrem global, tetapi mereka dapat bekerja dengan lambat ketika diperlukan untuk menemukan minimum lokal di area ini. Cara yang diusulkan untuk menghindari kelemahan ini adalah dengan membuat algoritma genetika yang dimodifikasi (MGA), yang akan beralih ke algoritma optimasi lokal (berkecepatan tinggi) setelah menemukan wilayah optimum global menggunakan GA dasar. MGA yang diusulkan adalah metode hybrid berdasarkan GA klasik dan metode Nelder - Mead (algoritma simpleks). Metode Nelder - Mead, algoritma optimasi nonlinier yang sering digunakan, adalah metode numerik untuk menemukan fungsi tujuan minimum dalam ruang multidimensi. Algoritma MGA hybrid yang diusulkan dalam makalah ini beralih ke metode Nelder - Mead setelah kondisi untuk menghentikan GA terpenuhi. Diagram blok dari algoritma MGA ditunjukkan pada Gambar. satu.

    Saat melakukan penelitian, batasan jumlah perhitungan fungsi tujuan (Nrf = 16.000) diterima saat mencari wilayah ekstrem global dan kondisi untuk beralih ke algoritma optimasi lokal berdasarkan metode Nelder - Mead (setelah algoritma genetika dasar telah melakukan 75% operasi Nrf).

    6. Hasil. Sebagai hasil dari penelitian yang dilakukan menggunakan algoritma pembelajaran mesin

    Tabel 1

    Jumlah dokumen dan kueri dalam kumpulan pengujian

    Nama kumpulan pengujian Nama subsistem Jumlah permintaan Jumlah dokumen

    LETOR 4.0 MQ2007 1692 69623

    LETOR 4.0 MQ2008 784 15211

    LETOR 3.0 OHSUMED 106 16140

    LETOR 3.0 Pemerintah03td 50 49058

    LETOR 3.0 Gov03np 150 148657

    LETOR 3.0 Gov03hp 150 147606

    LETOR 3.0 Pemerintah04td 75 74146

    LETOR 3.0 Gov04np 75 73834

    LETOR 3.0 Pemerintah04hp 75 74409

    Beras. 1. Blok diagram algoritma MVL hybrid berdasarkan algoritma genetika dan metode Nelder-Mead

    Untuk menentukan peringkat LTR-MGA, diperoleh vektor bobot WC * untuk fungsi peringkat. Selanjutnya, berdasarkan data dari kumpulan tes LETOYA, kualitas peringkat dinilai, yang metrik kualitas dihitung. Metrik diskrit kualitas peringkat [dilindungi email] mengevaluasi kualitas n dokumen pertama dari respon sistem. Metrik yang diterima secara umum untuk menilai kualitas peringkat adalah: [dilindungi email], [dilindungi email] dan [dilindungi email] Namun, untuk pertimbangan yang lebih mendetail tentang perubahan metrik yang bergantung pada nilainya [dilindungi email] untuk semua n dari 1 hingga 10. Untuk membandingkan efisiensi algoritma yang dikembangkan dengan solusi yang ada, analisis komparatif dilakukan menggunakan algoritma peringkat yang disediakan dalam koleksi LETOIA 3.0. Hasil menjalankan algoritma untuk koleksi uji TB2003 dan TB2004 untuk metrik NDCG ditunjukkan pada Gambar. 2. Hasil menunjukkan bahwa algoritma LTR-MGA mengungguli algoritma pengujian, dengan nilai tertinggi adalah

    adalah untuk [dilindungi email](pada tingkat dokumen pertama). Keunggulan algoritma LTR-MGA adalah karena fakta bahwa, berbeda dengan fungsi peringkat pengujian yang dipertimbangkan dalam eksperimen, dalam pendekatan yang diusulkan untuk mengoptimalkan fungsi peringkat, metrik NDCG yang digunakan sebagai fungsi tujuan.

    Untuk menilai kualitas peringkat saat menggunakan algoritma LTR-MGA yang diusulkan, nilai metrik kualitas untuk dokumen peringkat dalam hasil pencarian dihitung (Gbr. 3). Perbandingan hasil peringkat (Tabel 2) saat menggunakan fungsi peringkat dasar, algoritma dasar LTR-GA dan algoritma LTR-MGA yang dimodifikasi menunjukkan keunggulan yang terakhir.

    Selain itu, studi memperkirakan waktu yang dibutuhkan untuk peringkat MO. Hal ini diperlukan untuk memastikan bahwa metode LTR-MGA yang diusulkan lebih unggul dalam indikator ini daripada pendekatan yang didasarkan pada penggunaan tradisional.

    Beras. 2. Perbandingan algoritma pembelajaran mesin untuk peringkat

    oleh metrik NDCG untuk koleksi pengujian: di sebelah kiri - set data Gov03td, di sebelah kanan - set data Gov04td

    Beras. 3. Evaluasi metrik kualitas peringkat untuk formula peringkat dasar dan algoritma pembelajaran LTR-GA dan LTR-MGA

    Metrik peringkat kualitas untuk algoritme pembelajaran mesin peringkat yang berbeda

    Meja 2

    Metrik kualitas peringkat Fungsi peringkat dasar LTR-GA LTR-MGA Meningkatkan nilai metrik,%

    Akurasi 0.201 0.251 0.267 26.81

    [dilindungi email](5 dokumen pertama) 0,149 0,31 0,339 90,47

    [dilindungi email](10 dokumen pertama) 0,265 0,342 0,362 29,14

    Bpref 0.303 0.316 0.446 51.49

    Kelengkapan 0.524 0.542 0.732 39.03

    * Nilai terbaik untuk metrik yang sesuai disorot dalam warna abu-abu

    algoritma genetika onnogo (LTA-OL). Hasil perbandingan waktu yang dihabiskan untuk eksekusi algoritma LTY-OL dan LTY-MOL ditunjukkan pada tabel. 3.

    7. Kesimpulan. Dengan demikian, penelitian yang dilakukan menunjukkan bahwa ketika menggunakan pendekatan yang diusulkan, nilai metrik peringkat yang dipertimbangkan dalam ISS meningkat (rata-rata 19,55% dibandingkan dengan algoritma LTL-OL). Ini menegaskan bahwa LITA-MOL bekerja dengan benar dan secara signifikan meningkatkan fungsi peringkat, dengan kata lain, berhasil memecahkan masalah optimasi. Menggunakan algoritma yang dimodifikasi

    Karena penerapan metode optimasi lokal dan pembatasan yang diperkenalkan pada jumlah perhitungan fungsi tujuan, waktu pembelajaran mesin telah berkurang (rata-rata sebesar 17,71% dibandingkan dengan penggunaan algoritme genetika tradisional LTIAOL).

    Algoritma pembelajaran mesin yang dikembangkan untuk peringkat LТY-MOL dapat digunakan di ISS yang menggunakan model peringkat berdasarkan kombinasi fungsi peringkat sederhana. Namun, beberapa batasan pada penerapan pendekatan yang diusulkan harus diperhitungkan. Berdasarkan

    Memperkirakan waktu eksekusi peringkat pembelajaran mesin tergantung pada ukuran sampel pelatihan

    Tabel 3

    Ukuran koleksi dokumen teks

    Waktu eksekusi LTR-GA

    Waktu Operasi LTR-MGA

    Pengurangan waktu eksekusi,%

    Nilai rata-rata

    * Nilai terbaik untuk ukuran koleksi tes yang sesuai disorot dalam warna abu-abu

    dari hasil yang diperoleh, terungkap bahwa setelah MO, peningkatan tertinggi diamati pada metrik kualitas peringkat, yang nilainya diambil sebagai fungsi tujuan. Pada saat yang sama, metrik lain mungkin tidak memiliki peningkatan yang signifikan, dan dalam beberapa kasus bahkan memperburuk nilainya. Sebagai salah satu pendekatan yang mungkin untuk menghilangkan kekurangan ini, diusulkan untuk memecahkan masalah optimasi sebagai satu multi-kriteria: untuk secara seragam meningkatkan beberapa metrik peringkat utama hasil pencarian, bukan mengoptimalkan satu. Selain itu, dalam studi selanjutnya, direncanakan untuk mengembangkan metodologi untuk membangun fungsi tujuan berdasarkan konvolusi linier dari metrik kualitas peringkat utama untuk meningkatkan proses pencarian informasi.

    Daftar bibliografi

    1. Ikat-Yan Liu. Belajar Peringkat untuk Pencarian Informasi // Yayasan Jurnal dan Tren Pencarian Informasi. Jil. 3, edisi 3. Maret 2009. Hal. 225-331.

    2. Christopher J.C. Burges, Tal Shaked, Erin Renshaw. Belajar Peringkat menggunakan Gradient Descent // Proceeding ICML "05 Prosiding konferensi internasional ke-22 tentang Pembelajaran mesin. 2005. P. 89-96.

    3. Semenikhin, SV Investigasi pendekatan pembelajaran mesin untuk peringkat dokumen oleh sistem pencarian berdasarkan algoritma genetika / SV Semenikhin // Rusia Muda: teknologi canggih dalam industri. - 2013. - No. 2. - Hal. 82 - 85.

    4. Optimalisasi multikriteria berdasarkan algoritma genetika dalam sintesis sistem kontrol: monografi. / L.A. Denisova. - Omsk: Penerbitan OmSTU, 2014 .-- 170 hal. - ISBN 978-5-8149-1822-2.

    5. Denisova, L. A. Otomatisasi sintesis parametrik dari sistem kontrol menggunakan algoritma genetika / L. A. Denisova, V. A. Meshcheryakov // Otomasi dalam industri. - 2012. - No. 7. - Hal. 34 - 38.

    6. Huber, Peter J. Estimasi Kuat dari Parameter Lokasi // Annals of Statistics. - 1964. - No. 53. - Hal. 73-101.

    7. Semenikhin, S. V. Otomatisasi pencarian informasi berdasarkan optimasi multikriteria dan algoritma genetika / S. V. Semenikhin, L. A. Denisova // Dinamika sistem, mekanisme dan mesin. - 2014. - No. 3. - Hal. 224 - 227.

    8. Tie-Yan Liu, Jun Xu, Tao Qin, Wenying Xiong dan Hang Li. LETOR: Dataset Tolok Ukur untuk Penelitian Pembelajaran Berperingkat untuk Pengambilan Informasi // SIGIR 2007 Lokakarya Pembelajaran Berperingkat untuk Pengambilan Informasi. - 2007 .-- S. 3-10.

    9. Ageev, MS Metrik resmi RMIP "2004 / MS Ageev, IE Kuralenok // II Seminar Rusia tentang penilaian metode pengambilan informasi (ROMIP 2004), Pushchino, 2004: tr.; Ed. S. Nekrest'yanova. - St. Petersburg: Institut Penelitian Kimia, Universitas Negeri St. Petersburg.- P. 142-150.

    10. J. A. Nelder, R. Mead, Metode simpleks untuk minimalisasi fungsi, The Computer Journal 7 (1965). 308-313.

    Svyatoslav Vitalievich SEMENIKHIN, mahasiswa pascasarjana dari Departemen Sistem Pemrosesan dan Kontrol Informasi Otomatis. Alamat korespondensi: [dilindungi email] DENISOVA Lyudmila Albertovna, Doktor Ilmu Teknis, Associate Professor Departemen Sistem Pemrosesan dan Kontrol Informasi Otomatis. Alamat korespondensi: [dilindungi email]