paint-brush
هام د سپیم په مقابل کې: د سپیم بریښنالیک پیژندلو او طبقه بندي کولو څرنګوالیلخوا@ramakadapala
نوی تاریخ

هام د سپیم په مقابل کې: د سپیم بریښنالیک پیژندلو او طبقه بندي کولو څرنګوالی

لخوا Rama7m2025/03/08
Read on Terminal Reader

ډېر اوږد؛ لوستل

په دې پروژه کې، د ماشین زده کړې ځینې وسایل کارول شوي ترڅو وګوري چې دوی د هام او سپیم بریښنالیکونو لپاره د طبقه بندي کونکو په توګه څنګه فعالیت کوي. د محاسبې توضیحات وړاندې کیږي او همدارنګه د دوی د کړنو پرتله کول.
featured image - هام د سپیم په مقابل کې: د سپیم بریښنالیک پیژندلو او طبقه بندي کولو څرنګوالی
Rama HackerNoon profile picture

انتزاعي

برېښنالیک په نننۍ نړۍ کې د اړیکو لپاره یوه مهمه وسیله ده؛ په هرصورت، سپیم برېښنالیکونه د یوې لویې ننګونې په توګه راڅرګند شوي دي. د نامعلومو سرچینو څخه دا ناغوښتل شوي پیغامونه ډیری وختونه ان باکسونه ډکوي، چې اړیکه او تولید ګډوډوي. دا مقاله د بریښنالیکونو د "سپیم" یا "هام" (غیر سپیم) په توګه طبقه بندي کولو لپاره د ماشین زده کړې مختلف تخنیکونو کارولو څیړنه کوي.


د طبقه بندي ماډلونه لکه K-Nearest Neighbors (KNN)، Logistic Regression، Support Vector Machines (SVM)، او Naïve Bayes ارزول کیږي، د بریښنالیک طبقه بندي کې د دوی اغیزمنتوب پرتله کوي. د هر ماډل فعالیت د دقت، دقت، یادولو، او F1 سکور په څیر میټریکونو پراساس ارزول کیږي ترڅو معلومه شي چې کوم چلند د دې دندې لپاره خورا مناسب دی.

پېژندنه

په ۲۰۲۳ کال کې، هره ورځ ۳۴۷.۳ میلیارده برېښنالیکونه لیږل کیږي، چې له دې جملې څخه سپیم برېښنالیکونه د ټولو برېښنالیکونو ۴۵٪ جوړوي. دا سپیم برېښنالیکونه هر کال سوداګرۍ ته ۲۰.۵ میلیارده ډالر لګښت ورکوي. دې ته په پام سره، تل به اړتیا وي چې ډاډ ترلاسه شي چې سپیم په سمه توګه طبقه بندي شوی او د قانوني برېښنالیکونو ترافیک سره مداخله نه کوي. دا د ماشین زده کړې احتمالي او پلي کولو پوهیدو لپاره یوه ګټوره لار ده.


د سپیم کشف په صورت کې، یو انساني کاروونکی چې د بریښنالیک سره بلد وي کولی شي په اسانۍ سره سپیم نږدې سمدلاسه د لیدلو سره سم وپیژني. په پایله کې، زه باور لرم چې دا کار تاییدوي چې د سپیم پیژندل د ماشین زده کړې طبقه بندي کونکي لپاره ګټور غوښتنلیک دی. د سپیم یا هام په توګه د بریښنالیک طبقه بندي کولو لپاره، ډیری دمخه پروسس کولو مرحلې شاملې دي - د معلوماتو چمتو کول چې د خطي طبقه بندي کونکي لپاره د منلو وړ وي، بیا د هرې کرښې نښه کول او سټیم کول ترڅو د TF-IDF (اصطلاح فریکونسی - د اسنادو برعکس فریکونسی) جدول ته واړوي.


د K=3 سره KNN د اساسی ماډل په توګه غوره شو. د L1 منظم کولو سره لوژستیک ریګریشن، د Naïve Bayes ماډل، او SVM ماډلونه هم د غوره ماډل پریکړه کولو دمخه ازمول شوي. د دې پروژې هدف لپاره، د Kaggle څخه یو ډیټاسیټ کارول شوی، کوم چې 2551 "ham" بریښنالیک فایلونه او 501 سپیم بریښنالیک فایلونه لري او ماډلینګ د R پروګرام کولو ژبې په کارولو سره ترسره شوی.

د هام کلمو نږدې کتنهد سپیم کلمو نږدې کتنه میتودولوژي تعقیب شوه

لاندې چارټ به د مختلفو مرحلو د جریان په پوهیدو کې مرسته وکړي چې تعقیب شوي دي -

هغه انځور چې د پروژې مرحلې ښیي

د پروسس کولو دمخه مرحلې

د متن ډیټا لویه اندازه کارول کیږي، نو اړتیا وه چې ډیټا مخکې له مخکې پروسس شي ترڅو پاک شي او داسې بڼه ته ورسیږي چې د طبقه بندي ماډلونو لخوا کارول کیدی شي. لاندې به د ګام په ګام پروسه تشریح کړي چې د ډیټا پری پروسس کولو برخې په توګه تعقیب شوې وه -

  • د متن معلومات باید د خطي طبقه بندي کوونکي لپاره د منلو وړ وي. دا پدې مانا ده چې ډیټاسیټ باید د متن ځانګړتیاو استخراج میتودونو په کارولو سره عددي ځانګړتیاو ته واړول شي.

  • لومړی، د متن هره کرښه نښه شوې او لاندې بڼې ته ډډ شوې ده. د ډډ کولو پروسه د انفلاسیون شوي پایونو لرې کولو سره کلمې لنډوي. د مثال په توګه، کارګران په لاندې مثال کې کارګر کیږي.

    کلمې او د هغوی ډډ شوي کلمې

  • بیا، د نښه شوي معلوماتو بدلول د TF-IDF جدول ته کیږي (د اصطلاح فریکونسي - د سند برعکس فریکونسي). TF-IDF د متن تحلیل لپاره یوه لاره ده چې په سند کې هر n-ګرام د هغې د اصطلاح فریکونسي - د سند برعکس فریکونسي له مخې بیانوي. د اصطلاح فریکونسي په ساده ډول د سند دننه د ورکړل شوي اصطلاح فریکونسي ده (په دې حالت کې، یو بریښنالیک). د سند برعکس فریکونسي عموما په لاندې ډول ویل کیږي:

    log ((د اسنادو ټول شمېر / د اسنادو شمېر چې موده یې پوره ده)


دا د ډېرو عامو او له همدې امله د لږ مهمو اصطلاحاتو په پرتله د مهمو اصطلاحاتو وزن لوړولو لپاره کار کوي.

  • بیا، اصطلاحات یوازې د هغو اصطلاحاتو په غوره کولو سره کم شوي چې لږترلږه په 2 سلنه اسنادو کې څرګند شوي مګر د 95 سلنې څخه ډیر اسناد نه دي. دا پروسه د ډیر فټینګ مخه نیسي د دې ډاډ ترلاسه کولو سره چې هغه اصطلاحات لرې شوي چې په روزنیز سیټ کې ډیر ځانګړي یا ډیر عام دي.


  • دا د روزنې په ډیټاسیټ کې ټولټال ۱،۱۳۰ اصطلاحات ترلاسه کوي.


دا مهمه ده چې په یاد ولرئ چې د ازموینې سیټ سره د TF-IDF کارولو ستراتیژي به یوازې د روزنې TF-IDF په اړه د ماډل روزنه ترسره کول وي، او بیا وروسته د ازموینې دقت لپاره د بشپړ معلوماتو سره TF-IDF بیا محاسبه کول وي. دا اړینه ده ځکه چې TF-IDF د یوې ټاکلې مودې په ټول ډیټاسیټ کې فریکونسۍ پورې اړه لري، او همدارنګه د روزنې پرمهال د ازموینې ډیټا شامل نه کړي.


په پای کې، یوازې د روزنې په سیټ کې د عمومي اصطلاح فریکونسۍ له مخې غوره ۱۰۰۰ اصطلاحات غوره شوي دي.


د tf-idf جدول

د مخکې پروسس کولو مرحلو لپاره کوډ -

 #tokenize word_tokens <- complete_tbl %>% unnest_tokens(word,content) #stemming word_tokens<-word_tokens %>% mutate(word_stem=SnowballC::wordStem(word)) #remove any words with numbers word_tokens <- word_tokens[-grep('^\\d+$', word_tokens$word_stem),] #remove any words with . word_tokens <- word_tokens[-grep('[.]', word_tokens$word_stem),] #remove any single character words word_tokens <- word_tokens[-grep('.\\b[az]\\b.', word_tokens$word_stem),] #remove tokens which match stop words word_tokens <- word_tokens %>% filter(!word %in% stopWords) word_tokens <- word_tokens %>% filter(!word_stem %in% stopWords) #split into training and test word_tokens_train <- word_tokens %>% filter(document %in% ind) #create tfidf for training and then a complete tfidf for testing tfidf_train<-word_tokens_train %>% count(document,word_stem,sort=TRUE) %>% bind_tf_idf(word_stem,document,n) tfidf_complete<-word_tokens %>% count(document,word_stem,sort=TRUE) %>% bind_tf_idf(word_stem,document,n)

کارول شوي ماډلونه

  1. K- نږدې ګاونډیان (KNN) – د بنسټیز ماډل

دا ماډل مناسب ځانګړتیا ترلاسه کوي مګر خورا ضعیف حساسیت لري، پدې معنی چې ډیری هامونه په غلط ډول د سپیم په توګه وړاندوینه کیږي. په یاد ولرئ چې په لاندې پایلو کې، مثبت طبقه "هام" ده. دا واقعیا د یو کارونکي لپاره ترټولو بد ممکنه پایله ده ځکه چې دوی به ډیری ریښتیني بریښنالیکونه له لاسه ورکړي چې د سپیم په توګه طبقه بندي شوي.


د KNN لپاره د K=3 سره د مغشوشیت میټریکس
د KNN ماډل لپاره کوډ -

 ##train a model library(e1071) library(caret) library(class) library(LiblineaR) ##remove document number since this is indicative of spam or ham wide_feat_train<-subset(wide_feat_train, select=-c(document)) wide_feat_test<-subset(wide_feat_test,select=-c(document)) #Base model is a knn attempt knn_pred<-knn(train=wide_feat_train,test=wide_feat_test,cl=labels_train$label,k=3) knn_results<-confusionMatrix(knn_pred,labels_test$label) knn_results knn_results$byClass["F1"] knn_results$byClass["Precision"] knn_results$byClass["Recall"]
  1. لوژستیکي ریګریشن

د KNN ماډل څخه د خرابو پایلو ترلاسه کولو وروسته، لوژستیک ریګریشن بل ماډل و چې کارول شو.


د دې سناریو د هدف لپاره،

د هام او سپیم بریښنالیک لپاره د احتمال فورمولونه

لوژستیکي ریګریشن د لاندې هایپر پیرامیټرونو سره پلي شو -

  • زیان =" L1"
  • لګښت = ۲
  • اپسیلون = ۰.۱


دا ماډل د ازموینې ډیټاسیټ په اړه لاندې پایلې وړاندې کوي، چې دمخه د KNN ماډل کې د پام وړ پرمختګ دی. ټولیز دقت خورا لوړ دی، مګر ځانګړتیا ښیي چې لاهم د ښه والي لپاره یو څه ځای شتون لري. د دې ماډل کاروونکی به یو څو هامونه د سپیم په توګه وړاندوینه ومومي.
د لوژستیکي ریګریشن لپاره د ګډوډۍ میټریکس د لوژستیکي ریګریشن ماډل لپاره کوډ -

 #Next is a logistic regression usin the below hyperparameters grid_logit <- expand.grid(loss="L1",cost=2,epsilon=0.1) lr <- train(x=wide_feat_train,y=labels_train$label,method="regLogistic",tuneGrid=grid_logit) lr_results<-confusionMatrix(as.factor(predict(lr,wide_feat_test)),labels_test$label) lr_results p_lr = predict(lr,wide_feat_test) prednum_lr<-ifelse(p_lr=="spam",0,1) roc_lr<-roc(labels_test$label,prednum_lr) plot(roc_lr) roc_lr$auc p1_lr<- prediction(as.numeric(p_lr),as.numeric(labels_test$label)) pr_lr <- performance(p1_lr, "prec", "rec") plot(pr_lr) lr_results$byClass["F1"] lr_results$byClass["Precision"] lr_results$byClass["Recall"]
  1. ساده بایز ماډل

بل ماډل چې هڅه وشوه د Naïve Bayes ماډل و. د دې ماډل لپاره، د پنځه ګوني طریقې سره د غوره هایپر پیرامیټرونو موندلو لپاره کراس تایید ترسره شو. دا د Naive-Bayes لپاره لاندې پیرامیټرونو پایله لري -


  • لاپلاس = ۰
  • کارنیل کارول = غلط
  • سمون = ۱


دا ماډل د ځانګړتیا او حساسیت دواړو په برخه کې هم ښې پایلې ترلاسه کوي.

د Naïve Bayes ماډل لپاره د ګډوډۍ میټریکس د Naive Bayes ماډل لپاره کوډ -

 ##naive bayes main model nb_cv <- train( x=wide_feat_train, y=labels_train$label, method = "naive_bayes", trControl = train_control, tuneGrid = grid ) nb <- naiveBayes(wide_feat_train,labels_train$label,adjust=1,laplace=0,usekernel=FALSE) nb_results<-confusionMatrix(as.factor(predict(nb,wide_feat_test)),labels_test$label) nb_results p = predict(nb,wide_feat_test) prednum<-ifelse(p=="spam",0,1) roc_nb<-roc(labels_test$label,prednum) plot(roc_nb) roc_nb$auc p1<- prediction(as.numeric(p),as.numeric(labels_test$label)) pr <- performance(p1, "prec", "rec") plot(pr) nb_results$byClass["F1"] nb_results$byClass["Precision"] nb_results$byClass["Recall"]


۴. د ویکتور ماشین ملاتړ (SVM)

وروستی ماډل د SVM کراس-ویلډیشن دی چې د خطي کرنل سره دی. د ملاتړ ویکتور ماشینونه هڅه کوي چې په غوره توګه د دوه ټولګیو ترمنځ د معلوماتو جلا کولو لپاره اعظمي جلا کونکی هایپرپلین ومومي.


دلته، د غوره هایپر پیرامیټرونو پیژندلو لپاره د R کتابتون کاریټ په کارولو سره د 5-پونډو CV ترسره کیږي. دا هایپر پیرامیټرونه لاندې ښودل شوي دي -

  • لګښت = ۱
  • زیان = L2
  • وزن = ۳


د دې ماډل پایلې کله چې په ساتل شوي ازموینې ډیټاسیټ کې پلي کیږي لاندې ښودل شوي دي -

د SVM لپاره د ګډوډۍ میټریکس

د SVM لپاره کوډ -

 #svm train_control <- trainControl( method = "cv", number = 5 ) svm <- train(x=wide_feat_train,y=labels_train$label,method="svmLinearWeights2",trControl=train_control) svm$bestTune svm_results<-confusionMatrix(as.factor(predict(svm,wide_feat_test)),labels_test$label) svm_results p_svm = predict(svm,wide_feat_test) prednum_svm<-ifelse(p_svm=="spam",0,1) roc_svm<-roc(labels_test$label,prednum_svm) plot(roc_svm,colorize=T,lwd=3, main=" ROC curve for SVM model") roc_svm$auc p1_svm<- prediction(as.numeric(p_svm),as.numeric(labels_test$label)) pr <- performance(p1_svm, "prec", "rec") plot(pr) svm_results$byClass["F1"] svm_results$byClass["Precision"] svm_results$byClass["Recall"]

پایلې

لاندې جدول هغه اقدامات لنډیز کوي چې د غوره ماډل غوره کولو لپاره په پام کې نیول شوي وو-

ماډل

دقت

د F1 نمره

دقیقیت

یادول

کې ان ان

۰.۲۵۲

۰.۲۲۹۳

۰.۸۹۴۷

۰.۱۳۱۵

لوژستیکي ریګریشن

۰.۹۶۲۴

۰.۹۷۸۱

۰.۹۵۹۱

۰.۹۹۸

ساده بایز

۰.۹۷۲۲

۰.۹۸۳۴

۰.۹۸۸۲

۰.۹۷۸۷

د SVM

۰.۹۸۸۵

۰.۹۹۳۲

۰.۹۸۸۶

۱

د پورته جدول څخه، دا لیدل کیدی شي چې SVM د نورو ماډلونو په پرتله غوره فعالیت کوي.


د لا تایید لپاره، د ROC منحني نقشې جوړې شوې او د AUC ارزښتونه محاسبه شول.

ماډل

کې ان ان

لوژستیکي ریګریشن

ساده بایز

د SVM

AUC د

.۵۲۳۲

.۸۸۲

.۹۵۷۴

.۹۶۲۸

شکل: د څلورو ماډلونو لپاره د AUC ارزښتونه

د پورته ذکر شویو معیارونو څخه، دا نتیجه اخیستل کیدی شي چې د 5-fold کراس-ویلډیشن سره SVM د هام او سپیم په توګه د بریښنالیکونو طبقه بندي کولو کې په ډیټاسیټ کې غوره فعالیت کوي.

پایله

د سپیم فلټر کول به تل د دوامداره ارتقا سره یوه ساحه وي ځکه چې سپیمران په دوامداره توګه د سپیم پیغامونو لیږلو لپاره نوي او نوښتګر میتودونه لټوي. هیڅ یو د سپیم ضد حل ممکن سم نه وي. پدې پروژه کې، د ماشین زده کړې ځینې وسایل کارول شوي ترڅو وګوري چې دوی د هام او سپیم بریښنالیکونو لپاره د طبقه بندي کونکي په توګه څنګه فعالیت کوي. د محاسبې توضیحات وړاندې کیږي او همدارنګه د دوی د فعالیت پرتله کول.


د څلورو ماشین زده کړې ماډلونو څخه چې ازمول شوي، SVM د فعالیت له پلوه غوره وموندل شو. لوژستیک ریګریشن او نایو بایس ماډلونه هم امید لرونکې پایلې ښیې.