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:
- 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.
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:
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
- 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:
Jika l (w; (x_i, y_i)) = 0 (diklasifikasikan dengan betul dengan margin yang mencukupi):
Kemudian vektor berat tetap tidak berubah:
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:
Untuk PA-II saiz langkah atau kerugian normal boleh ditulis sebagai:
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
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)
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
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
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 ()
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')
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 ()
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!

Model bahasa yang besar (LLMS) telah melonjak populariti, dengan ciri-ciri alat yang secara dramatik memperluaskan keupayaan mereka di luar penjanaan teks mudah. Sekarang, LLMS dapat mengendalikan tugas automasi yang kompleks seperti penciptaan UI dinamik dan autonomi a

Bolehkah permainan video meringankan kebimbangan, membina fokus, atau menyokong kanak -kanak dengan ADHD? Memandangkan cabaran penjagaan kesihatan melonjak di seluruh dunia - terutamanya di kalangan belia - inovator beralih kepada alat yang tidak mungkin: permainan video. Sekarang salah satu hiburan terbesar di dunia Indus

"Sejarah telah menunjukkan bahawa walaupun kemajuan teknologi memacu pertumbuhan ekonomi, ia tidak sendiri memastikan pengagihan pendapatan yang saksama atau menggalakkan pembangunan manusia yang inklusif," tulis Rebeca Grynspan, Setiausaha Agung Unctad, dalam Mukadimah.

Easy-peasy, gunakan AI Generatif sebagai tutor rundingan dan rakan kongsi sparring anda. Mari kita bercakap mengenainya. Analisis terobosan AI yang inovatif ini adalah sebahagian daripada liputan lajur Forbes yang berterusan pada AI terkini, termasuk mengenal pasti dan menjelaskan

Persidangan TED2025, yang diadakan di Vancouver, membungkus edisi ke -36 semalam, 11 April. Ia menampilkan 80 penceramah dari lebih daripada 60 negara, termasuk Sam Altman, Eric Schmidt, dan Palmer Luckey. Tema Ted, "Kemanusiaan Reimagined," telah disesuaikan dibuat

Joseph Stiglitz adalah ahli ekonomi yang terkenal dan penerima Hadiah Nobel dalam Ekonomi pada tahun 2001. Stiglitz berpendapat bahawa AI dapat memburukkan lagi ketidaksamaan dan kuasa yang disatukan di tangan beberapa syarikat dominan, akhirnya menjejaskan ekonomi

Pangkalan Data Graf: Merevolusi Pengurusan Data Melalui Hubungan Apabila data berkembang dan ciri -cirinya berkembang di pelbagai bidang, pangkalan data grafik muncul sebagai penyelesaian transformatif untuk menguruskan data yang saling berkaitan. Tidak seperti tradisional

Routing Model Besar (LLM): Mengoptimumkan Prestasi melalui Pengedaran Tugas Pintar Landskap LLM yang pesat berkembang membentangkan pelbagai model, masing -masing dengan kekuatan dan kelemahan yang unik. Beberapa cemerlang di Gen Kandungan Kreatif


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.