top of page

Risultati Ricerca Intelligenza Artificiale Italia

482 elementi trovati per ""

  • Trucchi Python per la data science

    introduzione Grazie alla sua semplicità e facilità di apprendimento , Python è diventato molto popolare in questi giorni. Viene utilizzato per varie attività come data science, machine learning, sviluppo web, scripting, automazione, ecc . Python non è una delle competenze più impegnative per i data scientist. La semplicità di Python è il primo di numerosi vantaggi nella scienza dei dati. Sebbene alcuni data scientist abbiano un background in informatica o conoscano altri linguaggi di programmazione, moltiI data scientist provengono da statistica, matematica o altre discipline tecniche e potrebbero non avere la stessa conoscenza di programmazione quando entrano nell'industria . La sintassi di Python è facile da capire e da scrivere, il che lo rende un linguaggio di programmazione veloce e facile da imparare. In questo articolo, abbiamo raccolto più di 40 funzioni e metodi che possono aiutarti ad accelerare le tue attività di data science . Bene, iniziamo….. Gestire Liste e dizionari con Python ? Gli elementi di una lista possono essere ripetuti in modo abbastanza esteso in una singola riga. Mettiamolo in pratica usando il seguente esempio: numbers = [1, 2, 3, 4, 5, 6, 7, 8] even_numbers = [number for number in numbers if number % 2 == 0] print(even_numbers) Output: [1,3,5,7] La stessa cosa può essere fatta usando dizionari, set e generatori. Diamo un'occhiata a un altro esempio, questa volta con i dizionari: dictionary = {'first_num': 1, 'second_num': 2, 'third_num': 3, 'fourth_num': 4} oddvalues = {key: value for (key, value) in dictionary.items() if value % 2 != 0} print(oddvalues)Output: {'first_num': 1, 'third_num': 3} Come utilizzare la funzione enumerate() con Python ? Enumerate è una funzione utile per scorrere un oggetto come un elenco, un dizionario o un file. La funzione produce una tupla che include i valori acquisiti dall'iterazione dell'oggetto e il contatore di loop (dalla posizione iniziale di 0). Quando si desidera scrivere codice in base all'indice, il contatore di loop è utile. Diamo un'occhiata a un esempio in cui il primo e l'ultimo elemento potrebbero essere trattati in modo diverso. sentence = 'Just do It' length = len(sentence) for index, element in enumerate(sentence): print('{}: {}'.format(index, element)) if index == 0: print('The first element!') elif index == length - 1: print('The last element!') Output: 0: J The first element! 1: u 2: s 3: t 4: 5: d 6: o 7: 8: I 9: t The last element! I file possono anche essere enumerati con la funzione enumera. Prima di uscire dal ciclo, stamperemo le prime 10 righe del file CSV nell'esempio seguente. Non replicheremo il risultato perché è troppo lungo. Puoi, tuttavia, usarlo su qualsiasi file tu abbia. with open('heart.csv') as f: for i, line in enumerate(f): if i == 10: break print(line) Come Restituire più valori da una funzione con Python ? Spesso desideriamo restituire più di un valore durante la progettazione di funzioni. Analizzeremo due approcci tipici qui: Metodo 1: Iniziamo con l'opzione più semplice: restituire una tupla. Questa tecnica viene spesso utilizzata solo quando sono presenti due o tre valori da restituire. Quando ci sono più valori in una tupla, è semplice perdere traccia dell'ordine degli elementi. Nella sezione del codice sotto get_student c'è una funzione di esempio che restituisce il nome e il cognome del dipendente come tuple in base ai loro numeri ID. # returning a tuple. def get_student(id_num): if id_num == 0: return 'Taha', 'Nate' elif id_num == 1: return 'Jakub', 'Abdal' else: raise Exception('No Student with this id: {}'.format(id_num)) Quando chiamiamo la funzione get_student con il numero 0, notiamo che restituisce una tupla con due valori: 'Taha' e 'Nate' Student = get_student(0) print('first_name: {}, last_name: {}'.format(Student[0], Student[1])) Output: first_name: Taha, last_name: Nate Metodo 2: Restituire un dizionario è la seconda opzione. Poiché i dizionari sono coppie di valori chiave, possiamo nominare i valori che vengono restituiti, il che è più intuitivo delle tuple. Il metodo 2 è lo stesso del metodo 1, restituisce solo un dizionario. # returning a dictionary def get_data(id_num): if id_num == 0: return {'first_name': 'Muhammad', 'last_name': 'Taha', 'title': 'Data Scientist', 'department': 'A', 'date_joined': '20200807'} elif id_num == 1: return {'first_name': 'Ryan', 'last_name': 'Gosling', 'title': 'Data Engineer', 'department': 'B', 'date_joined': '20200809'} else: raise Exception('No employee with this id: {}'.format(id_num)) È più facile fare riferimento a un valore specifico tramite la sua chiave quando un risultato è un dizionario. Stiamo chiamando la funzione con id_num = 0 employee = get_data(0) print('first_name: {},nlast_name: {},ntitle: {},ndepartment: {},ndate_joined: {}'.format( employee['first_name'], employee['last_name'], employee['title'], employee['department'], employee['date_joined'])) Output: first_name: Muhammad, last_name: Taha, title: Data Scientist, department: A, date_joined: 2020-08-07 Come Confrontare più numeri con Python ? Se hai un valore e desideri confrontarlo con altri due valori, puoi utilizzare la seguente espressione matematica di base: 1<x<30 Questo è il tipo di espressione algebrica che impariamo alle elementari. Tuttavia, l'istruzione identica può essere utilizzata anche in Python. Sì, avete letto bene. Fino ad ora, presumibilmente hai eseguito confronti in questo formato: 1<x e x<30 In Python, tutto ciò che devi fare è usare quanto segue: 1<x<30 x = 5 print(1<x<30) Uscita: true For-Else Method con Python ? Questo metodo viene utilizzato per applicare il ciclo su un elenco. In generale, quando vuoi scorrere un elenco che applichi, un ciclo for. Ma con questo metodo, puoi passare un'altra condizione in un ciclo, il che è estremamente raro. Altri linguaggi di programmazione non supportano questo metodo. Diamo un'occhiata a come funziona in generale. Se vuoi controllare se c'è un numero pari in una lista. number_List = [1, 3, 7, 9,8] for number in number_List: if number % 2 == 0: print(number) break else: print("No even numbers!!") Output: 8 Se viene trovato un numero pari, il numero verrà stampato e la parte else non verrà eseguita poiché passiamo un'istruzione break. Se l'istruzione break non viene mai eseguita, verrà eseguito il blocco else. Come trovare l'elemento più grande o più piccolo da un elenco con Python ? Usando il modulo "heapq" puoi trovare l'elemento n-più grande o n-più piccolo da un elenco. Vediamo un esempio: import heapq numbers = [80, 25, 68, 77, 95, 88, 30, 55, 40, 50] print(heapq.nlargest(5, numbers)) print(heapq.nsmallest(5, numbers)) Output: [95, 88, 80, 77, 68] [25, 30, 40, 50, 55] Come passare tutti i valori di un elenco come argomento di funzioni? È possibile accedere a tutti gli elementi di un elenco utilizzando un "*" def Summation(*arg): sum = 0 for i in arg: sum += i return sum result = Summation(*[8,5,10,7]) print(result) Output: 30 Come ripetere un'intera stringa senza eseguire il loop con Python ? Basta moltiplicare la stringa per un numero, il numero di volte in cui vuoi che la stringa venga ripetuta. Allora il tuo lavoro è fatto. value = "Taha" print(value * 5) print("-" *21) Output: TahaTahaTahaTahaTaha Come trovare l'indice di un elemento da una lista con Python ? Utilizzare ".index" per trovare l'indice di un elemento da un elenco cities= ['Vienna', 'Amsterdam', 'Paris', 'Berlin'] print(cities.index('Berlin')) Output: 3 Come stampare più elementi sulla stessa linea con Python ? print("Analytics", end="") print("Vidhya") print("Analytics", end=" ") print("Vidhya") print('Data', 'science', 'blogathon', '12', sep=', ') Output: AnalyticsVidhya Analytics Vidhya Data, science, logathon, 12 Qual è la differenza tra "is" e "==" in Python ? Se vuoi controllare se due variabili puntano allo stesso oggetto, devi usare "is" Ma se vuoi controllare se due variabili sono uguali o meno, devi usare "==". list1 = [7, 9, 4] list2 = [7, 9, 4] print(list1 == list2) print(list1 is list2) list3 = list1 print(list3 is list1) Output: True False True La prima affermazione è True, perché list1 e list2 hanno entrambi gli stessi valori, quindi sono uguali. La seconda istruzione è False perché i valori puntano a variabili diverse nella memoria e la terza istruzione è True perché list1 e list3 puntano entrambi a un oggetto comune in memoria. Come unire 2 dizionari in una singola riga di codice con Python ? first_dct = {"London": 1, "Paris": 2} second_dct = {"Tokyo": 3, "Seol": 4} merged = {**first_dct, **second_dct} print(merged) Output: {‘London’: 1, ‘Paris’: 2, ‘Tokyo’: 3, ‘Seol’: 4} Come identificare se una stringa inizia con un carattere specifico o meno con Python ? Se hai bisogno di sapere se una stringa inizia con un alfabeto specifico, puoi utilizzare il metodo di indicizzazione che è comune. Ma puoi anche usare una funzione chiamata " inizia con", ti dirà se una stringa inizia con una parola specifica o meno, che passi alla funzione. sentence = "Analytics Vidhya" print(sentence.startswith("b")) print(sentence.startswith("A")) Output: False True Come ottenere l'Unicode di un carattere con Python ? Se hai bisogno di conoscere l'Unicode di un carattere, devi usare una funzione chiamata "ord" e passare il carattere nella funzione, di cui vuoi conoscere l'Unicode. Vediamo un esempio: print(ord("T")) print(ord("A")) print(ord("h")) print(ord("a")) Uscita: 84 65 104 97 Come ottenere la coppia chiave-valore di un dizionario con Python ? Se vuoi accedere alla chiave e al valore di un dizionario in modo diverso, puoi farlo usando una funzione chiamata "items()" . cities = {'London': 1, 'Paris': 2, 'Tokyo': 3, 'Seol': 4} for key, value in cities.items(): print(f"Key: {key} and Value: {value}") Output: Key: London and Value: 1 Key: Paris and Value: 2 Key: Tokyo and Value: 3 Key: Seol and Value: 4 Come i valori booleani possono essere utilizzati nelle operazioni matematiche con Python ? False è considerato 0 e True è considerato 1 x = 9 y = 3 outcome = (x - False)/(y * True) print(outcome) Output: 3.0 Come aggiungere valore in una posizione specifica di una lista con Python ? Se vuoi aggiungere un valore a una lista usando la funzione “append” , ma aggiungerà un valore nell'ultima posizione di una lista. Quindi, cosa succede se si desidera aggiungere valore in una posizione specifica di un elenco. Puoi anche farlo, puoi usare una funzione chiamata "inserisci" per inserire un valore in una posizione specifica di un elenco. Sintassi: list_name.insert(posizione, valore) Vediamo un esempio. cities = ["London", "Vienna", "Rome"] cities.append("Seoul") print("After append:", cities) cities.insert(0, "Berlin") print("After insert:", cities) Output: After append: [‘London’, ‘Vienna’, ‘Rome’, ‘Seoul’] After insert: [‘Berlin’, ‘London’, ‘Vienna’, ‘Rome’, ‘Seoul’] Funzione Filter() con Python ? Il funzionamento della funzione filtro risiede nel suo nome. Filtra un iteratore specifico in base a una funzione specifica passata al suo interno. Restituisce un iteratore. Sintassi: filtro (funzione, iteratore) Vediamo un esempio con la funzione filtro: mixed_number = [8, 15, 25, 30,34,67,90,5,12] filtered_value = filter(lambda x: x > 20, mixed_number) print(f"Before filter: {mixed_number}") print(f"After filter: {list(filtered_value)}") Output: Before filter: [8, 15, 25, 30, 34, 67, 90, 5, 12] After filter: [25, 30, 34, 67, 90] Come creare una funzione senza limite di parametri con Python ? Puoi creare una funzione senza preoccuparti dei parametri. È possibile passare qualsiasi numero di parametri desiderati quando si chiama la funzione. Vediamo un esempio: def multiplication(*arguments): mul = 1 for i in arguments: mul = mul * i return mul print(multiplication(3, 4, 5)) print(multiplication(5, 8, 10, 3)) print(multiplication(8, 6, 15, 20, 5)) Output: 60 1200 72000 Come eseguire l'iterazione su due o più elenchi contemporaneamente con Python ? Puoi scorrere un singolo elenco usando la funzione enumera, ma quando hai due o più elenchi, puoi anche scorrere su di essi usando la funzione "zip()" . capital = ['Vienna', 'Paris', 'Seoul',"Rome"] countries = ['Austria', 'France', 'South Korea',"Italy"] for cap, country in zip(capital, countries): print(f"{cap} is the capital of {country}") Output: Vienna is the capital of Austria Paris is the capital of France Seoul is the capital of South Korea Amsterdam is the capital of Italy Come modificare il "case" delle lettere in una frase con Python ? Se vuoi cambiare le maiuscole delle lettere, cioè maiuscole in minuscole e minuscole in maiuscole, puoi farlo usando una funzione chiamata "scambia maiuscole". Vediamo un esempio: sentence = "Data Science Blogathon." changed_sen = sentence.swapcase() print(changed_sen) Output: dATA sCIENCE bLOGATHON. Come controllare la dimensione della memoria utilizzata da un oggetto con Python ? Per controllare la memoria utilizzata da un oggetto importa prima la libreria sys poi usa un metodo di questa libreria chiamato “ getsizeof ”. Restituirà la dimensione della memoria utilizzata dall'oggetto. import sys mul = 5*6 print(sys.getsizeof(mul)) Output: 28 Funzione Map() con Python ?: La funzione map() viene utilizzata per applicare una funzione specifica a un determinato iteratore. Sintassi: mappa(funzione, iteratore) values_list = [8, 10, 6, 50] quotient = map(lambda x: x/2, values_list) print(f"Before division: {values_list}") print(f"After division: {list(quotient)}") Output: Before division: [8, 10, 6, 50] After division: [4.0, 5.0, 3.0, 25.0] Come invertire un'intera stringa con Python ? Per invertire una stringa puoi usare il metodo di slicing. Vediamo un esempio: value = "Analytics" print("Reverse is:", value[::-1]) Output: Reverse is: scitylanA Come scoprire il tempo di esecuzione di un blocco con Python ? Quando si addestra il modello di machine learning o deep learning o si esegue semplicemente un blocco di codice, è possibile verificare quanto tempo è stato necessario per eseguire il blocco di codice. Devi usare una funzione magica "%%time" nella parte superiore del blocco del tuo codice. Ti mostrerà la quantità di tempo necessaria per eseguire il blocco di codice. Vediamo un esempio: %%time sentence = "Data Science Blogathon." changed_sen = sentence.swapcase() print(changed_sen) Output: dATA sCIENCE bLOGATHON. Wall time: 998 µs Come rilasciare il carattere sinistro o destro di una stringa con Python ? Ci sono due funzioni chiamate “rstrip()” e “lstrip()” , “rstrip” è usato per eliminare alcuni caratteri dalla destra di una stringa e “lstrip” è usato per eliminare alcuni caratteri dalla sinistra di una stringa. Il valore predefinito di entrambe le funzioni è uno spazio vuoto. Ma puoi passare il tuo carattere specifico per rimuoverli dalla stringa. sentence1 = "Data Science Blogathon " print(f"After removing the right space: {sentence1.rstrip()}") sentence2 = " Data Science Blogathon" print(f"After removing the left space: {sentence2.lstrip()}") sentence3 = "Data Science Blogathon .,bbblllg" print("After applying rstrip:", sentence3.rstrip(".,blg")) Output: After removing the right space: Data Science Blogathon After removing the left space: Data Science Blogathon After applying rstrip: Data Science Blogathon Come contare il numero di volte in cui un elemento appare in un elenco con Python ? Puoi contare il numero di volte in cui un elemento appare in un elenco eseguendo un ciclo for tra di essi. Ma puoi farlo più facilmente, semplicemente chiamando un metodo nell'elenco chiamato "count" . Ecco un esempio: cities= ["Amsterdam", "Berlin", "New York", "Seoul", "Tokyo", "Paris", "Paris","Vienna","Paris"] print("Paris appears", cities.count("Paris"), "times in the list") Output: Paris appears 3 times in the list Come trovare l'indice di un elemento in una tupla o in una lista con Python ? Puoi trovare l'indice di un elemento in una tupla o in una lista semplicemente chiamando un semplice metodo chiamato "index" su quella tupla o lista. Ecco un esempio: cities_tuple = ("Berlin", "Paris", 5, "Vienna", 10) print(cities_tuple.index("Paris")) cities_list = ['Vienna', 'Paris', 'Seoul',"Amsterdam"] print(cities_list.index("Amsterdam")) Output: 1 3 Come rimuovere ogni elemento da un elenco o da un set con Python ? Puoi rimuovere tutti gli elementi da un elenco o da un insieme applicando un metodo chiamato "cancella" su quell'elenco o insieme. cities_list = ['Vienna', 'Paris', 'Seoul',"Amsterdam"] print(f"Before removing from the list: {cities_list}") cities_list.clear() print(f"After removing from the list: {cities_list}") cities_set = {'Vienna', 'Paris', 'Seoul',"Amsterdam"} print(f"Before removing from the set: {cities_set}") cities_set.clear() print(f"After removing from the set: {cities_set}") Output: Before removing from the list: [‘Vienna’, ‘Paris’, ‘Seoul’, ‘Amsterdam’] After removing from the list: [] Before removing from the set: {‘Vienna’, ‘Amsterdam’, ‘Seoul’, ‘Paris’} Come unire 2 set di dati con Python ? Per unire due insiemi puoi applicare il metodo chiamato “union()”. Si unirà alle due liste su cui hai applicato il metodo. set1 = {'Vienna', 'Paris', 'Seoul'} set2 = {"Tokyo", "Rome",'Amsterdam'} print(set1.union(set2)) Output: {‘Vienna’, ‘Tokyo’, ‘Seoul’, ‘Amsterdam’, ‘Rome’, ‘Paris’} Come ordinare i valori di un elenco in base alla loro frequenza con Python ? Innanzitutto, usa "counter" dal modulo chiamato collections per misurare la frequenza di ciascun valore, quindi applica un metodo chiamato "most_common" sul risultato del contatore per ordinare i valori dell'elenco in base alla loro frequenza. from collections import Counter count = Counter([7, 6, 5, 6, 8, 6, 6, 6]) print(count) print("Sort values according their frequency:", count.most_common()) Output: Counter({6: 5, 7: 1, 5: 1, 8: 1}) Sort values according their frequency: [(6, 5), (7, 1), (5, 1), (8, 1)] Come eliminare i valori duplicati da un elenco con Python ? Innanzitutto, converti l'elenco in un set, questo rimuoverà i valori duplicati perché un set non contiene valori duplicati. Quindi converti nuovamente il set in un elenco, in questo modo puoi facilmente eliminare i valori duplicati da un elenco. cities_list = ['Vienna', 'Paris', 'Seoul',"Amsterdam","Paris","Amsterdam","Paris"] cities_list = set(cities_list) print("After removing the duplicate values from the list:",list(cities_list)) Output: After removing the duplicate values from the list: [‘Vienna’, ‘Amsterdam’, ‘Seoul’, ‘Paris’] Come fare una singola frase da tutti gli elementi di una lista con Python ? Utilizzando un metodo chiamato “join” puoi unire tutti i singoli elementi di una lista e creare una singola stringa o frase. words_list = ["Data", "science", "Blogathon"] print(" ".join(words_list)) Output: Data science Blogathon Come restituire più valori da una funzione contemporaneamente con Python ? Sì, puoi farlo in Python. È possibile restituire più valori da una funzione contemporaneamente. Vediamo un esempio: def calculation(number): mul = number*2 div = number/2 summation = number+2 subtract = number-2 return mul, div, summation, subtract mul, div, summation, subtract = calculation(10) print("Multiplication:", mul) print("Division:", div) print("Summation:", summation) print("Subtraction:", subtract) Output: Multiplication: 20 Division: 5.0 Summation: 12 Subtraction: 8 Come scoprire la differenza tra due liste con Python ? Per prima cosa, converti le liste in insiemi, quindi applica il metodo chiamato "symmetric_difference" su questi insiemi. Ciò restituirà la differenza tra questi due elenchi. cities_list1 = ['Vienna', 'Paris', 'Seoul',"Amsterdam", "Berlin", "London"] cities_list2 = ['Vienna', 'Paris', 'Seoul',"Amsterdam"] cities_set1 = set(cities_list1) cities_set2 = set(cities_list2) difference = list(cities_set1.symmetric_difference(cities_set2)) print(difference) Output: [‘Berlin’, ‘London’] Come unire due elenchi diversi in un unico dizionario con Python ? Innanzitutto, applica una funzione zip su questi due elenchi, quindi converti l'output della funzione zip in un dizionario. Il tuo lavoro è finito, è così facile convertire due elenchi in un unico dizionario. number = [1, 2, 3] cities = ['Vienna', 'Paris', 'Seoul'] result = dict(zip(number, cities)) print(result) Output: {1: ‘Vienna’, 2: ‘Paris’, 3: ‘Seoul’} Come ottenere gli n elementi più grandi o gli n più piccoli di un elenco con Python ? Prima importa il modulo "heap q" quindi applica il metodo "n più grande" e "n più piccolo" e passa il valore di n e il nome della lista, in questo modo puoi ottenere gli n elementi più grandi e gli n più piccoli di una lista. import heapq numbers = [100, 20, 8, 90, 86, 95, 9, 66, 28, 88] print(heapq.nlargest(3, numbers)) print(heapq.nsmallest(3, numbers)) Output: [100, 95, 90] [8, 9, 20] Conclusioni Grazie per aver letto tutto l'articolo fino alla fine. Speriamo che questo articolo ti abbia aiutato a imparare qualcosa di nuovo.

  • Cosa è Docker e come funziona, la guida completa fino all'istallazione

    Non è difficile creare un modello di machine learning che funzioni sui nostri computer. È più difficile quando si lavora con un cliente che desidera utilizzare il modello su larga scala, ovvero un modello in grado di scalare ed eseguire su tutti i tipi di server in tutto il mondo. Dopo aver finito di progettare il tuo modello, potrebbe funzionare senza problemi sul tuo laptop o server, ma non così bene su altre piattaforme, come quando lo sposti nella fase di produzione o su un altro server. Molte cose possono andare storte, come problemi di prestazioni, arresto anomalo dell'applicazione o l'applicazione non ottimizzata in modo efficace. È stato sviluppato un modello di apprendimento automatico utilizzando un unico linguaggio di programmazione come Python , ma quasi sicuramente dovrà connettersi con più linguaggi di programmazione per l'acquisizione dei dati, la preparazione dei dati, il front-end, ecc. Docker semplifica la gestione di tutte queste interazioni perché ogni microservizio può essere costruito in un linguaggio distinto, consentendo la scalabilità e l'aggiunta rapida, l'eliminazione di servizi indipendenti. Riproducibilità, portabilità, facilità di implementazione, aggiornamenti granulari, leggerezza e semplicità sono tutti vantaggi di Docker. A volte non è il modello il problema, ma il requisito per ricreare l'intero stack. Docker ti consente di replicare facilmente l'ambiente di training e di esecuzione per il modello di machine learning da qualsiasi posizione. Docker ti consente di impacchettare il codice e le dipendenze in contenitori che possono essere trasferiti a host diversi, indipendentemente dall'hardware o dal sistema operativo. Gli sviluppatori possono utilizzare Docker per tenere traccia delle diverse versioni di un'immagine del contenitore, vedere chi l'ha prodotta con cosa e tornare alle versioni precedenti. Infine, anche se uno dei servizi dell'applicazione di machine learning è in fase di aggiornamento, correzione o down, l'applicazione di machine learning può continuare a essere eseguita. Per aggiornare un messaggio di output integrato nell'applicazione, non è necessario aggiornare l'intera applicazione e interrompere altri servizi. Cosa è Docker e quando è nato ? È una piattaforma software che semplifica lo sviluppo, l'esecuzione, la gestione e la distribuzione di applicazioni. Ciò è stato possibile virtualizzando il sistema operativo del computer che aveva installato. La prima edizione di Docker era stata lanciata nel 2013. Il linguaggio di programmazione GO è stato utilizzato per creare Docker. Considerando il ricco set di funzionalità che Docker ha da offrire, è stato ampiamente accettato da alcune delle principali organizzazioni e università del mondo, come Visa, PayPal, Cornell University e Indiana University (solo per citarne alcune) per gestire e gestire i propri applicazioni che utilizzano Docker. Ora proviamo a capire il problema e la soluzione offerta da Docker Problema Immaginiamo di voler ospitare tre applicazioni separate basate su Python su un singolo server (che potrebbe essere una macchina fisica o virtuale). Una versione diversa di Python utilizzata da questi programmi, librerie e dipendenze varia da applicazione ad applicazione. Non siamo in grado di ospitare tutte e tre le applicazioni sulla stessa workstation poiché diverse versioni di Python non possono essere installate sulla stessa macchina, Soluzione offerta da Docker Vediamo cosa potremmo fare se non usassimo Docker per affrontare questo problema. In questo caso, potremmo risolvere il problema con l'aiuto di tre macchine fisiche o utilizzando un singolo computer fisico abbastanza potente da ospitare ed eseguire tre macchine virtuali. Entrambi gli approcci ci aiuterebbero a installare varie versioni di Python e le relative dipendenze su ciascuna di queste macchine. Indipendentemente dalla soluzione che abbiamo scelto, i costi di acquisto e manutenzione dell'hardware sono notevoli. Diamo un'occhiata a come Docker potrebbe essere una soluzione praticabile ed economica a questo problema. Per comprenderlo, dobbiamo prima esaminarne la funzionalità. In termini semplici, il sistema con Docker installato e in esecuzione viene chiamato Docker Host o semplicemente Host. Di conseguenza, ogni volta che si desidera distribuire un'applicazione sull'host, verrà creata un'entità logica per ospitare tale applicazione. Questo oggetto logico è noto come Container o Docker Container nella nomenclatura Docker. Non è presente alcun sistema operativo installato o in esecuzione su un Docker Container. Tuttavia, verrebbe inclusa una replica virtuale della tabella del processo, delle interfacce di rete e del punto di montaggio del file system. Viene passato ulteriormente dal sistema operativo host su cui è ospitato ed è in esecuzione il contenitore. Il kernel del sistema operativo dell'host, invece, è condiviso da tutti i container in esecuzione su di esso. Consente a ciascun container sullo stesso host di essere isolato dagli altri. Di conseguenza, consente l'esecuzione sullo stesso host di numerosi contenitori con vari requisiti applicativi e dipendenze, purché i requisiti del sistema operativo siano gli stessi. La parte successiva, che affronta i vantaggi e gli svantaggi dell'adozione di Docker, ti aiuterà a capire come Docker aiuta a risolvere questa sfida. In altre parole, invece di virtualizzare i componenti hardware, Docker virtualizzerebbe il sistema operativo dell'host su cui era installato e in esecuzione. Pro e contro dell'utilizzo di Docker Pro dell'utilizzo di Docker Docker consente a numerosi programmi con requisiti e dipendenze diversi di essere ospitati sullo stesso host purché utilizzino lo stesso sistema operativo. I contenitori hanno in genere una dimensione di pochi megabyte e occupano relativamente poco spazio su disco, consentendo molte applicazioni ospitate sullo stesso host. Robustezza, non vi è alcun sistema operativo installato su un container. Di conseguenza, utilizza una memoria estremamente ridotta rispetto a una macchina virtuale (che avrebbe un sistema operativo completo installato e in esecuzione su di essa). Riduce il tempo di avvio a pochi secondi, mentre sono necessari diversi minuti per avviare una macchina virtuale. Il costo è inferiore quando si tratta dell'hardware necessario per eseguire Docker ed è meno impegnativo. Contro dell'utilizzo di Docker Sullo stesso Docker Host, non possiamo ospitare insieme applicazioni che hanno diverse esigenze del sistema operativo. Facciamo finta di avere quattro programmi separati, tre dei quali richiedono un sistema operativo basato su Linux e uno dei quali richiede un sistema operativo basato su Windows. Le tre app che richiedono un sistema operativo basato su Linux possono trovarsi su un singolo Docker Host. L'applicazione che richiede un sistema operativo basato su Windows deve trovarsi su un Docker Host separato. Componenti principali Docker Docker Engine è uno dei componenti principali ed è responsabile del funzionamento generale. È un'applicazione basata su client-server con tre componenti principali. Server Rest API Client Il server esegue il demone dockerd (Docker Daemon), che non è altro che un processo. Sulla piattaforma Docker, è responsabile della creazione e della gestione di immagini, contenitori, reti e volumi Docker. L' API REST definisce come le applicazioni possono interfacciarsi con il server e indica come completare le proprie attività. Il client è un'interfaccia a riga di comando che consente agli utenti di comunicare con Docker emettendo comandi. Terminologie Docker Diamo un'occhiata ad alcuni dei termini usati nel mondo Docker. Le immagini Docker e i contenitori Docker sono i due elementi più importanti che incontrerai lavorando regolarmente con Docker. In parole povere, un'immagine Docker è un modello che include il programma, le dipendenze necessarie per eseguirlo su Docker. Un Docker Container, invece, è un'entità logica, come indicato in precedenza. È un'istanza funzionante dell'immagine Docker in termini più tecnici. Docker Hub Docker Hub è il repository online ufficiale in cui possiamo trovare tutte le Docker Images che possiamo utilizzare. Se lo desideri, possiamo anche utilizzare Docker Hub per archiviare e distribuire le nostre immagini personalizzate. Potremmo anche renderli pubblici o privati, a seconda delle nostre esigenze. Nota: gli utenti gratuiti possono mantenere privata un'immagine Docker. Più di uno richiede un abbonamento a pagamento. Installazione Docker Prima di sporcarci le mani con Docker, un'ultima cosa che dobbiamo sapere è che dobbiamo averlo installato. Le istruzioni di installazione ufficiali di Docker sono qui sotto. Per installare Docker clicca il link relativo al tuo sistema operativo. CentOS Linux Debian Linux Fedora Linux Ubuntu Linux Microsoft Windows MacOS Vuoi saltare l'installazione e iniziare a esercitarti su Docker? Se non ti va di installare Docker o non hai abbastanza risorse sul tuo PC, non farti prendere dal panico: c'è una soluzione al tuo problema. Gioca con Docker, un parco giochi online per Docker, è il miglior punto di partenza. Consente agli utenti di esercitarsi immediatamente con i comandi Docker senza la necessità di installare nulla sul proprio PC. La parte migliore è che è facile da usare e completamente gratuito. Comandi Docker È finalmente giunto il momento di sporcarci le mani con i comandi Docker, come tutti stavamo aspettando creazione della finestra mobile Il comando di creazione della finestra mobile sarà il primo comando che esamineremo Possiamo usare questo comando per costruire un nuovo contenitore. Quella che segue è la sintassi per questo comando: docker create [options] IMAGE [commands] [arguments] Tieni presente che tutto ciò che viene inserito tra parentesi quadre è facoltativo. Vale per tutte le istruzioni presentate in questa guida. Di seguito sono riportati alcuni esempi di come utilizzare questo comando: $ docker create fedora 02576e880a2ccbb4ce5c51032ea3b3bb8316e5b626861fc87d28627c810af03 Il comando docker create nell'esempio precedente creerebbe un nuovo contenitore usando l'immagine Fedora più recente. Verificherà se l'ultima immagine ufficiale di Fedora è disponibile su Docker Host prima di costruire il container. Se l'immagine più recente non è accessibile sul Docker Host, il contenitore è stato avviato utilizzando l'immagine Fedora scaricata dal Docker Hub. Se l'immagine Fedora è già presente sul Docker Host, il contenitore usa quell'immagine per la creazione. Docker restituisce l'ID del contenitore in caso di creazione riuscita del contenitore. L'ID contenitore restituito da Docker è nell'esempio precedente. Un ID contenitore è stato assegnato a ciascun contenitore. Quando si eseguono varie attività sul contenitore, come l'avvio, l'arresto, il ripristino e così via, si fa riferimento ad esso con il relativo ID contenitore. Diamo un'occhiata a un altro esempio del comando docker create, questa volta con parametri e comando forniti. $ docker create -t -i ubuntu bash 30986b73dc0022dbba81648d9e35e6e866b4356f026e75660460c3474f1ca005 Il comando docker create nell'esempio precedente crea un contenitore usando l'immagine Ubuntu (se l'immagine non è disponibile nell'host Docker, scaricherà l'immagine più recente dall'hub Docker prima di creare il contenitore). Le opzioni -t e -i indicano a Docker di assegnare un terminale al container in modo che l'utente possa interagire con esso. Dice inoltre a Docker di eseguire il comando bash ogni volta che si avvia il contenitore. docker ps Il comando docker ps è il prossimo che esamineremo Possiamo usare il comando docker ps per vedere tutti i container attualmente in esecuzione sull'host Docker. $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES30986b73dc00 ubuntu "bash" 45 minutes ago Up About a minute elated_franklin Mostra solo i contenitori in esecuzione sull'host Docker in questo momento. Per visualizzare i contenitori creati su questo host Docker, indipendentemente dalla loro condizione attuale, in esecuzione o meno, è necessario utilizzare l'opzione -a, che elenca tutti i contenitori creati su questo host Docker. $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES30986b73dc00 ubuntu “bash” About an hour ago Up 29 minutes elated_franklin02576e880a2c fedora “/bin/bash” About an hour ago Created hungry_sinoussi Cerchiamo di capire l'output sopra del comando docker ps. CONTAINER ID: è costituito da una stringa univoca con caratteri alfanumerici collegata a ciascun contenitore. IMMAGINE: Docker Immagine utilizzata per creare il contenitore. COMANDO: dopo l'avvio del contenitore, esegue tutti i comandi specifici dell'applicazione. CREATO: Fornisce il tempo trascorso dalla creazione del contenitore. STATUS: fornisce lo stato corrente del container. Se il container è in esecuzione, visualizzerà Up insieme al tempo trascorso. (fino a circa un'ora o fino a 5 minuti) Se il container non è in esecuzione, lo stato sarà Exited, con il codice dello stato di uscita racchiuso tra parentesi tonde e il tempo scaduto. (Uscita (0) 2 settimane fa o Uscita (137) 10 secondi fa) PORTS: fornisce le mappature delle porte descritte per il container. NOMI: oltre all'ID CONTAINER, ogni container aveva un nome univoco. Un container può essere identificato dal suo ID container o dal suo nome univoco. Ogni contenitore Docker genera e assegna un nome univoco per impostazione predefinita. Se desideri modificare il contenitore con un nome univoco, usa l'opzione –name con i comandi di creazione mobile o esecuzione mobile. Spero che questo ti aiuti a capire meglio cosa restituisce il comando docker ps. inizio della finestra mobile Il comando aiuta ad avviare eventuali contenitori fermi. docker start [options] CONTAINER ID/NAME [CONTAINER ID/NAME…] Per avviare il contenitore, puoi specificare i primi caratteri univoci dell'ID contenitore o il suo nome. Di seguito puoi guardare l'esempio. $ docker start 30986 $ docker start elated_franklin riavvio della finestra mobile Il comando aiuta a riavviare tutti i contenitori in esecuzione. docker restart [options] CONTAINER ID/NAME [CONTAINER ID/NAME…] Allo stesso modo, possiamo riavviare specificando i primi caratteri univoci dell'ID contenitore o il suo nome. Guarda gli esempi usando questo comando $ docker restart 30986 $ docker restart elated_franklin Stop della finestra Il comando aiuta a fermare tutti i contenitori in esecuzione. docker stop [options] CONTAINER ID/NAME [CONTAINER ID/NAME…] È correlato al comando di avvio. È possibile specificare i primi caratteri univoci dell'ID contenitore o il relativo nome per interrompere il contenitore. Dai un'occhiata agli esempi qui sotto $ docker stop 30986 $ docker stop elated_franklin avvia una finestra mobile Prima crea il contenitore e poi lo avvia. In sintesi, è una combinazione dei comandi di creazione e avvio della finestra mobile. Ha una sintassi simile alla creazione della finestra mobile. docker run [options] IMAGE [commands] [arguments] $ docker esegui ubuntu 30fa018c72682d78cf168626b5e6138bb3b3ae23015c5ec4bbcc2a088e67520 Nell'esempio sopra, crea un contenitore usando l'ultima immagine di Ubuntu, avvia il contenitore e lo interrompe immediatamente. Non possiamo avere la possibilità di interagire con esso. Per interagire con il contenitore, dobbiamo specificare le opzioni -it nel comando docker run, quindi possiamo interagire con il contenitore. $ docker run -it ubuntu root@e4e633428474:/# Digita exit nel terminale per uscire dal container. Docker rm Usiamo questo comando per eliminare un contenitore. docker rm [options] CONTAINER ID/NAME [CONTAINER ID/NAME...] $ docker rm 30fa elated_franklin Nell'esempio sopra, stiamo indicando alla finestra mobile di eliminare due contenitori in un unico comando. Specifichiamo l'ID per il primo e il nome per il secondo contenitore per l'eliminazione. Il contenitore deve essere in uno stato di arresto per eliminarlo. immagini della finestra mobile Il comando elenca tutte le immagini della finestra mobile presenti sull'host della finestra mobile. $ docker images REPOSITORY TAG IMAGE CREATED SIZEmysql latest 7bb2586065cd 38 hours ago 477MBhttpd latest 5eace252f2f2 38 hours ago 132MBubuntu 16.04 9361ce633ff1 2 weeks ago 118MBubuntu trusty 390582d83ead 2 weeks ago 188MBfedora latest d09302f77cfc 2 weeks ago 275MBubuntu latest 94e814e2efa8 2 weeks ago 88.9MB REPOSITORY: Descrive il nome univoco dell'immagine della finestra mobile. TAG: Ad ogni immagine è associato un tag univoco che rappresenta una versione dell'immagine. Un tag era rappresentato utilizzando una parola o un insieme di numeri o caratteri alfanumerici. IMMAGINE: È una stringa di caratteri alfanumerici associata a ciascuna immagine. CREATO: Fornisce il tempo trascorso da quando l'immagine è stata creata. DIMENSIONE: Fornisce la dimensione dell'immagine. Docker rmi Questo comando ci consente di rimuovere le immagini dall'host della finestra mobile. docker rmi [options] IMAGE NAME/ID [IMAGE NAME/ID...] docker rmi mysql Il comando rimuove l'immagine mysql dall'host della finestra mobile. Il comando seguente rimuove le immagini httpd e fedora dall'host Docker. docker rmi httpd fedora Il comando seguente rimuove l'immagine con ID 94e81 dall'host Docker. docker rmi 94e81 Il comando seguente rimuove l'immagine ubuntu con tag trusty. docker rmi ubuntu:trusty Questi sono alcuni dei comandi di base che incontri. Ci sono numerose altre istruzioni da esplorare. Conclusioni Sebbene la containerizzazione sia in circolazione da molto tempo, solo di recente ha ricevuto l'attenzione che merita. Google, Amazon Web Services (AWS), Intel, Tesla sono solo alcune delle principali aziende tecnologiche con i loro motori di container specializzati. Si affidano in modo significativo a loro per sviluppare, eseguire, amministrare e distribuire il loro software. Docker è un motore di containerizzazione estremamente potente e ha molto da offrire quando si tratta di creare, eseguire, gestire e distribuire le applicazioni in modo efficiente. Avevi visto Docker ad alto livello. C'è molto da studiare su Docker, tipo Comandi (comandi più potenti) Le immagini Docker sono un tipo di contenitore (crea le tue immagini personalizzate) Rete con Docker (configurazione della rete) Stack di Docker (servizi di raggruppamento richiesti da un'applicazione) Docker Compose è uno strumento che consente di creare un container (strumento per la gestione e l'esecuzione di più container) Sciame di Dockers (raggruppamento e gestione di una o più macchine su cui è in esecuzione Docker) L'utilizzo di docker È un'abilità a prova di futuro che solo ora sta guadagnando terreno. Investire tempo e denaro nello studio di Docker non è qualcosa di cui ti pentirai.

  • Algoritmo gradient boosting dalla spiegazione all'implementazione in python

    In questo articolo, spiegheremo la matematica alla base dell'algoritmo di gradient boosting per poi implementarlo in python su un set di dati reale. Che cosa è il gradient boosting ? L'aumento del gradiente è un metodo che si distingue per la velocità e l'accuratezza di previsione, in particolare con set di dati grandi e complessi. Dalle competizioni Kaggle alle soluzioni di apprendimento automatico per le aziende, questo algoritmo ha prodotto i migliori risultati. Sappiamo già che gli errori giocano un ruolo importante in qualsiasi algoritmo di apprendimento automatico. Esistono principalmente due tipi di errore, errore di bias e errore di varianza. L'algoritmo di incremento del gradiente ci aiuta a ridurre al minimo l'errore di bias del modello Prerequisiti : Se non sai cosa è il Machine Learning, clicca qui Se non conosci le principali applicazioni Machine Learning, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Se non conosci i principali algoritmi di Machine Learning , clicca qui Se non sai perchè utilizzeremo Python , clicca qui Prima di entrare nei dettagli di questo algoritmo, dobbiamo avere una certa conoscenza dell'algoritmo AdaBoost che è ancora una volta un metodo di potenziamento. Questo algoritmo inizia costruendo un moncone decisionale e quindi assegnando pesi uguali a tutti i punti dati. Quindi aumenta i pesi per tutti i punti che sono classificati erroneamente e abbassa il peso per quelli che sono facilmente classificabili o sono classificati correttamente. Viene creato un nuovo moncone decisionale per questi punti dati ponderati. L'idea alla base di questo è di migliorare le previsioni fatte dal primo moncone. Ho parlato di più di questo algoritmo qui. Differenza tra gradient boosting e AdaBoost La principale differenza tra questi due algoritmi è che il Gradient boosting ha uno stimatore di base fisso, ad esempio Decision Trees, mentre in AdaBoost possiamo cambiare lo stimatore di base in base alle nostre esigenze. Ora possiamo partire con la spiegazione per poi arrivare all'implementazione su un set di dati. La guida sarà lunga, preparati un bel caffè . Indice Che cosa è il Boosting ? Algoritmo di potenziamento del gradiente Gradient Boosting Regressor Esempio di aumento del gradiente Classificatore di aumento del gradiente Implementazione tramite Scikit-learn Note finali Che cosa è il boosting ? Durante lo studio dell'apprendimento automatico devi esserti imbattuto in questo termine chiamato Boosting. È il termine più frainteso nel campo della scienza dei dati. Il principio alla base del potenziamento degli algoritmi è che prima abbiamo costruito un modello sul set di dati di addestramento, quindi viene creato un secondo modello per correggere gli errori presenti nel primo modello. Lascia che ti spieghi cosa significa esattamente e come funziona. Supponiamo di avere n punti dati e 2 classi di output (0 e 1). Si desidera creare un modello per rilevare la classe dei dati del test. Ora quello che facciamo è selezionare casualmente le osservazioni dal set di dati di addestramento e inviarle al modello 1 (M1), inoltre assumiamo che inizialmente tutte le osservazioni abbiano un peso uguale, il che significa un'uguale probabilità di essere selezionate. Ricorda che nelle tecniche di assemblaggio "i deboli " si combinano per creare un modello forte, quindi qui M1, M2, M3….Mn sono tutti " deboli " . Poiché M1 è uno "studente debole", sicuramente classificherà erroneamente alcune delle osservazioni. Ora, prima di inviare le osservazioni a M2, ciò che facciamo è aggiornare i pesi delle osservazioni che sono classificate erroneamente. Puoi pensarlo come una borsa che inizialmente contiene 10 palline di colore diverso, ma dopo un po' di tempo un bambino tira fuori la sua palla di colore preferita e mette invece 4 palline di colore rosso all'interno della borsa. Ora fuori rotta la probabilità di selezionare una pallina rossa è maggiore. Questo stesso fenomeno si verifica nelle tecniche di Boosting, quando un'osservazione viene classificata erroneamente, il suo peso viene aggiornato e per quelle correttamente classificate, il loro peso viene diminuito. La probabilità di selezionare un'osservazione classificata in modo errato aumenta, quindi nel modello successivo vengono selezionate solo le osservazioni che sono state classificate erroneamente nel modello 1. Allo stesso modo, accade con M2, i pesi classificati erroneamente vengono nuovamente aggiornati e quindi alimentati a M3. Questa procedura viene continuata fino a quando ea meno che gli errori non siano ridotti al minimo e il set di dati non sia previsto correttamente. Ora, quando il nuovo datapoint arriva (dati di test) passa attraverso tutti i modelli (studenti deboli) e la classe che ottiene il voto più alto è l'output per i nostri dati di test. Che cos'è un algoritmo di aumento del gradiente? L'idea principale alla base di questo algoritmo è quella di costruire modelli in sequenza e questi modelli successivi cercano di ridurre gli errori del modello precedente. Ma come lo facciamo? Come riduciamo l'errore? Questo viene fatto costruendo un nuovo modello sugli errori o sui residui del modello precedente. Quando la colonna target è continua, utilizziamo Gradient Boosting Regressor mentre quando si tratta di un problema di classificazione, utilizziamo Gradient Boosting Classifier . L'unica differenza tra i due è la "funzione di perdita" . L'obiettivo qui è ridurre al minimo questa funzione di perdita aggiungendo studenti deboli utilizzando la discesa del gradiente. Dal momento che si basa sulla funzione di perdita, quindi per problemi di regressione, avremo diverse funzioni di perdita come Errore quadratico medio ( MSE ) e per la classificazione, avremo diverse, ad esempio , log-verosimiglianza . Comprendere l'algoritmo di aumento del gradiente con l'esempio Capiamo l'intuizione dietro l'aumento del gradiente con l'aiuto di un esempio. Qui la nostra colonna target è continua, quindi useremo Gradient Boosting Regressor. Di seguito è riportato un esempio di un set di dati casuale in cui dobbiamo prevedere il prezzo dell'auto in base a varie caratteristiche. La colonna target è il prezzo e le altre funzionalità sono funzionalità indipendenti. Passaggio -1 Il primo passaggio nell'aumento del gradiente consiste nel creare un modello di base per prevedere le osservazioni nel set di dati di addestramento. Per semplicità prendiamo una media della colonna target e assumiamo che sia il valore previsto come mostrato di seguito: Perché ho detto che prendiamo la media della colonna target? Bene, c'è la matematica coinvolta dietro questo. Matematicamente il primo passo può essere scritto come: Guardare questo può darti un mal di testa, ma non preoccuparti cercheremo di capire cosa c'è scritto qui. L è la nostra funzione di perdita Gamma è il nostro valore previsto argmin significa che dobbiamo trovare un valore per il quale la funzione di perdita è minima. Poiché la colonna target è continua, la nostra funzione di perdita sarà: Qui y è il valore osservato E gamma è il valore previsto Ora dobbiamo trovare un valore minimo di gamma tale che questa funzione di perdita sia minima. Abbiamo tutti studiato come trovare minimi e massimi. Abbiamo usato per differenziare questa funzione di perdita e poi metterla uguale a 0 giusto? Sì, faremo lo stesso qui. Vediamo come farlo con l'aiuto del nostro esempio. Ricorda che y_i è il nostro valore osservato e gamma_i è il nostro valore previsto, inserendo i valori nella formula sopra otteniamo: ( stiamo usando i valori che puoi trovare nella tabella sopra, se vuoi esercitarti prova a fare questi conti da solo, se qualcosa non ti torna scrivici nei commenti ) Finiamo sopra una media del prezzo dell'auto osservato ed è per questo che ti ho chiesto di prendere la media della colonna target e presumere che fosse la tua prima previsione. Quindi per gamma=14500, la funzione di perdita sarà minima, quindi questo valore diventerà la nostra previsione per il modello base . Passaggio 2 Il passaggio successivo consiste nel calcolare gli pseudo residui che sono (valore osservato – valore previsto) Ancora una volta viene la domanda: perché solo osservato – previsto? Tutto è matematicamente dimostrato, da dove viene questa formula. Questo passaggio può essere scritto come: Qui F(x i ) è il modello precedente e m è il numero di DT realizzati. Stiamo solo prendendo la derivata della funzione di perdita rispetto al valore previsto e abbiamo già calcolato questa derivata: Se vedi la formula dei residui sopra, vediamo che la derivata della funzione di perdita è moltiplicata per un segno negativo, quindi ora otteniamo: Il valore previsto qui è la previsione fatta dal modello precedente. Nel nostro esempio la previsione fatta dal modello precedente (previsione del modello base iniziale) è 14500, per calcolare i residui la nostra formula diventa: Nella fase successiva, costruiremo un modello su questi pseudo residui e faremo previsioni. Perché lo facciamo? Poiché vogliamo ridurre al minimo questi residui e la riduzione al minimo dei residui alla fine migliorerà l'accuratezza del nostro modello e il potere di previsione. Quindi, utilizzando il residuo come obiettivo e la funzione originale Numero del cilindro, altezza del cilindro e posizione del motore genereremo nuove previsioni. Nota che le previsioni, in questo caso, saranno i valori di errore, non i valori previsti del prezzo dell'auto poiché la nostra colonna target è ora un errore. Diciamo che h m (x) è il nostro DT fatto su questi residui. Passaggio 4 In questo passaggio troviamo i valori di output per ciascuna foglia del nostro albero decisionale. Ciò significa che potrebbe esserci un caso in cui 1 foglia ottiene più di 1 residuo, quindi dobbiamo trovare l'output finale di tutte le foglie. Per trovare l'output possiamo semplicemente prendere la media di tutti i numeri in una foglia, non importa se c'è solo 1 numero o più di 1. Vediamo perché prendiamo la media di tutti i numeri. Matematicamente questo passaggio può essere rappresentato come: Qui h m (x i ) è il DT fatto sui residui e m è il numero di DT. Quando m=1 si parla del 1° DT e quando è “ M ” si parla dell'ultimo DT. Il valore di output per la foglia è il valore di gamma che riduce al minimo la funzione Loss. Il lato sinistro “Gamma” è il valore di uscita di una particolare foglia. Sul lato destro [F m-1 (x i )+ƴh m (x i ))] è simile al passaggio 1 ma qui la differenza è che stiamo prendendo previsioni precedenti mentre prima non c'era alcuna previsione precedente. Capiamolo ancora meglio con l'aiuto di un esempio. Supponiamo che questo sia il nostro albero regressore: Vediamo che il 1° residuo va in R 1,1 , il 2 ° e il 3 ° residuo va a R 2,1 e il 4 ° residuo va a R 3,1 . Calcoliamo l'output per la prima congedo che è R 1,1 Quindi la foglia R 1,1 ha un valore di uscita di -2500. Ora risolviamo per R 2,1 Quindi la foglia R 1,1 ha un valore di uscita di -2500. Ora risolviamo per R 2,1 Prendiamo la derivata per ottenere il valore minimo di gamma per cui questa funzione è minima: Finiamo con la media dei residui nella foglia R 2,1 . Quindi, se otteniamo una foglia con più di 1 residuo, possiamo semplicemente trovare la media di quella foglia e quello sarà il nostro output finale. Ora, dopo aver calcolato l'output di tutte le foglie, otteniamo: Step-5 Questo è finalmente l'ultimo passaggio in cui dobbiamo aggiornare le previsioni del modello precedente. Può essere aggiornato come: dove m è il numero di alberi decisionali realizzati. Dato che abbiamo appena iniziato a costruire il nostro modello, quindi il nostro m=1. Ora per creare un nuovo DT le nostre nuove previsioni saranno: Qui F m-1 (x) è la previsione del modello base (previsione precedente) poiché F 1-1=0 , F 0 è il nostro modello base, quindi la previsione precedente è 14500. nu è il tasso di apprendimento solitamente selezionato tra 0-1 . Riduce l'effetto che ogni albero ha sulla previsione finale e questo migliora la precisione a lungo termine. Prendiamo nu=0.1 in questo esempio. H m (x) è il DT recente fatto sui residui. Calcoliamo ora la nuova previsione: Supponiamo di voler trovare una previsione del nostro primo punto dati che abbia un'altezza dell'auto di 48,8. Questo punto dati passerà attraverso questo albero decisionale e l'output che ottiene verrà moltiplicato per il tasso di apprendimento e quindi aggiunto alla previsione precedente. Ora diciamo m=2, il che significa che abbiamo costruito 2 alberi decisionali e ora vogliamo avere nuove previsioni. Questa volta aggiungeremo la previsione precedente che è F 1 (x) al nuovo DT fatto sui residui. Itereremo attraverso questi passaggi ancora e ancora fino a quando la perdita non sarà trascurabile. Sto facendo un esempio ipotetico qui solo per farti capire come questo prevede un nuovo set di dati: Se un nuovo punto dati dice che arriva l'altezza = 1,40, passerà attraverso tutti gli alberi e quindi fornirà la previsione. Qui abbiamo solo 2 alberi, quindi il datapoint passerà attraverso questi 2 alberi e l'output finale sarà F 2 (x) . Che cos'è il classificatore di aumento del gradiente? Un classificatore di aumento del gradiente viene utilizzato quando la colonna di destinazione è binaria. Tutti i passaggi spiegati nel regressore dell'aumento del gradiente vengono utilizzati qui, l'unica differenza è che cambiamo la funzione di perdita. In precedenza abbiamo utilizzato l'errore quadratico medio quando la colonna target era continua, ma questa volta utilizzeremo la probabilità logaritmica come funzione di perdita. La funzione di perdita per il problema di classificazione è data di seguito: Il nostro primo passo nell'algoritmo di aumento del gradiente è stato inizializzare il modello con un valore costante, lì abbiamo usato la media della colonna di destinazione ma qui useremo log(probabilità) per ottenere quel valore costante. La domanda sorge spontanea: perché log(probabilità)? Quando distinguiamo questa funzione di perdita, otterremo una funzione di log(probabilità) e quindi dobbiamo trovare un valore di log(probabilità) per il quale la funzione di perdita sia minima. Confuso vero? Ok, vediamo come funziona: Per prima cosa trasformiamo questa funzione di perdita in modo che sia una funzione di log(probabilità), ti dirò in seguito perché abbiamo fatto questa trasformazione. Ora questa è la nostra funzione di perdita e dobbiamo minimizzarla, per questo prendiamo la derivata di questo per log(probabilità) e poi la mettiamo uguale a 0, Ecco i valori osservati Ti starai chiedendo perché abbiamo trasformato la funzione di perdita nella funzione di log(odds). In realtà, a volte è facile usare la funzione di log(odds), ea volte è facile usare la funzione di probabilità prevista “p”. Non è obbligatorio trasformare la funzione di perdita, l'abbiamo fatto solo per avere facili calcoli. Quindi il valore minimo di questa funzione di perdita sarà la nostra prima previsione (previsione del modello di base) Ora nel Gradient boosting regressor il nostro passaggio successivo è stato calcolare gli pseudo residui in cui abbiamo moltiplicato la derivata della funzione di perdita con -1 . Faremo lo stesso, ma ora la funzione di perdita è diversa e ora abbiamo a che fare con la probabilità di un risultato. Dopo aver trovato i residui possiamo costruire un albero decisionale con tutte le variabili indipendenti e le variabili target come "residui". Ora, quando abbiamo il nostro primo albero decisionale, troviamo l'output finale delle foglie perché potrebbe esserci un caso in cui una foglia ottiene più di 1 residuo, quindi dobbiamo calcolare il valore di output finale. La matematica alla base di questo passaggio non rientra nell'ambito di questo articolo, quindi menzionerò la formula diretta per calcolare l'output di una foglia: Infine, siamo pronti per ottenere nuove previsioni aggiungendo il nostro modello base con il nuovo albero che abbiamo realizzato sui residui. Ci sono alcune varianti dell'aumento del gradiente. Implementazione gradient boost Utilizzando scikit-learn Per l'implementazione su un set di dati, utilizzeremo il set di dati Valutazione del reddito, che contiene informazioni sulla vita personale di un individuo e un output di 50.000 o <=50. Il set di dati può essere scaricato dalle sezione progetti, insieme al codice che troverai nell'articolo. Troverai il Link alla fine dell'articolo. Il compito qui è classificare il reddito di un individuo, quando gli vengono forniti gli input richiesti sulla sua vita personale. Innanzitutto, importiamo tutte le librerie richieste. Qui il nostro obiettivo principale è dirti come implementarlo su Python. Ora per addestrare e testare il nostro modello, i dati devono essere divisi in dati di training e test. Ridimensioneremo anche i dati in modo che siano compresi tra 0 e 1. # Split dataset into test and train data X_train, X_test, y_train, y_test = train_test_split(df.drop(‘income’, axis=1),df[‘income’], test_size=0.2) Ora andiamo avanti con la definizione del Gradient Boosting Classifier insieme ai suoi iperparametri. Successivamente, adatteremo questo modello ai dati di addestramento. gbc=GradientBoostingClassifier(n_estimators=500,learning_rate=0.05,random_state=100,max_features=5 ) # Fit train data to GBC gbc.fit(X_train,y_train) Il modello è stato addestrato e ora possiamo osservare anche i risultati. Di seguito, puoi vedere la matrice di confusione del modello, che fornisce un rapporto sul numero di classificazioni e classificazioni errate. print(confusion_matrix(y_test, gbc.predict(X_test))) Il numero di classificazioni errate da parte del Gradient Boosting Classifier è 1334, rispetto alle 8302 classificazioni corrette. Il modello ha funzionato decentemente. Verifichiamo la precisione e Controlliamo anche il rapporto di classificazione: print("GBC accuracy is %2.2f" % accuracy_score( y_test, gbc.predict(X_test))) from sklearn.metrics import classification_report pred=gbc.predict(X_test) print(classification_report(y_test, pred)) La precisione è dell'86%, il che è abbastanza buono, ma può essere migliorata ottimizzando gli iperparametri o elaborando i dati per rimuovere i valori anomali. Questo, tuttavia, ci fornisce l'idea di base alla base dell'aumento del gradiente e dei suoi principi di funzionamento sottostanti. Note finali Speriamo che tu abbia capito come funziona l'algoritmo Gradient Boosting . Abbiamo cercato di mostrarti la matematica che c'è dietro nel modo più semplice possibile.

  • Strumenti interattivi per imparare l'apprendimento automatico o Machine Learning ML

    Questi strumenti interattivi ti aiuteranno a comprendere l'apprendimento automatico e il funzionamento di un sistema intelligente. L'apprendimento automatico è necessario per comprendere e applicare nel nostro lavoro quotidiano di scienziati dei dati. La conoscenza da conoscere non si limita all'importazione del codice dalla libreria, ma si estende al concetto di modello, alla scelta dell'algoritmo, alle metriche e molto altro. Per aiutare a imparare i concetti di machine learning, vorrei delineare i miei quattro strumenti interattivi che potresti usare per imparare in questo articolo. Entriamo nel merito! 1. Strumento interattivo What-If Tool What-If strumento è uno strumento web-based di visualizzazione per capire come funziona il comportamento di machine learning. What-If Tool è stato sviluppato per comprendere le complessità alla base del nostro modello addestrato e sperimentare la situazione ipotetica. What-If Tool è uno strumento interattivo, significa che possiamo giocare con la GUI per vedere i cambiamenti in tempo reale. Lascia che ti mostri l'esempio nella GIF qui sotto. Sembra uno strumento entusiasmante, vero? La GIF sopra mostra tutte le schede con cui potremmo giocare per comprendere il nostro modello di apprendimento automatico addestrato. Usiamo il modello di apprendimento automatico per il modello di classificazione binaria addestrato sui dati UCI sul reddito in questo esempio. Potremmo confrontare e sperimentare su due modelli addestrati su questi dati, quindi analizziamo ogni scheda per sapere meglio cosa ha fatto la funzione per il modello. All'inizio ci vengono offerte tre schede; Editor di punti dati, Performance & Fairness e Features, in cui ogni scheda visualizza il modello di machine learning in diversi aspetti: Editor punto dati: esplorazione della visualizzazione per ogni punto dati Prestazioni e correttezza: esplorazione delle prestazioni del modello con varie metriche Funzionalità: riepilogo delle funzionalità utilizzate per l'addestramento del modello Diamo un'occhiata da vicino per l'usabilità in ogni scheda. what-if Editor di punti dati L'editor del punto dati è una scheda in cui è possibile esplorare ogni previsione del punto dati in base al modello. Questa scheda potrebbe selezionare ogni punto dati per studiare il comportamento del modello. Proviamo a scegliere uno dei punti dati. Nella selezione del punto dati, la parte superiore ti ha permesso di selezionare l'asse, l'etichetta e il binning: questo è utile se vuoi avere informazioni specifiche da conoscere. Per impostazione predefinita, l'asse X e l'asse Y sono divisi per l'output del punteggio del modello (tra i modelli 1 e 2). Dopo aver selezionato il punto dati, otterrai informazioni simili all'immagine sopra. In questa sezione riportiamo tutte le informazioni riguardanti la caratteristica del datapoint e il punteggio di confronto del modello per ogni etichetta. what-if Prestazioni e correttezza La scheda Prestazioni ed equità è dove puoi sperimentare varie soglie, verità di base, rapporto di costo e molti altri per comprendere il risultato del tuo modello di apprendimento automatico quando cambiamo determinati aspetti. Puoi modificare le tue ipotesi nella sezione a sinistra, come la funzione di previsione e la strategia di ottimizzazione. Nella sezione a destra, puoi sperimentare la soglia di ciascun modello per vedere l'effetto sulle prestazioni. I cambiamenti stanno avvenendo in tempo reale, quindi le informazioni necessarie per decidere quale modello utilizzare e se il tuo modello ha soddisfatto o meno i tuoi requisiti possono essere valutate rapidamente. what-if Caratteristiche La scheda Funzionalità è una sezione per ottenere statistiche di riepilogo di ciascuna funzionalità utilizzata nell'addestramento del modello. Sono disponibili tutte le statistiche di base di cui hai bisogno: media, mediana, deviazione standard e molte altre. Inoltre, le funzionalità sono suddivise in schede numeriche e categoriali per facilitare l'apprendimento. 2. Strumento interattivo Deep Playground Il progetto Deep Playground è una rete neurale interattiva basata sul web da cui le persone possono imparare. Il web è abbastanza semplice da permettere a qualsiasi principiante di capire come funziona la rete neurale. GIF per autoreLa GIF sopra riassume l'intera interazione; potresti armeggiare con l'iperparametro nella parte superiore: tasso di apprendimento, attivazione, regolarizzazione, tasso e tipo di problema. Deep Playground ha solo quattro tipi di set di dati da utilizzare, ma rappresenta il problema comune nel progetto di machine learning. Su questa parte, puoi anche sperimentare su quanto rapporto dati di test, rumore e dimensione del batch. Successivamente, puoi selezionare come vuoi trattare la tua caratteristica e il tipo di trasformazione che desideri. Inoltre, puoi aggiungere o diminuire i livelli e i neuroni nascosti per ogni livello nascosto. Quando hai finito di configurare l'esperimento, devi solo premere play e guardare l'output per capire come funzionerebbe la rete neurale con la tua configurazione. Deep Playground è un progetto open source; se vuoi contribuire o sei curioso del codice sorgente, puoi visitare la pagina GitHub . 3. Strumento interattivo Distribuzione di probabilità di Simon-Ward Jones L'apprendimento automatico riguarda l'output di probabilità dal nostro modello e l'apprendimento della distribuzione di probabilità ci aiuterebbe a capire come funziona il nostro modello. A volte è difficile capire come funziona la distribuzione di probabilità senza un chiaro aspetto di visualizzazione. Lo strumento ti offre un esperimento di visualizzazione con la seguente distribuzione di probabilità: Distribuzione Bernoulli Distribuzione binomiale Distribuzione normale Distribuzione beta Distribuzione logaritmica normale lo strumento ha dettagliato la funzione di densità di probabilità in ogni distribuzione e cosa succede se cambiamo il valore del parametro. Ti suggerisco di sperimentare i cambiamenti nella distribuzione perché ti aiuta a capire il concetto più velocemente. 4. Strumento interattivo Embedding Projector I dati non strutturati sono più difficili da comprendere rispetto ai dati strutturati quando vengono addestrati utilizzando il modello di machine learning. Un modo per capirlo è incorporare o rappresentare i dati come un vettore matematico utilizzando un algoritmo non supervisionato come PCA o t-SNE. Il proiettore di incorporamento di TensorFlow ci offre una visualizzazione interattiva per aiutarci a comprendere i livelli di incorporamento. Come puoi vedere nella GIF sopra, abbiamo utilizzato il set di dati fornito da Word2Vec per capire come è rappresentata ogni parola e quanto sono vicine tra loro in una funzione di dimensioni ridotte. Ci sono cinque set di dati da dati NLP, dati immagine o dati tabulari nella parte a sinistra. Potresti utilizzare alcuni algoritmi per incorporare il set di dati, come UMAP, T-SENE, PCA o Custom. Infine, puoi scegliere il componente che desideri visualizzare nella parte inferiore. Sul lato destro, potremmo scegliere come visualizzare i nostri dati mostrando tutti i punti dati o isolando i punti dati. L'isolamento è correlato al numero del vicino che si desidera scegliere e la decisione si baserebbe sulla metrica della distanza che si sceglie. Se hai intenzione di selezionare una parola specifica, puoi utilizzare la barra di ricerca. Se vuoi saperne di più sull'Embedding Projector, puoi visitare la documentazione qui . Conclusione Comprendere il concetto di machine learning è difficile, soprattutto senza una chiara visualizzazione. Per aiutarti a imparare, voglio delineare quattro strumenti interattivi per aiutarti a capire l'apprendimento automatico; Sono: What-If Tool Deep Playground Probability Distribution Embedding Projector Speriamo possa essere d'aiuto!

  • Che cos'è una pipeline nel machine learning o apprendimento automatico?

    Che cos'è una pipeline? Una pipeline di machine learning è un modo per codificare e automatizzare il flusso di lavoro necessario per produrre un modello di machine learning. Le pipeline di machine learning sono costituite da più passaggi sequenziali che eseguono qualsiasi operazione, dall'estrazione e pre-elaborazione dei dati all'addestramento e alla distribuzione del modello. Per i team di data science, la pipeline di produzione dovrebbe essere il prodotto centrale. Incapsula tutte le migliori pratiche apprese per la produzione di un modello di apprendimento automatico per il caso d'uso dell'organizzazione e consente al team di eseguire su larga scala. Sia che tu stia mantenendo più modelli in produzione o supporti un singolo modello che deve essere aggiornato frequentemente, una pipeline di machine learning end-to-end è un must. Quali sono i vantaggi di una pipeline di machine learning? È utile esaminare le fasi che molti team di data science attraversano per comprendere i vantaggi di una pipeline di machine learning. L'implementazione dei primi modelli di machine learning tende ad essere molto orientata ai problemi e gli scienziati dei dati si concentrano sulla produzione di un modello per risolvere un singolo problema aziendale, ad esempio la classificazione delle immagini. Il ciclo manuale I team tendono a iniziare con un flusso di lavoro manuale, dove non esiste una vera infrastruttura. La raccolta dei dati, la pulizia dei dati, l'addestramento del modello e la valutazione sono probabilmente scritti in un unico taccuino. Il notebook viene eseguito localmente per produrre un modello, che viene consegnato a un ingegnere incaricato di trasformarlo in un endpoint API. In sostanza, in questo flusso di lavoro, il modello è il prodotto. Il flusso di lavoro manuale è spesso ad hoc e inizia a interrompersi quando un team inizia ad accelerare il ciclo di iterazione perché i processi manuali sono difficili da ripetere e documentare. Un monolite di codice, anche in formato taccuino, tende a non essere adatto alla collaborazione. Caratteristiche di una pipeline ML manuale: Il modello è il prodotto Processo manuale o guidato da script Una disconnessione tra il data scientist e l'ingegnere Ciclo di iterazione lento Nessun test automatizzato o monitoraggio delle prestazioni Nessun controllo di versione La pipeline automatizzata Una volta che i team passano da una fase in cui aggiornano occasionalmente un singolo modello a più modelli che si aggiornano frequentemente in produzione, un approccio di pipeline diventa fondamentale. In questo flusso di lavoro, non crei e mantieni un modello. Sviluppi e gestisci una pipeline. La pipeline è il prodotto. Una pipeline automatizzata è costituita da componenti e da un progetto di come questi sono accoppiati per produrre e aggiornare il componente più cruciale: il modello. Nel flusso di lavoro automatizzato, entrano in gioco i solidi principi di ingegneria. Il codice è suddiviso in componenti più gestibili, come la convalida dei dati, il training del modello, la valutazione del modello e l'attivazione del re-training. Il sistema offre la possibilità di eseguire, iterare e monitorare un singolo componente nel contesto dell'intera pipeline con la stessa facilità e rapida iterazione dell'esecuzione di una cella di notebook locale su un laptop. Consente inoltre di definire gli input e gli output richiesti, le dipendenze della libreria e le metriche monitorate. Questa capacità di suddividere la risoluzione dei problemi in componenti riproducibili, predefiniti ed eseguibili costringe il team ad aderire a un processo congiunto. Un processo congiunto, a sua volta, crea un linguaggio ben definito tra i data scientist e gli ingegneri e alla fine porta anche a una configurazione automatizzata che è l'equivalente ML dell'integrazione continua (CI), un prodotto in grado di aggiornarsi automaticamente. Caratteristiche di una pipeline ML automatizzata: La pipeline è il prodotto Processo completamente automatizzato Cooperazione tra il data scientist e l'ingegnere Ciclo di iterazione veloce Test automatizzati e monitoraggio delle prestazioni Controllato dalla versione L'approccio Pipeline consente la scalabilità dell'apprendimento automatico La transizione da un ciclo manuale a una pipeline automatizzata può avere molte iterazioni intermedie a seconda della scala delle tue attività di apprendimento automatico e della composizione del tuo team. In definitiva, lo scopo di una pipeline è consentire di aumentare il ciclo di iterazione con l'ulteriore sicurezza che offre la codifica del processo e di scalare quanti modelli è possibile mantenere realisticamente in produzione. Cosa considerare quando si costruisce una pipeline di machine learning? Come affermato sopra, lo scopo è aumentare il ciclo di iterazione e la fiducia. Il tuo punto di partenza può variare; ad esempio, potresti aver già strutturato il tuo codice. I quattro passaggi seguenti sono un modo eccellente per affrontare la creazione di una pipeline ML: Costruisci ogni passaggio in componenti riutilizzabili. Considera tutti i passaggi necessari per produrre il tuo modello di machine learning. Inizia con il modo in cui i dati vengono raccolti e pre-elaborati e procedi da lì. In genere si consiglia di limitare l'ambito di ciascun componente per renderlo più facile da comprendere e iterare. Non dimenticare di codificare i test in componenti. Il test dovrebbe essere considerato una parte intrinseca della pipeline. Se, in un processo manuale, esegui alcuni controlli di integrità su come dovrebbero apparire i dati di input e le previsioni del modello, dovresti codificarli in una pipeline. Una pipeline offre l'opportunità di essere molto, molto più approfonditi con i test poiché non dovrai eseguirli manualmente ogni volta. Lega i tuoi passi insieme. Esistono molti modi per gestire l'orchestrazione di una pipeline di machine learning, ma i principi rimangono gli stessi. Definisci l'ordine in cui vengono eseguiti i componenti e come gli input e gli output vengono eseguiti attraverso la pipeline. Noi, ovviamente, consigliamo di utilizzare Valohai per costruire la tua pipeline. La prossima sezione è una breve panoramica di come costruire una pipeline con Valohai. Automatizza quando necessario. Sebbene la creazione di una pipeline introduca già l'automazione in quanto gestisce l'esecuzione dei passaggi successivi senza l'intervento umano, per molti l'obiettivo finale è anche eseguire automaticamente la pipeline di apprendimento automatico quando vengono soddisfatti criteri specifici. Ad esempio, è possibile monitorare la deriva del modello in produzione per avviare un ciclo di riaddestramento o semplicemente farlo più periodicamente, come ogni giorno. A seconda del tuo caso d'uso specifico, la tua pipeline di machine learning finale potrebbe avere un aspetto diverso. Ad esempio, potresti addestrare, valutare e distribuire più modelli nella stessa pipeline. Esistono componenti comuni simili nella maggior parte delle pipeline di machine learning. Esempi di diversi componenti di una pipeline: Convalida dei dati Pulizia dei dati Formazione modello Valutazione del modello Convalida del modello Innesco di riqualificazione Inoltre, la pipeline ha anche componenti statici come: Endpoint di distribuzione Archivio metadati Controllo della versione del codice sorgente Implicazioni di una pipeline di modellizzazione La pipeline di modellazione è uno strumento importante per i professionisti del machine learning. Prima di continuare vogliamo farti vedere un possibile esempio di pipe line in un processo di creazione di un modello di ML Tuttavia, ci sono importanti implicazioni che devono essere considerate quando li si usa. La principale confusione per i principianti quando si utilizzano le pipeline consiste nel comprendere ciò che la pipeline ha appreso o la configurazione specifica scoperta dalla pipeline. Ad esempio, una pipeline può utilizzare una trasformazione dei dati che si configura automaticamente, come la tecnica RFECV per la selezione delle funzionalità. Quando valuta una pipeline che utilizza una trasformazione dei dati configurata automaticamente, quale configurazione sceglie? o Quando ha adattato questa pipeline come modello finale per fare previsioni, quale configurazione ha scelto? La risposta è che non importa . Un altro esempio è l'uso dell'ottimizzazione degli iperparametri come passaggio finale della pipeline. La ricerca della griglia verrà eseguita sui dati forniti da eventuali passaggi di trasformazione precedenti nella pipeline e quindi cercherà la migliore combinazione di iperparametri per il modello che utilizza tali dati, quindi adatterà un modello con tali iperparametri sui dati. Durante la valutazione di una pipeline che esegue ricerche sulla griglia degli iperparametri del modello, quale configurazione sceglie? o Quando ha adattato questa pipeline come modello finale per fare previsioni, quale configurazione ha scelto? La risposta è ancora una volta, non importa . La risposta si applica quando si utilizza una fase di spostamento della soglia o di calibrazione della probabilità alla fine della pipeline. Il motivo è lo stesso per cui non ci preoccupiamo della struttura interna specifica o dei coefficienti del modello scelto. Ad esempio, quando si valuta un modello di regressione logistica, non è necessario ispezionare i coefficienti scelti su ogni "k-fold" di convalida incrociata per scegliere il modello. Invece, ci concentriamo sulla sua abilità predittiva fuori dal comune. Allo stesso modo, quando si utilizza un modello di regressione logistica come modello finale per fare previsioni su nuovi dati, non è necessario ispezionare i coefficienti scelti quando si adatta il modello all'intero set di dati prima di effettuare previsioni. Possiamo ispezionare e scoprire i coefficienti utilizzati dal modello come esercizio di analisi, ma non influisce sulla selezione e sull'uso del modello. Questa stessa risposta si generalizza quando si considera una pipeline di modellazione. Non ci interessa sapere quali funzionalità potrebbero essere state selezionate automaticamente da una trasformazione dei dati nella pipeline. Inoltre, non ci interessa sapere quali iperparametri sono stati scelti per il modello quando si utilizza una ricerca su griglia come passaggio finale nella pipeline di modellazione. In tutti e tre i casi: il modello singolo, la pipeline con selezione automatica delle caratteristiche e la pipeline con una ricerca a griglia, stiamo valutando il " modello " o la " pipeline di modellazione " come unità atomica. La pipeline consente a noi professionisti dell'apprendimento automatico di salire di un livello di astrazione ed essere meno interessati ai risultati specifici degli algoritmi e più interessati alla capacità di una sequenza di produzione. Pertanto, possiamo concentrarci sulla valutazione della capacità degli algoritmi sul set di dati, non sul prodotto degli algoritmi, ovvero il modello. Una volta che abbiamo una stima della pipeline, possiamo applicarla ed essere certi che otterremo prestazioni simili, in media. È un cambiamento nel modo di pensare e potrebbe volerci del tempo per abituarsi. È anche la filosofia alla base delle moderne tecniche AutoML (auto apprendimento automatico delle macchine) che trattano l'apprendimento automatico applicato come un grande problema di ricerca combinatoria. Riepilogo Nello specifico hai imparato: L'apprendimento automatico applicato non riguarda solo la ricerca di un modello con buone prestazioni; richiede anche la ricerca di una sequenza appropriata di fasi di preparazione dei dati e di fasi per la post-elaborazione delle previsioni. Collettivamente, le operazioni necessarie per affrontare un problema di modellazione predittiva possono essere considerate un'unità atomica chiamata pipeline di modellazione. L'approccio all'apprendimento automatico applicato attraverso la lente delle pipeline di modellazione richiede un cambiamento nel modo di pensare dalla valutazione di specifiche configurazioni del modello alle sequenze di trasformazioni e algoritmi. Avete domande? Poni le tue domande nei commenti qui sotto e faremo del nostro meglio per rispondere.

  • Data engineer vs data scientist: quale carriera devi scegliere ?

    Se sei confuso su cosa fare, ingegneria dei dati o scienza dei dati, comprendere le competenze e i risultati richiesti da entrambi ti aiuterà a prendere una decisione informata Una rapida ricerca su qualsiasi portale di lavoro ti informerà che scienziati di dati, ingegneri di dati, analisti di dati sono alcuni dei lavori più richiesti in questo momento. Ma c'è una percezione comune tra le persone che non lavorano in questo settore che tutti facciano la stessa cosa: analizzare i dati e ricavarne informazioni significative per le aziende. Questo non è affatto vero. Un data engineer ha responsabilità completamente diverse in un'organizzazione rispetto a un data scientist , anche se è possibile che si sovrappongano. Se stai iniziando nel dominio dell'analisi e sei confuso su cosa fare, ingegneria dei dati o scienza dei dati, comprendere le competenze e i risultati richiesti da entrambi ti aiuterà a prendere una decisione informata. Ora vediamo la Differenza tra Data Engineer e Data Scientist in azienda Chi è un ingegnere dei dati? In sostanza, l'ingegnere dei dati crea il framework e la struttura per la pipeline di analisi dei dati per un'azienda. Queste pipeline svolgono un ruolo molto significativo per l'azienda poiché trasformano i dati grezzi in strutture su cui lavorano gli scienziati dei dati. I data engineer si assicurano inoltre che ci sia un flusso continuo di dati dai server alle applicazioni e spesso collaborano con i data scientist dell'organizzazione. Costruiscono nuovi strumenti di analisi dei dati per gli analisti aziendali e hanno anche la responsabilità di garantire la conformità con le politiche di sicurezza dei dati. Chi è uno scienziato dei dati? Un data scientist studia i dati e fornisce approfondimenti aziendali significativi che sono cruciali per il processo decisionale in azienda. Lavorano anche alla creazione e all'implementazione di algoritmi basati sull'intelligenza artificiale in vari aspetti dell'azienda per risolvere i problemi aziendali. Alcuni data scientist lavorano anche sulla visualizzazione dei dati e sui meccanismi di dashboard per individuare tendenze e modelli all'interno di grandi insiemi di dati. Competenze necessarie per un Ingegnere dei dati Quando un ingegnere dei dati costruisce le pipeline necessarie per analizzare e lavorare sui dati, deve avere le seguenti competenze per fornire risultati con successo: Architettura del database e data warehousing: un data warehouse archivia grandi quantità di dati per l'analisi. Questi dati vengono utilizzati per analisi, data mining e interpretazione. Un data engineer deve avere familiarità con i concetti di base del data warehousing e gli strumenti associati. Strumenti ETL – ETL (Estrai, Trasferisci, Carica) aiuta ad estrarre i dati e trasformarli in un modulo che può essere analizzato. Gli strumenti ETL consentono di ottenere dati da diverse fonti, modificarne il formato e archiviarli nel database per l'utilizzo da parte dei professionisti dell'analisi nell'organizzazione. Un data engineer deve avere una solida presa su questi strumenti. Conoscenza della struttura dei dati: ci si aspetta che un ingegnere dei dati abbia una buona conoscenza anche delle strutture dei dati. Può aiutare a comprendere gli obiettivi di business dell'organizzazione e fornire soluzioni basate su di essi. Conoscenza della programmazione: anche la conoscenza di linguaggi di programmazione come Python e Java è un requisito per essere un ingegnere dei dati, con Python che è il più richiesto. Forti capacità di codifica aiutano gli ingegneri dei dati a lavorare su diversi linguaggi di programmazione utilizzati da un'azienda nella creazione delle proprie pipeline. Competenze necessarie per uno Scienziato dei dati Sebbene sia un lavoro molto ambito, un professionista può diventare un buon data scientist solo se possiede le seguenti competenze: Forte conoscenza statistica e matematica : qualsiasi azienda che assuma uno scienziato dei dati cercherà chiarezza concettuale matematica e statistica. Anche per la creazione di algoritmi di apprendimento automatico, i concetti fondamentali della statistica devono essere di prim'ordine. Uno scienziato dei dati dovrebbe avere una solida conoscenza delle distribuzioni di probabilità, test di ipotesi, intervalli di confidenza, ecc. Conoscenze di programmazione: uno scienziato dei dati dovrebbe anche possedere capacità di programmazione in linguaggi come R e Python , tra gli altri. Python è emerso come una scelta popolare in questi giorni per gli scienziati dei dati. Questi linguaggi di programmazione rendono più facile e veloce per i data scientist ottenere informazioni da grandi set di dati. Acume per gli affari: uno scienziato dei dati lavora in un'organizzazione in cui le sue capacità analitiche aiuteranno le aziende a prendere decisioni migliori. Diventa di fondamentale importanza per un data scientist comprendere le esigenze dell'azienda. Devono soddisfare i problemi aziendali che l'organizzazione deve affrontare e trovare soluzioni per migliorarli. Qualunque cosa tu scelga, crea un interesse genuino Quando si inizia o si passa da un altro profilo, la chiarezza su quale area ci si vuole concentrare in un'azienda diventa cruciale per costruire una solida carriera. Un interesse e una passione intrinseci nel campo possono rendere il percorso lavorativo ancora più emozionante. Gli scienziati dei dati e i ruoli di ingegneria dei dati sono entrambi altamente gratificanti, ma sono necessarie conoscenze teoriche ed esperienza pratica per costruire una carriera di successo. Facci sapere nei commenti la tua esperienza :)

  • Dove trovare i migliori Dataset per esercitarsi con il Machine learning e Deep Learning

    Una buona ricerca sull'apprendimento automatico inizia con un set di dati eccezionale. Non è necessario passare la serata a creare il proprio set di dati in MySQL o Excel. Fondamentalmente, qualsiasi cosa, dalle statistiche COVID-19 alle vendite di intimo in Brasile, tu stia cercando, esiste già qualcuno che ha raccolto quei dati e messi a disposizione per la ricerca. Hai solo bisogno di trovarla. Lascia che ti aiuti io, in questo post imparerai dove trovare i set di dati per la ricerca sull'apprendimento automatico. Indice Le piattaforme di OpenDataset I migliori dataset pubblici per il Machine Learning e la scienza dei dati I migliori set di dati pubblici per il Deep Learning Altri dataset video e audio per il deep learning Sta cercando un corso sulla DataScience? Però costano tutti un sacco di soldi e non sei sicuro questo mestiere faccia per te? Oppure più semplicemente già lavori in questo settore e vuoi approfondire argomenti come machine learning e reti neurali ? Scopri il nostro Corso Gratuito da più di 100 Lezioni, a difficoltà crescente. L'unico corso in italiano gratuito che ti permetterà davvero di capire e approfondire temi fondamentali per questo mestiere. Clicca qui non aspettare, intanto iscriviti è GRATIS. Le piattaforme di OpenDataset per scaricare dataset Le piattaforme di OpenDataset raccolgono migliaia di dataset per vari scopi. All'interno di queste grandi piattaforme potrai trovare ogni tipo di raccolta dati, infatti ti invito a cercare qualche strano dataset e condividerlo con noi nei commenti. Tra le piattaforme più famose abbiamo: Kaggle Kaggle , aggiornato ogni giorno dagli appassionati, dispone di una delle più grandi librerie di set di dati online, è una piattaforma di machine learning basata sulla community. Contiene numerosi tutorial che trattano centinaia di diversi problemi di machine learning nella vita reale. È vero che la qualità può variare. Tuttavia, tutti i dati sono completamente gratuiti. Puoi anche caricare il tuo set di dati lì. Google Dataset Search Dataset Search è una fonte affidabile di informazioni per la tua ricerca. È conveniente ordinare i set di dati per: rilevanza, formato del file, tipo di licenza, tema, ora dell'ultimo aggiornamento. I set di dati qui vengono caricati da organizzazioni internazionali come l'Organizzazione mondiale della sanità, Statista e Harvard. Registro di dati aperti su AWS Nel Registry of Open Data su AWS , chiunque può condividere un set di dati o trovare quello di cui ha bisogno. Puoi fare ricerche in base ai dati che trovi con l'aiuto degli strumenti di analisi dei dati di Amazon. Tra i creatori di database, troverai Facebook, Data for Good, NASA Space, Act Agreement e Space Telescope Science Institute. Set di dati pubblici di Microsoft Azure I set di dati pubblici di Azure dispongono di database aggiornati regolarmente per sviluppatori e ricercatori di app. Contengono dati del governo degli Stati Uniti, altri dati statistici e scientifici e informazioni sui servizi in linea che Microsoft raccoglie sui propri utenti. Inoltre, Azure offre una raccolta di strumenti che consentono di creare database cloud personalizzati, migrare i carichi di lavoro SQL ad Azure mantenendo la completa compatibilità con SQL Server e creare applicazioni web e mobili basate sui dati. r / set di dati Nel subreddit dei set di dati , chiunque può pubblicare i propri database open source. Puoi andare lì, trovare un set di dati interessante e provare a fare qualcosa di carino con esso. Repository di Machine Learning UCI UCI offre 507 set di dati che coprono il marketing bancario, la valutazione delle auto, la diagnosi del cancro ai polmoni e molti altri argomenti diversi. Puoi ordinare i database per: attività predefinita, tipo di dati, area di applicazione, soggetto. Librerie CMU La Carnegie Mellon University dispone di una propria raccolta di set di dati pubblici che puoi utilizzare per le tue ricerche. Lì troverai database approfonditi sulla cultura, la musica e la storia americana che altri aggregatori non forniscono. Fantastici set di dati pubblici su Github Questa è una grande raccolta open source dei migliori set di dati disponibili online divisi per settore. Alcune delle librerie che puoi trovare lì le menzionerò più avanti in questo post. I migliori set di dati pubblici per il Machine Learning e la scienza dei dati Database specifici del dominio per veri appassionati di machine learning. 1) Analisi esplorativa Prima di cambiare il mondo con la tua ricerca ML, può essere divertente anche solo esercitarti. Di seguito sono riportati alcuni set di dati che è possibile utilizzare per l' analisi esplorativa . Questa è la pratica di studiare i dati cercando di trovare schemi e anomalie e utilizzando queste informazioni per costruire modelli ML. Million Song Dataset può essere utilizzato per l'analisi esplorativa e la creazione di sistemi di raccomandazione. Il database è di 280 GB, ma per la ricerca di prova, puoi anche scaricare una versione più piccola di appena 10.000 brani, che è di circa 2 GB. Il set di dati di Game of Thrones di Myles O'Neil su Kaggle ti interesserà se sei un fan della serie di libri A Song of Fire and Ice di George RR Martin . Esplora le morti e le battaglie di questo mondo fantastico. Il database LEGO di Rachael Tatman descrive tutte le parti / set LEGO ufficiali, i loro colori e gli inventari. Avvistamenti UFO del National UFO Reporting Center contiene rapporti su tutti gli avvistamenti di oggetti volanti non identificati nel secolo scorso. World University Rankings di Myles O'Neil copre le migliori università del mondo e fornisce informazioni sulla loro posizione in termini di qualità dell'istruzione, occupazione degli ex studenti, influenza e altri fattori. I migliori set di dati pubblici per il Deep Learning L'apprendimento profondo si basa sull'utilizzo di reti neurali artificiali per risolvere compiti. Invece di scrivere un algoritmo per l'attività, il programmatore utilizza l'apprendimento della rappresentazione e consente alla macchina di fare previsioni da sola. 1)Elaborazione di immagini e riconoscimento di oggetti per la visione artificiale Il set di dati Open Images di Google è molto vario e contiene campioni complessi con diversi oggetti per immagine. Contiene riquadri di delimitazione degli oggetti, segmentazione degli oggetti ed etichette per aiutarti a orientarti in oltre 9 milioni di immagini. VisualData è una piattaforma di set di dati di visione artificiale in cui è possibile trovare set di dati medici per l'apprendimento automatico, set di dati di immagini e altri fantastici campioni di dati di apprendimento automatico per il business, l'istruzione e altri tipi di ricerca ML. xView è uno dei più grandi archivi di immagini aeree disponibili pubblicamente. Contiene immagini di scene complesse in tutto il mondo, annotate utilizzando riquadri di delimitazione. Se stai cercando un set di dati di deep learning di qualità su larga scala, presta attenzione a Kinetics-700 . Dispone di videoclip di diverse interazioni uomo-oggetto e uomo-uomo suddivisi in classi. ImageNet è un insieme di immagini per la visione artificiale profonda con più di 1000 classi diverse costruite secondo la gerarchia di WordNet .Il controllo qualità visivo contiene domande aperte su oltre 265.016 immagini. Può essere utilizzato per una migliore comprensione della modellazione della visione artificiale e dell'elaborazione del linguaggio. Il database MNIST è una raccolta di campioni per il riconoscimento delle cifre scritte a mano. Contiene un set di addestramento di oltre 60.000 esempi e un set di test di 10.000. Sul sito web troverai anche una tabella che confronta l'efficacia dei diversi tipi di classificatori applicati a questo set di dati. Anche un principiante può utilizzare MNIST per addestrare il proprio modello di apprendimento profondo. CIFAR-10 è una raccolta di immagini per l'addestramento di algoritmi di visione artificiale di apprendimento profondo. La banca dati è composta da 60000 immagini a colori 32x32 in 10 classi, 6000 immagini in ciascuna classe. Se questo non è sufficiente, prova il set di dati CIFAR-100. COCO è un DB regolarmente aggiornato per la segmentazione e il riconoscimento degli oggetti nel contesto, sponsorizzato da Microsoft, Facebook e Mighty AI. Labeled Faces in the Wild è un set di dati per l'addestramento e il test dei modelli di riconoscimento facciale. Sta cercando un corso sulla DataScience? Però costano tutti un sacco di soldi e non sei sicuro questo mestiere faccia per te? Oppure più semplicemente già lavori in questo settore e vuoi approfondire argomenti come machine learning e reti neurali ? Scopri il nostro Corso Gratuito da più di 100 Lezioni, a difficoltà crescente. L'unico corso in italiano gratuito che ti permetterà davvero di capire e approfondire temi fondamentali per questo mestiere. Clicca qui non aspettare, intanto iscriviti è GRATIS. 2) Elaborazione del linguaggio naturale, sintesi vocale e generazione del parlato Realizzare robot e interfacce vocali è impossibile senza corpora vocali. Usa questi set di dati per creare le tue soluzioni. i) Audio VoxCeleb è una raccolta audio che puoi utilizzare per attività di apprendimento approfondito come l'elaborazione del linguaggio naturale in tempo reale, il riconoscimento vocale e la generazione del parlato. Su LibriSpeech , troverai circa 1000 ore di discorso orale in inglese a 16kHz derivato da audiolibri. È possibile utilizzare il set di dati vocali gratuito per. Consiste in registrazioni vocali a 8kHz . Hanno un silenzio quasi minimo all'inizio e alla fine. Il set di dati è open source. Common Voice è un'iniziativa di Mozilla che contiene centinaia di migliaia di registrazioni di voce umana. Ogni visitatore del sito Web di Common Voice può contribuire al proprio database di linguaggio umano aperto registrando la propria voce. ii) Testo WordNet è un database lessicale che contiene tutte le parti del discorso raggruppate in set di sinonimi. Una tale struttura lo rende uno strumento fantastico per l'elaborazione del linguaggio naturale e la ricerca linguistica. 20 Newsgroups è un set di dati che consiste di oltre 18.000 documenti di testo da 20 diversi newsgroup tra cui sport, tecnologia, arte, intrattenimento, ecc. Sentiment140 è un set di dati di tweet che può essere utilizzato per l'analisi del sentiment o per la sintesi vocale. Su IMDB Reviews , troverai oltre 50.000 recensioni di film non elaborate e pre-elaborate per l'analisi del sentiment con il deep learning. Le recensioni di Yelp contengono recensioni degli utenti, informazioni aziendali e immagini che puoi utilizzare per scopi personali e accademici. Il corpus di Wikipedia è un enorme insieme di dati con esempi di testi scritti in inglese - più di 4,5 milioni di articoli. Se stai cercando un corpus di testo segmentato in cui i campioni sono raggruppati in base all'età degli autori, usa The Blog Authorship Corpus . Contiene post di circa 20.000 blogger raccolti da blogger.com nel 2004. Altri database video e audio per il deep learning YouTube 8M ha più di 6 milioni di video, etichette testate dall'uomo e circa 2,6 miliardi di funzionalità audio e video. Ci sono milioni di clip audio di 10 secondi etichettate selezionate dai video di YouTube su AudioSet di Google . Su FSB troverai una moltitudine di campioni sonori che vanno dai suoni umani e animali alla musica e al rumore meccanico. Free Music Archive è un set di dati per l'analisi musicale. 1) Sistemi di raccomandazione I sistemi di raccomandazione sono vitali per le attività di e-commerce poiché aiutano a fornire esperienze personalizzate ai clienti. I dati dei prodotti Amazon contengono metadati e recensioni su milioni di articoli venduti su Amazon. Questa è una risorsa incredibile per chiunque sia interessato ai sistemi di raccomandazione. MovieLens è un sito Web che fornisce consigli personalizzati sui film ai propri utenti. Hanno anche un set di dati open source che puoi utilizzare per addestrare il tuo modello. Jester Collaborative Filtering Dataset ha più di 4 milioni di valutazioni di 100 barzellette da 73.421 utenti. Ridi a crepapelle mentre fai la tua ricerca sul machine learning. 2) Set di dati specifici del settore È impossibile coprire ogni area in cui il ML può essere applicato con successo . Ma ho raccolto alcuni esempi di seguito per darti alcune idee. MIMIC-III è un dataset anonimo open source di dati sanitari di oltre 40.000 pazienti in terapia intensiva. Tra i parametri coperti ci sono dati demografici, segni vitali, test di laboratorio e assunzione di farmaci. Per comprendere il mercato azionario, può essere molto utile creare software AI. I prezzi delle azioni EOD memorizzano i dati storici sui prezzi delle azioni giornaliere, i dividendi e le suddivisioni per le azioni statunitensi. Boston Housing Dataset in cui sono disponibili dati relativi agli alloggi nell'area di Boston Mass. Il punteggio sulla salute dei ristoranti di San Francisco, sviluppato dal dipartimento della sanità locale, fornisce materiale interessante per i ricercatori interessati alla salute pubblica e al settore della ristorazione. Per informazioni sui prezzi delle case e sugli affitti per dimensione, tipo e livello negli Stati Uniti, visitare il sito Web di Zillow Real Estate Research . Il set di dati delle statistiche sull'istruzione globale della Banca mondiale contiene dati su oltre 4.000 indicatori comparabili a livello internazionale per l'accesso e il progresso all'istruzione. Quandl è una risorsa a disposizione se stai cercando set di dati finanziari ed economici per professionisti degli investimenti. Ci sono così tanti set di dati che le opportunità per la ricerca ML sono davvero infinite. Esplora Kaggle, Google Dataset Search e altre risorse dell'elenco per trovare ciò che ti incuriosisce. Commenta l'articolo con il tuo dataset preferito.

  • Le migliori API per l'intelligenza artificiale e l'apprendimento automatico

    Iniziamo l'articolo con la definizione di Api. CHE COSA SONO LE API (Application Programming Interface) ? Le API sono un insieme di strumenti e protocolli utilizzati per la creazione di software e modelli. Esistono vari tipi di API come l'API locale, l'API Web e l'API del programma, che aiutano gli sviluppatori di machine learning a comunicare tra loro e condividere le conoscenze su varie piattaforme. In questo articolo, vedremo le prime API che ogni sviluppatore che lavora con ML e AI dovrebbe conoscere: migliori API per l'intelligenza artificiale e l'apprendimento automatico : (L'elenco è in ordine alfabetico) 1| API di apprendimento automatico di Amazon 2| API di apprendimento automatico BigML 3| API di Google Cloud 4| API di elaborazione del linguaggio naturale Geneea 5| API IBM Watson Discovery 6| Kairos API 7| Servizio cognitivo di Microsoft Azure — Analisi del testo 8| API di apprendimento automatico Pronostico IO 9| API TensorFlow Ma adesso vediamole una per una... 1| API di apprendimento automatico di Amazon L' API di machine learning di Amazon è una delle API più popolari tra le organizzazioni. Consente agli utenti di eseguire vari tipi di attività di apprendimento automatico e ha la capacità di creare, addestrare e distribuire facilmente modelli di apprendimento automatico. Qui, un utente può scegliere tra una serie di servizi di intelligenza artificiale pre-addestrati per visione artificiale, linguaggio, raccomandazioni, previsioni, tra gli altri. È costruito sulla piattaforma cloud di Amazon e ottimizzato principalmente per l'apprendimento automatico con prestazioni elevate. 2| API di apprendimento automatico BigML BigML è un'API REST di machine learning in cui un utente può facilmente creare, eseguire e portare modelli predittivi in ​​un progetto di machine learning. Questa API può essere utilizzata per eseguire attività di apprendimento automatico supervisionate e non supervisionate e anche per creare pipeline di apprendimento automatico sofisticate. BigML.io ha diverse funzionalità come fornisce agli utenti un accesso completamente white-box a set di dati, modelli, cluster e rilevatori di anomalie, fornisce previsioni quasi in tempo reale e molto altro. 3| API di Google Cloud Le API di Google Cloud includono una serie di attività per gli sviluppatori di machine learning come l'API Vision che offre potenti modelli di machine learning pre-addestrati tramite API REST e RPC. L'API Vision viene utilizzata per rilevare oggetti e volti, leggere testo stampato e scritto a mano e creare preziosi metadati in un catalogo di immagini. L'API Cloud Speech consente agli sviluppatori di convertire l'audio in testo applicando potenti modelli di rete neurale in un'API di facile utilizzo. I potenti modelli pre-addestrati dell'API Natural Language consentono agli sviluppatori di lavorare con funzionalità di comprensione del linguaggio naturale che includono analisi del sentiment, analisi delle entità, analisi del sentiment delle entità, classificazione dei contenuti e analisi della sintassi. 4| API di elaborazione del linguaggio naturale Geneea Geneea è una piattaforma di elaborazione del linguaggio naturale (NLP) che aiuta principalmente gli utenti a sfruttare i dati di testo. Offre quattro tipi di API pubbliche e sono General API, Media API, VoC API e Intent Detection. L'API generale o API G3 è un'API LU generica che può eseguire una o più analisi linguistiche come il rilevamento della lingua, l'analisi del sentimento, ecc. L'API Geneea Media rileva di cosa trattano gli articoli di notizie, assegnando loro tag semantici. L'API Voice of the Customer offre agli utenti di analizzare il feedback dei clienti, rilevando gli argomenti di cui parlano i clienti, ecc. Infine, il rilevatore di intenti può essere utilizzato per rilevare un intento non parametrizzato in un testo. 5| API IBM Watson Discovery IBM Watson Discovery è un motore di ricerca cognitiva e di analisi dei contenuti in cui uno sviluppatore può aggiungere applicazioni al fine di identificare modelli, tendenze e informazioni fruibili per guidare un migliore processo decisionale. L'API Watson Discovery include vari servizi di apprendimento automatico come IBM Watson Assistant, IBM Watson Personality Insights, IBM Watson Visual Recognition, IBM Watson Natural Language Processing, IBM Watson Speech to Text, tra gli altri. 6| Kairos API Con l'aiuto della visione artificiale e dell'apprendimento profondo, l' API Kairos consente agli sviluppatori di apprendimento automatico di creare tecniche di riconoscimento facciale nei loro prodotti software insieme a varie altre funzionalità come la ricerca di volti umani in foto, video e immagini, rilevamento di gruppi di età, ricerca di corrispondenza dei volti, rilevamento del genere, riconoscimento della diversità, riconoscimento multi-faccia, tra gli altri. 7| Servizio cognitivo di Microsoft Azure — Analisi del testo L'API di analisi del testo in Microsoft Azure Cognitive Services è un servizio basato su cloud che fornisce l'elaborazione avanzata del linguaggio naturale su testo non elaborato. È fondamentalmente una raccolta di algoritmi di apprendimento automatico e intelligenza artificiale nel cloud per progetti di sviluppo. L'API include quattro funzioni principali, ovvero analisi del sentiment, estrazione di frasi chiave, rilevamento della lingua e riconoscimento di entità denominate. 8| API di apprendimento automatico Pronostico IO PredictionIO è un'API basata su previsioni ed è un server di apprendimento automatico open source che si basa su uno stack open source all'avanguardia per sviluppatori e data scientist per creare motori predittivi per qualsiasi attività di apprendimento automatico. Questa API ha diverse funzionalità intuitive come l'accelerazione della modellazione dell'apprendimento automatico con processi sistematici e misure di valutazione predefinite, semplifica la gestione dell'infrastruttura dati, supporta l'apprendimento automatico e le librerie di elaborazione dati come Spark MLLib e OpenNLP, unifica i dati da più piattaforme in batch o in tempo reale per analisi predittive complete e molto altro ancora. 9| API TensorFlow L' API TensorFlow può essere utilizzata dagli sviluppatori di machine learning per costruire ed eseguire un grafico TensorFlow. È disponibile in diversi linguaggi come JavaScript, Python, Java, Go, C++ e Swift. Attualmente, l'API TensorFlow in Python è la più completa e facile da usare. Non ti resta che commentare qui sotto le API che non abbiamo inserito ma reputi importante e condividere l'articolo con i tuoi colleghi. Grazie per la lettura.

  • I 10 migliori progetti di machine learning per principianti da fare con python

    È sempre utile ottenere informazioni su come le persone stanno iniziando la loro carriera nel machine learning o nell'I.A. In questo post del blog, scoprirai come anche i principianti possono fare grandi progressi nell'applicare l'apprendimento automatico a problemi del mondo reale con questi fantastici progetti di apprendimento automatico per principianti consigliati dagli esperti del settore. Abbiamo attentamente curato l'elenco dei migliori progetti di machine learning per principianti che coprono gli aspetti fondamentali dell'apprendimento automatico come l'apprendimento supervisionato, l'apprendimento non supervisionato, l'apprendimento profondo e le reti neurali. In tutti questi progetti di machine learning inizierai con set di dati del mondo reale che sono disponibili pubblicamente. Ti assicuriamo che troverai questo blog assolutamente interessante e che vale la pena leggere tutto articolo per le cose che puoi imparare sui progetti di machine learning più popolari. Consigliamo questi dieci progetti di machine learning ai neofiti che iniziano la loro carriera nel machine learning in quanto sono una miscela perfetta di vari tipi di sfide che si possono incontrare quando si lavora come ingegnere di machine learning o data scientist. Sommario Previsione delle vendite utilizzando Walmart Dataset Progetto ML di previsione delle vendite di BigMart Progetto del sistema di raccomandazione musicale Riconoscimento dell'attività umana utilizzando il set di dati dello smartphone Stimare i prezzi delle azioni utilizzando TimeSeries Previsione della qualità del vino utilizzando il set di dati sulla qualità del vino Classificazione delle cifre scritte a mano MNIST Impara a costruire sistemi di raccomandazione con Movielens Dataset Boston Housing Price Prediction ML Project Analisi del sentiment sui social media utilizzando il set di dati di Twitter 1. Previsione delle vendite utilizzando Walmart Dataset Il set di dati Walmart contiene dati di vendita per 98 prodotti in 45 punti vendita. Il set di dati contiene le vendite per negozio, per reparto su base settimanale. L'obiettivo di questo progetto di machine learning è prevedere le vendite per ogni reparto in ogni punto vendita per aiutarli a prendere decisioni migliori basate sui dati per l'ottimizzazione del canale e la pianificazione dell'inventario. L'aspetto impegnativo del lavorare con il set di dati Walmart è che contiene eventi di ribasso selezionati che influenzano le vendite e dovrebbero essere presi in considerazione. In questo progetto, tratteremo i passaggi principali richiesti in ogni progetto di Data Science. Inizieremo importando un file CSV e eseguendo un'analisi EDA (Exploratory Data Analysis) di base. Impareremo come unire più set di dati e applicare gruppo per funzione per analizzare i dati. Tracciamo un grafico di serie temporali e lo analizzeremo. Quindi inseriamo il set di dati in un modello ARIMA (ARIMA è un acronimo che sta per AutoRegressive Integrated Moving Average) per l'addestramento. Ottimizziamo il modello selezionando caratteristiche importanti per migliorare il nostro punteggio di precisione. Quindi vengono effettuate le previsioni finali e il modello viene salvato. 2. Progetto ML di previsione delle vendite BigMart Il set di dati di vendita BigMart è costituito da dati di vendita 2013 per 1559 prodotti in 10 diversi punti vendita in diverse città. L'obiettivo del progetto ML di previsione delle vendite di BigMart è costruire un modello di regressione per prevedere le vendite di ciascuno dei 1559 prodotti per l'anno successivo in ciascuno dei 10 diversi punti vendita BigMart. Il set di dati di vendita BigMart comprende anche alcuni attributi per ogni prodotto e negozio. Questo modello aiuta BigMart a comprendere le proprietà dei prodotti e dei negozi che svolgono un ruolo importante nell'aumento delle vendite complessive. 3. Progetto del sistema di raccomandazione musicale Questo è uno dei progetti di apprendimento automatico più popolari e può essere utilizzato in diversi domini. Potresti avere molta familiarità con un sistema di consigli se hai utilizzato un sito di e-commerce o un sito web di film / musica. Nella maggior parte dei siti di e-commerce come Amazon, al momento del checkout, il sistema consiglierà prodotti che possono essere aggiunti al carrello. Allo stesso modo su Netflix o Spotify, in base ai film che ti sono piaciuti, mostrerà film o canzoni simili che potrebbero piacerti. Come fa il sistema a farlo? Questo è un classico esempio in cui è possibile applicare l'apprendimento automatico. In questo progetto, utilizziamo il set di dati del servizio di streaming musicale leader in Asia per creare un sistema di raccomandazione musicale migliore. Cercheremo di determinare quale nuova canzone o quale nuovo artista potrebbe piacere a un ascoltatore in base alle sue scelte precedenti. Il compito principale è prevedere le possibilità che un utente ascolti una canzone ripetutamente entro un periodo di tempo. Nel set di dati, la previsione è contrassegnata come 1 se l'utente ha ascoltato la stessa canzone entro un mese. Il set di dati consiste in quale canzone è stata ascoltata da quale utente e in che momento. Sta cercando un corso sulla DataScience? Però costano tutti un sacco di soldi e non sei sicuro questo mestiere faccia per te? Oppure più semplicemente già lavori in questo settore e vuoi approfondire argomenti come machine learning e reti neurali ? Scopri il nostro Corso Gratuito da più di 100 Lezioni, a difficoltà crescente. L'unico corso in italiano gratuito che ti permetterà davvero di capire e approfondire temi fondamentali per questo mestiere. Clicca qui non aspettare, intanto iscriviti è GRATIS. 4. Riconoscimento dell'attività umana utilizzando il set di dati dello smartphone Il dataset dello smartphone è costituito da registrazioni di attività fitness di 30 persone acquisite tramite smartphone abilitato con sensori inerziali. L'obiettivo di questo progetto di machine learning è costruire un modello di classificazione in grado di identificare con precisione le attività di fitness umane. Lavorare a questo progetto di machine learning ti aiuterà a capire come risolvere i problemi di multi-classificazione. 5. Previsione dei prezzi delle azioni utilizzando le TimeSeries Questa è un'altra interessante idea di progetto di machine learning o deep learning per data scientist / ingegneri di machine learning che lavorano o pianificano di lavorare con il dominio finanziario. Il predittore dei prezzi delle azioni è un sistema che apprende le prestazioni di un'azienda e prevede i futuri prezzi delle azioni. Le sfide associate al lavoro con i dati sui prezzi delle azioni sono che sono molto granulari e inoltre ci sono diversi tipi di dati come indici di volatilità, prezzi, indicatori macroeconomici globali, indicatori fondamentali e altro ancora. Un aspetto positivo del lavoro con i dati del mercato azionario è che i mercati finanziari hanno cicli di feedback più brevi, rendendo più facile per gli esperti di dati convalidare le loro previsioni sui nuovi dati. Per iniziare a lavorare con i dati del mercato azionario, Esistono diversi metodi di previsione delle serie temporali per prevedere il prezzo delle azioni, la domanda, ecc. 6. Previsione della qualità del vino utilizzando il set di dati sulla qualità del vino È risaputo che più vecchio è il vino, migliore è il gusto. Tuttavia, ci sono molti fattori diversi dall'età che entrano nella certificazione di qualità del vino che includono test fisicochimici come quantità di alcol, acidità fissa, acidità volatile, determinazione della densità, pH e altro. L'obiettivo principale di questo progetto di apprendimento automatico è costruire un modello di apprendimento automatico per prevedere la qualità dei vini esplorando le loro varie proprietà chimiche. Il set di dati sulla qualità del vino è costituito da 4898 osservazioni con 11 variabili indipendenti e 1 variabile dipendente. 7. Classificazione delle cifre scritte a mano MNIST L'apprendimento profondo e le reti neurali svolgono un ruolo vitale nel riconoscimento delle immagini, nella generazione automatica di testi e persino nelle auto a guida autonoma. Per iniziare a lavorare in queste aree, è necessario iniziare con un set di dati semplice e gestibile come il set di dati MNIST. Il riconoscimento delle cifre scritte a mano ti metterà alla prova. 8. Impara a costruire sistemi di raccomandazione con Movielens Dataset Da Netflix a Hulu, la necessità di creare un sistema di consigli cinematografici efficiente ha acquisito importanza nel tempo con la crescente domanda da parte dei consumatori moderni di contenuti personalizzati . Uno dei set di dati più popolari disponibili sul Web per i principianti che vogliono imparare a costruire sistemi di raccomandazione è il set di dati Movielens che contiene circa 1.000.209 valutazioni di film di 3.900 film realizzati da 6.040 utenti Movielens. Puoi iniziare a lavorare con questo set di dati creando una visualizzazione cloud mondiale dei titoli dei film per creare un sistema di consigli sui film. 9. Stimare il prezzo delle case di Boston Il set di dati dei prezzi delle case di Boston comprende i prezzi delle case in diversi luoghi di Boston. Il set di dati comprende anche informazioni su aree di attività non al dettaglio (INDUS), tasso di criminalità (CRIM), età delle persone che possiedono una casa (AGE) e molti altri attributi (il set di dati ha un totale di 14 attributi). il set di dati può essere scaricato dal repository UCI Machine Learning. L'obiettivo di questo progetto di machine learning è prevedere il prezzo di vendita di una nuova casa applicando concetti di base di machine learning sui dati dei prezzi delle abitazioni. Questo set di dati è troppo piccolo con 506 osservazioni ed è considerato un buon inizio per i principianti del machine learning per avviare la loro pratica pratica sui concetti di regressione. 10. Analisi del sentimento sui social media utilizzando Twitter Dataset Le piattaforme di social media come Twitter, Facebook, YouTube, Reddit generano enormi quantità di big data che possono essere estratti in vari modi per comprendere tendenze, sentimenti e opinioni del pubblico. I dati dei social media oggi sono diventati rilevanti per il marchio, il marketing e il business nel suo complesso. Un analizzatore di sentimenti apprende vari sentimenti dietro un "pezzo di contenuto" (potrebbe essere IM, e-mail, tweet o qualsiasi altro post sui social media) attraverso l'apprendimento automatico e prevede lo stesso utilizzando l'IA. I dati di Twitter sono considerati un punto di ingresso definitivo per i principianti. pratica l'analisi del sentiment sui problemi di machine learning. Utilizzando il set di dati di Twitter, è possibile ottenere una miscela accattivante di contenuti di tweet e altri metadati correlati come hashtag, retweet, posizione, utenti e altro che aprono la strada a un'analisi approfondita. Il set di dati di Twitter è composto da 31.962 tweet e ha una dimensione di 3 MB. Utilizzando i dati di Twitter puoi scoprire cosa dice il mondo su un argomento, sia che si tratti di film, opinioni sulle elezioni statunitensi o qualsiasi altro argomento di tendenza come prevedere chi vincerà la Coppa del mondo FIFA 2018. Lavorare con il set di dati Twitter ti aiuterà a capire sfide associate al data mining dei social media e anche conoscere in profondità i classificatori. Il problema principale su cui puoi iniziare a lavorare da principiante è costruire un modello per classificare i tweet come positivi o negativi. Letture consigliate per "I 10 migliori progetti di machine learning per principianti da fare con python" Come Iniziare a Utilizzare l'Intelligenza Artificiale (I.A.) Nella Tua Azienda Migliori progetti Open Source Python di Intelligenza Artificiale Come Creare Un Dataset per il tuo Progetto Di Machine Learning Fantastiche Idee per Progetti di Data Science per Principianti ed Esperti Semplici progetti di Deep Learning e Computer Vision Con Esempi pratici Riconoscimento facciale con Python, in meno di 25 righe di codice Come costruire il tuo portfolio da data scientist Introduzione a Scikit Learn con esempio pratico in Python Il tuo Primo Programma di Machine Learning con Python e Google Colab Esempio pratico Rilevamento Di Veicoli In Tempo Reale con il Deep Learning

  • Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale

    Gli scienziati dei dati utilizzano l'intelligenza artificiale (AI) per... praticamente qualsiasi cosa . L'intelligenza artificiale può eseguire sistemi di controllo per ridurre il consumo energetico degli edifici , fornire consigli su vestiti da acquistare o spettacoli da guardare, aiutare a migliorare le pratiche agricole per aumentare la quantità di cibo che possiamo coltivare in modo sostenibile e un giorno un algoritmo di intelligenza artificiale potrebbe persino guidare le nostre auto . Fortunatamente, iniziare con l'IA non è poi così difficile per chi ha già esperienza con Python e l'analisi dei dati. Puoi sfruttare il potente pacchetto scikit-learn per fare la maggior parte del duro lavoro per te. Scikit-learn è un pacchetto Python progettato per facilitare l'uso dell'apprendimento automatico e degli algoritmi di intelligenza artificiale. Questo pacchetto include algoritmi utilizzati per la classificazione, la regressione e il raggruppamento come foreste casuali e aumento del gradiente. Scikit-learn è stato progettato per interfacciarsi facilmente con i comuni pacchetti scientifici NumPy e SciPy. Sebbene scikit-learn non sia stato specificamente progettato per, si interfaccia ottimamente anche con Pandas. Che cosa è SCIKIT-LEARN ? Scikit-learn è un pacchetto Python progettato per facilitare l'uso dell'apprendimento automatico e degli algoritmi di intelligenza artificiale. Sci-kit learn include algoritmi utilizzati per la classificazione, la regressione e il clustering. Scikit-learn include strumenti utili per facilitare l'uso di algoritmi di apprendimento automatico. Lo sviluppo di pipeline di machine learning in grado di prevedere con precisione il comportamento di un sistema richiede la suddivisione dei dati in set di training e test , l' assegnazione di un punteggio agli algoritmi per determinare il loro corretto funzionamento e la garanzia che i modelli non siano né overfit né underfit. Come funzionano gli algoritmi di Scikit-Learn? Possiamo sviluppare e testare algoritmi di scikit-learn in tre fasi generali. PASSAGGI PER SVILUPPARE E TESTARE GLI ALGORITMI SCIKIT-LEARN : Addestrare il modello utilizzando un set di dati esistente che descrive i fenomeni che è necessario prevedere per il modello. Testa il modello su un altro set di dati esistente per assicurarti che funzioni correttamente. Usa il modello per prevedere i fenomeni in base alle esigenze del tuo progetto. L'API (Application Programming Interface) di scikit-learn fornisce i comandi per eseguire ciascuno di questi passaggi con una singola chiamata di funzione. Tutti gli algoritmi di scikit-learn usano le stesse chiamate di funzione per questo processo, quindi se lo impari per uno lo impari per tutti. La chiamata di funzione per addestrare un algoritmo di scikit-learn è .fit(). Per addestrare ogni modello, chiami la funzione .fit e gli passi due componenti del set di dati di addestramento. I due componenti sono x set di dati, che fornisce i dati che descrivono le caratteristiche del set di dati, e y , che forniscono i dati che descrivono gli obiettivi del sistema. Nota: quando si parla di funzionalità e obiettivi, si tratta essenzialmente di termini x e y, dove x sono le variabili che descrivono la nostra y Esempio Pratico Scikit-Learn L'algoritmo crea quindi un modello matematico, come determinato dall'algoritmo selezionato e dai parametri del modello. Il modello matematico corrisponde il più possibile ai dati di allenamento forniti. L'algoritmo memorizza quindi i parametri nel modello, che consente di chiamare la versione adatta del modello secondo necessità per il progetto. La funzione per testare l'adattamento del modello è .score(). Per utilizzare questa funzione si chiama nuovamente la funzione e si passa un set di dati x, che rappresenta le caratteristiche, e il set di dati y corrispondente , che rappresenta gli obiettivi. È importante che il set di dati che utilizzi durante il test dei dati (il set di dati del test) sia diverso dal set di dati che utilizzi per addestrare il modello. È molto probabile che un modello ottenga un punteggio molto buono quando viene valutato sui dati di addestramento perché lo hai forzato matematicamente a corrispondere a quel set di dati. Il vero test è il rendimento del modello su un set di dati diverso, che è lo scopo del set di dati di test. Quando si chiama il . score()funzione, scikit-learn restituirà il valore r² indicando quanto bene il modello ha previsto quanto fornito set di dati ys utilizzando il set di dati x. È possibile prevedere gli output di un sistema dati gli input forniti utilizzando la funzione .predict() di scikit-learn . È importante farlo solo dopo aver adattato il modello. L'adattamento è il modo in cui si regola il modello in modo che corrisponda al set di dati, quindi se non lo si adatta prima, il modello non fornirà una previsione preziosa. Una volta che hai adattato il modello, puoi passare un x alla funzione .predict() e restituirà y come previsto dal modello. In questo modo puoi prevedere come si comporterà un sistema in futuro. Queste tre funzioni costituiscono il nucleo dell'API scikit-learn e fanno molto per applicare l'intelligenza artificiale ai tuoi problemi tecnici. Come posso creare set di dati di training e test? La creazione di set di dati di addestramento e test separati è una componente fondamentale dell'addestramento dei modelli di intelligenza artificiale. Senza questo passaggio non possiamo creare un modello che corrisponda al sistema che stiamo cercando di prevedere, né possiamo verificare l'accuratezza delle nostre previsioni. Fortunatamente, scikit-learn fornisce uno strumento utile per facilitare questo processo: la train_test_split() . Train_test_split() fa esattamente quello che sembra. Suddivide un set di dati fornito in set di dati di addestramento e test. Puoi usarlo per creare i set di dati di cui hai bisogno per assicurarti che il tuo modello preveda correttamente il sistema che stai studiando. Fornisci un set di dati train_test_split() e fornisce i set di dati di addestramento e test di cui hai bisogno. Ci sono alcune cose a cui prestare attenzione quando si utilizza train_test_split(). Innanzitutto, train_test_split()è di natura casuale, il che significa che non restituirà gli stessi set di dati di training e test se si esegue più volte con gli stessi dati di input. Questo può essere utile se si desidera testare la variabilità dell'accuratezza del modello, ma può anche essere negativo se si desidera utilizzare ripetutamente lo stesso set di dati sul modello. Per assicurarti di ottenere lo stesso risultato ogni volta puoi utilizzare il random_stateparametro. L'impostazione dello stato casuale forzerà train_test_split()l'uso dello stesso seme di randomizzazione ogni volta che lo esegui e fornirà le stesse suddivisioni del set di dati. Quando si utilizza random_stateè consuetudine impostarlo su 42, probabilmente come un cenno umoristico alla Guida galattica per autostoppisti più che per qualsiasi motivo tecnico. Come funziona tutto questo insieme? Tutti combinati, questi strumenti creano un'interfaccia semplificata per creare e utilizzare strumenti di apprendimento di scikit. Parliamone usando l'esempio del modello di regressione lineare di scikit-learn . Per implementare questo processo dobbiamo prima importare i nostri strumenti: il modello scikit-learn, la train_test_split()funzione e Panda per il processo di analisi dei dati. Importiamo le funzioni come segue: from scikit-learn.linear_model import LinearRegression from scikit-learn.model_selection import train_test_split import pandas as pd Possiamo quindi leggere un set di dati in modo che sia disponibile per l'addestramento e il test del modello. Ho creato un set di dati realistico che dimostra le prestazioni degli scaldacqua a pompa di calore (HPWH) in funzione delle loro condizioni operative, in modo specifico per aiutare le persone ad apprendere la scienza dei dati e le competenze ingegneristiche . Supponendo che tu abbia scaricato quel set di dati e salvato nella stessa cartella del tuo script, puoi aprirlo usando la seguente riga di codice. In caso contrario, puoi modificare questi passaggi secondo necessità per esercitarti su qualsiasi set di dati che desideri. data = pd.read_csv('COP_HPWH_f_Tamb&Tavg.csv', index_col = 0) Il passaggio successivo consiste nel suddividere il set di dati in xe ydati. Per fare ciò creiamo nuovi data frame specificando le colonne del data set che rappresentano le caratteristiche e gli obiettivi. Nel caso degli HPWH, le caratteristiche sono la temperatura del serbatoio e la temperatura ambiente mentre l'obiettivo è il consumo di elettricità. Il set di dati contiene otto colonne che mostrano la temperatura dell'acqua a otto diverse profondità nel serbatoio dell'acqua, ciascuna denominata Tx (deg F)dove xè un numero che rappresenta la posizione della misurazione. Il set di dati contiene anche una colonna che mostra la temperatura ambiente misurata nello spazio circostante lo scaldabagno, denominata T_Amb (deg F). Infine, il set di dati contiene una colonna che memorizza i dati sul consumo di elettricità denominata P_Elec (W). In questo caso, è anche importante filtrare il nostro set di dati in modo tale da utilizzare i dati solo quando il sistema utilizza l'elettricità. Se saltiamo questo passaggio, introdurremo la non linearità in un modello lineare, che imposta il modello per fallire. Possiamo eseguire tutti questi passaggi utilizzando il seguente codice: # filtriamo i dati con power > 0 data = data[data['P_Elec (W)'] > 0] # Identifichiamo x x_columns = ['T_Amb (deg F)'] for i in range(1, 9): x_columns.append('T{} (deg F)'.format(i)) x = data[x_columns] #Creiamo la colonna y y = data['P_Elec (W)'] Ora che abbiamo x e y , possiamo dividerli in set di dati di addestramento e test. Lo facciamo chiamando la train_test_split() funzione di scikit-learn come segue. x_train, x_test, y_train, y_test = train_test_split(x, y, random_state = 42) Ora che abbiamo a disposizione set di dati di training e test, possiamo creare e adattare il modello di regressione lineare al set di dati. Innanzitutto, creiamo un'istanza del modello, quindi chiamiamo la .fit() come segue. model = LinearRegression() model = model.fit(x_train, y_train) Si noti che questa implementazione ha utilizzato i parametri predefiniti del modello di regressione lineare. Questo potrebbe o meno fornire un buon adattamento ai dati e potrebbe essere necessario modificare i parametri per ottenere un buon adattamento. Per ora, usiamo i parametri predefiniti per apprendere questi concetti. Il passaggio successivo consiste nel valutare il modello sul set di dati di test per assicurarsi che si adatti bene al set di dati. Puoi farlo chiamando .score() e passando i dati di test. score = model.score(x_test, y_test) Se il modello ottiene un buon punteggio nel set di dati di test, è probabile che tu abbia un modello ben addestrato e appropriato per il set di dati. Se il modello non ottiene un buon punteggio, è necessario prendere in considerazione la raccolta di più dati, la regolazione dei parametri del modello o l'utilizzo di un modello completamente diverso. Se il modello funziona bene, puoi dichiarare il modello pronto per l'uso e iniziare a prevedere il comportamento del sistema. Poiché non abbiamo un set di dati aggiuntivo da prevedere in questo momento, possiamo semplicemente prevedere l'output sul set di dati di test. Per fare ciò, chiami la funzione .predict() come segue. predict = model.predict(x_test) La variabile di previsione ora manterrà l'output previsto del sistema quando esposto agli input come definito da X_test. È quindi possibile utilizzare questi output per confrontare direttamente i valori nel ytest, il che consente di esaminare con maggiore attenzione l'adattamento del modello e l'accuratezza della previsione. Quanto bene si comporta questo modello? Poiché abbiamo calcolato il punteggio del modello e l'abbiamo salvato nel punteggio variabile, possiamo vedere rapidamente come il modello prevede il consumo di elettricità dell'HPWH. In questo caso, il punteggio del modello è 0,58. R² è una metrica che raggiunge il massimo a uno perché si indica che il modello spiega perfettamente il comportamento del sistema. Più basso è il valore, peggiore è l'adattamento (e, sì, può essere negativo). Un valore r² di 0,58 indica che il modello spiega un po' il comportamento osservato, ma non è eccezionale. Come promemoria, per migliorare possiamo: Raccogliere più dati Regolare i parametri del modello Usare un modello completamente diverso Potremmo certamente raccogliere più dati o regolare i parametri del modello di regressione lineare, ma il problema principale qui è che la relazione tra il consumo di energia della pompa di calore e la temperatura dell'acqua è probabilmente non lineare. È difficile per un modello lineare prevedere qualcosa che non sia lineare! Possiamo provare lo stesso metodo utilizzando un modello progettato per sistemi non lineari e vedere se otteniamo risultati migliori. Un possibile modello è il regressore della foresta casuale . Possiamo provarlo aggiungendo il seguente codice alla fine dello script. from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor() model.fit(x_train, y_train) score = model.score(x_test, y_test) Questo metodo produce un punteggio molto alto di 0,9999, che è sospetto nell'altro modo. C'è una ragionevole possibilità che questo modello sia in overfitting al set di dati e non produrrà effettivamente previsioni realistiche in futuro. Sfortunatamente, questo non è qualcosa che possiamo veramente determinare dato il set di dati disponibile. Se utilizzi questo modello per iniziare a prevedere il sistema, dovrai monitorare attentamente il modello per vedere come si comporta man mano che diventano disponibili più dati e per continuare ad addestrarlo. Tracciare le previsioni rispetto ai dati misurati fornirebbe anche informazioni su come si comporta il modello. Per questo particolare set di dati, dirò che mi fido di questo modello perché questo set di dati non contiene dati misurati effettivi; è un set di dati di esempio che ho creato implementando un'equazione di regressione per mostrare come si comporta un HPWH in queste condizioni. Ciò significa che il regressore della foresta casuale probabilmente corrisponde ai dati così bene perché ha identificato l'equazione che ho usato per creare il set di dati. Conclusioni E con ciò, dovresti essere in ottima forma per iniziare a utilizzare scikit-learn per implementare l'apprendimento automatico e l'intelligenza artificiale! Se vi ricordate che tutti gli algoritmi di scikit-learn usano le funzioni fit(), score() e predict() ed è possibile creare i set di dati utilizzando train_test_split(), allora sei sulla buona strada per sviluppare ottimi modelli di I.A. con python.

  • Che cosa è e come funziona un dispositivo intelligente ?

    Utilizziamo dispositivi intelligenti ogni giorno, ma cosa rende esattamente un dispositivo intelligente? Scopri come gli oggetti diventano parte dell'Internet of Things. I dispositivi intelligenti giocano un ruolo fondamentale nell'Industria 4.0 di oggi. Sono al centro dell'Internet of Things (IoT) e delle smart city. I dispositivi intelligenti sono stati al centro del mio dottorato. ricerche di alcuni anni fa e tuttavia, quando ho cercato una definizione per dispositivo intelligente, non sono riuscito a trovare molto. Ho fatto ricorso alla creazione di un nuovo approccio metodologico per lo sviluppo di un concetto scalabile di dispositivi intelligenti. CHE COS'È UN DISPOSITIVO INTELLIGENTE? Un dispositivo intelligente è un dispositivo elettronico sensibile al contesto cablato o wireless in grado di eseguire calcoli autonomi e connettersi ad altri dispositivi per lo scambio di dati. Quindi uno smart device ha tre caratteristiche principali: consapevolezza del contesto calcolo autonomo connettività Questa definizione si allinea con l'idea principale dell'Internet of Things. In altre parole, qualsiasi cosa può diventare parte dell'IoT. Una sedia può diventare una sedia intelligente se aggiungiamo un sensore, un po' di capacità di calcolo e connettività di rete. Consapevolezza del contesto La consapevolezza del contesto è la capacità di un sistema o di un componente del sistema di raccogliere informazioni sul proprio ambiente in un dato momento e adattare i comportamenti di conseguenza. Fotocamere, microfoni e ricevitori GPS (Global Positioning Satellite ), radar e sensori LIDAR sono tutte potenziali fonti di dati per l'elaborazione sensibile al contesto. Un sistema sensibile al contesto può raccogliere dati attraverso queste e altre fonti e rispondere secondo regole prestabilite o attraverso l'intelligenza computazionale. Informatica autonoma L'aspetto chiave dell'elaborazione autonoma è un dispositivo o più dispositivi che eseguono attività in modo autonomo senza il comando diretto dell'utente. Ad esempio, i nostri smartphone danno suggerimenti in base alla nostra geolocalizzazione o al meteo. Per svolgere questo compito (apparentemente) semplice, uno smartphone deve essere autonomo e utilizzare i dati di contesto per prendere decisioni. Connettività La connettività si riferisce alla capacità di un dispositivo intelligente di connettersi a una rete dati. Senza connettività, non ha senso che un dispositivo intelligente sia autonomo e abbia consapevolezza del contesto. La connettività di rete, cablata o wireless, è una caratteristica cruciale che consente a un dispositivo di essere parte dell'IoT. I dispositivi intelligenti hanno bisogno degli esseri umani? Non commettere l'errore di presumere che tutti i dispositivi intelligenti siano progettati per interagire con gli umani. Ci sono tante altre possibilità. Un dispositivo intelligente può avere un'interazione diretta o indiretta con gli umani. Una sonda meteorologica, ad esempio, potrebbe raccogliere dati meteorologici e trasmetterli all'IoT. Gli umani finiranno per usare quei dati ovviamente, ma la sonda meteorologica non ha richiesto alcuna interazione diretta con gli umani. I dispositivi intelligenti devono essere portatili? Una telecamera di sorveglianza intelligente deve essere mobile? Ricorda le tre regole: consapevolezza del contesto (è una telecamera, il che significa che supera il test), calcolo autonomo (usa la visione artificiale per riconoscere oggetti particolari) e connettività di rete (invia un report degli oggetti che riconosce a un server ). In questo esempio, la portabilità non è richiesta. I veicoli autonomi sono dispositivi intelligenti? Sì! I veicoli autonomi soddisfano i tre criteri chiave necessari per rendere intelligente un dispositivo. Ha connettività di rete, consapevolezza del contesto (sensori come GPS, LIDAR e Radar) e calcolo autonomo. Alla fine, uno smartphone potrebbe essere molto più semplice di un veicolo autonomo, ma non dei dispositivi intelligenti.

  • Come risolvere l'Overfitting con Python e Capire cosa è l' Overfitting

    CHE COS'È L'OVERFITTING? L'overfitting è un problema comune che i data scientist devono affrontare durante la creazione di modelli con elevata complessità. Si verifica quando un modello si adatta molto bene ai dati di addestramento e successivamente si comporta male quando viene testato su nuovi dati. Questo problema si verifica più spesso quando si costruiscono modelli di rete neurale profonda, che è un modello statistico che rappresenta in modo approssimativo la connettività nel cervello. Questi modelli tendono ad essere complessi poiché possono contenere da centinaia a migliaia di parametri. A causa dell'elevata complessità, questi modelli possono rilevare il rumore casuale come vere tendenze, causando scarse prestazioni quando si effettuano inferenze su nuovi dati. L'overfitting è una grande preoccupazione per qualsiasi azienda che utilizza modelli di deep learning per fare previsioni. Ad esempio, se un'azienda desidera prevedere la fidelizzazione dei clienti, un modello di overfit può rappresentare rumore casuale e valori anomali nei dati come tendenze statistiche significative. Di conseguenza, il modello avrà prestazioni scadenti se utilizzato per prevedere se un cliente effettuerà un acquisto ripetuto in futuro, con conseguente significativa perdita di entrate per l'azienda. Diversi metodi sono comunemente usati per prevenire l'overfitting nei modelli di deep learning. La regressione lazo, chiamata anche regolarizzazione L1, è un metodo popolare per prevenire l'overfitting in modelli complessi come le reti neurali. La regolarizzazione L1 funziona aggiungendo un termine di penalità al modello. Questa penalità fa sì che alcuni dei coefficienti nel modello vadano a zero, che puoi interpretare come l'eliminazione dei pesi del modello assegnati a rumore casuale, valori anomali o qualsiasi altra relazione statisticamente insignificante trovata nei dati. In generale, la regolarizzazione L1 è utile per la fase di selezione delle caratteristiche del processo di creazione del modello. In particolare, puoi usarlo per rimuovere caratteristiche che non sono predittori forti. Ad esempio, quando si prevede la fidelizzazione dei clienti, potremmo avere accesso a funzioni che non sono molto utili per fare previsioni accurate come il nome e l'e-mail del cliente. Un altro metodo di regolarizzazione è la regressione della cresta, chiamata anche regolarizzazione L2. La regressione della cresta funziona riducendo uniformemente i pesi assegnati alle feature nel modello. Questo metodo è utile quando nel modello sono presenti feature altamente correlate. Negli esempi di fidelizzazione dei clienti, le funzionalità altamente correlate possono essere i dollari spesi per l'ultimo acquisto o il numero di articoli acquistati. Queste due caratteristiche sono altamente correlate perché più articoli un cliente acquista, più soldi spendono. Anche la presenza di feature collineari può influire negativamente sulle prestazioni del modello. La libreria Python Keras semplifica la creazione di modelli di deep learning. La libreria di deep learning può essere utilizzata per creare modelli per attività di classificazione, regressione e clustering non supervisionate. Inoltre, Keras semplifica anche l'applicazione dei metodi di regolarizzazione L1 e L2 a questi modelli statistici. Sia la regolarizzazione L1 che L2 possono essere applicate ai modelli di deep learning specificando un valore di parametro in una singola riga di codice. Qui, utilizzeremo i dati di abbandono delle telecomunicazioni per costruire un modello di rete neurale profonda che predice la fidelizzazione dei clienti. I dati contengono informazioni su una società di telecomunicazioni fittizia. Preparazione dei dati Per iniziare, importiamo la libreria Pandas e leggiamo i dati di abbandono di Teclo in un frame di dati Pandas: import pandas as pd df = pd.read_csv('telco_churn.csv') Successivamente, mostriamo le prime cinque righe di dati: print(df.head()) l'output sarà questo : Per costruire il nostro modello di abbandono, dobbiamo convertire la colonna di abbandono nei nostri dati in valori leggibili dalla macchina. Dove l'abbandono ha un valore di "no", assegneremo un'etichetta "zero" e dove l'abbandono ha un valore di "sì", assegneremo l'etichetta "uno". Importiamo il pacchetto Numpy e usiamo il metodo where() per etichettare i nostri dati: import numpy as np df['Churn'] = np.where(df['Churn'] == 'Yes', 1, 0) Molti dei campi nei dati sono categoriali. Dobbiamo convertire questi campi in codici categoriali leggibili dalla macchina in modo da poter addestrare il nostro modello. Scriviamo una funzione che prenda un elenco di nomi di colonne categoriali e modifichi il nostro frame di dati per includere i codici categoriali per ogni colonna: def convert_categories(cat_list):for col in cat_list: df[col] = df[col].astype('category') df[f'{col}_cat'] = df[f'{col}_cat'].cat.codes Definiamo il nostro elenco di colonne categoriali: category_list = [gender, 'Partner', 'Dependents', 'PhoneService', 'MultipleLines', 'InternetService', 'OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport', 'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling', 'PaymentMethod'] Successivamente, chiamiamo la nostra funzione con questo elenco e visualizziamo le prime cinque righe di dati: convert_categories(category_list) print(df.head()) l'output sarà questo: Possiamo vedere che il nostro frame di dati ora contiene codici categoriali per ogni colonna categoriale. Quindi, definiamo il nostro input e output: X = df[['gender_cat', 'Partner_cat', 'Dependents_cat', 'PhoneService_cat', 'MultipleLines_cat', 'InternetService_cat', 'OnlineSecurity_cat', 'OnlineBackup_cat', 'DeviceProtection_cat', 'TechSupport_cat', 'StreamingTV_cat', 'StreamingMovies_cat', 'Contract_cat', 'PaperlessBilling_cat', 'PaymentMethod_cat','MonthlyCharges''TotalCharges', 'SeniorCitizen', 'tenure']] y= df['Churn'] Successivamente, importiamo il metodo split train/test per il modulo di selezione del modello in Scikit-learn. Dividiamo i nostri dati per allenamento e test from sklearn.model_selection import train_test_split X_train, X_test_hold_out, y_train, y_test_hold_out = train_test_split(X, y, test_size=0.33) Reti neurali per la regressione Per iniziare a costruire il nostro modello di rete neurale di regressione, importiamo la classe del layer denso dal modulo layer in Keras. Importiamo anche la classe sequenziale dal modulo models in Keras e il metodo di accuratezza dal modulo metric in Scikit-learn: from tensorflow.keras.layers import Dense from tensorflow.keras.models import Sequential from sklearn.metrics import accuracy_score Ora definiamo e adattiamo il nostro modello e adattiamo il modello ai nostri dati di addestramento. Costruiremo una rete neurale con due strati nascosti e 32 neuroni. Utilizzeremo anche 20 epoche, che corrispondono al numero di passaggi attraverso i dati di addestramento. Definiamo il nostro oggetto modello. model = Sequential() Quindi, aggiungiamo uno strato denso usando il metodo add. Dobbiamo passare il numero di caratteristiche, che è la lunghezza dell'elenco delle colonne, e l'input, che è una tupla con la lunghezza dell'elenco delle colonne. Verranno inoltre inizializzati i valori di peso secondo una distribuzione normale e utilizzando una funzione di attivazione dell'unità lineare rettificata (ReLu). La funzione di attivazione è ciò che simula l'attivazione dei neuroni: model.add(Dense(len(cols),input_shape=(len(cols),), kernel_initializer='normal', activation='relu')) Successivamente, aggiungeremo due livelli nascosti usando il metodo add. Questi strati avranno 32 neuroni e utilizzeranno anche una funzione di attivazione ReLu: model.add(Dense(32, activation='relu')) model.add(Dense(32, activation='relu')) Dobbiamo quindi aggiungere il livello di output, che avrà un neurone e una funzione di attivazione softmax. Ciò consentirà al nostro modello di produrre probabilità di classe per prevedere se un cliente abbandonerà: model.add(Dense(1, activation='softmax')) model.compile(optimizer = 'adam',loss='binary_crossentropy', metrics =['accuracy']) model.fit(X_train, y_train,epochs =20) l'output sarà questo: Possiamo vedere che, ad ogni epoca, la perdita generalmente diminuisce e la precisione aumenta. Ora generiamo previsioni. L'output della previsione è un elenco di probabilità di abbandono corrispondente a ciascun input nei dati del test. Possiamo convertire le previsioni in punteggi binari, dove i valori di probabilità maggiori del 50 percento (0,5) saranno classificati come abbandono, con un'etichetta di uno. In caso contrario, sarà classificato con un'etichetta pari a zero, che corrisponde al cliente che soggiorna presso l'azienda: y_pred = model.predict(X_test) y_pred = np.where(y_pred > 0.5, 1, 0) Calcoliamo anche la precisione del nostro modello: print("Accuracy: ", accuracy_score(y_pred, y_test)) Vediamo che la precisione del nostro modello è del 77,9 percento, il che è abbastanza buono. Vediamo se possiamo migliorare le prestazioni con la regressione lazo. Regressione lazo (regolarizzazione L1) Keras semplifica l'implementazione della regressione lazo con i modelli di rete neurale. Il pacchetto regolarizzatori in Keras ha un metodo che possiamo chiamare, chiamato l1, negli strati della nostra rete neurale. Ciò applicherà termini di penalità ai pesi negli strati che aiuteranno a prevenire il sovradattamento. In genere, la regressione lazo invia i pesi delle caratteristiche insignificanti a zero, consentendo al modello di includere le caratteristiche più importanti per fare previsioni accurate. Importiamo il pacchetto regolarizzatore da Keras: from tensorflow.keras import regularizers Successivamente, definiamo un nuovo oggetto modello, che chiameremo model_lasso. model_lasso = Sequential() Nel livello di input, passeremo un valore per kernel_regularizer usando il metodo l1 dal pacchetto regolarizzatori: model_lasso.add(Dense(len(cols),input_shape=(len(cols),), kernel_initializer='normal', activation='relu', kernel_regularizer = regularizers.l1(1e-6))) Le prossime righe di codice sono identiche al nostro modello di rete neurale iniziale. L'unica differenza è che stiamo lavorando con l'oggetto modello model_lasso, invece del modello: model_lasso.add(Dense(32, activation='relu')) model_lasso.add(Dense(32, activation='relu')) model_lasso.add(Dense(1, activation='sigmoid')) model_lasso.compile(optimizer = 'adam',loss='binary_crossentropy', metrics =['accuracy']) model_lasso.fit(X_train, y_train,epochs =20) y_pred = model_lasso.predict(X_test) y_pred = np.where(y_pred > 0.5, 1, 0) print("Accuracy With Lasso: ", accuracy_score(y_pred, y_test)) La regressione con lazo è un'ottima opzione se nel modello sono presenti molte funzionalità che non contribuiscono positivamente alle prestazioni. Per questo motivo, è utile come strumento di selezione delle funzionalità. Regressione Ridge (L2) Anche applicare la regressione della cresta ai modelli di rete neurale è facile in Keras. Simile al metodo lazo, dobbiamo semplicemente chiamare un nome di metodo l2 negli strati della nostra rete neurale. La differenza tra lazo e ridge è che il primo tende a scartare del tutto valori insignificanti, mentre ridge riduce semplicemente l'entità dei pesi nella nostra rete neurale su tutte le caratteristiche. Definiamo un nuovo oggetto modello chiamato model_ridge: model_ridge = Sequential() E nel livello di input, useremo il metodo l2: model_ridge.add(Dense(len(cols),input_shape=(len(cols),), kernel_initializer='normal', activation='relu', kernel_regularizer = regularizers.l2(1e-6))) Il resto è simile a quello che abbiamo fatto sopra: model_ridge.add(Dense(32, activation='relu')) model_ridge.add(Dense(32, activation='relu')) model_ridge.add(Dense(1, activation='sigmoid')) model_ridge.compile(optimizer = 'adam',loss='binary_crossentropy', metrics =['accuracy']) model_ridge.fit(X_train, y_train,epochs =20) y_pred = model_lasso.predict(X_test) y_pred = np.where(y_pred > 0.5, 1, 0) print("Accuracy With Ridge: ", accuracy_score(y_pred, y_test)) Con ridge, la precisione è leggermente migliore rispetto alla prima rete neurale che abbiamo costruito e alla rete neurale con lazo. La scelta del miglior metodo di regolarizzazione da utilizzare dipende dal caso d'uso. Se l'utilizzo di tutte le funzionalità di input nel modello è importante, la regressione della cresta potrebbe essere una scelta migliore per la regolarizzazione. Questo può essere il caso in cui alcune funzionalità devono essere mantenute per addestrare il nostro modello. Ad esempio, una caratteristica debole può essere ancora utile come leva per un'azienda. Potrebbero voler vedere come cambiano le previsioni del modello quando cambia il valore della caratteristica debole anche se non contribuisce fortemente alle prestazioni. Il codice di questo post è disponibile nella Sezione Progetti Conclusioni Prevenire l'overfitting dei modelli è importante per i team di data science che utilizzano modelli complessi come le reti neurali. L'overfitting può avere un impatto significativo sui ricavi di un'azienda se non preso in considerazione. I modelli con molti parametri, come le reti neurali, sono particolarmente inclini all'overfitting e possono dare ai ricercatori un falso senso di buone prestazioni del modello. In genere, i modelli overfit mostrano prestazioni elevate quando vengono testati sui dati attuali e possono funzionare molto male una volta che il modello viene presentato con nuovi dati. Ad esempio, in caso di abbandono, un modello di overfit può essere in grado di prevedere con elevata precisione se un cliente non effettuerà un acquisto ripetuto. Quando vengono presentati nuovi dati sui clienti, tuttavia, il modello di overfit avrà prestazioni scadenti e non sarà più in grado di prevedere l'abbandono dei clienti. Questa imprecisione può far sì che le aziende sprechino una notevole quantità di denaro e risorse mirando ai clienti sbagliati con annunci e promozioni, ignorando i clienti che potrebbero effettivamente abbandonare. Per questo motivo, avere una buona conoscenza di come utilizzare la regressione lazo e ridge per prevenire l'overfitting di modelli complessi è un'abilità importante per ogni data scientist.

  • L'intelligenza artificiale prende decisioni che non comprendiamo. Questo é un problema.

    Gli algoritmi di apprendimento automatico , la tecnologia che alimenta l'intelligenza artificiale, sono avanzati rapidamente negli ultimi decenni. Oggi, gli algoritmi di deep learning alimentano il software di riconoscimento facciale e consentono a chiunque di creare foto e video deepfake realistici in pochi minuti. Gli algoritmi di intelligenza artificiale sono sempre più utilizzati anche da aziende e istituzioni, dalla creazione di assistenti vocali intelligenti alla generazione di traduzioni linguistiche automatiche. Ma insieme alla crescente adozione dell'IA c'è il problema che i modelli di intelligenza artificiale non sono ben compresi: la maggior parte delle volte, le persone non sanno perché i modelli di intelligenza artificiale prendono determinate determinazioni. E non è solo la persona media per strada a non capire, anche i ricercatori e i programmatori che li creano non capiscono davvero perché i modelli che hanno costruito prendono le decisioni che prendono. "Se non riesci a descrivere adeguatamente cosa sta facendo il tuo algoritmo, è problematico", ha affermato Bryan Routledge, professore associato di finanza presso la Carnegie Mellon University. Non essere ben compreso dal proprio creatore è uno strano fenomeno dell'intelligenza artificiale, ma è anche la ragione del suo potere e del suo successo: utilizzando i metodi dell'intelligenza artificiale, le persone possono creare qualcosa che è autodidatta e in grado di eseguire determinati calcoli oltre le capacità delle persone. "Se non riesci a descrivere adeguatamente cosa sta facendo il tuo algoritmo, è problematico." Questo fenomeno ha creato un divario crescente tra ciò che siamo in grado di fare con le tecniche di intelligenza artificiale e la nostra capacità come esseri umani di comprendere la tecnologia che utilizziamo, ed è parte del motivo per cui alcuni hanno chiesto un "diritto alla spiegazione" quando si tratta di l'uso dell'IA. Routledge e il coautore Tae Wan Kim hanno recentemente pubblicato un'analisi sul diritto alla spiegazione, concludendo che il pubblico ha il diritto etico di sapere come prendono le decisioni i modelli di intelligenza artificiale delle aziende. Hanno ragionato sul fatto che i consumatori dovrebbero essere in grado di chiedere spiegazioni per specifiche decisioni di intelligenza artificiale che sembrano distorte e anche di apprendere come tali modelli prendono decisioni in modo che possano fare scelte informate su quali aziende affidare la propria attività. Routledge ha affermato che i modelli di intelligenza artificiale dovrebbero essere mantenuti a uno standard simile a quello della medicina, un altro campo complesso che prende decisioni importanti sulle persone, ma le cui decisioni sono supportate da spiegazioni. "Essere in grado di spiegare le cose in modo che i pazienti siano informati fa parte di ciò che significa essere un medico", ha detto. “La medicina si occupa di questo da molto tempo, quindi è abbastanza naturale. Quando c'è un nuovo trattamento, parte di ciò a cui pensano è: 'Come lo comunicheremo correttamente ai pazienti in modo che possano essere informati quando scelgono sì o no?'” Le spiegazioni sono importanti quando gli umani non possono verificare il lavoro dell'IA Non tutti i casi d'uso dell'IA hanno ugualmente bisogno di spiegazioni, ha affermato Rayid Ghani, professore di machine learning alla Carnegie Mellon University. Ad esempio, di solito è facile dire se un programma di riconoscimento delle immagini ha etichettato in modo errato le cose, come se un'immagine etichettata come "cane" raffigurasse effettivamente un gatto. E alcuni casi d'uso non sono abbastanza consequenziali da richiedere spiegazioni. "Se stai mostrando a qualcuno un annuncio, non mi interessa davvero se hai una grande spiegazione o no", ha detto. "Il costo per me di vedere un annuncio buono o cattivo, c'è pochissima differenza - non mi interessa, non voglio vedere alcun annuncio." Ghani ha affermato che la tecnologia AI viene utilizzata per svolgere due categorie di compiti: o compiti che gli umani sono bravi a fare ma fanno lentamente, o compiti che gli umani non sono in grado di svolgere. Ad esempio, gli esseri umani sono bravi a riconoscere ed etichettare le immagini. Anche i modelli di intelligenza artificiale possono essere addestrati a farlo, non necessariamente meglio degli umani, ma molto, molto più velocemente. D'altra parte, i modelli di intelligenza artificiale possono essere utilizzati anche per aiutare a fare previsioni, qualcosa che le persone non fanno bene. "Chi sarà coinvolto in una sparatoria, o chi non si diplomerà al liceo in tempo, o chi sarà disoccupato a lungo termine - gli umani non sono molto bravi a questo problema", ha detto Ghani. Capire come i modelli di intelligenza artificiale prendono le loro decisioni è particolarmente importante per quei tipi di casi d'uso predittivi perché gli esseri umani non sono in grado di verificare se il modello funziona correttamente. A differenza della categorizzazione delle immagini, in cui gli umani possono semplicemente guardare le immagini per verificare se sono state etichettate correttamente, l'IA predittiva fornisce risultati che gli umani non possono verificare da soli. "In un certo senso ti aiuta a capire come separare le previsioni corrette dalle previsioni errate". “Quindi, quando una spiegazione arriva dal sistema, non sappiamo davvero se sia corretta o meno perché non abbiamo quella comprensione. Se lo facessimo, non avremmo bisogno di un computer per aiutarci a risolvere quel problema", ha detto Ghani. "Perché non stiamo cercando di essere efficienti, stiamo cercando di essere migliori degli umani". Ghani ha accolto con favore l'idea di un diritto alla spiegazione, anticipando molti benefici una volta che sarà possibile spiegare le decisioni prese dai modelli di intelligenza artificiale. Le spiegazioni potrebbero aiutare le persone a capire come modificare il proprio comportamento per ottenere risultati migliori e rilevare se i modelli trarranno conclusioni basate su ragionamenti errati. Ghani ha fornito l'esempio di un ipotetico modello di intelligenza artificiale medica che prevede i risultati dei pazienti. Se le spiegazioni del modello rivelassero che un fattore significativo alla base del suo processo decisionale fosse basato sul giorno della settimana in cui i pazienti vengono ricoverati, le persone saprebbero di essere sospettose dell'accuratezza del modello - o l'ospedale saprebbe di indagare su questo modello inaccettabile in prognosi del paziente. "In un certo senso ti aiuta a capire come separare le previsioni corrette dalle previsioni errate", ha detto Ghani. "Ti aiuta a controllare la sanità mentale." Forse, cosa ancora più importante, le spiegazioni potrebbero essere in grado di soddisfare quella parte di noi che è giustamente sospettosa quando viene chiesto di fidarsi di cose che non capiamo e di rispondere alle nostre numerose domande: perché il modello di intelligenza artificiale ha fatto quella particolare previsione? Il modello di intelligenza artificiale sta effettivamente rispondendo alla domanda che ci poniamo nel modo che ci aspettiamo? È affidabile? Cosa intendiamo per "spiegazione"? Come siamo arrivati ​​qui, dove anche gli esperti che creano modelli di intelligenza artificiale non capiscono come quei modelli stanno prendendo decisioni? Il modo in cui funziona l'apprendimento automatico è che utilizza molti dati per perfezionare i modelli. Il data scientist prende un algoritmo di intelligenza artificiale, lo punta verso un risultato desiderato e sostanzialmente lascia che l'algoritmo venga eseguito da solo utilizzando alcuni valori casuali iniziali e una montagna di dati di test. Alla fine, l'algoritmo rifinirà il modello in qualcosa che possa ottenere il risultato desiderato. Gli algoritmi di intelligenza artificiale sfruttano le capacità dei computer per eseguire calcoli e calcoli a grande velocità. Ma il risultato di questo tipo di risoluzione dei problemi è che le interazioni nel modello costruito assorbendo così tanti dati sono troppe perché una persona possa avvolgere le proprie menti. Questo è ciò che rende molti modelli di intelligenza artificiale scatole nere, difficili o impossibili da capire. Poiché il modo in cui funzionano i modelli di intelligenza artificiale è così specifico e basato sulla matematica, mentre approfondisci l'argomento dell'IA spiegabile, alla fine ti imbatti nella domanda fondamentale su cosa significhino davvero idee di base come "spiegazione" e "comprensione". “Chi decide se qualcosa è spiegabile? Se ti ho dato una spiegazione, è una buona spiegazione o una cattiva?" Può sembrare uno sciocco dibattito sulla semantica, ma il modo in cui questi concetti sono definiti potrebbe avere un impatto reale sulle decisioni aziendali e normative se si verificasse il diritto alla spiegazione. Questo perché una buona regolamentazione richiede innanzitutto definizioni precise e accurate. "'Spiegabile' e 'preciso' - in un certo senso, entrambi sono concetti ambigui", ha detto Ghani. “Chi decide se qualcosa è spiegabile? Se ti ho dato una spiegazione, è una buona spiegazione o una cattiva? Cosa significa essere buoni? Cosa significa essere cattivi?" C'è un modo per definire la "spiegazione" che è abbastanza semplice, ma non soddisfa la nostra ricerca umana di comprensione: basta seguire i dati mentre fluiscono attraverso le funzioni matematiche del modello, tracciando tutti i percorsi fino a quando non diventano finalmente l'output del modello. Questa definizione è radicata nell'idea che gli algoritmi sono come le macchine: l'unico modo puro per "capirne" uno è seguire il meccanismo della macchina. “Perché” è una domanda umana che non si applica alle macchine. Non chiederesti mai a un'auto "perché" - la vera domanda è "come". La stessa logica dovrebbe essere applicata agli algoritmi, sostiene Zachary Lipton, che gestisce l' Approximately Correct Machine Intelligence Lab presso la Carnegie Mellon University. "Una domanda che potresti fare è: 'Mi spieghi come i modelli sono arrivati ​​alla risposta?'", ha detto Lipton. "E la risposta è: non esiste una risposta specifica oltre ai pesi del modello". Tuttavia, ciò potrebbe fornire una certa comprensione per modelli molto semplici. Ma i modelli di intelligenza artificiale creati da algoritmi come il deep learning possono facilmente acquisire dati con migliaia di attributi. È possibile tracciare gli input attraverso quei modelli, ma non fornirebbe una comprensione approfondita di come il modello arriva alle sue conclusioni, principalmente a causa dei limiti umani. "Una rete neurale profonda che è stata addestrata sulle immagini prende ogni singolo input possibile in uno spazio di 400.000 dimensioni", ha detto Lipton. "La mappatura completa non è qualcosa che puoi metterti in testa." Chi è il pubblico che riceve una spiegazione può anche influenzare il modo in cui dovrebbero essere definite le spiegazioni perché le persone hanno diversi livelli di comprensione quando si tratta di concetti di intelligenza artificiale. Spiegare un modello a un ricercatore di intelligenza artificiale può essere molto diverso dallo spiegarlo a un laico, un decisore politico o un uomo d'affari. “Una rete neurale profonda che è stata addestrata sulle immagini prende ogni singolo input possibile in uno spazio di 400.000 dimensioni. La mappatura completa non è qualcosa che puoi metterti in testa". Quando si approfondisce, è difficile definire esattamente cosa significhi rendere l'intelligenza artificiale spiegabile. Le persone sono abituate a ricevere spiegazioni da altre persone, ad esempio quando qualcuno fornisce il ragionamento alla base di una decisione presa o di un'azione intrapresa. Ma come facciamo a sapere che le ragioni che danno sono un resoconto accurato delle loro vere motivazioni? Come sappiamo che la loro è una spiegazione completa? Quando le persone intraprendono azioni e prendono decisioni, non attingono solo dalla pura logica, ma anche dall'esperienza personale, dalla conoscenza, dalle emozioni e dalle loro personalità. La maggior parte delle volte, la spiegazione di qualcuno è probabilmente più un'approssimazione, lo strato più alto di un miscuglio di fattori subconsci. Forse non conoscono nemmeno la vera motivazione dietro il loro comportamento. Anche i modelli di intelligenza artificiale costruiti utilizzando algoritmi di apprendimento profondo e grandi quantità di dati assumono una forma ristretta di questa complessità, principalmente in termini di esperienza e conoscenza. Quindi quale livello di spiegazione vogliamo? Forse quello che le persone vogliono è che il modo in cui i modelli di intelligenza artificiale prendono effettivamente le decisioni sia approssimato e semplificato abbastanza da poter avvolgere le nostre menti intorno all'intero processo tutto in una volta. Ma è possibile averlo e chiamarlo ancora una spiegazione? La (discutibile) promessa di un'IA spiegabile Esiste già un campo di studio noto come AI spiegabile . I suoi ricercatori utilizzano tecniche matematiche per esaminare i modelli nei modelli di intelligenza artificiale e trarre conclusioni su come tali modelli raggiungono le loro decisioni. Molte tecniche di intelligenza artificiale spiegabili sono tecniche "generali", pensate per essere applicabili per spiegare qualsiasi tipo di modello di apprendimento automatico. Ma Lipton ritiene che l'attuale campo dell'IA spiegabile sia disseminato di false promesse. Ha affermato che i vantaggi dell'applicazione di tecniche di intelligenza artificiale spiegabili a qualsiasi tipo di modello di intelligenza artificiale, il che rende queste tecniche avvincenti, le rendono anche incapaci di spiegare qualcosa di significativo. Alcune tecniche di intelligenza artificiale spiegabili per etichettare le immagini, ad esempio, oscurano le sezioni di un'immagine alla volta. Quindi eseguono le immagini modificate attraverso il modello AI originale per vedere quali differenze ha il nuovo output dall'originale. Ma Lipton ha ipotizzato che oscurare parti delle immagini potrebbe renderle così diverse dalle immagini naturali da influenzare i risultati dei modelli oltre ciò che i ricercatori potrebbero aspettarsi. Sebbene i metodi di intelligenza artificiale spiegabili utilizzino la matematica per ottenere i loro risultati, ha affermato, non è stato ancora dimostrato che tali tecniche matematiche offrano approfondimenti sui modelli di intelligenza artificiale. "Molti di questi metodi forniscono qualcosa che in realtà non ti dice nulla." "Se ci sono due equazioni in quella che chiami una spiegazione, e la stai presentando a qualcuno che è matematicamente analfabeta, non hanno la capacità di guardarla e chiamarla stronzata", ha detto Lipton. "Molti di questi metodi forniscono qualcosa che in realtà non ti dice nulla." Ha affermato che i ricercatori di intelligenza artificiale possono cambiare drasticamente le conclusioni spiegabili sull'intelligenza artificiale apportando piccole modifiche ai modelli di intelligenza artificiale mantenendo gli stessi risultati del modello. "Chiaramente, non era una spiegazione in primo luogo, se sei in grado di indurre qualsiasi spiegazione tu voglia senza cambiare ciò che stai effettivamente facendo", ha detto. L'ambiguità del termine “spiegazione” fa parte di ciò che riguarda Lipton. Poiché la definizione di spiegazione per i modelli di intelligenza artificiale è così vagamente definita, le persone possono arrivare ad accettare "spiegazioni" matematiche che confondono e abbagliano, ma in realtà non forniscono risposte reali. "Un'enorme frazione del campo è invasa proprio da questo genere di cose", ha detto Lipton. "Fondamentalmente ciò che le persone fanno è proporre un algoritmo ed è solo una sorta di trucco." Può anche essere difficile capire le spiegazioni offerte. Se una spiegazione di un classificatore di immagini evidenzia semplicemente le aree su un'immagine , è davvero una spiegazione? Che cosa sta realmente dicendo su come il modello prende le decisioni? "Il problema è che vengono ingannati da un'industria a domicilio che pensa che in qualche modo si possano prendere modelli di apprendimento automatico predittivi, in qualche modo agitare una bacchetta magica su di essi, generare alcune immagini e chiamarla una spiegazione". È persino possibile entrare in uno scenario in cui è necessario un altro algoritmo per interpretare la spiegazione, ha detto Ghani. "È una specie di cosa strana in cui ora devi costruire un altro sistema, in cima al sistema di spiegazione, per spiegare in qualche modo l'esplicatore", ha detto. Sebbene Lipton sia contrario ai metodi utilizzati dall'attuale campo dell'IA spiegabile, è solidale con l'obiettivo principale del diritto alla spiegazione di essere in grado di capire cosa stanno facendo i modelli di intelligenza artificiale. "Le persone pensano che certe decisioni dovrebbero essere guidate da un ragionamento sano e dovresti essere in grado di fornire spiegazioni quando prendi determinate categorie di decisioni - e quelle persone hanno assolutamente ragione", ha detto Lipton. "Il problema è che vengono ingannati da un'industria a domicilio che pensa che in qualche modo si possano prendere modelli di apprendimento automatico predittivi, in qualche modo agitare una bacchetta magica su di essi, generare alcune immagini e chiamarla una spiegazione". Si preoccupa che le persone che accettano qualsiasi cosa come una "spiegazione" consentano invece usi non etici dell'IA. "Lo scenario peggiore è che la comunità accademica sia complice nel dare alle persone l'impressione che in realtà ora abbiano un sigillo di approvazione accademico", ha detto Lipton. Fai invece domande specifiche Invece di cercare di spiegare un intero modello di intelligenza artificiale tutto in una volta, potrebbe essere più efficace analizzare i modelli utilizzando strumenti specifici per le domande che vuoi porre e per il modello di intelligenza artificiale. Questo perché gli algoritmi e i modelli di intelligenza artificiale variano ampiamente. Ad esempio, non c'è solo un modo per fare deep learning: in realtà è un'intera categoria di metodi e ogni caso d'uso di un metodo può essere molto diverso a seconda dei dati di formazione e di ciò per cui i ricercatori stanno ottimizzando. "Non è che scarichi [un] deep learning [modello] e fai clic su un pulsante ed eseguilo", ha detto Ghani. “Quando crei questi tipi di sistemi, ne costruisci centinaia di versioni. ... Quindi definisci una metrica delle prestazioni che ti interessa e scegli quella che sta andando bene su quella metrica delle prestazioni. " I modelli di apprendimento automatico producono risultati sotto forma di probabilità piuttosto che risposte chiare e affermative. Un programma di riconoscimento delle immagini prevede che un'immagine ha il 40% di probabilità di essere un gatto e un'altra ha l'89% di probabilità, invece di dire che questa non è un gatto e questa lo è. Sta agli scienziati dei dati determinare quale dovrebbe essere il limite per l'etichettatura. "Dobbiamo essere molto cauti nella progettazione di sistemi focalizzati su un caso d'uso specifico e su un utente specifico nella progettazione di una spiegazione". Se è più importante che il modello non manchi alcuna immagine con gatti, anche se alcune immagini non di gatti vengono scambiate per gatti, la soglia di etichettatura per i gatti dovrebbe essere impostata su una percentuale bassa. D'altra parte, se è costoso rivedere le etichette delle immagini, il produttore potrebbe voler impostare una soglia elevata. Ognuna di queste variazioni corrisponde a un diverso modello di intelligenza artificiale. "Nel mondo dell'IA spiegabile, stiamo cercando di costruire questo sistema di intelligenza artificiale spiegabile monolitico e generico che dovrebbe fare tutto per ogni tipo di problema, per ogni tipo di modello, per ogni tipo di utente - e penso che sia semplicemente sbagliato", ha detto Ghani. "Dobbiamo essere molto deliberati nella progettazione di sistemi incentrati su un caso d'uso specifico e su un utente specifico nella progettazione di una spiegazione, quindi convalidare sperimentalmente se tale spiegazione aiuta quell'utente a raggiungere l'obiettivo del sistema". Esistono già alcuni metodi statistici efficaci nel rispondere a domande molto specifiche, come i test di ablazione e i controfattuali, ha affermato Lipton. Se una banca utilizzasse modelli di intelligenza artificiale per determinare se approvare i mutui per i clienti e rifiutasse qualcuno, i controfattuale potrebbero dare alle persone un feedback concreto su cosa possono migliorare per cambiare il risultato la prossima volta. “Se hanno detto: 'Hai quattro linee di credito e un pagamento in ritardo nell'ultimo anno. Ma se avessi avuto sei linee di credito e nessun pagamento in ritardo per almeno 18 mesi, allora saresti stato approvato'”, ha detto Lipton. "Quindi questo offre un certo grado di trasparenza e fornisce a qualcuno qualcosa di attuabile". Sono necessarie ulteriori indagini L'unica cosa certa della spiegabilità nell'IA è che c'è ancora molto spazio per le indagini. La mia prima introduzione alla spiegazione dell'intelligenza artificiale è stata parlare con un professore dell'uso dell'intelligenza artificiale nel settore assicurativo . Ha avvertito che l'intelligenza artificiale renderebbe le compagnie assicurative difficili da controllare perché le questioni di parzialità non possono essere valutate se le stesse compagnie assicurative non sanno nemmeno come vengono prese le decisioni assicurative. Curiosamente, sia Lipton che Ghani hanno respinto l'idea di utilizzare le spiegazioni nell'intelligenza artificiale per aiutare a determinare i pregiudizi nei modelli di intelligenza artificiale. Hanno sostenuto che i due concetti non sono correlati perché spiegare perché un modello di intelligenza artificiale ha prodotto un determinato output non fornisce alcuna informazione sul fatto che il modello generale sia distorto. Questo è in parte il motivo per cui alcuni che si oppongono al diritto alla spiegazione sostengono che monitorare i risultati dei modelli di intelligenza artificiale nel tempo alla ricerca di indizi di distorsione e aggiustamenti quando necessario, è meglio che richiedere spiegazioni dai modelli di intelligenza artificiale. Routledge, coautore dell'analisi del diritto alla spiegazione, ha affermato che il monitoraggio dei risultati del modello di intelligenza artificiale per la distorsione nel tempo è una buona pratica, ma non un sostituto. "Se hai chiesto un prestito e ti è stato negato, mentre qualcuno che ti assomiglia ha ottenuto un prestito e chiedi perché è così, e la risposta dell'azienda è: 'Non preoccuparti, aggiustiamo le cose mentre andiamo avanti' - non è molto soddisfacente”, ha detto. "Non sembra che sarebbe una spiegazione adeguata." Ci sono molte persone che si oppongono a spiegare i modelli di intelligenza artificiale. Un argomento comune è che limita il potenziale dell'IA legandolo a vincoli umani non necessari. Un altro è che un diritto alla spiegazione sarebbe impossibile da far rispettare, soprattutto considerando quanto sia impreciso il concetto umano di "comprensione". "Quando in realtà hai preoccupazioni reali sulla discriminazione ... forse ciò che dovrebbe effettivamente accadere è che le persone dovrebbero togliere del tutto la tecnologia dal tavolo." Lo stesso Lipton preferisce vietare l'uso dell'intelligenza artificiale in alcuni casi invece di utilizzare tecniche inaffidabili per spiegare i modelli di intelligenza artificiale e passare il tempo a discutere la definizione di "spiegare". "Quando si hanno reali preoccupazioni sulla discriminazione... forse quello che dovrebbe succedere è che le persone dovrebbero togliere del tutto la tecnologia dal tavolo", ha detto Lipton. "Ad esempio, 'Lo screening algoritmico del curriculum non è una tecnologia matura o appropriata e non dovrebbe essere applicato.'" La fattibilità di stabilire un diritto alla spiegazione dipende in gran parte dalla possibilità o meno di sviluppare tecniche in grado di spiegare i modelli di intelligenza artificiale, ma non ci sono stati studi abbastanza rigorosi in questo campo per capire se è così. Ghani ha affermato che attualmente un grosso ostacolo per il settore è l'utilizzo di scenari più realistici nella ricerca, il che è importante perché i modelli di intelligenza artificiale sono costruiti per svolgere compiti specifici. “Una delle cose su cui stiamo lavorando è costruire queste collaborazioni con organizzazioni – che si tratti di governi, organizzazioni non profit o aziende – dove le cose possono essere ancorate a problemi reali, utilizzando dati reali, testati su utenti reali, in modo che tu possa vedere cosa funziona davvero o no", ha detto. Ci sono alcune ragioni per un cauto ottimismo. Quando le persone parlano di modelli di intelligenza artificiale a scatola nera, come quelli costruiti da algoritmi di apprendimento profondo, sembra esserci un'implicazione che più potente e di successo è l'algoritmo, più è una scatola nera. Ma non è necessariamente così. "Si usa spesso il concetto che c'è questo compromesso, ma in realtà non sappiamo se c'è un compromesso - non è un concetto universale che deve essere vero", ha detto Ghani. "Penso che le persone lo dicano molto, ma penso che le persone non lo dicano sulla base di prove empiriche". Forse i ricercatori possono trovare modi per utilizzare le tecniche esistenti per spiegare i modelli di intelligenza artificiale, o forse possono essere sviluppate nuove tecniche di intelligenza artificiale che danno priorità alla spiegabilità. Routledge, per esempio, era fiducioso. "Immagino che tutto quello che sto dicendo sia che non è facile, ma non sembra impossibile", ha detto.

  • Algoritmi di clustering che i data scientist devono conoscere

    Che cosa è un algoritmo di clustering ? Il clustering è una tecnica di Machine Learning che coinvolgeil raggruppamento di punti dati. Dato un insieme di punti dati, possiamo utilizzare un algoritmo di clustering per classificare ciascun punto dati in un gruppo specifico. In teoria, i punti dati che si trovano nello stesso gruppo dovrebbero avere proprietà e/o caratteristiche simili, mentre i punti dati in gruppi diversi dovrebbero avere proprietà e/o caratteristiche molto diverse. Il clustering è un metodo di apprendimento non supervisionato ed è una tecnica comune per l'analisi statistica dei dati utilizzata in molti campi. Nella Scienza dei dati, possiamo utilizzare l'analisi di clustering per acquisire alcune preziose informazioni da nostri dati da vedere ciò che raggruppa i punti di dati in autunno, quando si applica un algoritmo di clustering. Oggi esamineremo 5 popolari algoritmi di clustering che i data scientist devono conoscere e i loro pro e contro! 1° Algoritmo di Clustering : K-Means K-Means è probabilmente l'algoritmo di clustering più noto. Viene insegnato in molte lezioni introduttive di data science e machine learning. È facile da capire e implementare nel codice! Dai un'occhiata al grafico qui sotto per un'illustrazione. Come funziona l'algoritmo K-Means Per iniziare, selezioniamo prima un numero di classi/gruppi da utilizzare e inizializziamo in modo casuale i rispettivi punti centrali. Per capire il numero di classi da utilizzare, è bene dare una rapida occhiata ai dati e cercare di identificare eventuali raggruppamenti distinti. I punti centrali sono vettori della stessa lunghezza di ciascun vettore di punti dati e sono le "X" nel grafico sopra. Ciascun punto dati viene classificato calcolando la distanza tra quel punto e il centro di ciascun gruppo, quindi classificando il punto come appartenente al gruppo il cui centro è più vicino ad esso. Sulla base di questi punti classificati, ricalcoliamo il centro del gruppo prendendo la media di tutti i vettori del gruppo. Ripeti questi passaggi per un determinato numero di iterazioni o fino a quando i centri di gruppo non cambiano molto tra le iterazioni. Puoi anche scegliere di inizializzare casualmente i centri di gruppo alcune volte, quindi selezionare la corsa che sembra aver fornito i migliori risultati. K-Means ha il vantaggio di essere abbastanza veloce, poiché tutto ciò che stiamo facendo è calcolare le distanze tra i punti e i centri del gruppo; pochissimi calcoli! Ha quindi una complessità lineare O ( n ). D'altra parte, K-Means ha un paio di svantaggi. Innanzitutto, devi selezionare quanti gruppi/classi ci sono. Questo non è sempre banale e idealmente con un algoritmo di clustering vorremmo che li capisse per noi perché il punto è ottenere alcune informazioni dai dati. K-means inizia anche con una scelta casuale di centri di cluster e quindi può produrre risultati di clustering diversi su diverse esecuzioni dell'algoritmo. Pertanto, i risultati potrebbero non essere ripetibili e mancare di coerenza. Altri metodi cluster sono più coerenti. K-Medians è un altro algoritmo di clustering correlato a K-Means, tranne per il fatto che invece di ricalcolare i punti centrali del gruppo usando la media usiamo il vettore mediano del gruppo. Questo metodo è meno sensibile ai valori anomali (a causa dell'utilizzo della mediana) ma è molto più lento per i set di dati più grandi poiché l'ordinamento è richiesto su ogni iterazione durante il calcolo del vettore mediano. 2° Algoritmo di Clustering : Mean-Shift Il clustering dello spostamento medio è un algoritmo basato su finestre scorrevoli che tenta di trovare aree dense di punti dati. È un algoritmo basato sul centroide, il che significa che l'obiettivo è individuare i punti centrali di ciascun gruppo/classe, che funziona aggiornando i candidati per i punti centrali come media dei punti all'interno della finestra scorrevole. Queste finestre candidate vengono quindi filtrate in una fase di post-elaborazione per eliminare i quasi duplicati, formando l'insieme finale di punti centrali e i loro gruppi corrispondenti. Dai un'occhiata al grafico qui sotto per un'illustrazione. Come funziona l'algoritmo di Clustering Mean-Shift Per spiegare lo spostamento medio considereremo un insieme di punti nello spazio bidimensionale come nell'illustrazione sopra. Iniziamo con una finestra scorrevole circolare centrata in un punto C (selezionato casualmente) e avente raggio r come nucleo. Lo spostamento medio è un algoritmo in salita che comporta lo spostamento iterativo di questo kernel in una regione di densità più elevata ad ogni passo fino alla convergenza. Ad ogni iterazione, la finestra scorrevole viene spostata verso regioni di maggiore densità spostando il punto centrale sulla media dei punti all'interno della finestra (da cui il nome). La densità all'interno della finestra scorrevole è proporzionale al numero di punti al suo interno. Naturalmente spostandosi sulla media dei punti nella finestra si sposterà gradualmente verso aree di maggiore densità di punti. Continuiamo a spostare la finestra scorrevole secondo la media finché non c'è una direzione in cui uno spostamento può ospitare più punti all'interno del kernel. Guarda il grafico sopra; continuiamo a muovere il cerchio finché non aumentiamo più la densità (cioè il numero di punti nella finestra). Questo processo dei passaggi da 1 a 3 viene eseguito con molte finestre scorrevoli finché tutti i punti non si trovano all'interno di una finestra. Quando più finestre scorrevoli si sovrappongono, viene conservata la finestra contenente il maggior numero di punti. I punti dati vengono quindi raggruppati in base alla finestra scorrevole in cui risiedono. Di seguito è mostrata un'illustrazione dell'intero processo dall'inizio alla fine con tutte le finestre scorrevoli. Ogni punto nero rappresenta il baricentro di una finestra scorrevole e ogni punto grigio è un punto dati. A differenza del clustering K-means, non è necessario selezionare il numero di cluster poiché lo spostamento medio lo scopre automaticamente. Questo è un enorme vantaggio. Anche il fatto che i centri del cluster convergano verso i punti di massima densità è abbastanza desiderabile in quanto è abbastanza intuitivo da comprendere e si adatta bene in un senso naturalmente guidato dai dati. Lo svantaggio è che la selezione della dimensione/raggio della finestra “r” può essere non banale. 3° Algoritmo di Clustering : Clustering spaziale basato sulla densità di applicazioni con rumore (DBSCAN) Come fuziona l'algoritmo di Clustering DBSCAN DBSCAN inizia con un punto dati di partenza arbitrario che non è stato visitato. L'intorno di questo punto viene estratto utilizzando una distanza epsilon ε (Tutti i punti che si trovano all'interno della distanza ε sono punti dell'intorno). Se c'è un numero sufficiente di punti (secondo minPoints) all'interno di questo intorno, il processo di clustering inizia e il punto dati corrente diventa il primo punto nel nuovo cluster. In caso contrario, il punto verrà etichettato come rumore (in seguito questo punto rumoroso potrebbe diventare parte del cluster). In entrambi i casi quel punto è contrassegnato come “visitato”. Per questo primo punto nel nuovo ammasso, anche i punti all'interno del suo intorno a distanza diventano parte dello stesso ammasso. Questa procedura per far appartenere tutti i punti nell'intorno allo stesso cluster viene quindi ripetuta per tutti i nuovi punti che sono stati appena aggiunti al gruppo cluster. Questo processo dei passaggi 2 e 3 viene ripetuto fino a quando tutti i punti del cluster sono stati determinati, ovvero tutti i punti all'interno dell'intorno ε del cluster sono stati visitati ed etichettati. Una volta terminato il cluster corrente, viene recuperato ed elaborato un nuovo punto non visitato, che porta alla scoperta di un ulteriore cluster o rumore. Questo processo si ripete finché tutti i punti non vengono contrassegnati come visitati. Poiché alla fine di questo sono stati visitati tutti i punti, ogni punto sarà stato contrassegnato come appartenente a un cluster o come rumore. DBSCAN presenta alcuni grandi vantaggi rispetto ad altri algoritmi di clustering. In primo luogo, non richiede affatto un numero fisso di cluster. Identifica anche i valori anomali come rumori, a differenza dello spostamento medio che li getta semplicemente in un cluster anche se il punto dati è molto diverso. Inoltre, può trovare abbastanza bene cluster di dimensioni e forma arbitraria. Lo svantaggio principale di DBSCAN è che non funziona come gli altri quando i cluster sono di densità variabile. Questo perché l'impostazione della soglia di distanza e dei minPoints per identificare i punti di vicinato varierà da cluster a cluster al variare della densità. Questo inconveniente si verifica anche con dati di dimensioni molto elevate poiché anche in questo caso la soglia di distanza diventa difficile da stimare. 4° Algoritmo di Clustering : Clustering di aspettativa-massimizzazione (EM) utilizzando i modelli di miscela gaussiana (GMM) Uno dei principali svantaggi di K-Means è il suo uso ingenuo del valore medio per il centro del cluster. Possiamo capire perché questo non è il modo migliore di fare le cose guardando l'immagine qui sotto. Sul lato sinistro, sembra abbastanza ovvio all'occhio umano che ci siano due ammassi circolari con raggio diverso' centrati alla stessa media. K-Means non può gestirlo perché i valori medi dei cluster sono molto vicini tra loro. K-Means fallisce anche nei casi in cui i cluster non sono circolari, sempre a causa dell'utilizzo della media come centro del cluster. Come funziona l'algoritmo Clustering EM utilizzando GMM Iniziamo selezionando il numero di cluster (come fa K-Means) e inizializzando casualmente i parametri della distribuzione gaussiana per ciascun cluster. Si può provare a fornire una buona stima dei parametri iniziali dando anche una rapida occhiata ai dati. Anche se nota, come si può vedere nel grafico sopra, questo non è necessario al 100% poiché le gaussiane iniziano come molto scarse ma vengono rapidamente ottimizzate. Date queste distribuzioni gaussiane per ogni cluster, calcola la probabilità che ogni punto dati appartenga a un particolare cluster. Più un punto è vicino al centro della gaussiana, più è probabile che appartenga a quell'ammasso. Questo dovrebbe avere un senso intuitivo poiché con una distribuzione gaussiana stiamo assumendo che la maggior parte dei dati si trovi più vicino al centro del cluster. Sulla base di queste probabilità, calcoliamo un nuovo set di parametri per le distribuzioni gaussiane in modo da massimizzare le probabilità dei punti dati all'interno dei cluster. Calcoliamo questi nuovi parametri utilizzando una somma ponderata delle posizioni dei punti dati, dove i pesi sono le probabilità del punto dati appartenente a quel particolare cluster. Per spiegarlo visivamente possiamo dare un'occhiata al grafico sopra, in particolare il cluster giallo come esempio. La distribuzione inizia casualmente alla prima iterazione, ma possiamo vedere che la maggior parte dei punti gialli si trova a destra di quella distribuzione. Quando calcoliamo una somma ponderata per le probabilità, anche se ci sono alcuni punti vicino al centro, la maggior parte di essi si trova a destra. Quindi, naturalmente, la media della distribuzione viene spostata più vicino a quell'insieme di punti. Possiamo anche vedere che la maggior parte dei punti sono "in alto a destra in basso a sinistra". Pertanto la deviazione standard cambia per creare un'ellisse più adatta a questi punti, per massimizzare la somma ponderata dalle probabilità. I passaggi 2 e 3 vengono ripetuti iterativamente fino alla convergenza, dove le distribuzioni non cambiano molto da un'iterazione all'altra. Ci sono 2 vantaggi chiave nell'utilizzo dei GMM. In primo luogo i GMM sono molto più flessibili in termini di covarianza dei cluster rispetto alle K-Means; a causa del parametro di deviazione standard, i cluster possono assumere qualsiasi forma di ellisse, piuttosto che essere ristretti a cerchi. K-Means è in realtà un caso speciale di GMM in cui la covarianza di ciascun cluster lungo tutte le dimensioni si avvicina a 0. In secondo luogo, poiché i GMM utilizzano le probabilità, possono avere più cluster per punto dati. Quindi, se un punto dati si trova nel mezzo di due cluster sovrapposti, possiamo semplicemente definire la sua classe dicendo che appartiene X-percento alla classe 1 e Y-percento alla classe 2. Cioè i GMM supportano l' appartenenza mista . 4° Algoritmo di Clustering : Clustering gerarchico aggregato Gli algoritmi di clustering gerarchico si dividono in 2 categorie: top-down o bottom-up. Gli algoritmi bottom-up trattano ogni punto dati come un singolo cluster all'inizio e quindi successivamente uniscono (o agglomerano ) coppie di cluster fino a quando tutti i cluster sono stati uniti in un singolo cluster che contiene tutti i punti dati. Il clustering gerarchico bottom-up è quindi chiamato clustering gerarchico agglomerativo o HAC . Questa gerarchia di cluster è rappresentata come un albero (o dendrogramma). La radice dell'albero è l'unico grappolo che raccoglie tutti i campioni, le foglie sono i grappoli con un solo campione. Dai un'occhiata al grafico qui sotto per un'illustrazione prima di passare ai passaggi dell'algoritmo Come funziona l'algoritmo di Clustering gerarchico aggregato Iniziamo trattando ogni punto dati come un singolo cluster, ovvero se ci sono X punti dati nel nostro set di dati, allora abbiamo X cluster. Selezioniamo quindi una metrica di distanza che misuri la distanza tra due cluster. Ad esempio, utilizzeremo il collegamento medio che definisce la distanza tra due cluster come la distanza media tra i punti dati nel primo cluster e i punti dati nel secondo cluster. Ad ogni iterazione, combiniamo due cluster in uno. I due cluster da combinare sono selezionati come quelli con il legame medio più piccolo. Cioè, secondo la nostra metrica di distanza selezionata, questi due gruppi hanno la distanza più piccola tra loro e quindi sono i più simili e dovrebbero essere combinati. Il passaggio 2 viene ripetuto finché non raggiungiamo la radice dell'albero, ovvero abbiamo un solo cluster che contiene tutti i punti dati. In questo modo possiamo selezionare quanti cluster vogliamo alla fine, semplicemente scegliendo quando smettere di combinare i cluster cioè quando smettiamo di costruire l'albero! Il clustering gerarchico non richiede di specificare il numero di cluster e possiamo persino selezionare quale numero di cluster sembra migliore poiché stiamo costruendo un albero. Inoltre, l'algoritmo non è sensibile alla scelta della distanza metrica; tutti tendono a funzionare ugualmente bene mentre con altri algoritmi di clustering, la scelta della metrica della distanza è fondamentale. Un caso d'uso particolarmente valido dei metodi di clustering gerarchico è quando i dati sottostanti hanno una struttura gerarchica e si desidera ripristinare la gerarchia; altri algoritmi di clustering non possono farlo. Questi vantaggi del clustering gerarchico vanno a scapito di una minore efficienza, poiché ha una complessità temporale di O(n³) , a differenza della complessità lineare di K-Means e GMM. Conclusione Ci sono i tuoi 5 migliori algoritmi di clustering che uno scienziato dei dati dovrebbe conoscere! Concluderemo con una fantastica visualizzazione delle prestazioni di questi algoritmi e di alcuni altri, per gentile concessione di Scikit Learn! Molto bello vedere come i diversi algoritmi si confrontano e contrastano con dati diversi! Quale Algoritmo di Clustering usare sui miei dati ?

  • 15 Applicazioni di Deep Learning che devi conoscere

    l deep learning è un processo complicato che è abbastanza semplice da spiegare. Un sottoinsieme dell'apprendimento automatico, che è a sua volta un sottoinsieme dell'intelligenza artificiale , il deep learning è un modo per condurre analisi automatizzate dei dati tramite le cosiddette reti neurali artificiali, algoritmi che imitano efficacemente la struttura e la funzione del cervello umano. E mentre rimane un lavoro in corso, c'è un potenziale insondabile. APPLICAZIONI COMUNI DI DEEP LEARNING Intercettazione di una frode Sistemi di gestione delle relazioni con i clienti Visione computerizzata IA vocale Elaborazione del linguaggio naturale Raffinamento dei dati Veicoli autonomi Supercomputer Modellazione degli investimenti E-commerce Intelligenza emotiva Divertimento Pubblicità Produzione Assistenza sanitaria "Potremmo un giorno raggiungere il punto in cui l'intelligenza artificiale e l'apprendimento profondo ci aiuteranno a raggiungere la superintelligenza o addirittura a portare alla singolarità (crescita tecnologica incontrollata)", ha spiegato il capo scienziato di Conversica , il dott. Sid J. Reddy . "Ma la nostra sfida e il nostro dovere, come professionisti dell'intelligenza artificiale oggi, è garantire che le applicazioni di deep learning siano all'altezza della loro fatturazione e offrano vantaggi agli utenti e alla società". 15 Applicazioni quotidiane del Deep Learning Esempio pratico di Deep Learning 1- Intercettazione di una frode La frode è un problema crescente nel mondo digitale. Nel 2020, i consumatori hanno riferito di aver perso più di 3,3 miliardi di dollari in frode alla Federal Trade Commission, quasi il doppio dell'importo perso dai consumatori l'anno precedente, secondo un rapporto della FTC . Identificare i furti e le truffe degli impostori erano le due categorie di frode più comuni. Aziende come Twosense e Signifyd, tuttavia, utilizzano il deep learning per rilevare anomalie nelle transazioni di un utente per aiutare a prevenire le frodi. Queste aziende implementano il deep learning per raccogliere dati da una varietà di fonti, tra cui la posizione del dispositivo, la lunghezza del passo e i modelli di acquisto della carta di credito per creare un profilo utente unico. Un'altra società, Featurespace, collabora con le banche per monitorare i dati dei clienti in tempo reale per individuare attività sospette e avvisare le autorità per ridurre le frodi. Aziende rilevanti: Twosense , Signified e Featurespace Esempio pratico di Deep Learning 2- Gestione delle relazioni con i clienti I sistemi di gestione delle relazioni con i clienti sono spesso indicati come "l'unica fonte di verità" per i team delle entrate. Contengono e-mail, registri delle chiamate telefoniche e note su tutti i clienti attuali ed ex dell'azienda, nonché i suoi potenziali clienti. L'aggregazione di tali informazioni ha aiutato i team delle entrate a fornire una migliore esperienza del cliente, ma l'introduzione del deep learning nei sistemi CRM ha sbloccato un altro livello di informazioni sui clienti. Il deep learning è in grado di setacciare tutti i frammenti di dati che un'azienda raccoglie sui suoi potenziali clienti per rivelare le tendenze sul motivo per cui i clienti acquistano, quando acquistano e cosa li tiene in giro. Ciò include il punteggio predittivo dei lead, che aiuta le aziende a identificare i clienti che hanno le migliori possibilità di chiudere; raschiare i dati dalle note dei clienti per facilitare l'identificazione delle tendenze; e previsioni sulle esigenze di assistenza clienti. Aziende rilevanti: Salesforce , Zoho , Marketo Esempio pratico di Deep Learning 3- Visione computerizzata L'apprendimento profondo mira a imitare il modo in cui la mente umana digerisce le informazioni e rileva i modelli, il che lo rende un modo perfetto per addestrare programmi di intelligenza artificiale basati sulla visione. Utilizzando modelli di deep learning, queste piattaforme sono in grado di acquisire una serie di set fotografici etichettati per imparare a rilevare oggetti come aeroplani, volti e pistole. L'applicazione per il riconoscimento delle immagini è espansiva. Neurala Brain utilizza un algoritmo chiamato Lifelong-DNN per completare le ispezioni sulla qualità della produzione. Altri, come ZeroEyes, utilizzano il deep learning per rilevare le armi da fuoco in luoghi pubblici come scuole e proprietà del governo. Quando viene rilevata una pistola, il sistema è progettato per allertare la polizia nel tentativo di prevenire le sparatorie. E infine, aziende come Tractable si affidano al deep learning per addestrare la propria intelligenza artificiale a prendere immagini da un disastro e stimare il danno finanziario che ne deriva. Aziende importanti: Neurala cervello , ZeroEyes , trattabili Esempio pratico di Deep Learning 4- IA vocale Quando si tratta di ricreare il linguaggio umano o di tradurre la voce in testo, l'apprendimento profondo gioca sempre più un ruolo fondamentale nel processo. I modelli di deep learning consentono a strumenti come Google Voice Search e Siri di acquisire audio, identificare schemi vocali e tradurli in testo. Poi c'è il modello WaveNet di DeepMind , che utilizza reti neurali per prendere testo e identificare modelli di sillabe, punti di flesso e altro ancora. Ciò consente ad aziende come Google di addestrare il proprio assistente virtuale a sembrare più umano. Inoltre, RRNoise Project di Mozilla lo utilizza per identificare il rumore di fondo nei file audio e sopprimerlo, fornendo agli utenti un audio più chiaro. Aziende rilevanti: Mozilla , DeepMind , Apple Esempio pratico di Deep Learning 5- Elaborazione del linguaggio naturale L'introduzione della tecnologia di elaborazione del linguaggio naturale ha reso possibile ai robot di leggere i messaggi e il significato divino da essi. Tuttavia, il processo può essere in qualche modo semplificato eccessivamente, non tenendo conto dei modi in cui le parole si combinano per cambiare il significato o l'intento dietro una frase. Il deep learning consente ai processori del linguaggio naturale di identificare modelli più complicati nelle frasi per fornire un'interpretazione più accurata. Aziende come Gamalon utilizzano il deep learning per alimentare un chatbot in grado di rispondere a un volume maggiore di messaggi e fornire risposte più accurate. Altre aziende come Strong lo applicano nel suo strumento NLP per aiutare gli utenti a tradurre il testo, classificarlo per aiutare a estrarre i dati da una raccolta di messaggi e identificare il sentimento nel testo. Grammarly utilizza anche l'apprendimento profondo in combinazione con regole e schemi grammaticali per aiutare gli utenti a identificare gli errori e il tono dei loro messaggi. Compagnie rilevanti: Gamalon , Strong , Grammarly Esempio pratico di Deep Learning 6- Raffinamento dei dati Quando vengono raccolte grandi quantità di dati grezzi, è difficile per i data scientist identificare modelli, trarre informazioni o fare molto con essi. Ha bisogno di essere elaborato. I modelli di deep learning sono in grado di prendere quei dati grezzi e renderli accessibili. Aziende come Descartes Labs utilizzano un supercomputer basato su cloud per perfezionare i dati. Dare un senso a grandi quantità di dati grezzi può essere utile per il controllo delle malattie, la mitigazione dei disastri, la sicurezza alimentare e le immagini satellitari. Aziende rilevanti: Descartes Labs , IBM Esempio pratico di Deep Learning 7- Veicoli autonomi Guidare significa prendere in considerazione fattori esterni come le auto intorno a te, i segnali stradali e i pedoni e reagire in modo sicuro per andare dal punto A al punto B. Anche se siamo ancora lontani dai veicoli completamente autonomi , il deep learning ha giocato un ruolo cruciale ruolo nell'aiutare la tecnologia a realizzarsi. Consente ai veicoli autonomi di prendere in considerazione dove vuoi andare, prevedere cosa faranno gli ostacoli nel tuo ambiente e creare un percorso sicuro per portarti in quella posizione. Ad esempio, Pony.ai ha utilizzato il deep learning per alimentare il suo modulo di pianificazione e controllo all'interno della sua tecnologia di veicoli autonomi per aiutare le auto a percorrere autostrade a otto corsie, incidenti improvvisi e altro ancora. Altre aziende automobilistiche a guida autonoma che utilizzano il deep learning per alimentare la propria tecnologia includono DeepScale di proprietà di Tesla e Waymo, una consociata di Google. Aziende rilevanti: Pony.ai , Tesla , Waymo Esempio pratico di Deep Learning 8- Supercomputer Sebbene alcuni software utilizzino il deep learning nella sua soluzione, se vuoi creare il tuo modello di deep learning, hai bisogno di un supercomputer . Aziende come Boxx e Nvidia hanno costruito workstation in grado di gestire la potenza di elaborazione necessaria per costruire modelli di deep learning. La DGX Station di NVIDIA afferma di essere "l'equivalente di centinaia di server tradizionali" e consente agli utenti di testare e modificare i propri modelli. APEXX Neutrino W di Boxx funziona con una varietà di framework di deep learning come Tensorflow e PyTorch. La sua missione è accelerare i flussi di lavoro e accelerare i processi decisionali. Aziende rilevanti: Boxx , NVIDIA Esempio pratico di Deep Learning 9- Modellazione degli investimenti La modellazione degli investimenti è un altro settore che ha beneficiato del deep learning. La previsione del mercato richiede il monitoraggio e l'interpretazione di dozzine di punti dati, dalle conversazioni telefoniche agli eventi pubblici fino ai prezzi delle azioni. Aziende come Aiera utilizzano una piattaforma di deep learning adattivo per fornire agli investitori istituzionali analisi in tempo reale su singole azioni, contenuti da chiamate di guadagni ed eventi aziendali pubblici. Aziende interessate: Aiera Esempio pratico di Deep Learning 10- ECommerce Lo shopping online è ora di fatto il modo in cui le persone acquistano beni, ma può ancora essere frustrante scorrere dozzine di pagine per trovare il giusto paio di scarpe che si adatta al tuo stile. Diverse aziende di e-commerce si stanno rivolgendo al deep learning per rendere più facile la caccia. Il sito web di mobili Cora consente agli utenti di caricare una foto del loro mobile preferito e quindi utilizza la magia della visione artificiale per trovare articoli simili. E tra le numerose offerte di deep learning di Clarifai c'è uno strumento che aiuta i marchi con l'etichettatura delle immagini ad aumentare il traffico SEO e a far emergere prodotti alternativi per gli utenti quando un articolo è esaurito. Loop54, un'azienda che aiuta i siti di e-commerce a personalizzare le ricerche sui propri siti Web, utilizza anche il deep learning per identificare i modelli nel comportamento degli utenti per anticipare i loro desideri. Aziende rilevanti: Cora , Clarifai , Loop54 Esempio pratico di Deep Learning 11- Intelligenza emotiva Anche se i computer potrebbero non essere in grado di replicare le emozioni umane, stanno acquisendo una migliore comprensione dei nostri stati d'animo grazie al deep learning. Schemi come un cambiamento di tono, un leggero cipiglio o uno sbuffo sono tutti segnali di dati preziosi che possono aiutare l'IA a rilevare i nostri stati d'animo. Aziende come Affectiva utilizzano il deep learning per tenere traccia di tutte quelle reazioni vocali e facciali per fornire una comprensione sfumata del nostro umore. Altri come Robbie AI setacciano foto e filmati per prevedere le emozioni umane in tempo reale. Applicazioni come questa possono essere utilizzate per aiutare le aziende a collegare i dati sulle emozioni alla pubblicità o persino ad avvisare i medici dello stato emotivo di un paziente. Aziende rilevanti: Affectiva , Robbie AI Esempio pratico di Deep Learning 12- Divertimento Ti sei mai chiesto come le piattaforme di streaming sembrano intuire lo spettacolo perfetto per te da guardare dopo? Bene, devi ringraziare per questo un apprendimento profondo. Le piattaforme di streaming aggregano tonnellate di dati su quali contenuti scegli di consumare e cosa ignori. Prendi Netflix come esempio. La piattaforma di streaming utilizza il deep learning per trovare modelli in ciò che i suoi spettatori guardano in modo da poter creare un'esperienza personalizzata per i suoi utenti. Aziende rilevanti : Netflix Esempio pratico di Deep Learning 13- Pubblicità Le aziende possono raccogliere molte informazioni da come un utente interagisce con il suo marketing. Può segnalare l'intenzione di acquistare, mostrare che il prodotto risuona con loro o che vogliono saperne di più. Molte aziende di tecnologia di marketing utilizzano il deep learning per generare ancora più informazioni sui clienti. Aziende come 6sense e Cognitiv utilizzano il deep learning per addestrare i loro software a comprendere meglio gli acquirenti in base a come interagiscono con un'app o navigano in un sito web. Questo può essere utilizzato per aiutare le aziende a indirizzare in modo più accurato i potenziali acquirenti e creare campagne pubblicitarie su misura. Altre aziende come Dstillery lo usano per capire di più sui consumatori di un cliente per aiutare ogni campagna pubblicitaria a raggiungere il pubblico di destinazione per il prodotto. Aziende rilevanti: 6sense , Cognitiv , Dstillery Esempio pratico di Deep Learning 14- Produzione Il successo di una fabbrica dipende spesso da macchine, esseri umani e robot che lavorano insieme nel modo più efficiente possibile per produrre un prodotto replicabile. Quando una parte della produzione va fuori controllo, può avere un costo devastante per l'azienda. Il deep learning viene utilizzato per rendere quel processo ancora più efficiente ed eliminare quegli errori. Aziende come OneTrack lo utilizzano per scansionare i pavimenti delle fabbriche alla ricerca di anomalie come una scatola in bilico o un carrello elevatore utilizzato in modo improprio e avvisare i lavoratori dei rischi per la sicurezza. L'obiettivo è prevenire errori che possono rallentare la produzione e causare danni. Poi c'è Fanuc, che lo usa per addestrare il suo robot ad adattarsi a una serie di compiti in una fabbrica. Il gigante dell'energia General Electric utilizza anche il deep learning nella sua piattaforma Predix per tracciare e trovare tutti i possibili punti di guasto in una fabbrica. Aziende rilevanti: OneTrack , Fanuc , General Electric Esempio pratico di Deep Learning 15- Assistenza sanitaria I medici non possono stare con i loro pazienti 24 ore su 24, 7 giorni su 7, ma l'unica cosa che quasi sempre portiamo con noi sono i nostri telefoni. E grazie al deep learning, gli strumenti medici sono in grado di estrarre i dati dalle immagini che scattiamo e dai dati sui movimenti per rilevare potenziali problemi di salute. Il software di visione artificiale di Robbie.AI utilizza questi dati, ad esempio, per tracciare i modelli di movimento di un paziente per prevedere le cadute e i cambiamenti nello stato mentale di un utente. È stato anche dimostrato che il deep learning rileva il cancro della pelle attraverso le immagini, secondo un rapporto del National Center for Biotechnology . Aziende rilevanti : Robbie AI Grazie mille per la lettura, segnala nei commenti altri utilizzi quotidiani del deep learning

bottom of page