Jadual Kandungan
Pengenalan
Objektif pembelajaran
Jadual Kandungan
Apakah pembelajaran dalam talian?
Batch vs. Learning Online: Gambaran Keseluruhan Perbandingan
Kelebihan pembelajaran dalam talian dalam aplikasi masa nyata
Pengenalan kepada algoritma pasif-agresif
Peranan kehilangan engsel dalam pembelajaran pasif-agresif
Definisi kehilangan engsel
Memahami persamaan
Perumusan matematik algoritma pasif-agresif
Langkah1: Mulakan vektor berat w
Langkah 2: Untuk setiap titik data baru (xi, yi), di mana xiis vektor ciri dan yi adalah label sebenar, label yang diramalkan ŷ_IIS dikira sebagai:
Langkah3: Kirakan kehilangan engsel
Langkah4: Laraskan vektor berat w menggunakan peraturan kemas kini berikut
Memahami parameter agresif (c)
Kesan Regularization dalam algoritma pasif-agresif
Formula untuk ini diberikan sebagai:
Perbezaannya boleh dinyatakan dengan mudah seperti berikut:
Aplikasi masa nyata algoritma pasif-agresif
Penapisan spam
Analisis sentimen
Pengesanan ucapan benci
Pengesanan penipuan
Analisis pasaran saham
Sistem Penghalasan
Batasan dan cabaran
Membina Model Pengesanan Ucapan Kebencian
Menyediakan persekitaran anda untuk pemprosesan data masa nyata
Pasang perpustakaan yang diperlukan
Import Perpustakaan dan Sediakan Reddit API
Membersihkan dan memproses teks
Sediakan model Bert pretrained untuk pelabelan
Tukar teks ke vektor menggunakan embeddings Bert
Aliran data reddit masa nyata dan melatih pengelas pasif-agresif
Menilai prestasi model
Kesimpulan
Soalan yang sering ditanya
Rumah Peranti teknologi AI Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Apr 13, 2025 am 11:09 AM

Pengenalan

Data dijana pada kadar yang belum pernah terjadi sebelumnya dari sumber seperti media sosial, urus niaga kewangan, dan platform e-dagang. Mengendalikan aliran maklumat yang berterusan ini adalah satu cabaran, tetapi ia menawarkan peluang untuk membuat keputusan yang tepat pada masanya dan tepat. Sistem masa nyata, seperti urus niaga kewangan, pembantu suara, dan sistem pemantauan kesihatan, bergantung kepada pemprosesan data yang berterusan untuk memberikan respons yang relevan dan terkini.

Algoritma pembelajaran batch seperti KNN, SVM, dan pokok keputusan memerlukan keseluruhan dataset dimuatkan ke dalam ingatan semasa latihan. Apabila bekerja dengan dataset yang besar, ini menjadi semakin tidak praktikal, yang membawa kepada masalah penyimpanan dan memori yang signifikan. Ini juga tidak cekap apabila bekerja dengan data masa nyata.

Oleh kerana isu ini, kami memerlukan algoritma yang cekap dan tepat apabila berurusan dengan sejumlah besar data. Algoritma pasif-agresif membezakan diri mereka dalam hal ini. Tidak seperti algoritma pembelajaran batch, mereka tidak perlu dilatih dalam dataset penuh untuk membuat ramalan. Algoritma pasif-agresif belajar dari data dengan cepat, menghapuskan keperluan untuk menyimpan atau memproses keseluruhan dataset ke dalam ingatan.

Objektif pembelajaran

  • Pembelajaran dalam talian dan kepentingannya apabila bekerja dengan jumlah data yang besar.
  • Perbezaan antara pembelajaran dalam talian dan algoritma pembelajaran batch.
  • Intuisi matematik di belakang algoritma pasif-agresif.
  • Hiperparameter yang berbeza dan kepentingan mereka dalam algoritma pasif-agresif.
  • Aplikasi dan penggunaan kes algoritma pasif-agresif.
  • Batasan dan cabaran algoritma pasif-agresif.
  • Melaksanakan pengelas pasif-agresif di Python untuk mengesan ucapan benci dari data reddit masa nyata.

Artikel ini diterbitkan sebagai sebahagian daripada Blogathon Sains Data.

Jadual Kandungan

  • Apakah pembelajaran dalam talian?
    • Kelebihan pembelajaran dalam talian dalam aplikasi masa nyata
  • Pengenalan kepada algoritma pasif-agresif
  • Peranan kehilangan engsel dalam pembelajaran pasif-agresif
  • Perumusan matematik algoritma pasif-agresif
    • Memahami parameter agresif (c)
  • Kesan Regularization dalam algoritma pasif-agresif
  • Aplikasi masa nyata algoritma pasif-agresif
  • Batasan dan cabaran
  • Membina Model Pengesanan Ucapan Kebencian
    • Menyediakan persekitaran anda untuk pemprosesan data masa nyata
    • Sediakan model Bert pretrained untuk pelabelan
  • Soalan yang sering ditanya

Apakah pembelajaran dalam talian?

Pembelajaran dalam talian, juga dikenali sebagai pembelajaran tambahan, adalah paradigma pembelajaran mesin di mana model dikemas kini secara bertahap dengan setiap titik data baru dan bukannya dilatih pada dataset tetap sekaligus. Pendekatan ini membolehkan model terus menyesuaikan diri dengan data baru, menjadikannya sangat berguna dalam persekitaran dinamik di mana data berkembang dari masa ke masa. Tidak seperti kaedah pembelajaran kumpulan tradisional, pembelajaran dalam talian membolehkan kemas kini masa nyata dan membuat keputusan dengan memproses maklumat baru apabila tiba.

Batch vs. Learning Online: Gambaran Keseluruhan Perbandingan

Marilah kita melihat perbandingan pembelajaran dalam talian di bawah:

Pembelajaran Batch:

  • Kaedah Latihan: Algoritma pembelajaran batch melatih pada dataset tetap sekaligus. Setelah dilatih, model ini digunakan untuk ramalan sehingga ia dilatih semula dengan data baru.
  • Contoh: Rangkaian Neural, Mesin Vektor Sokongan (SVM), Jiran K-terdekat (KNN).
  • Cabaran: Latihan semula memerlukan pemprosesan keseluruhan dataset dari awal, yang boleh memakan masa dan komputasi mahal. Ini amat mencabar dengan dataset yang besar dan berkembang, kerana latihan semula boleh mengambil masa berjam -jam walaupun dengan GPU yang kuat.

Pembelajaran Dalam Talian:

  • Kaedah Latihan: Algoritma Pembelajaran Dalam Talian Kemas kini model secara berperingkat dengan setiap titik data baru. Model ini belajar secara berterusan dan menyesuaikan diri dengan data baru dalam masa nyata.
  • Kelebihan: Pendekatan ini lebih cekap untuk mengendalikan dataset besar dan aliran data dinamik. Model ini dikemas kini dengan sumber pengiraan yang minimum, dan titik data baru dapat diproses dengan cepat tanpa perlu melatih semula dari awal.
  • Aplikasi: Pembelajaran dalam talian memberi manfaat kepada aplikasi yang memerlukan pengambilan keputusan masa nyata, seperti analisis pasaran saham, aliran media sosial, dan sistem cadangan.

Kelebihan pembelajaran dalam talian dalam aplikasi masa nyata

  • Adaptasi berterusan: Model pembelajaran dalam talian menyesuaikan diri dengan data baru apabila tiba, menjadikannya sesuai untuk persekitaran di mana corak data berkembang dari masa ke masa, seperti dalam sistem pengesanan penipuan. Ini memastikan bahawa model tetap relevan dan berkesan tanpa memerlukan latihan semula dari awal.
  • Kecekapan: Algoritma pembelajaran dalam talian tidak memerlukan latihan semula lengkap dengan keseluruhan dataset, yang menjimatkan masa dan sumber pengiraan yang signifikan. Ini amat berguna untuk aplikasi dengan kuasa pengiraan terhad, seperti peranti mudah alih.
  • Pengurusan Sumber: Dengan memproses data secara berperingkat, model pembelajaran dalam talian mengurangkan keperluan untuk ruang penyimpanan yang luas. Data lama boleh dibuang selepas diproses, yang membantu menguruskan penyimpanan dengan cekap dan mengekalkan sistem ringan.
  • Pengambilan keputusan masa nyata: Pembelajaran dalam talian membolehkan kemas kini masa nyata, yang penting untuk aplikasi yang bergantung kepada maklumat terkini, seperti sistem cadangan atau perdagangan saham masa nyata.

Pengenalan kepada algoritma pasif-agresif

Algoritma pasif-agresif mula diperkenalkan oleh Crammer et.al. pada tahun 2006 melalui kertas mereka bertajuk "Algoritma Pasif-Aggressive Online". Algoritma ini berada di bawah kategori pembelajaran dalam talian dan digunakan terutamanya untuk tugas klasifikasi. Ini adalah memori yang cekap kerana mereka boleh belajar dari setiap titik data secara berperingkat, menyesuaikan parameter mereka, dan kemudian buang data dari ingatan. Ini menjadikan algoritma pasif-agresif amat berguna apabila berurusan dengan dataset yang besar dan untuk aplikasi masa nyata. Selain itu, keupayaannya untuk menyesuaikan diri dengan cepat membolehkannya berfungsi dengan baik dalam persekitaran dinamik di mana pengedaran data boleh berubah dari semasa ke semasa.

Anda mungkin tertanya -tanya tentang nama yang luar biasa. Terdapat sebab untuk ini. Bahagian pasif algoritma menunjukkan bahawa jika titik data semasa diklasifikasikan dengan betul, model tetap tidak berubah dan mengekalkan pengetahuan yang diperoleh dari titik data sebelumnya. Bahagian yang agresif, sebaliknya, menunjukkan bahawa jika salah klasifikasi berlaku, model akan menyesuaikan beratnya dengan ketara untuk membetulkan kesilapan.

Untuk mendapatkan pemahaman yang lebih baik tentang bagaimana algoritma PA berfungsi, mari kita memvisualisasikan kelakuannya dalam konteks klasifikasi binari. Bayangkan anda mempunyai satu set titik data, masing -masing milik salah satu daripada dua kelas. Algoritma PA bertujuan untuk mencari hiperplane pemisahan yang membahagikan titik data ke dalam kelas masing -masing. Algoritma bermula dengan tekaan awal untuk hiperplane. Apabila titik data baru diklasifikasikan, algoritma secara agresif mengemas kini hiperplane semasa untuk memastikan titik data baru diklasifikasikan dengan betul. Sebaliknya, apabila titik data diklasifikasikan dengan betul, maka tiada kemas kini ke hiperplane diperlukan.

Peranan kehilangan engsel dalam pembelajaran pasif-agresif

Algoritma pasif-agresif menggunakan kehilangan engsel sebagai fungsi kerugiannya dan merupakan salah satu blok bangunan utama algoritma. Itulah sebabnya penting untuk memahami kerja -kerja kehilangan engsel sebelum kita menyelidiki intuisi matematik di belakang algoritma.

Kehilangan engsel digunakan secara meluas dalam pembelajaran mesin, terutamanya untuk pengelas latihan seperti mesin vektor sokongan (SVM).

Definisi kehilangan engsel

Ia ditakrifkan sebagai:

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

  • w ialah vektor berat model
  • xi adalah vektor ciri titik data i-th
  • Yi adalah label sebenar titik data I -th, yang boleh sama ada 1 atau -1 dalam hal klasifikasi binari.

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Mari kita ambil masalah klasifikasi binari di mana objektifnya adalah untuk membezakan antara dua kelas data. Algoritma PA secara tersirat bertujuan untuk memaksimumkan margin antara sempadan keputusan dan titik data. Margin adalah jarak antara titik data dan garis pemisahan/hiperplane. Ini sangat mirip dengan kerja -kerja pengelas SVM, yang juga menggunakan kehilangan engsel sebagai fungsi kerugiannya. Margin yang lebih besar menunjukkan bahawa pengelas lebih yakin dalam ramalannya dan dapat membezakan dengan tepat antara kedua -dua kelas. Oleh itu, matlamatnya adalah untuk mencapai margin sekurang -kurangnya 1 sesering mungkin.

Memahami persamaan

Mari kita pecahkan ini lebih jauh dan lihat bagaimana persamaan membantu dalam mencapai margin maksimum:

  • W · xi: Ini adalah produk titik vektor berat w dan titik data xi. Ia mewakili tahap keyakinan dalam ramalan pengelas.
  • yi * (w · xi): Ini adalah skor yang ditandatangani atau margin pengelas, di mana tanda ditentukan oleh label sebenar Yi . Nilai positif bermakna pengelas meramalkan label yang betul, sementara nilai negatif bermakna ia meramalkan label yang salah.
  • 1 - yi * (w · xi) : Ini mengukur perbezaan antara margin yang dikehendaki (1) dan margin sebenar.
  • max (0, 1 - yi * (w · xi)): Apabila margin sekurang -kurangnya 1, kerugian sama dengan sifar. Jika tidak, kerugian meningkat secara linear dengan defisit margin.

Untuk meletakkannya dengan mudah, kerugian engsel menghukum klasifikasi yang salah serta klasifikasi yang betul yang tidak cukup yakin. Apabila titik data diklasifikasikan dengan betul dengan sekurang -kurangnya margin unit, kerugian adalah sifar. Jika tidak, jika titik data berada dalam margin atau salah diklasifikasikan, kerugian meningkat secara linear dengan jarak dari margin.

Perumusan matematik algoritma pasif-agresif

Asas matematik pengelas agresif pasif berkisar sekitar mengekalkan vektor berat w yang dikemas kini berdasarkan ralat klasifikasi titik data masuk. Berikut adalah gambaran keseluruhan algoritma:

Diberi dataset:

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Langkah1: Mulakan vektor berat w

Langkah 2: Untuk setiap titik data baru (xi, yi), di mana xiis vektor ciri dan yi adalah label sebenar, label yang diramalkan ŷ_IIS dikira sebagai:

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Langkah3: Kirakan kehilangan engsel

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

  • Jika label yang diramalkan ŷ_I betul dan margin sekurang -kurangnya 1, kerugian adalah 0.
  • Jika tidak, kerugian adalah perbezaan antara 1 dan margin.

Langkah4: Laraskan vektor berat w menggunakan peraturan kemas kini berikut

Untuk setiap titik data x_i, jika l (w; (x_i, y_i))> 0 (margin misclassified atau tidak mencukupi):

Vektor berat yang dikemas kini W_T 1 diberikan sebagai:

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Jika l (w; (x_i, y_i)) = 0 (diklasifikasikan dengan betul dengan margin yang mencukupi):

Kemudian vektor berat tetap tidak berubah:

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Perhatikan bahawa persamaan ini muncul selepas menyelesaikan masalah pengoptimuman yang terkawal dengan objektif mendapatkan hiperplane margin maksimal antara kelas. Ini diambil dari kertas penyelidikan asal dan derivasi ini adalah di luar skop artikel ini.

Kedua-dua persamaan kemas kini ini adalah jantung algoritma pasif-agresif. Kepentingan ini dapat difahami dalam istilah yang lebih mudah. Di satu pihak, kemas kini memerlukan nilai berat badan baru (W_T 1) untuk mengklasifikasikan contoh semasa dengan margin yang cukup besar dan dengan itu kemajuan dibuat. Sebaliknya, ia mesti kekal sedekat mungkin dengan berat badan yang lebih tua (W_T) untuk mengekalkan maklumat yang dipelajari pada pusingan sebelumnya.

Memahami parameter agresif (c)

Parameter agresif C adalah hyperparameter yang paling penting dalam algoritma pasif-agresif. Ia mengawal bagaimana agresif algoritma mengemas kini beratnya apabila salah klasifikasi berlaku.

Nilai C yang tinggi membawa kepada kemas kini yang lebih agresif, yang berpotensi mengakibatkan pembelajaran yang lebih cepat tetapi juga meningkatkan risiko terlalu banyak. Algoritma mungkin menjadi terlalu sensitif terhadap bunyi dan turun naik dalam data. Sebaliknya, nilai rendah C membawa kepada kemas kini yang kurang agresif, menjadikan algoritma lebih mantap untuk bunyi dan outlier. Walau bagaimanapun, dalam kes ini, ia adalah lambat untuk menyesuaikan diri dengan maklumat baru, melambatkan proses pembelajaran.

Kami mahu algoritma belajar secara bertahap dari setiap contoh baru sambil mengelakkan terlalu banyak sampel yang bising. Akibatnya, kita mesti berusaha untuk menyeimbangkan keseimbangan antara kedua -dua, yang membolehkan kita membuat kemas kini yang ketara sambil mengekalkan kestabilan model dan mencegah overfitting. Kebanyakan masa, nilai optimum C bergantung kepada dataset tertentu dan perdagangan yang dikehendaki antara kelajuan pembelajaran dan keteguhan. Dalam senario praktikal, teknik seperti pengesahan silang digunakan untuk mencapai nilai optimum C.

Kesan Regularization dalam algoritma pasif-agresif

Dataset dunia nyata hampir selalu mengandungi beberapa tahap bunyi atau penyelewengan. Titik data yang salah boleh menyebabkan algoritma PA secara drastik mengubah vektor beratnya ke arah yang salah. Contoh tunggal yang salah ini boleh menyebabkan beberapa kesilapan ramalan pada pusingan berikutnya, yang memberi kesan kepada kebolehpercayaan model.

Untuk menangani masalah ini, terdapat satu lagi hiperparameter penting yang membantu dalam membuat algoritma lebih mantap untuk bunyi dan kelebihan dalam data. Ia cenderung menggunakan kemas kini berat badan yang lebih lembut dalam hal salah klasifikasi. Ini serupa dengan regularization. Algoritma dibahagikan kepada dua varian berdasarkan parameter regularization, yang dikenali sebagai PA-I dan PA-II.

Ini berbeza terutamanya dalam definisi pembolehubah saiz langkah τ (juga dikenali sebagai kehilangan normal) . Bagi PA-I kerugian dihadkan kepada nilai parameter agresif C.

Formula untuk ini diberikan sebagai:

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Untuk PA-II saiz langkah atau kerugian normal boleh ditulis sebagai:

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Dalam pelaksanaan Sklearn pengelas agresif pasif, parameter regularization ini dianggap sebagai kerugian. Ini boleh ditetapkan kepada salah satu daripada dua nilai berdasarkan yang mana dua PA-I dan PA-II yang kita mahu gunakan. Jika anda ingin menggunakan varian PA-I, maka kerugian harus ditetapkan untuk "engsel" sebaliknya untuk PA-II, kerugian itu ditetapkan kepada "Squared-Whinge".

Perbezaannya boleh dinyatakan dengan mudah seperti berikut:

  • PA-I adalah varian yang lebih agresif yang melegakan kekangan margin (margin boleh kurang daripada satu), tetapi menghukum kerugian secara linear sekiranya ramalan yang salah. Ini menghasilkan pembelajaran yang lebih cepat tetapi lebih mudah terdedah daripada rakan sejawatnya.
  • PA-II adalah variasi yang lebih mantap yang menghukum kerugian secara kuadrat, menjadikannya lebih berdaya tahan terhadap data dan pengetua yang bising. Pada masa yang sama, ini menjadikannya lebih konservatif dalam menyesuaikan diri dengan varians dalam data, menghasilkan pembelajaran yang lebih perlahan.

Sekali lagi pilihan antara kedua -dua ini bergantung kepada ciri -ciri khusus dataset anda. Dalam praktiknya, sering disarankan untuk bereksperimen dengan kedua -dua varian dengan nilai -nilai C yang berbeza -beza sebelum memilih mana -mana.

Aplikasi masa nyata algoritma pasif-agresif

Pembelajaran dalam talian dan algoritma pasif-agresif mempunyai pelbagai aplikasi, dari pemprosesan data masa nyata ke sistem penyesuaian. Di bawah ini, kita melihat beberapa aplikasi pembelajaran dalam talian yang paling berkesan.

Penapisan spam

Penapisan spam adalah aplikasi penting klasifikasi teks di mana matlamatnya adalah untuk membezakan antara spam dan e -mel yang sah. Keupayaan algoritma PA untuk belajar secara bertahap sangat bermanfaat di sini, kerana ia dapat terus mengemas kini model berdasarkan trend spam baru.

Analisis sentimen

Analisis sentimen melibatkan menentukan sentimen yang dinyatakan dalam sekeping teks, seperti tweet atau kajian semula produk. Algoritma PA boleh digunakan untuk membina model yang menganalisis sentimen dalam masa nyata, menyesuaikan diri dengan slanga baru, ekspresi, dan trend sentimen ketika mereka muncul. Ini amat berguna dalam pemantauan media sosial dan analisis maklum balas pelanggan, di mana pandangan yang tepat pada masanya adalah penting.

Pengesanan ucapan benci

Pengesanan ucapan benci adalah satu lagi aplikasi kritikal di mana algoritma PA boleh sangat berguna. Dengan belajar secara bertahap dari kejadian baru kebencian, model ini dapat menyesuaikan diri dengan corak dan konteks bahasa yang berkembang. Ini adalah penting untuk mengekalkan keberkesanan alat kesederhanaan automatik pada platform seperti Twitter, Facebook, dan Reddit, memastikan persekitaran dalam talian yang lebih selamat dan lebih inklusif.

Pengesanan penipuan

Institusi kewangan dan perkhidmatan dalam talian terus memantau urus niaga dan tingkah laku pengguna untuk mengesan aktiviti penipuan. Keupayaan algoritma PA untuk mengemas kini modelnya dengan setiap urus niaga baru membantu dalam mengenal pasti corak penipuan ketika mereka muncul, memberikan pertahanan yang kuat terhadap taktik penipuan yang berkembang.

Analisis pasaran saham

Harga saham di pasaran kewangan sangat dinamik, yang memerlukan model untuk bertindak balas dengan cepat kepada maklumat baru. Algoritma pembelajaran dalam talian boleh digunakan untuk meramalkan dan menganalisis harga saham dengan belajar secara bertahap dari data pasaran baru, menghasilkan ramalan yang tepat pada masanya dan tepat yang memberi manfaat kepada peniaga dan pelabur.

Sistem Penghalasan

Algoritma Pembelajaran Dalam Talian juga boleh digunakan dalam Sistem Pencapaian Skala Besar untuk mengemas kini cadangan secara dinamik berdasarkan interaksi pengguna. Kesesuaian masa nyata ini memastikan bahawa cadangan tetap relevan dan diperibadikan sebagai perubahan keutamaan pengguna.

Ini adalah beberapa kawasan di mana algoritma pembelajaran dalam talian benar -benar bersinar. Walau bagaimanapun, keupayaan mereka tidak terhad kepada kawasan ini. Ini juga boleh digunakan dalam pelbagai bidang lain, termasuk pengesanan anomali, diagnosis perubatan, dan robotik.

Batasan dan cabaran

Walaupun pembelajaran dalam talian dan algoritma pasif-agresif menawarkan kelebihan dalam menangani data streaming dan menyesuaikan diri untuk berubah dengan cepat, mereka juga mempunyai kelemahan. Beberapa batasan utama adalah:

  • Algoritma pasif-agresif memproses data secara berurutan, menjadikannya lebih mudah terdedah kepada titik data yang bising atau salah. Satu outlier tunggal boleh mempunyai kesan yang tidak seimbang terhadap pembelajaran model, mengakibatkan ramalan yang tidak tepat atau model berat sebelah.
  • Algoritma ini hanya melihat satu contoh data pada satu masa, yang membatasi pemahaman mereka tentang pengagihan data dan hubungan keseluruhan antara titik data yang berbeza. Ini menjadikan sukar untuk mengenal pasti corak kompleks dan membuat ramalan yang tepat.
  • Oleh kerana algoritma PA belajar dari aliran data secara real-time, mereka mungkin terlalu sesuai dengan data yang paling terkini, berpotensi mengabaikan atau melupakan corak yang diperhatikan dalam data terdahulu. Ini boleh membawa kepada prestasi generalisasi yang lemah apabila pengagihan data berubah dari semasa ke semasa.
  • Memilih nilai optimum parameter agresif C boleh mencabar dan sering memerlukan percubaan. Nilai tinggi meningkatkan agresif yang membawa kepada overfitting, sementara nilai yang rendah dapat mengakibatkan pembelajaran yang perlahan.
  • Menilai prestasi algoritma ini agak rumit. Oleh kerana pengagihan data boleh berubah dari masa ke masa, menilai prestasi model pada set ujian tetap mungkin tidak konsisten.

Membina Model Pengesanan Ucapan Kebencian

Platform media sosial seperti Twitter dan Reddit menjana sejumlah besar data setiap hari, menjadikannya ideal untuk menguji pemahaman teoritis kami tentang algoritma pembelajaran dalam talian.

Dalam bahagian ini, saya akan menunjukkan kes penggunaan praktikal dengan membina aplikasi pengesanan ucapan kebencian dari awal menggunakan data masa nyata dari Reddit. Reddit adalah platform yang terkenal dengan komuniti yang pelbagai. Walau bagaimanapun, ia juga menghadapi cabaran komen toksik yang boleh menyakitkan dan kesat. Kami akan membina sistem yang dapat mengenal pasti komen toksik ini dalam masa nyata menggunakan API Reddit.

Dalam kes ini, melatih model dengan semua data sekaligus tidak mustahil kerana jumlah data yang besar. Selain itu, pengagihan data dan corak terus berubah dengan masa. Oleh itu, kami memerlukan bantuan algoritma pasif-agresif yang mampu belajar dari data dengan cepat tanpa menyimpannya dalam ingatan.

Menyediakan persekitaran anda untuk pemprosesan data masa nyata

Sebelum kita dapat mula melaksanakan kod, anda mesti menubuhkan sistem anda terlebih dahulu. Untuk menggunakan API Reddit, anda mesti membuat akaun di Reddit jika anda tidak mempunyai satu. Kemudian, buat aplikasi Reddit dan dapatkan kekunci API anda dan kelayakan lain untuk pengesahan. Selepas langkah -langkah prasyarat ini selesai, kami bersedia untuk membuat model pengesanan ucapan kebencian kami.

Aliran kerja kod akan kelihatan seperti ini:

  • Sambung ke API Reddit menggunakan perpustakaan `praw`.
  • Stream data masa nyata dan memberi makan kepada model.
  • Labelkan data menggunakan model Bert yang disempurnakan untuk tugas pengesanan ucapan benci.
  • Melatih model secara berperingkat menggunakan pengelas agresif pasif.
  • Uji model kami pada dataset ujian yang tidak kelihatan dan ukur prestasi.

Pasang perpustakaan yang diperlukan

Langkah pertama ialah memasang perpustakaan yang diperlukan.

 PIP Pasang Praw Scikit-Learn NLTK Transformers Obor Matplotlib Seaborn Opendatasets
Salin selepas log masuk

Untuk bekerja dengan Reddit kita memerlukan perpustakaan `praw` yang merupakan pembungkus API Reddit. Kami juga memerlukan `nltk` untuk pemprosesan teks,` scikit-learn` untuk pembelajaran mesin, `matplotlib` dan` laut 'untuk visualisasi, `transformer` dan` obor` untuk membuat embeddings perkataan dan memuatkan model bert yang halus dan `openDataSets` untuk memuatkan data dari kaggle.

Import Perpustakaan dan Sediakan Reddit API

Dalam langkah seterusnya, kami mengimport semua perpustakaan yang diperlukan dan menyediakan sambungan ke API Reddit menggunakan `praw`. Ia akan membantu kami dalam komen streaming dari subreddits.

 Import Re
Import Praw
obor import
Import NLTK
import numpy sebagai np
Import Pandas sebagai PD
import matplotlib.pyplot sebagai PLT
Import Seaborn sebagai SNS
import openDataSets sebagai OD
Dari kata kunci hentian import nltk.corpus
dari sklearn.feature_extraction.text import tfidfvectorizer
dari sklearn.linear_model import passiveaggressiveclassifier
dari sklearn.metrics import accecty_score, confusion_matrix, classification_report
dari sklearn.model_selection import train_test_split
Dari Transformers Import Automodel, AutomodelforsequenceClassification, Autotokenizer
Dari Transformers Import BertforsequenceClassification, Bertokenizer, TextClassificationPipeline

# Kelayakan API Reddit
Reddit_client_id = {your_client_id}
Reddit_client_secret = {your_client_secret}
Reddit_user_agent = {your_user_agent}

# Sediakan sambungan API Reddit
reddit = praw.reddit (client_id = reddit_client_id,
                     client_secret = reddit_client_secret,
                     user_agent = reddit_user_agent)
Salin selepas log masuk

Untuk berjaya menubuhkan contoh Reddit, hanya gantikan ruang letak di atas dengan kelayakan anda dan anda baik untuk pergi.

Membersihkan dan memproses teks

Apabila berurusan dengan data teks mentah, adalah perkara biasa untuk mempunyai contoh yang mengandungi simbol, hashtags, kata slang, dan sebagainya. Memandangkan ini tidak digunakan secara praktikal untuk model kami, kami mesti membersihkan teks terlebih dahulu untuk membuangnya.

 # Muat turun kata kunci
nltk.download ('Stopwords')
stop_words = set (stopwords.words ('english'))

# Bersihkan teks dan keluarkan kata kunci berhenti
def clean_text (teks):
    teks = re.sub (r'http \ s | www \ s | https \ s ',' ', teks, bendera = re.multiline)
    teks = re.sub (r '\@\ w | \#', '', teks)
    teks = re.sub (r '\ w', '', teks)
    teks = re.sub (r '\ d', '', teks)
    teks = re.sub (r '\ s', '', teks)
    teks = text.strip ()
    teks = '' .join ([perkataan untuk perkataan dalam text.split () jika word.lower () tidak di stop_words])
    teks kembali
Salin selepas log masuk

Kod di atas mentakrifkan fungsi pembantu yang memproses komen dengan mengeluarkan kata -kata yang tidak diingini, watak khas, dan URL.

Sediakan model Bert pretrained untuk pelabelan

Apabila kita sedang mengalirkan komen mentah dari Reddit, kita tidak tahu apa -apa jika komen itu toksik atau tidak kerana ia tidak dilabelkan. Untuk menggunakan klasifikasi yang diselia, kita perlu terlebih dahulu melabelkan data. Kita mesti melaksanakan sistem yang boleh dipercayai dan tepat untuk melabelkan komen mentah yang masuk. Untuk ini, kami akan menggunakan model Bert yang disempurnakan untuk pengesanan ucapan benci. Model ini akan mengklasifikasikan komen dengan tepat ke dalam dua kategori.

 Model_Path = "Junglelee/Bert-Toksik-Klasifikasi"
tokenizer = bertokenizer.from_pretrained (model_path)
Model = BertforseQuenceClassification.from_pretrained (Model_Path, num_labels = 2)

PIPELINE = TextClassificationPipeline (Model = Model, Tokenizer = Tokenizer)

# Fungsi penolong untuk melabelkan teks
def predict_hate_speech (teks):
    Ramalan = saluran paip (teks) [0] ['label']
    kembali 1 jika ramalan == 'toksik' lain 0 # 1 untuk toksik, 0 untuk tidak toksik
Salin selepas log masuk

Di sini kita menggunakan Perpustakaan Transformers untuk menyediakan saluran paip model. Kemudian kami menentukan fungsi penolong untuk meramalkan sama ada teks yang diberikan adalah toksik atau tidak toksik menggunakan model Bert. Kami kini telah melabelkan contoh untuk memberi makan kepada model kami.

Tukar teks ke vektor menggunakan embeddings Bert

Oleh kerana pengelas kami tidak akan berfungsi dengan input teks, ini perlu ditukar menjadi perwakilan vektor yang sesuai terlebih dahulu. Untuk melakukan ini, kami akan menggunakan embeddings Bert pretrained, yang akan menukar teks kami kepada vektor yang kemudiannya boleh diberi kepada model untuk latihan.

 # Muatkan model Bert dan tokenizer pretrained untuk embeddings
Model_name = "Bert-base-Uncased"
tokenizer = autotokenizer.from_pretrained (model_name)
bert_model = automodel.from_pretrained (model_name)
bert_model.eval ()  

# Fungsi penolong untuk mendapatkan embeddings Bert
def get_bert_embedding (teks):
    input = tokenizer (teks, return_tensors = 'pt', truncation = true, padding = true)
    dengan obor.no_grad ():
        output = bert_model (** input)
    
    kembali output.last_hidden_state [:, 0,:]. Squeeze (). numpy ()
Salin selepas log masuk

Kod di atas mengambil sekeping teks, memaksa ia menggunakan tokenizer Bert, dan kemudian melewati model Bert untuk mengekstrak embeddings ayat. Teks itu kini telah ditukar kepada vektor.

Aliran data reddit masa nyata dan melatih pengelas pasif-agresif

Kami kini bersedia untuk menyiarkan komen secara real-time dan melatih pengelas kami untuk mengesan ucapan benci.

 # Fungsi penolong untuk menstrim komen dari subreddit
def stream_comments (subreddit_name, batch_size = 100):
    subreddit = reddit.subreddit (subreddit_name)
    COMMENT_STREAM = subreddit.stream.comments ()
    
    batch = []
    Untuk komen di Comment_Stream:
        Cuba:
            # Bersihkan teks yang masuk 
            COMMENT_TEXT = Clean_Text (Comment.body)
            # Labelkan komen menggunakan model Bert pretrained
            label = predict_hate_speech (comment_text) 
            # Tambahkan teks dan label ke batch semasa
            batch.append ((comment_text, label))
            
            jika len (batch)> = batch_size:
                Kumpulan hasil
                batch = []
                
        Kecuali pengecualian sebagai e:
            cetak (f'error: {e} ')
 

# Tentukan bilangan pusingan latihan
Pusingan = 10

# Nyatakan subreddit
subreddit_name = 'kecergasan'

# Inisialisasi pengelas pasif-agresif
clf = passiveaggressiveClassifier (c = 0.1, kehilangan = 'engsel', max_iter = 1, random_state = 37)


# Aliran komen dan melakukan latihan tambahan
Untuk num_rounds, batch in enumerate (stream_comments (subreddit_name, batch_size = 100)):
    # Melatih pengelas untuk bilangan pusingan yang dikehendaki
    jika num_rounds == pusingan:
        rehat
  
    # Pisahkan teks dan label
    batch_texts = [item [0] untuk item dalam batch]
    batch_labels = [item [1] untuk item dalam batch]
    
    # Menukar kumpulan teks ke embeddings Bert
    X_train_batch = np.array ([get_bert_embedding (teks) untuk teks dalam batch_texts])
    y_train_batch = np.array (batch_labels)
    
    # Melatih model pada kumpulan semasa
    clf.partial_fit (x_train_batch, y_train_batch, classes = [0, 1])
    cetak (f'trained pada batch {len (batch_texts)} sampel. ')
    
Cetak ('Latihan Selesai')
Salin selepas log masuk

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Dalam kod di atas, kami mula -mula menentukan subreddit dari mana kami ingin menstrimkan komen dan kemudian memulakan pengelas PA kami dengan 10 pusingan latihan. Kami kemudian menyiarkan komen dalam masa nyata.Untuk setiap komen baru yang datang di dalamnya mula -mula dibersihkan mengeluarkan kata -kata yang tidak diingini. Kemudian ia dilabel menggunakan model Bert yang pretrained dan ditambah kepada kumpulan semasa.

Kami memulakan pengelas pasif-agresif kami mengambil c = 0.1 dan kerugian = 'engsel' yang sepadan dengan versi PA-I algoritma. Untuk setiap kumpulan kami melatih pengelas kami menggunakan kaedah `partial_fit ()`. Ini membolehkan model untuk belajar secara bertahap dari setiap sampel latihan dan bukannya menyimpan keseluruhan kumpulan dalam memori sebelum diproses. Oleh itu, membolehkan model sentiasa menyesuaikan diri dengan maklumat baru, menjadikannya sesuai untuk aplikasi masa nyata.

Menilai prestasi model

Saya akan menggunakan dataset tweet toksik Kaggle untuk menilai model kami. Dataset ini mengandungi beberapa tweet yang diklasifikasikan sebagai toksik atau tidak toksik.

 # Muat turun data dari kaggle
Od.Download ("https://www.kaggle.com/datasets/ashwiniyer176/toxic-tweets-dataset")
# Memuatkan data
data = pd.read_csv ("tweets-dataset/finalbalanceddataset.csv", usecols = [1,2]) [["tweet", "ketoksikan"]]

# Pisahkan teks dan label
test_data = data.sample (n = 100)
teks = test_data ['tweet']. Guna (Clean_Text)
label = test_data ['ketoksikan']

# Menukar teks ke vektor
X_test = np.array ([get_bert_embedding (teks) untuk teks dalam teks])
y_test = np.array (label)

# Buat ramalan
y_pred = clf.predict (x_test)

# Menilai prestasi model
ketepatan = ketepatan_score (y_test, y_pred)
conf_matrix = confusion_matrix (y_test, y_pred)

Cetak ("Laporan Klasifikasi:")
cetak (klasifikasi_report (y_test, y_pred))

# Plot matriks kekeliruan
PLT.Figure (figsize = (7, 5))
sns.heatmap (conf_matrix, 
            Annot = Benar, 
            fmt = 'd', 
            cmap = 'blues', 
            cbar = palsu, 
            xtickLabels = ["non-toksik", "toksik"], 
            ytickLabels = ["non-toksik", "toksik"])
            
plt.xlabel ('label yang diramalkan')
plt.ylabel ('label benar')
PLT.TITLE ('Matriks Kekeliruan')
plt.show () 
Salin selepas log masuk

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif

Pertama, kami memuat set ujian dan membersihkannya dengan kaedah `Clean_Text` yang ditakrifkan lebih awal. Teks kemudian ditukar menjadi vektor menggunakan embeddings Bert. Akhirnya, kami membuat ramalan pada set ujian dan menilai prestasi model kami pada metrik yang berbeza menggunakan laporan klasifikasi dan matriks kekeliruan.

Kesimpulan

Kami meneroka kuasa algoritma pembelajaran dalam talian, yang memberi tumpuan kepada keupayaan algoritma pasif-agresif untuk mengendalikan dataset yang besar dengan cekap dan menyesuaikan diri dengan data masa nyata tanpa memerlukan latihan semula lengkap. Dan juga membincangkan peranan kehilangan engsel, hyperparameter agresif (c), dan bagaimana regularization membantu menguruskan bunyi dan outlier. Kami juga mengkaji semula aplikasi dan batasan dunia sebenar sebelum melaksanakan model pengesanan ucapan kebencian untuk Reddit menggunakan pengelas pasif-agresif. Terima kasih kerana membaca, dan saya menantikan tutorial AI kami yang seterusnya!

Soalan yang sering ditanya

Q1. Apakah prinsip asas yang mendasari algoritma pasif-agresif?

A. Prinsip asas di sebalik algoritma agresif pasif adalah untuk mengemas kini berat badan secara agresif apabila ramalan yang salah dibuat dan secara pasif mengekalkan berat yang dipelajari apabila ramalan yang betul dibuat.

S2. Apakah peranan parameter agresif C dalam algoritma PA?

A. Apabila C adalah tinggi, algoritma menjadi lebih agresif, cepat menyesuaikan diri dengan data baru, menghasilkan pembelajaran yang lebih cepat. Apabila C rendah, algoritma menjadi kurang agresif dan membuat kemas kini yang lebih kecil. Ini mengurangkan kemungkinan terlalu banyak kepada sampel yang bising tetapi menjadikannya lebih perlahan untuk menyesuaikan diri dengan keadaan baru.

Q3. Bagaimanakah pengelas pasif-agresif serupa dengan mesin vektor sokongan (SVM)?

A. Kedua -duanya bertujuan untuk memaksimumkan margin antara sempadan keputusan dan titik data. Kedua -duanya menggunakan kehilangan engsel sebagai fungsi kerugian mereka.

Q4. Apakah kelebihan algoritma pembelajaran dalam talian ke atas algoritma pembelajaran batch?

A. Algoritma pembelajaran dalam talian boleh berfungsi dengan dataset yang besar, tidak mempunyai batasan penyimpanan dan mudah menyesuaikan diri dengan data yang berubah dengan cepat tanpa memerlukan latihan semula dari awal.

S5. Apakah beberapa senario dunia sebenar di mana algoritma agresif pasif boleh berguna?

A. Algoritma pasif-agresif boleh digunakan dalam pelbagai aplikasi, termasuk penapisan spam, analisis sentimen, pengesanan ucapan benci, analisis pasaran saham masa nyata, dan sistem pengesyorkan.

Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan atas budi bicara penulis.

Atas ialah kandungan terperinci Panduan untuk pembelajaran dalam talian dan algoritma pasif-agresif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Saya cuba pengekodan getaran dengan kursor AI dan ia menakjubkan! Saya cuba pengekodan getaran dengan kursor AI dan ia menakjubkan! Mar 20, 2025 pm 03:34 PM

Pengekodan Vibe membentuk semula dunia pembangunan perisian dengan membiarkan kami membuat aplikasi menggunakan bahasa semulajadi dan bukannya kod yang tidak berkesudahan. Diilhamkan oleh penglihatan seperti Andrej Karpathy, pendekatan inovatif ini membolehkan Dev

Top 5 Genai dilancarkan pada Februari 2025: GPT-4.5, Grok-3 & More! Top 5 Genai dilancarkan pada Februari 2025: GPT-4.5, Grok-3 & More! Mar 22, 2025 am 10:58 AM

Februari 2025 telah menjadi satu lagi bulan yang berubah-ubah untuk AI generatif, membawa kita beberapa peningkatan model yang paling dinanti-nantikan dan ciri-ciri baru yang hebat. Dari Xai's Grok 3 dan Anthropic's Claude 3.7 Sonnet, ke Openai's G

Bagaimana cara menggunakan Yolo V12 untuk pengesanan objek? Bagaimana cara menggunakan Yolo V12 untuk pengesanan objek? Mar 22, 2025 am 11:07 AM

Yolo (anda hanya melihat sekali) telah menjadi kerangka pengesanan objek masa nyata yang terkemuka, dengan setiap lelaran bertambah baik pada versi sebelumnya. Versi terbaru Yolo V12 memperkenalkan kemajuan yang meningkatkan ketepatan

Adakah chatgpt 4 o tersedia? Adakah chatgpt 4 o tersedia? Mar 28, 2025 pm 05:29 PM

CHATGPT 4 kini tersedia dan digunakan secara meluas, menunjukkan penambahbaikan yang ketara dalam memahami konteks dan menjana tindak balas yang koheren berbanding dengan pendahulunya seperti ChATGPT 3.5. Perkembangan masa depan mungkin merangkumi lebih banyak Inter yang diperibadikan

Penjana Seni AI Terbaik (Percuma & amp; Dibayar) untuk projek kreatif Penjana Seni AI Terbaik (Percuma & amp; Dibayar) untuk projek kreatif Apr 02, 2025 pm 06:10 PM

Artikel ini mengkaji semula penjana seni AI atas, membincangkan ciri -ciri mereka, kesesuaian untuk projek kreatif, dan nilai. Ia menyerlahkan Midjourney sebagai nilai terbaik untuk profesional dan mengesyorkan Dall-E 2 untuk seni berkualiti tinggi dan disesuaikan.

Google ' s Gencast: Peramalan Cuaca dengan Demo Mini Gencast Google ' s Gencast: Peramalan Cuaca dengan Demo Mini Gencast Mar 16, 2025 pm 01:46 PM

Google Deepmind's Gencast: AI Revolusioner untuk Peramalan Cuaca Peramalan cuaca telah menjalani transformasi dramatik, bergerak dari pemerhatian asas kepada ramalan berkuasa AI yang canggih. Google Deepmind's Gencast, tanah air

AI mana yang lebih baik daripada chatgpt? AI mana yang lebih baik daripada chatgpt? Mar 18, 2025 pm 06:05 PM

Artikel ini membincangkan model AI yang melampaui chatgpt, seperti Lamda, Llama, dan Grok, menonjolkan kelebihan mereka dalam ketepatan, pemahaman, dan kesan industri. (159 aksara)

O1 vs GPT-4O: Adakah model baru OpenAI ' lebih baik daripada GPT-4O? O1 vs GPT-4O: Adakah model baru OpenAI ' lebih baik daripada GPT-4O? Mar 16, 2025 am 11:47 AM

Openai's O1: Hadiah 12 Hari Bermula dengan model mereka yang paling berkuasa Ketibaan Disember membawa kelembapan global, kepingan salji di beberapa bahagian dunia, tetapi Openai baru sahaja bermula. Sam Altman dan pasukannya melancarkan mantan hadiah 12 hari

See all articles