$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Il metodo di selezione delle funzionalità basato su wrapper, utilizzando auto-encoder, è utilizzato nell'architettura suggerita per il rilevamento malware Android, come mostrato nella Figura 1. Il dataset è suddiviso in sottoinsiemi di addestramento e test 70:30. La classificazione e la selezione delle caratteristiche sono i due principali passaggi nel processo di analisi del malware.
Selezione delle caratteristiche (FS): Questo passaggio consiste nella ricerca iterativa dei migliori sottoinsiemi di caratteristiche (vedi Definizione 1) utilizzando algoritmi basati sull'intelligenza degli sciami, in particolare Cuckoo Search Optimization (CSO), Ant Lion Optimization (ALO) e Firefly Optimization (FO). Dopodiché, gli auto-encoder elaborano le caratteristiche scelte per produrre una rappresentazione compressa dei dati in arrivo. Un approccio di induzione utilizza quindi l'output degli auto-encoder per valutare quanto bene queste caratteristiche differenziano tra app pericolose e innocue. Per consentire una categorizzazione precisa dei casi successivi, l'algoritmo di induzione costruisce un classificatore mappando lo spazio delle caratteristiche a una raccolta di etichette di classe.
Classificazione: Utilizzando il Classificatore Neuronale Artificiale suggerito e i noti metodi di induzione, il set ridotto di funzionalità dalla fase di selezione delle caratteristiche viene valutato in questa fase per vedere quanto efficacemente possa rilevare il malware Android.
Utilizzando approcci sofisticati di classificazione e concentrandosi sulle caratteristiche più informative, questa metodologia mira a migliorare l'accuratezza e l'efficienza del rilevamento malware su Android.
Selezione delle caratteristiche
Un passaggio cruciale nel machine learning è la selezione delle caratteristiche, che consiste nel determinare quali caratteristiche siano più affidabili, pertinenti e non ridondanti per la costruzione del modello. Ridurre i set di funzionalità in modo metodico diventa sempre più cruciale man mano che i dataset continuano a crescere in dimensioni e complessità. L'obiettivo principale della selezione delle funzionalità è massimizzare le prestazioni del modello riducendo al contempo le spese computazionali. Le caratteristiche ripetitive e inutili vengono rimaste, permettendo al processo di concentrarsi sulle variabili più significative per il modello. Invece di dipendere dall'algoritmo di machine learning per identificare caratteristiche significative, i seguenti sono i vantaggi della selezione delle caratteristiche prima dell'addestramento del modello:
Modelli semplificati: Ridurre il numero di variabili di input porta a modelli più semplici, più facili da interpretare e comprendere.
Riduzione della varianza: Concentrandosi sulle caratteristiche essenziali, la selezione delle caratteristiche aiuta a ridurre la varianza del modello, mitigando così l'overfitting e migliorando la generalizzazione ai nuovi dati.
Tempo di allenamento ridotto: Un set di funzionalità più ridotto riduce il carico computazionale, con conseguente addestramento e valutazione del modello più rapidi.
Mitigazione della Maledizione della Dimensionalità: I dati ad alta dimensione possono presentare sfide come maggiore complessità e sovrafitting; La selezione delle caratteristiche affronta questi problemi limitando lo spazio delle feature alle variabili più informative.
Definizione 1 della selezione delle caratteristiche
Pensa a un induttore I e a un dataset D che ha una distribuzione D su uno spazio di istanza etichettato e contiene caratteristiche (x 1,x 2,x 3,... ,x n). Il sottoinsieme di caratteristiche che ottimizza l'accuratezza del classificatore C=I(D) è noto come sottoinsieme ottimale Xopt.
Nella selezione non supervisionata delle caratteristiche, gli approcci basati su wrapper mirano a identificare la combinazione ottimale di funzionalità che migliorano le prestazioni del modello. Aggiungendo o rimuovendo sistematicamente funzionalità, spesso tramite algoritmi avidi, questi metodi valutano vari modelli per selezionare quelle più impattanti per lo sviluppo. Questo processo è raffigurato nella Figura 2.
Per la selezione delle caratteristiche, vengono utilizzati algoritmi di intelligenza di sciame come Firefly Optimization (FO), Cuckoo Search Optimization (CSO) e Ant Lion Optimization (ALO) per superare le tattiche convenzionali e avidi. La funzione obiettivo selezionata nella fase di valutazione della fitness ha un impatto significativo sull'efficacia di questi algoritmi. Sia la quantità di caratteristiche selezionate sia l'errore del modello alla fine di ogni iterazione vengono considerati nella procedura iterativa di selezione delle caratteristiche basata su wrapper, per valutare l'adeguatezza delle caratteristiche selezionate. L'equazione (1) formalizza questa valutazione.
(1)
La penalità dell'algoritmo di apprendimento per gli errori commessi durante la valutazione della fitness è rappresentata da τ in questa equazione, dove τ ∈ [0,1]. La lunghezza del sottoinsieme delle caratteristiche scelta è indicata dalla variabile l, e il numero totale di caratteristiche è rappresentato dalla variabile u.
Auto-encoder
Le reti neurali specializzate nell'apprendimento di rappresentazioni compresse dei dati di input sono chiamate autoencoder. Un codificatore e un decodificatore sono le due parti principali di essi. Mentre il decodificatore cerca di recuperare l'input originale da questa forma compressa, l'encoder elabora i dati di input e li comprime in una rappresentazione dello spazio latente. L'addestramento dei modelli di machine learning è reso più semplice dalla capacità dell'encoder di estrarre funzionalità preziose dai dati non elaborati una volta addestrato.
L'architettura autoencoder proposta (come mostrato nella Figura 3) presenta un encoder composto da uno strato di input con N nodi, seguito da due livelli nascosti contenenti rispettivamente N*2 e N nodi. Esiste un secondo strato nascosto con N/2 nodi chiamato spazio latente. Con due strati nascosti di nodi [N, N*2], il decodificatore replica questa struttura, terminando con uno strato di output di N nodi.
Ogni livello nascosto è seguito da una normalizzazione batch per accelerare e stabilizzare il processo di addestramento, e tutti i livelli utilizzano la funzione di attivazione LeakyReLU per gestire eventuali problemi di gradiente di nullità. L'equazione (2) fornisce una definizione matematica della funzione di attivazione di LeakyReLU:
(2)
Dove hθ(x), si ottiene usando l'equazione (3)
(3)
Qui, xi=(x1,x 2,...,xn) rappresenta i valori di ingresso per i nodi, mentre wi=(w1,w 2,...,wn) indica i pesi associati a questi nodi. Durante il processo di apprendimento, i pesi vengono regolati dopo essere stati inizialmente assegnati casualmente all'interno dell'intervallo [0,1]. Per evitare che i parametri passino attraverso l'origine, viene aggiunto un termine di bias a ogni strato. L'equazione (4) definisce la soglia, e se l'output ottenuto dall'equazione (3) la supera, viene attivato un nodo.
(4)
Ottimizzazione della selezione delle caratteristiche basata su involucro di leone formica (ALWFSO)
Modellando il comportamento predatorio naturale del formicaio, l'Ottimizzatore del Leone Formica (ALO) è stato presentato per la prima volta da Seyed AliMirjalili 34. Questo algoritmo di ottimizzazione identifica efficacemente le soluzioni ottimali indipendentemente dai valori iniziali dei parametri. ALO mostra una convergenza rapida e gestisce efficacemente sia i vincoli interi che quelli discreti. Cattura di prede, creazione di trappole, intrappolamento delle formiche, movimento casuale delle formiche e riparazione delle trappole sono i passaggi che compongono il processo di caccia in ALO.
Nel contesto dell'algoritmo Ant Lion Optimizer (ALO), le formiche rappresentano soluzioni candidate che effettuano ricerche casuali nello spazio delle soluzioni, mentre i formicioni corrispondono alle trappole o alle guide che influenzano i movimenti delle formiche in base ai valori di fitness. Questa doppia popolazione modella il comportamento predatorio naturale dei formicali che catturano le formiche. All'inizio, le popolazioni sia di formiche che di formicioni vengono inizializzate casualmente. I formiche vengono selezionati per ogni formica utilizzando il meccanismo di selezione della ruota della roulette, seguito da un processo di camminata casuale (come mostrato nell'Algoritmo-1). L'equazione (5) descrive quindi come questa camminata viene normalizzata.
(5)
All'inizio, le popolazioni di formiche e formiche si formano casualmente. Per ogni formica viene scelto un formicaio usando un meccanismo della roulette, permettendo una camminata casuale che viene normalizzata tramite formule predeterminate. Questo processo garantisce che i movimenti delle formiche siano influenzati dalla posizione dei formicali, simulando efficacemente il naturale processo di caccia. La posizione di ciascuna formica viene poi aggiornata in base a questa interazione, guidando la ricerca verso soluzioni ottimali.
Grazie alla sua architettura, l'algoritmo ALO può attraversare efficacemente spazi di ricerca complessi, rendendolo uno strumento potente per risolvere una varietà di problemi di ottimizzazione. L'idoneità di ogni formica viene valutata al termine di ogni ripetizione. Come mostrato nell'Algoritmo-1, il formico viene sostituito con la formica se questa è più adatta rispetto alla sua controparte. In questo caso
, indica la posizione della formica iesima all'iterazione t; I è un rapporto;
indica la posizione delj-esimo formico all'iterazione t;
è l'élite per la camminata casuale all'iterazione t, scelta dalla ruota della roulette; e
è la camminata casuale del formico all'iterazione t, che è anch'essa determinata dalla ruota della roulette. Dopo ogni ciclo, la soluzione globalmente ottimale, confermata dal classificatore integrato degli involucri, viene restituita.
Algoritmo 1: ALWFSO
Definisci la funzione obiettivo: f(x):x=(x1,x 2,...,xd)
Inizializzazione casuale della colonia di formiche e formicioni
Calcolo della fitness delle formiche e delle formiche
Scegli i formicli migliori e presumi che siano élite.
Ripeti finché la Condizione di Terminazione non è soddisfatta o f(x):x=(x1,x 2,...,xd)
Per ogni selezione formica-formica: Usa un meccanismo di selezione della ruota della roulette per scegliere probabilisticamente un formicaio che influenzerà il movimento della formica
X(t) = [0,cum_sum(2r(t 1) - 1),cum_sum(2r(t 2) - 1),...,cum_sum(2r(t n)-1)]


Fine dell'anello delle formiche
Valutazione della fitness: Ricalcola i valori di fitness di tutte le formiche in base alle loro nuove posizioni.
Sostituisci i formicioni con formiche se le formiche dimostrano una migliore forma fisica
Se un formicaio diventa più adatto, allora

Fine mentre
Ottimizzazione della selezione delle caratteristiche basata su wrapper di ricerca cuckoo (CSWFSO)
Ispirati dal comportamento parassitario della covata di alcune specie di cuculi, che depositano le uova nei nidi di altri uccelli ospiti, Xin-She Yang e Susah Deb35 hanno creato l'algoritmo Cuckoo Search nel 2009. In questa procedura, ogni cuculo depone un uovo in un nido che viene selezionato a caso. Le generazioni future erediteranno nidi con le uova migliori. La probabilità che un uccello ospite veda un uovo alieno è 0, e ci sono solo un certo numero di nidi ospiti disponibili.
Algoritmo 2: CSWFSO
Definisci la funzione obiettivo: f(x):x = (x1,x 2,...,xd)
Generano casualmente una popolazione iniziale di n nidi ospiti, ciascuno corrispondente a una soluzione candidata xi (i=1,2,3,...,n)
Ripeti finché la condizione di arresto non è soddisfatta o (tPer un cuculo a selezione casuale i, si produce una nuova soluzione candidata usando il volo di Lévy

Calcolare la fitness della nuova soluzione generata Fi [Per massimizzare, Fi α f(xi)]
Seleziona casualmente un nido ospite j dalla popolazione n
se (Fi >F j) allora j viene sostituito con una nuova soluzione
fine se
Abbandonare una parte delle reti peggiori per una frazione (p a)
I nuovi nidi vengono costruiti in frazione abbandonata (pa) utilizzando 
Metti da parte le migliori soluzioni o i nidi.
Classificandoli, scegli il miglior nido o soluzione disponibile in questo momento.
La generazione successiva eredita la soluzione migliore disponibile oggi.
Fine mentre
All'inizio, tutti i nidi vengono inizializzati casualmente. Con il progredire delle iterazioni, ogni cuculo modifica la propria posizione nello spazio delle soluzioni tramite voli di Lévy, come illustrato nell'Algoritmo 2. La dimensione del passo viene regolata di ∝ e un'operazione sigmoid converte i valori continui generati dall'Ottimizzazione della Ricerca Cuckoo (CSO) in un formato binario, come illustrato nelle Equazioni (6) e (7).
(6)
(7)
Come mostrato nell'Algoritmo 2, dove
e
sono nidi scelti casualmente e δ ∈ [0,1], alla fine di ogni iterazione alcuni nidi vengono abbandonati e aggiornati con nuove soluzioni candidate.
Ispirato dal parassitismo della covata dell'uccello cuculo, l'algoritmo di Ottimizzazione della Ricerca del Cuculo (CSO) si è dimostrato uno strumento utile per compiti di selezione delle caratteristiche35. La tecnica inizia inizializzando una popolazione di nidi, ognuno dei quali rappresenta una possibile soluzione nel contesto della selezione delle caratteristiche CSO basate su wrapper. Viene utilizzata una funzione obiettivo preimpostata per valutare la fitness di questi nidi. Utilizzando valutazioni di fitness, l'algoritmo determina la soluzione ottimale — chiamata global best — a ogni iterazione. Per esplorare meglio lo spazio della soluzione, una parte del nido, rappresentata da piselli, viene eliminata e sostituita con di nuove in conformità con il protocollo CSO. Il classificatore wrapper incorporato conferma che l'algoritmo fornisce la risposta globalmente ottimale dopo che tutte le iterazioni sono terminate.
Ottimizzazione della selezione delle caratteristiche basata su wrapper Firefly (FWFSO)
Algoritmo 3: FWFSO
Definisci la funzione Obiettivo: f(x):x = (x1,x 2,...,xd)
Generare uno sciame iniziale di n lucciole, ciascuno rappresentando una soluzione xi (i = 1,2,3,...,n)
Determinare l'intensità luminosa I di ogni lucciola in base al valore della funzione obiettivo
Definire il coefficiente di assorbimento della luce γ
Ripeti finché la condizione di arresto non è soddisfatta o (t < MaxGeneration)
per ogni lucciola i (∀ i=1,2,3,... ,n)
per ogni lucciola j (∀ j=1,2,3,... ,i)
Ottieni intensità luminose di Ii eI j
sei i <j allora


altrimenti
Sposta casualmente la lucciola i per esplorare lo spazio di ricerca
fine se
L'attrattività diminuisce con la distanza come 
Valuta la soluzione aggiornata e regola di conseguenza l'intensità della lucciola
fine per
fine per
Classifica le lucciole in base alle loro intensità luminose e identifica quella con la luminosità più alta come la soluzione migliore attualmente
L'algoritmo di ottimizzazione delle luciole, introdotto da George Lindfield e JohnPenny 36, emula il comportamento naturale delle lucciole per attirare altre. In questo algoritmo, l'attrattiva di una lucciola è direttamente proporzionale alla sua luminosità, mentre la distanza tra due lucciole è inversamente proporzionale alla loro attrattività. Se non ci sono lucciole più luminose nelle vicinanze, una luciola si muoverà casualmente.
Due lucciole sono attratte l'una dall'altra in base alla loro luminosità; una lucciola meno brillante si avvicinerà a una più brillante. Il movimento casuale viene usato quando non c'è una lucciola più luminosa. Conβ 0 che indica bellezza, la distanza r=0 tra due lucciole viene utilizzata per calcolarne l'attrattiva. La separazione rjk tra le lucciole j e k si calcola come segue:
qui, rji e rki osservano le componenti spaziali dellai-esima dimensione per le lucciole jth e kth, rispettivamente, e n rappresenta il numero di dimensioni. Il movimento di una lucciola verso un'altra è governato dal grado di attrazione tra loro:
. In questa equazione, rj la posizione attuale di Firefly j, γ è la luce Ranard che è un numero casuale compreso tra 0 e 1, α è il tasso di mutazione e il coefficiente di assorbimento. Se non ci sono più lucciole brillanti, la lucciola si muoverà a caso secondo αα. Dopo ogni iterazione, il classificatore wrapper incorporato valida la soluzione globale minima, che viene poi restituita.
Classificatore
Sia i dataset strutturati che quelli non strutturati possono essere classificati suddividendoli in gruppi o classi discreti. L'obiettivo è utilizzare gli attributi dei nuovi dati per prevedere la loro classe o etichetta. Questa procedura determina la categoria a cui appartengono i dati freschi approssimando una funzione di mappatura dalle variabili di input alle variabili di output discrete.
Foreste Casuali, Alberi Decisionali, K-Vicini Più Stretti, Regressione Logistica e Macchine a Vettori di Supporto sono tra gli algoritmi di induzione o classificazione utilizzati per valutare la soluzione suggerita per il rilevamento malwareAndroid 37. Inoltre, questo lavoro presenta l'Artificial Neuronal Classifier, un rivoluzionario classificatore ibrido che combina algoritmi di induzione convenzionali con Reti Neurali Artificiali.
Classificatore neuronale artificiale
Il progetto suggerito per il classificatore neuronale artificiale (ANC) combina un classificatore a induzione e Reti Neurali Artificiali (ANN), come si vede nella Figura 4. Secondo questa architettura, l'ANN viene insegnata a identificare schemi e correlazioni tra le caratteristiche di input. Il classificatore a induzione utilizza le informazioni apprese dall'ANN per migliorare la precisione nell'identificare software malevolo da software sicuro.
Dopo test approfonditi, l'ANN all'interno dell'ANC fu configurato con tre strati nascosti completamente connessi, ciascuno con M nodi, seguiti da uno strato di input con N nodi. Esiste un livello di uscita che viene collegato al classificatore a induzione dopo un ulteriore livello nascosto completamente connesso con M/2 nodi. L'equazione (8) determina il numero di nodi negli strati nascosti:
(8)
dove M indica il numero di nodi in uno strato nascosto, N rappresenta il numero di caratteristiche di input, e α è un parametro che varia da 2 a 10. La funzione di attivazione (come mostrato nell'Equazione (9)) svolge un ruolo cruciale nel determinare se un neurone viene attivato, a seconda che l'uscita superi una soglia specificata.
(9)
Qui, hθ(x) viene calcolato secondo l'Equazione (3). L'ANC utilizza l'ottimizzatore Adam per regolare i pesi della rete e i tassi di apprendimento. In Adam, i tassi di decadimento per la stima
del primo momento e quella del secondo momento
per ogni peso ωij sono indicati rispettivamente da β1 e β2. Sia N il tasso di apprendimento. Le regole di aggiornamento per Adam sono mostrate nelle Equazioni (10) e (11):
(10)
(11)
Le stime corrette per bias del primo e secondo momento,
e
, sono calcolate usando le Equazioni (12) e (13):
(12)
(13)
Questi calcoli garantiscono che l'ottimizzatore mantenga tassi di apprendimento adeguati per ogni peso, facilitando un addestramento efficiente ed efficace dell'ANC.
La regola di aggiornamento del peso per ogni connessione nella rete neurale è definita dall'Equazione (14):
(14)
Dopo l'aggiornamento dei pesi della rete neurale, le prestazioni vengono valutate utilizzando una funzione di perdita che misura la discrepanza tra i risultati previsti e quelli effettivi. In questo modello, l'Errore Assoluto Medio (MAE), come definito nell'Equazione (15), viene utilizzato a questo scopo:
(15)
In questo contesto, yi rappresenta l'output effettivo,
indica l'output previsto e n è il numero totale di istanze in output. Dopo che la rete neurale è stata addestrata in un certo numero di epoche, le rappresentazioni apprese dallo spazio delle caratteristiche vengono trasferite al classificatore di induzione per distinguere tra malware e software benigno.
Il proposto Artificial Neuronal Classifier (ANC) funziona come un framework ibrido che combina le capacità di apprendimento delle caratteristiche di una Rete Neurale Artificiale (ANN) con i punti di forza decisionali dei tradizionali classificatori a induzione, come Random Forest e Decision Tree. In questo design, l'ANN elabora prima le caratteristiche selezionate ottenute dall'autoencoder per apprendere pattern complessi e correlazioni tra attributi di input. Le rappresentazioni risultanti apprese vengono poi passate al classificatore di induzione, che esegue la classificazione finale delle applicazioni Android come benigne o malevole. In questo modo, l'ANC agisce come un involucro, migliorando i classificatori convenzionali con profondi incorporamenti di caratteristiche preservandone l'interpretabilità. Questo meccanismo ibrido consente all'ANC di sfruttare sia l'astrazione delle caratteristiche di alto livello dall'ANN sia decisioni robuste da classificatori di machine learning consolidati, con conseguente maggiore accuratezza e generalizzazione nel rilevamento.
Configurazione sperimentale
Un sistema operativo Windows 10 a 64 bit, con processore i5 - 2,30 GHz, 8 GB di RAM e un hard disk da 2 TB, fu utilizzato nell'impianto sperimentale. Python 3.7 fu utilizzato come linguaggio di programmazione, e la piattaforma Jupyter fu impostata per abilitare i pacchetti di machine learning e deep learning.
L'IEEE Dataport forniva i dati delle sequenze di chiamate API dell'esperimento, che includevano 43.876 sequenze - 42.797 delle quali classificate come malware e 1.079 come goodware. Virus Total veniva utilizzato per la verifica, mentre l'ambiente Cuckoo Sandbox veniva usato per la raccolta dei dati. La Tabella 1 fornisce una spiegazione completa delle sequenze di chiamate API.