Risultati Ricerca Intelligenza Artificiale Italia
475 elementi trovati per ""
- I migliori computer a scheda singola per progetti di intelligenza artificiale(IA) e deepLearning(DL)
I computer a scheda singola (SBC) sono molto apprezzati sia dai tinker che dagli hobbisti, offrono molte funzionalità in un fattore di forma molto piccolo. Un SBC ha la CPU, la GPU, la memoria, le porte IO, ecc... su un piccolo circuito stampato e gli utenti possono aggiungere funzionalità aggiungendo nuovi dispositivi alle porte GPIO . Alcuni degli SBC più popolari includono la famiglia di prodotti Raspberry Pi e Arduino . Tuttavia, vi è una crescente domanda di SBC che possono essere utilizzati per applicazioni di elaborazione edge come Intelligenza Artificiale (AI) o Deep Learning (DL) e ce ne sono parecchie. L'elenco seguente è costituito da alcuni dei migliori SBC che sono stati sviluppati per l'edge computing. L'elenco non è in un ordine di classifica particolare. Andiamoli a vedere... Indice Famiglia Nvidia Jetson ROCK Pi N10 BeagleBone AI BeagleV HiKey970 Google Coral Dev Board Google Coral Dev Board Mini Conclusioni 1. Famiglia Nvidia Jetson Nvidia ha una vasta gamma di SBC che si rivolgono sia agli sviluppatori di intelligenza artificiale. La loro linea di " kit per sviluppatori Jetson " sono alcuni degli SBC più potenti e convenienti disponibili sul mercato. Di seguito è riportato un elenco delle loro offerte. Kit per sviluppatori Nvidia Jetson Nano A partire da circa 59€ , il Jetson Nano è l'SBC più economico della lista e offre un buon rapporto prezzo / prestazioni. Può eseguire più reti neurali insieme ad altre applicazioni come il rilevamento di oggetti, la segmentazione, l'elaborazione del testo e la classificazione delle immagini. Il Jetson Nano è rivolto agli appassionati di intelligenza artificiale, hobbisti e sviluppatori che desiderano realizzare progetti implementando l'intelligenza artificiale. La scheda Jetson Nano viene offerta in due varianti: 4 GB e 2 GB. Le principali differenze tra i due sono il prezzo, la capacità della RAM e le porte IO offerte. La variante da 4 GB è stata mostrata nell'immagine sopra. Specifiche chiave • CPU: ARM A57 quad-core a 1,43 GHz • GPU: NVIDIA Maxwell a 128 core • Memoria: 4 GB LPDDR4 a 64 bit a 25,6 GB/s oppure 2 GB LPDDR4 a 64 bit a 25,6 GB/s • Memoria: supporto per scheda microSD • Display: HDMI e Display Port o HDMI Kit per sviluppatori Nvidia Jetson Xavier NX Il Jetson Xavier NX è un passo avanti rispetto al Jetson Nano e si rivolge maggiormente agli OEM, alle start-up e agli sviluppatori di intelligenza artificiale. Jetson Xavier NX è pensato per applicazioni che necessitano di una potenza di elaborazione IA più seria che un'offerta entry level come Jetson Nano semplicemente non può fornire. Il Jetson Xavier NX viene offerto a circa 386€. Specifiche chiave • CPU: NVIDIA Carmel ARM v8.2 a 6 core a 64 bit • GPU: architettura NVIDIA Volta con 384 core NVIDIA CUDA e 48 core Tensor • Acceleratore DL: 2x motori NVDLA • Acceleratore di visione: processore di visione VLIW a 7 vie • Memoria: 8 GB a 128 bit LPDDR4x a 51,2 GB/s • Memoria: supporto microSD • Display: HDMI e Display Port Kit per sviluppatori Nvidia Jetson AGX Xavier Jetson AGX Xavier è il prodotto di punta della famiglia Jetson, è pensato per essere implementato in server e applicazioni di robotica in settori come la produzione, la vendita al dettaglio, l'automobile, l'agricoltura, ecc. Con un prezzo di circa 694€ , Jetson AGX Xavier non è pensato per i principianti, è pensato per gli sviluppatori che desiderano prestazioni di elaborazione edge di alto livello a loro disposizione e per le aziende che desiderano una buona scalabilità per le loro applicazioni. Specifiche chiave • CPU: ARM v8.2 a 8 core a 64 bit • GPU: a 512 core con Tensor Core • Acceleratore DL: 2x motori NVDLA • Acceleratore di visione: processore di visione VLIW a 7 vie • Memoria: LPDDR4x da 32 GB a 256 bit a 137 GB / s • Memoria: 32 GB eMMC 5.1 e presa per scheda uSD / UFS per l'espansione della memoria • Schermo: HDMI 2.0 2. ROCK Pi N10 Il ROCK Pi N10, sviluppato da Radxa è la seconda offerta più economica in questo elenco con la sua variante di base che arriva a circa 99€ , la sua variante top di gamma arriva a circa 169€. Il ROCK Pi N10 è dotato di una NPU (Neural Processing Unit) che lo aiuta a elaborare con facilità i carichi di lavoro IA / Deep Learning. Offre fino a 3 TOPS (Tera Operations Per Second) di prestazioni. Viene offerto in tre varianti: ROCK Pi N10 Model A ROCK Pi N10 Model B ROCK Pi N10 Model C le uniche differenze tra queste varianti sono il prezzo, la RAM e le capacità di archiviazione. Il ROCK Pi N10 è disponibile per l'acquisto tramite Seeed Studio . Specifiche chiave • CPU: RK3399Pro con Cortex-A72 a 2 core a 1,8 GHz e Cortex-A53 a 4 core a 1,4 GHz • GPU: Mali T860MP4 • NPU: supporta l'elaborazione a 8 bit / 16 bit con una potenza di elaborazione fino a 3.0 TOPS • Memoria: LPDDR3 da 4 GB / 6 GB / 8 GB a 64 bit a 1866 Mb / s • Memoria: 16 GB / 32 GB / 64 GB eMMC • Schermo: HDMI 2.0 3. BeagleBone AI BeagleBone AI è l' SBC open source di BeagleBoard.org , pensato per colmare il divario tra i piccoli SBC e i computer industriali più potenti. L'hardware e il software del BeagleBoard sono completamente open source. È pensato per l'uso nell'automazione di case, industrie e altri casi d'uso commerciali. Ha un prezzo di circa 110€ , il prezzo varia tra i rivenditori, per maggiori informazioni controlla il loro sito web . Specifiche chiave • CPU: Texas Instrument AM5729 con ARM Cortex-A15 dual-core a 1,5 GHz • Co-processore: 2 x Dual-core ARM Cortex-M4 • DSP: 2 x C66x VLIW a virgola mobile • EVE: 4 motori di visione integrati • GPU: PowerVR SGX544 • RAM: 1 GB • Memoria: 16 GB eMMC • Display: microHDMI 4. BeagleV Il BeagleV è l'ultimo lancio nell'elenco, è un SBC che esegue Linux fuori dalla scatola e ha una CPU RISC-V . È in grado di eseguire applicazioni di elaborazione edge senza sforzo, per saperne di più su BeagleV controlla la copertura del lancio. Il BeagleV avrà due varianti, una da 4 GB di RAM e una da 8 GB di RAM. I prezzi partono da circa 119€ per il modello base e 149€ per il modello da 8 GB di RAM, è possibile preordinare tramite il loro sito web . Specifiche chiave • CPU : RISC-V U74 2-Core @ 1.0GHz • DSP: Vision DSP Tensilica-VP6 • Acceleratore DL: motore NVDLA 1-core • NPU: motore di rete neurale • RAM: 4 GB / 8 GB (2 x 4 GB) LPDDR4 SDRAM • Memoria: slot microSD • Schermo: HDMI 1.4 5. HiKey970 HiKey970 è il primo SBC a 96 schede pensato per applicazioni di elaborazione edge ed è la prima piattaforma IA NPU dedicata al mondo. HiKey970 è dotato di CPU, GPU e NPU per accelerare le prestazioni dell'IA, può anche essere utilizzato per l'addestramento e la creazione di modelli DL (Deep Learning). HiKey970 ha un prezzo di circa 299€ e può essere acquistato dal loro negozio ufficiale . Specifiche chiave • SoC: HiSilicon Kirin 970 • CPU : ARM Cortex-A73 4-Core a 2,36 GHz e ARM Cortex-A53 4-Core a 1,8 GHz • GPU: ARM Mali-G72 MP12 • RAM: 6 GB LPDDR4X a 1866 MHz • Memoria: microSD UFS 2.1 da 64 GB • Display: HDMI e porta MIPI / LCD a 4 linee 6. Google Coral Dev Board Il Coral Dev Board è il primo tentativo di Google di un SBC dedicato all'edge computing. È in grado di eseguire inferenze ML (Machine Learning) ad alta velocità e supporta TensorFlow Lite e AutoML Vision Edge. La scheda ha un prezzo di circa 129€ ed è disponibile sul sito ufficiale di Coral . Specifiche chiave • CPU: SoC NXP i.MX 8M (Cortex-A53 a 4 core, Cortex-M4F) • Acceleratore ML : coprocessore TPU di Google Edge • GPU: grafica GC7000 Lite integrata • RAM: 1 GB LPDDR4 • Memoria: 8 GB eMMC e slot microSD • Display: HDMI 2.0a, connettore FFC a 39 pin per display MIPI-DSI (4 corsie) e connettore FFC a 24 pin per fotocamera MIPI-CSI2 (4 corsie) 7. Google Coral Dev Board Mini Coral Dev Board Mini è il successore della Coral Dev Board, racchiude una maggiore potenza di elaborazione in un fattore di forma più piccolo e un prezzo inferiore di circa 99€. Il Coral Dev Board Mini può essere acquistato dal loro negozio web ufficiale . Specifiche chiave • CPU: SoC MediaTek 8167s (Arm Cortex-A35 a 4 core) • Acceleratore ML: coprocessore TPU di Google Edge • GPU: IMG PowerVR GE8300 • RAM: 2 GB LPDDR3 • Memoria: 8 GB eMMC • Display: micro HDMI (1.4), connettore FFC a 24 pin per fotocamera MIPI-CSI2 (4 corsie) e connettore FFC a 24 pin per display MIPI-DSI (4 corsie) Pensieri conclusivi È disponibile un SBC in ogni fascia di prezzo per applicazioni di elaborazione edge. Alcuni sono solo di base, come Nvidia Jetson Nano o BeagleBone AI e alcuni sono modelli orientati alle prestazioni come BeagleV e Nvidia Jetson AGX Xavier. Se stai cercando qualcosa di più universale, puoi controllare il nostro articolo sulle alternative Raspberry Pi che potrebbero aiutarti a trovare un SBC adatto al tuo caso d'uso. Se mi sono perso qualche SBC dedicato al calcolo edge, sentiti libero di farmelo sapere nei commenti qui sotto. Grazie mille per la lettura, condividi l'articolo se ti è stato di aiuto!
- RAIT88: passione e resilienza al servizio del Sistema Paese
Robotica e Realtà Virtuale come volani per rilanciare l’economia Italiana dando supporto e valore aggiunto per la didattica a distanza o l’assistenza medica; per la progettazione, previsualizzazione o per il loro impiego nella simulazione militare, civile, avionica e robotica. RAIT88, hub di Eccellenza per la Difesa nel campo del Reverse Engineering, gestione e monitoring dell’Obsolescenza, è tra le aziende strategiche per il Ministero della Difesa, affermata anche nello sviluppo di software 3D interattivi. Fondata nel 1988, la società della famiglia Calabrò ha l’innovazione nel proprio DNA. Premiata nel 2019 e nel 2020 come Eccellenza dell’Anno Innovazione & Leadership Electronic Supply Chain nell’ambito del premio Le Fonti Awards, l’azienda romana ha iniziato il suo 2021 come una delle Srl più in crescita del settore. La Realtà Virtuale e le applicazioni innovative Fin dai primi anni 2000, le tecnologie di Realtà Virtuale si sono fatte strada nel mercato dell’intrattenimento e delle applicazioni aziendali, mostrando però i lati deboli di una tecnologia ancora acerba. Grazie allo studio di queste tecniche, è stato finalmente possibile sviluppare soluzioni fino a poco tempo fa impensabili: questo è il contesto in cui RAIT88 ha coltivato il know-how dei sistemi di sviluppo software 3D interattivi. Con il tempo e la cura che solo un’azienda con una vocazione che si può definire artigianale può esprimere, questa piccola società ha saputo conquistarsi uno spazio di esclusività ed Eccellenza totalmente made in Italy, e ad oggi può quindi porsi come Partner Strategico nella realizzazione di soluzioni all’avanguardia in molti sistemi industriali, anche diversi tra loro ma interconnessi. La passione artigiana al servizio dei Future Trends “Ricerca e Sviluppo, le Nanotecnologie, i Nanomateriali e la Quantum Technology - interviene l’AD di RAIT88 Alessio Calabrò - sono i cardini su cui ci muoviamo, che richiedono uno sforzo costante di investimento nell’Innovazione e figure competenti altamente specializzate che selezioniamo dai migliori Atenei ed Enti di Ricerca, al fine di mantenere in Italia i cervelli che altrimenti andrebbero all’estero. Queste eccellenze professionali inserite nel nostro contesto industriale, ci permettono di sviluppare prodotti di nuova concezione con tecnologie all’avanguardia”. Non è un caso che RAIT88, unica azienda italiana a sviluppare prodotti FFF (Form-Fit-Function) senza documentazione fornita dal Prime - perché smarrita o introvabile sul mercato - abbia inserito lo sviluppo della Realtà Virtuale nella sua già ampia fornitura di servizi di sviluppo e innovazione. Soprattutto in questo momento di profondo cambiamento del paradigma, l’azienda guidata dalla famiglia Calabrò ha voluto mettere il proprio know-how al servizio dell’Industria Italiana, rimanendo continuamente aperta durante il Lockdown senza ricorrere ad alcun ammortizzatore sociale per il Covid-19, e ponendosi come antesignana nelle innovazioni per fronteggiare le criticità del futuro. Clicca qui per visitare il Sito RAIT88 e scoprire di più
- Che cosa è il ROS (Robot Operating System) e quali sono le sue applicazioni + Esempio pratico
ROS Industrial (Robot operating system) Robot Operating System (ROS) è un insieme di librerie software e strumenti per la creazione di applicazioni robotiche. Dai driver agli algoritmi all'avanguardia e con potenti strumenti di sviluppo, ROS Non è un semplice ambiente di simulazione, ma una complessa piattaforma open source, un “middleware” basato su un meccanismo di pubblicazione / sottoscrizione anonimo (server / client) che consente il passaggio di messaggi tra diversi processi ROS e che incorpora anche la possibilità operativa in real time introdotta da ROS Industrial ed ulteriormente sviluppata con la nuova “suite” ROS2. ROS Industrial è un progetto dedicato allo sviluppo di robotica basata su ROS e soluzioni di automazione per strumenti hardware e software rilevanti per il settore. Questa iniziativa è nata come una collaborazione tra Southwest Research Institute, Yaskawa Motoman Robotics e Willow Garage (l'organizzazione che ha fondato ROS) nel 2012 e mira ad accelerare l'adozione di robot con comportamenti migliorati come la collaborazione umana, la manipolazione mobile e il movimento guidato dalla percezione ampliando l'orizzonte delle soluzioni robotiche industriali oltre a saldatura, dispensazione e movimentazione dei materiali. Nonostante ROS2 sia ancora nella fase iniziale di sviluppo, fornisce un progetto promettente per future implementazioni industriali. Si stanno realizzando requisiti per il suo impiego in robot industriali in meccanismi di sicurezza ecc., Le prestazioni di programmazione in tempo reale e interoperabilità con ROS motiverà migliaia di sviluppatori e ricercatori sia dell'industria che del mondo accademico a migliorare lo sviluppo di ROS2 per il campo delle automazioni a qualsiasi livello. Aziende di robotica come ABB, Fanuc, Universal Robots, Robotiq, Omron, Staubli e Fanuc dispongono di controller ROS, pacchetti software e driver per i loro robot nel repository Github. Forniscono supporto ROS-I e soluzioni che consentono l'integrazione dei loro strumenti con altre piattaforme del settore, sfruttando l'ecosistema ROS. Nel prossimo futuro, verranno rilasciati al pubblico altri prodotti software autonomi basati su ROS2. I pacchetti ABB ROS-I e Fanuc ROS-I forniscono passaggi per configurare ABB ROS Server sui loro controller industriali, installare il ROS Server sul client ROS (solitamente un PC) e utilizzare l'ecosistema ROS con il loro software di simulazione personalizzato RobotStudio . Motoman fornisce soluzioni di simulazione della pianificazione del percorso e l'installazione del server ROS Motoman sui suoi controller FS, DX e FRC. Come accennato in precedenza, ROS Industrial estende le capacità di ROS e conforma gli strumenti agli standard del settore. Il progetto definisce pacchetti standard di settore per interfacce utente grafiche (GUI), strumenti end-of-arm (EOAT), sensori, manipolatori e dispositivi di rete utilizzati nelle fabbriche. ROS2 Consente alle industrie di sviluppare soluzioni a livello di attività, integrazione con strumenti di settore come PLC e switch e protocolli di comunicazione come CAN ed Ethercat. Il livello ROS è in grado di interfacciare qualsiasi hardware esistente con ROS. ROS ha tre paradigmi di comunicazione di base: • Sottoscrittore editore • Servizi • Agenti La seguente immagine riassume le peculiarità di ROS1 e ROS2. Il software nativo di ogni dispositivo hardware può essere avvolto attorno al livello ROS per creare nodi ROS utilizzando gli standard industriali ROS. Diversi pacchetti ROS Industrial di solito utilizzano l'API del software nativo per l'hardware e la integrano con l'ambiente ROS creando così un canale per interagire con loro attraverso l'ecosistema ROS. Il cuore di qualsiasi sistema ROS 2 è il ROS graph. Il grafico ROS si riferisce alla rete di nodi in un sistema ROS e alle loro connessioni di comunicazione. Un nodo è un software specifico del grafico ROS, i nodi ROS utilizzano una libreria client ROS per comunicare con altri nodi. I nodi possono pubblicare o ricevere degli argomenti ("Topics") e possono anche fornire o utilizzare servizi e azioni. Ci sono parametri configurabili associati a un nodo che lo rende unico. Le connessioni tra i nodi vengono stabilite tramite un processo di rilevamento distribuito. I nodi possono trovarsi nello stesso processo, in processi diversi o su macchine diverse. Le librerie client ROS consentono ai nodi scritti in diversi linguaggi di programmazione di comunicare. Esiste una libreria client ROS (RCL) di base che implementa le funzionalità comuni necessarie per le API ROS di diversi linguaggi. Vi sono librerie scritte in vari linguaggi ma principalmente le librerie client sono gestite dal team ROS 2: • rclcpp = libreria client C ++ • rclpy = libreria client Python ROS2 Supporta più sistemi robotici, aggiunge il supporto per sistemi multi-robot e migliora le prestazioni di rete della comunicazione tra multi-robot. ROS2 non si rivolge solo al campo della ricerca scientifica, ma si preoccupa anche del passaggio dalla ricerca all'applicazione dei robot, che può consentire a più robot di portare direttamente i sistemi ROS2 sul mercato. ROS2 non solo può funzionare su sistemi X86 e ARM esistenti, ma supporta anche microcontrollori incorporati come MCU (ARM-M4, core M7). ROS2 supporta il “real time” e aggiunge anche il supporto per il controllo che può migliorare la tempestività del controllo e le prestazioni dell'intero robot. ROS2 non solo funziona su sistemi Linux, ma aggiunge anche supporto per Windows, MacOS, RTOS e altri sistemi, offrendo agli sviluppatori più scelte. Per la comunicazione tra nodi, ROS2 utilizza DDS, uno standard di comunicazione industriale di OMG, per il trasporto di pubblicazione-sottoscrizione. Il vantaggio dell'utilizzo di DDS è che esistono specifiche concrete che terze parti possono esaminare, verificare e implementare con diversi gradi di interoperabilità. QoS (Quality-of-Service) di DDS offre impostazioni di parametri flessibili per controllare l'affidabilità della comunicazione, inoltre, ROS2 può lavorare con diversi fornitori di DDS come FastRTPS, RTI-Connext, OpenSplice e altri. La portabilità tra i fornitori di DDS fornisce agli utenti alternative per selezionare i requisiti specificati, nonché contro i cambiamenti nei fornitori di DDS. Se il modello di comunicazione di ROS1 include principalmente meccanismi di comunicazione come argomenti e servizi, il modello di comunicazione di ROS2 è leggermente più complicato in quanto sono stati aggiunti molti meccanismi di comunicazione DDS. Il modello di comunicazione ROS2 basato su DDS contiene i seguenti concetti chiave: Partecipante: in DDS, ogni editore o abbonato è chiamato partecipante. In corrispondenza di un utente che utilizza DDS, è possibile utilizzare un tipo di dati definito per leggere e scrivere lo spazio dati globale. Editore: l'esecutore della pubblicazione di dati supporta la pubblicazione di più tipi di dati e può essere associato a più autori di dati (DataWriter) per pubblicare messaggi di uno o più argomenti. Sottoscrittore: l'esecutore della sottoscrizione dati supporta sottoscrizioni di più tipi di dati. Può essere associato a più lettori di dati e iscriversi ai messaggi di uno o più argomenti. DataWriter: l'applicazione di livello superiore aggiorna l'oggetto dei dati all'editore. Ogni scrittore di dati corrisponde a un argomento specifico, simile a un editore di messaggi in ROS1. DataReader: l'applicazione di livello superiore legge i dati dagli abbonati. Ogni lettore di dati corrisponde a un argomento specifico, simile a un sottoscrittore di messaggi in ROS1. Argomento ("Topic"): simile al concetto in ROS 1, gli argomenti devono definire un nome e una struttura dati, ma ogni argomento in ROS2 è un'istanza che può memorizzare i dati storici dei messaggi in quell'argomento. Qualità del servizio: abbreviato come Politica QoS, questo è un concetto nuovo e molto importante aggiunto in ROS2. Controlla tutti gli aspetti del meccanismo di comunicazione con il livello sottostante, principalmente dagli aspetti di limite di tempo, affidabilità, continuità e cronologia per soddisfare i requisiti dei dati degli utenti per diversi scenari. La architettura di ROS 2 (ros industrial) si può esprimere con il seguente grafo: Con la versione ROS – Industrial e ROS2 quindi si espande sempre di più il bacino d’utenza delle aziende che potrebbero adottare questa piattaforma software per lo sviluppo di nuove applicazioni basate sull’utilizzo delle nuove tecnologie emergenti anche in ambito industriale, quali quelle che adottano la “Computer Vision” (openCV) anche in abbinata alle implementazioni di “machine learnig”, per quanto riguarda applicazioni del sistema SLAM ( Simultaneous localization and mapping). Sono molte quindi le potenzialità che offre questa piattaforma a coloro i quali intendano fare un cambiamento di paradigma nello studio della robotica industriale, poiché la richiesta di mercato in questo ambito risulta ovviamente essere in forte espansione, come evidenziato dalla seguente immagine che prende in considerazione solo una minima parte dei modelli di robot che attualmente richiedono personale altamente qualificato negli studi robotici. Per coloro che vogliono approcciarsi allo studio di Robot Operating System anche a livello di principiante, il mio consiglio è quello di partire con delle buone conoscenze di C++ e Python che fondamentalmente sono i linguaggi principali di ROS(2) e tanto per dare una primissima infarinatura, utilizzando il più classico dei tutorial, “turtlesim”, faccio notare che in questo ambiente viene utilizzata molta manualità per l’inserimento di codice da riga di comando (da qui il cambio di paradigma richiesto per gli aspiranti professionisti). In questo esempio, che prevede una installazione di ROS2 completa di dipendenze, come da istruzioni ufficiali del sito, si può notare che per avere un minimo di potenzialità operativa (nel far muovere la tartarughina in un ambiente grafico c’è bisogno dell’utilizzo di: 1) Un terminale per avere un help in linea sull’utilizzo dei comandi ROS: 2) Un terminale per l’help in linea per l’utilizzo del comando “run”: 3) Un terminale per l’help in linea per visualizzare l’elenco dei nodi del pacchetto eseguibile: 4) Un terminale per il “lancio” del pacchetto eseguibile, che produrrà in out la finestra grafica dell’ambiente virtuale. 5) Un terminale per il “lancio” del nodo di comando dell’applicazione “azione”: 6) In fine un terminale per il lancio del “topic” desiderato: Tutte queste operazioni produrranno l’effetto di far disegnare un quadrato alla nostra robot-tartaruga in un ambiente protetto. Ambienti di simulazione per applicazioni industriali evidentemente utilizzano dei plugin di ROS. Appositamente sviluppati ad esempio Il plugin “gazebo_ros_api_plugin”, che si trova con il pacchetto gazebo_ros, Questo software inizializza un nodo ROS chiamato "gazebo" che Integra lo scheduler di callback ROS (passaggio di messaggi) con lo scheduler interno di Gazebo per fornire le interfacce ROS utili alla gestione di ambienti virtuali. Questa API ROS consente a un utente di manipolare le proprietà dell'ambiente di simulazione su ROS, nonché di generare e analizzare lo stato dei modelli nell'ambiente, come intuibile dalla seguente figura. Per concludere, ROS (ROS2), a mio avviso è la base sulla quale coloro che intendono approcciarsi al mondo della robotica, in un’ottica professionale ad alto livello (non da operatori), dovrebbero far riferimento. ROS quindi è un ambiente operativo dove gli algoritmi dell’intelligenza artificiale trovano molteplici applicazioni, basti pensare alla “navigazione autonoma”, al trattamento delle immagini, alla gestione della sensoristica applicata ai COBOT ecc. Per coloro che volessero approcciarsi al mondo della robotica propongo un libro di testo, acquistabile si Amazon approfittando anche dell' iniziativa Bonus Cultura 18app e di Carta del Docente. Il libro è disponibile sia in formato fisico che digitale, clicca qui per vedere il libro Annuncio inoltre che è stata da poco attivata una sezione per gli utenti di lingua italiana sulla piattaforma ROS.org: https://discourse.ros.org/c/local/Italy/70 per entrare dovrai prima crearti un account su ROS.org Grazie mille per la lettura
- Esempio pratico di Deep Learning con Python : Previsione del prezzo delle azioni
Prerequisiti : Se non sai perchè utilizzeremo python, clicca qui Se non hai ancora installato Python, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui In questo articolo ti mostrerò come scrivere un programma python che prevede il prezzo delle azioni utilizzando una tecnica di apprendimento automatico chiamata Long Short-Term Memory (LSTM) . Questo programma è davvero semplice e dubito che da questo programma ne riusciare a trarre un profitto importante, ma è leggermente meglio che indovinare! Ricorda che il prezzo delle azioni può essere influenzato da molti parametri diversi. Lunga memoria a breve termine (LSTM) è una rete neurale artificiale ricorrente (RNN) utilizzato nel campo dell'apprendimento profonda. A differenza delle reti neurali feed forward standard, LSTM ha connessioni di feedback. Non solo può elaborare singoli punti dati (come le immagini), ma anche intere sequenze di dati . - Wikipedia Gli LSTM sono ampiamente utilizzati per i problemi di predizione di sequenza e si sono dimostrati estremamente efficaci. Il motivo per cui funzionano così bene è perché LSTM è in grado di memorizzare le informazioni passate che sono importanti e dimenticare le informazioni che non lo sono. -Stackabuse.com Iniziamo a programmare il nostro modello: Inizierò affermando cosa voglio che faccia questo programma. Voglio che questo programma preveda i prezzi delle azioni Apple Inc. 60 giorni nel futuro in base al prezzo di chiusura corrente. Per prima cosa scriverò una descrizione del programma. # Descrizione: questo programma utilizza una rete neurale artificiale ricorrente chiamata Long Short Term Memory (LSTM) per prevedere il prezzo di chiusura delle azioni di una società (Apple Inc.) utilizzando il prezzo delle azioni degli ultimi 60 giorni. Successivamente caricherò / importerò le librerie che verranno utilizzate in questo programma. import math import pandas_datareader as web import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras.layers import Dense, LSTM import matplotlib.pyplot as plt plt.style.use('fivethirtyeight') Riceverò la quotazione delle azioni della società "Apple Inc." utilizzando il ticker di borsa delle società (AAPL) dal 1 gennaio 2012 al 17 dicembre 2019. #Ricevi la quotazione di borsa df = web.DataReader('AAPL', data_source='yahoo', start='2012-01-01', end='2019-12-17') #stampa le quotazioni df Output: High Low Open CloseVolumeAdj CloseDate 2012-01-0314.73214214.60714214.62142814.686786302220800.012.5666762012-01-0414.81000014.61714314.64285814.765715260022000.012.6342132012-01-0514.94821514.73821414.81964314.929643271269600.012.7744812012-01-0615.09821414.97214314.99178615.085714318292800.012.9080232012-01-0915.27678615.04821415.19642815.061786394024400.012.887549.....................2019-12-1167.77500267.12500067.20249967.69249778756800.066.5678862019-12-1268.13999966.83000266.94500067.864998137310400.066.7375182019-12-1368.82499767.73249867.86499868.787498133587600.067.6447072019-12-1670.19750269.24500369.25000069.964996128186000.068.8026352019-12-1770.44249769.69999769.89250270.102501114158400.068.937851 2003 rows × 6 columns Queste sono le quotazione di azioni Apple. Successivamente, mostrerò il numero di righe e colonne nel set di dati. Il risultato mostra che abbiamo 2003 righe o giorni in cui è stato registrato il prezzo delle azioni e 6 colonne. df.shape Output: (2003, 6) Crea un grafico per visualizzare i dati. #Visualizza la cronologia del prezzo di chiusura plt.figure(figsize=(16,8)) plt.title('Close Price History') plt.plot(df['Close']) plt.xlabel('Date',fontsize=18) plt.ylabel('Close Price USD ($)',fontsize=18) plt.show() Output: Grafico che mostra la cronologia dei prezzi delle azioni di chiusura di Apple Inc. Crea un nuovo data frame con solo il prezzo di chiusura e convertilo in un array. Quindi creare una variabile per memorizzare la lunghezza del set di dati di addestramento. Desidero che il set di dati di addestramento contenga circa l'80% dei dati. #nuova dataframe solo con le chiusure data = df.filter(['Close']) #Convertiamolo in un numpy array dataset = data.values training_data_len = math.ceil( len(dataset) *.8) Ora ridimensiona il set di dati in modo che sia valori compresi tra 0 e 1 incluso, lo faccio perché è generalmente buona pratica ridimensionare i dati prima di darli alla rete neurale. #Scala tutti i dati in modo che siano valori compresi tra 0 e 1 scaler = MinMaxScaler(feature_range=(0, 1)) scaled_data = scaler.fit_transform(dataset) Creare un set di dati di addestramento che contenga i valori del prezzo di chiusura degli ultimi 60 giorni che si desidera utilizzare per prevedere il valore del prezzo di chiusura 61 °. Quindi la prima colonna nel set di dati ' x_train ' conterrà i valori dal set di dati dall'indice 0 all'indice 59 (60 valori in totale) e la seconda colonna conterrà i valori dal set di dati dall'indice 1 all'indice 60 (60 valori) E così via e così via. Il set di dati " y_train " conterrà il 61 ° valore situato all'indice 60 per la sua prima colonna e il 62 ° valore situato all'indice 61 del set di dati per il suo secondo valore e così via e così via. #Crea il set di dati per l'addestramento in scala train_data = scaled_data[0:training_data_len , : ] #Dividi i dati nel x_train e y_train x_train=[] y_train = [] for i in range(60,len(train_data)): x_train.append(train_data[i-60:i,0]) y_train.append(train_data[i,0]) Ora converti il set di dati indipendente " x_train " e il set di dati dipendente " y_train " in array numpy in modo che possano essere utilizzati per l'addestramento del modello LSTM. # Converti x_train e y_train in array x_train, y_train = np.array(x_train), np.array(y_train) Rimodellare i dati in modo tridimensionale nella forma numero di campioni numero di fasi temporali numero di caratteristiche Il modello LSTM si aspetta un set di dati tridimensionale. #Reshape i dati nella forma accettata da LSTM x_train = np.reshape(x_train, (x_train.shape[0],x_train.shape[1],1)) Costruisci il modello LSTM per avere due strati LSTM con 50 neuroni e due strati densi, uno con 25 neuroni e l'altro con 1 neurone di output. #Costruiamo il LSTM network model model = Sequential() model.add(LSTM(units=50, return_sequences=True,input_shape=(x_train.shape[1],1))) model.add(LSTM(units=50, return_sequences=False)) model.add(Dense(units=25)) model.add(Dense(units=1)) Compilare il modello utilizzando la funzione di perdita dell'errore quadratico medio (MSE) e l'ottimizzatore adam. #Compila il modello model.compile model.compile(optimizer='adam', loss='mean_squared_error') Addestra il modello utilizzando i set di dati di addestramento. La dimensione del batch è il numero totale di esempi di addestramento presenti in un singolo batch ed epoch è il numero di iterazioni in cui un intero set di dati viene passato avanti e indietro attraverso la rete neurale. #Allena il modello model.fit(x_train, y_train, batch_size=1, epochs=10) Output: Epoch 1/10 1543/1543 [==============================] - 21s 14ms/step - loss: 6.0664e-04 Epoch 2/10 1543/1543 [==============================] - 21s 13ms/step - loss: 2.9017e-04 Epoch 3/10 1543/1543 [==============================] - 21s 13ms/step - loss: 2.4941e-04 Epoch 4/10 1543/1543 [==============================] - 20s 13ms/step - loss: 1.5669e-04 Epoch 5/10 1543/1543 [==============================] - 21s 13ms/step - loss: 1.6930e-04 Epoch 6/10 1543/1543 [==============================] - 21s 13ms/step - loss: 1.5684e-04 Epoch 7/10 1543/1543 [==============================] - 21s 14ms/step - loss: 1.6119e-04 Epoch 8/10 1543/1543 [==============================] - 22s 14ms/step - loss: 1.4235e-04 Epoch 9/10 1543/1543 [==============================] - 24s 15ms/step - loss: 1.4032e-04 Epoch 10/10 1543/1543 [==============================] - 23s 15ms/step - loss: 1.4214e-04 Crea un set di dati di test. #Dati di test test_data = scaled_data[training_data_len - 60: , : ] #Crea i set di dati x_test e y_test x_test = [] y_test = dataset[training_data_len : , : ] #Recupera tutte le righe dall'indice 1603 al resto e tutte le colonne (in questo caso è solo la colonna "Chiudi"), così 2003 - 1603 = 400 righe di dati for i in range(60,len(test_data)): x_test.append(test_data[i-60:i,0]) Quindi converti il set di dati di test indipendente ' x_test ' in un array numpy in modo che possa essere utilizzato per testare il modello LSTM. # Converti x_test in un array numpy x_test = np.array(x_test) Rimodellare i dati in modo tridimensionale nella forma [numero di campioni , numero di fasi temporali e numero di caratteristiche ]. Questo deve essere fatto, perché il modello LSTM si aspetta un set di dati tridimensionale. #Reshape i dati nella forma accettata da LSTM x_test = np.reshape(x_test, (x_test.shape[0],x_test.shape[1],1)) Ora ottieni i valori previsti dal modello utilizzando i dati del test. #Otteniamo le predizioni del modello predictions = model.predict(x_test) predictions = scaler.inverse_transform(predictions) Ottieni l'errore quadratico medio (RMSE), che è una buona misura dell'accuratezza del modello. Un valore pari a 0 indica che i valori previsti dai modelli corrispondono perfettamente ai valori effettivi del set di dati del test. Più basso è il valore, migliori saranno le prestazioni del modello. Ma di solito è meglio usare anche altre metriche per avere davvero un'idea di come si è comportato bene il modello. # Calcola / Ottieni il valore di RMSE rmse=np.sqrt(np.mean(((predictions- y_test)**2))) rmse Output: 1.020505485309228 Tracciamo e visualizziamo i dati. # Traccia / Crea i dati per il train = data[:training_data_len] valid = data[training_data_len:] valid['Predictions'] = predictions #Visualize the data plt.figure(figsize=(16,8)) plt.title('Model') plt.xlabel('Date', fontsize=18) plt.ylabel('Close Price USD ($)', fontsize=18) plt.plot(train['Close']) plt.plot(valid[['Close', 'Predictions']]) plt.legend(['Train', 'Val', 'Predictions'], loc='lower right') plt.show() Output: Il grafico che mostra i prezzi di formazione (allenamento), effettivi (validi) e previsti (previsioni).Mostra i prezzi validi e previsti. valid Output: Close Predictions Date 2018-05-1746.74750146.8632932018-05-1846.57749946.3976942018-05-2146.90750146.3534812018-05-2246.79000146.7314762018-05-2347.09000046.534359.........2019-12-1167.69249766.0610052019-12-1267.86499866.4198382019-12-1368.78749866.5070722019-12-1669.96499667.5563352019-12-1770.10250168.624374 400 rows × 2 columns I valori del prezzo effettivo (chiusura) e previsto (previsioni).Voglio testare ancora il modello e ottenere il valore del prezzo di chiusura previsto di Apple Inc. per il 18 dicembre 2019 (18/12/2019). Convertirò i dati in un array che contiene solo il prezzo di chiusura. Quindi otterrò il prezzo di chiusura degli ultimi 60 giorni e ridimensionerò i dati in modo che siano valori compresi tra 0 e 1 inclusi. Dopodiché creerò un elenco vuoto e vi aggiungerò il prezzo degli ultimi 60 giorni, quindi lo convertirò in un array numpy e lo rimodellerò in modo da poter inserire i dati nel modello. Ultimo ma non meno importante, inserirò i dati nel modello e otterrò il prezzo previsto. # Ottieni la citazione apple_quote = web.DataReader('AAPL', data_source='yahoo', start='2012-01-01', end='2019-12-17') #Crea un nuovo dataframe new_df = apple_quote.filter(['Close']) # Ottieni il prezzo di chiusura degli ultimi 60 giorni last_60_days = new_df[-60:].values #Scala i dati in modo che siano valori compresi tra 0 e 1 last_60_days_scaled = scaler.transform(last_60_days) #Crea un elenco vuoto X_test = [] #Appendi agli ultimi 60 giorni X_test.append(last_60_days_scaled) # Converti il set di dati X_test in un array X_test = np.array(X_test) #ridimensioni i dati X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) # Ottieni il prezzo scalato previsto pred_price = model.predict(X_test) pred_price = scaler.inverse_transform (pred_price) print (pred_price) Output: [[68.51323]] Ora vediamo qual era il prezzo effettivo per quel giorno. apple_quote2 = web.DataReader('AAPL', data_source='yahoo', start='2019-12-18', end='2019-12-18') print(apple_quote2['Close']) Output: Date 2019-12-18 69.934998 Name: Close, dtype: float64 Proprio come volevamo "quasi" una predizione Perfetta. Scarica Gratuitamente tutto il Progetto Per scaricare gratuitamente devi prima registrati/accede al portale. Scorri in fondo alla pagina per registrati o accedere Condividi e commenta l'articolo se ti è stato utile , Grazie !
- Aumentare vendite usando l'intelligenza artificiale e il machine learning
Questo articolo non è dedicato solo alle grandi aziende o multinazionali, ma soprattutto a medie e piccole imprese, alle quali risulta anche più facile inserire gli spunti che troverai nell'articolo nella propria realtà aziendale. L'utilizzo dell'intelligenza artificiale per potenziare la business intelligence e le campagne di marketing cambierà la tua analisi da Descrittiva a Predittiva, portando infiniti vantaggi al tuo business. Se la tua è come la maggior parte delle aziende, stai annegando nei dati provenienti da sistemi di gestione delle relazioni con i clienti (CRM), piattaforme ERP (Enterprise Resource Planning), ricerche di mercato, interazione con i clienti e altre fonti... Hai i dati grezzi, ma come trasformare quei dati in decisioni che possono aiutare a incrementare le vendite? Utilizzando l'intelligenza artificiale (I.A.), puoi creare modelli predittivi che ti dicono di più sul comportamento dei tuoi clienti, sulle tendenze di mercato e sulle nuove opportunità di vendita. Se non hai chiaro il concetto di Analisi Predittiva o modelli predittivi immaginali cosi : L'analisi predittiva è uno strumento di vendita incredibilmente potente che utilizza dati storici, algoritmi statistici e apprendimento automatico per anticipare i risultati in base a modelli storici. Questa non è certamente una nuova disciplina (i bookmakers lo fanno da anni), ma il crescente volume di dati disponibili e la crescente sofisticazione dei modelli di Machine Learning stanno rendendo l'analisi predittiva delle vendite più accurata e più preziosa per migliorare il business sotto tanti punti di vista . Se vuoi sfruttare l' intelligenza artificiale per le vendite , devi iniziare filtrando gli oceani di dati. Le tecniche dei big data possono aiutarti a vagliare le informazioni disponibili, ma invece di smuovere l'oceano alla ricerca di bocconcini, vuoi determinare dove e come raccogliere i dati giusti. L'automazione è un ottimo strumento per la raccolta di dati, l'archiviazione di dati normalizzati da fonti affidabili come CRM e altri strumenti nello stack tecnologico di vendita. I dati automatizzati sono generalmente dati di qualità migliore ed è certamente meno costoso da raccogliere. Raccogliendo i dati giusti e assicurandoti che siano strutturati e interconnessi, puoi utilizzare l'apprendimento automatico e l'intelligenza artificiale per rivelare le tendenze ed evidenziare le opportunità. Abbiamo scoperto che l'intelligenza artificiale e l'analisi predittiva svolgono un ruolo particolarmente utile in quattro aree di vendita. Dopo un attenta analisi su queste aree abbiamo raccolto per te i punti principali su come utilizzando l'I.A. in questi quattro settori incrementerai sicuramente le tue vendite. Mi raccomando leggili con attenzione e prova a riportarli nella tua realtà aziendale, perchè un utilizzo sbagliato potrebbe invece portare ad altri tipi di risultati meno piacevoli... 1) Valutazione dei lead più accurata La profilazione delle vendite è più precisa con delle predizioni. Il social selling genera più richieste di informazioni in entrata, ma è difficile determinare quale di questi potenziali clienti è pronto a prendere una decisione di acquisto. Con l'analisi predittiva, puoi assimilare dati come background aziendale, dati demografici e altro per creare buyer personas (acquirenti) ben definiti. Utilizzando profili di clienti simili già memorizzati nel database, è più facile fare confronti e identificare le caratteristiche che indicano una probabile vendita. Ancora più importante, puoi utilizzare l'analisi per prevedere quando chiudere le vendite. L'analisi può rivelare le esigenze del cliente in relazione al tuo prodotto o servizio e persino creare una probabile tempistica per una chiusura finale. Più preciso è il profilo predittivo, maggiore è il tasso di chiusura di vendita. 2) Prospettive di vendita La personalizzazione è diventata una parte vitale del percorso di vendita del cliente e l'analisi predittiva può aiutare a stimolare le risposte alle domande. Applicando l'apprendimento automatico, è possibile programmare passaggi specifici per automatizzare la formazione e la qualificazione dei lead, fornendo un'esperienza personalizzata e persino gestendo le obiezioni fino a quando il rappresentante di vendita non è pronto a intervenire. L'analisi predittiva può anche essere utilizzata per monitorare i progressi e aiutare a identificare quando il potenziale cliente è pronto per l'acquisto. Il modo in cui ti avvicini a un potenziale cliente è importante per sapere quando e se acquisterà, e la raccolta e l'analisi dei dati possono migliorare le presentazioni di vendita, mostrando quali argomenti o pubblicità funzionano meglio. L'analisi può anche aiutare a creare la giusta offerta di vendita in base alle target, al budget e alle esigenze dell'azienda. 3) Riduzione del tasso di abbandono e dell'upselling È risaputo che il costo per mantenere un cliente attuale è una frazione del costo per acquisire un nuovo cliente. Sempre più aziende si stanno ristrutturando per trarre vantaggio dai ricavi ricorrenti, quindi la fidelizzazione e l'espansione dei clienti sono cruciali. L'analisi predittiva può dirti molto sulla soddisfazione del cliente. Ad esempio, può mostrare se il cliente sta sottoutilizzando il tuo servizio, ha problemi con il supporto o cerca nuove funzionalità. L'attività di monitoraggio può rivelare quando potresti essere pronto a perdere clienti. Puoi anche creare modelli predittivi per identificare i clienti pronti ad acquistare di più. Puoi sapere il modo in cui utilizzano un prodotto o un servizio oppure analizzare con il sentiment analysis le recensioni di ciò che stai proponendo al mercato. Una tecnica che spesso usano le grandi aziende, anche se può sembrare controproducente. La tecnica è quella di rilasciare buoni al cliente in cambio di risposte ad alcune domande, e fin qui nulla di anomalo, solo che queste domande non avranno lo scopo di mettere in evidenza i tuoi lati positivi, ma quelli che al cliente non piacciono. Una sequenza di domande molto usata è questa . Pensi che il nostro prodotto/servizio possa essere migliorato ? Se SI come ? Consiglieresti un nostro prodotto/servizio ad amici,collegi o sui social? Se Non lo faresti spiegaci il motivo Se per un giorno fossi a capo della nostra azienda cambieresti qualcosa ? Se si cosa cambieresti? Effettuando questa tecnica su un campione di clienti attualmente non entusiasti del prodotto/servizio potresti ottenere i tre seguenti benefici : Conosce o approfondire i "punti deboli" dell'azienda o del prodotto, ciò che non rende felice il nostro cliente. Effettuare una Retention ( ulteriore fedelizzazione ad un cliente insoddisfatto ) con il buono. Una volta lavorato sui punti emersi dall'indagine intelligente, potrai ricontattare gli stessi clienti ( via email o telefonica ) e fargli notare che l'azienda ha ascoltato i loro "consigli" arrivando così al grado massimo di fedelizzazzione, ossia la partecipazione attiva non retribuita all'interno dell'azienda. Cosa significa partecipazione attiva non retribuita all'interno dell'azienda? Vuol dire che il cliente si sente importante e vorrà un domani rispondere nuovamente ad altre domande anche senza la necessità del buono. 4) Migliorare la gestione delle vendite L'analisi predittiva si è anche dimostrata uno strumento inestimabile per la gestione delle vendite, non solo migliorando le previsioni di vendita ma aggiungendo informazioni sulla strutturazione dei team di vendita: Quote di vendita più precise: l' incorporazione di fattori oltre alle prestazioni del rappresentante di vendita consente di creare quote di vendita più precise e più aggressive che sono ancora realizzabili. Ottimizzazione dei territori di vendita: indipendentemente dal fatto che tu venda per territori o verticali, l'analisi può aiutarti ad allineare le competenze e le risorse di vendita con i territori per fornire risultati ottimali. Riallineamento delle politiche di vendita e dei compensi : l'analisi predittiva può anche indicare nuovi modelli di vendita, inclusa la distribuzione dei ricavi. Ad esempio, Microsoft ha ristrutturato la retribuzione delle vendite premiando i livelli di consumo di servizi piuttosto che le commissioni dirette. Revisione del personale : l'analisi predittiva può indicare probabili cambiamenti nelle richieste di personale nel prossimo trimestre o anno. Poiché occorre tempo per trovare nuove risorse di vendita, anticipare la domanda può guidare le strategie di assunzione, fornendo tempo sufficiente per l'assunzione e la formazione per ottimizzare la produttività delle vendite. Proiezione dell'impatto delle modifiche ai prodotti: nuovi prodotti, rilasci, funzionalità e modelli di prezzo avranno un impatto diretto sulle vendite. L'analisi predittiva può aiutare a scoprire il potenziale impatto delle modifiche ai prodotti e ridurre al minimo l'impatto sulle vendite. Sebbene l'analisi predittiva sia chiaramente uno strumento potente, trovare il modo più efficace per implementarli è ancora una sfida. Potresti assumere programmatori per sviluppare i tuoi modelli di analisi predittiva, ma più aziende trovano più conveniente affidare l' analisi delle vendite e la modellazione predittiva a società di consulenza. Qualunque sia il tuo approccio, l'analisi predittiva può trasformare il modo in cui ti avvicini alle vendite, offrendoti maggiore precisione, maggiore controllo e maggiori entrate. Grazie mille della lettura, commenta e condividi l'articolo.
- Robotica e Intelligenza Artificiale ( I.A. ) le conoscenze di base e gli strumenti per iniziare
Indice : Principio d’indeterminazione Presupposti elementari Alla base di tutto : i numeri I "Super-Numeri" Geometrie Informatica classica e Logica Q-bit Conclusioni Nei vari studi relativi al “principio d’indeterminazione”, in meccanica quantistica, si stabiliscono i limiti nella misurazione dei valori di grandezze fisiche coniugate: nella forma più nota, il principio di indeterminazione viene espresso dalla relazione: fra l’incertezza sulla posizione spaziale “Dx” e quella sulla quantità di moto “DPx” di una particella, dove “h” è la costante di Planck ridotta (o costante di Dirac, valore sperimentale equivalente a 1,0545…E-34 J*s). Enunciato nel 1927 da Werner Karl Heisenberg e confermato da innumerevoli esperimenti, rappresenta un concetto cardine della meccanica quantistica e sancisce una radicale rottura rispetto alle leggi della meccanica classica. Ulteriori evoluzioni teorico pratiche del principio di indeterminazione sono state condotte da vari scienziati con l’utilizzo di formule complesse e l’utilizzo di “dispositivi numerici” sempre più raffinati. Io credo che l’impiego di un concetto di numero universale, possa essere giustamente rappresentato nelle sue componenti naturali e immaginarie, e che solo in questo modo si possano utilizzare per esprimere correttamente la rappresentazione energetico esistenziale della materia. Vorrei chiarire il concetto partendo da questi presupposti elementari: Il genere umano per comunicare effettua delle “categorizzazioni mentali” esprimendo tali operazioni tramite concetti più o meno complessi. Nell’ambito delle categorizzazioni mentali, quelle che riguardano il concetto di relazioni numeriche, sono sicuramente quelle che impegnano moltissimo le facoltà mentali e che nel tempo sono state soggette a trasformazioni sempre più complesse. L’approccio mentale per comprendere le relazioni dei concetti nel campo delle categorizzazioni numeriche ha sviluppato linguaggi sempre più “coerenti” sotto l’aspetto funzionale: l’ambito LOGICO. Partendo dal concetto primordiale di numeri naturali si sono definiti dei simboli per identificare delle quantità : “N” → (0… 1… 2… 3… 4 … 5… 6… 7… 8… 9…) (simbologia moderna ma di antica origine indiana). Le relazioni interattive di carattere pratico, quali combinazioni utilizzanti i concetti numerici di cui sopra hanno permesso di concepire operazioni elementari di somma, sottrazione dando origine alla estensione “intuitiva” di questa tipologia di categorizzazione mentale introducendo la definizione dei numeri interi relativi : “Z” → (… -3… -2… -1… 0 … 1… 2… 3… …) che comprendono i “numeri negativi” Dalle necessità pratiche, probabilmente dovute a esigenze di spartizione dei beni vennero introdotti i concetti di divisione e moltiplicazione, portato alla categorizzazione ancora adesso definita come “insieme dei numeri razionali”, anche se a mio parere la parola “razionale” non è del tutto adeguata, perlomeno in italiano. La rappresentazione dei numeri razionali è la seguente: “Q” → (… -(Nx/Nx)… -(Nx/Ny) … (Nx/Nx)… (Ny/Nx) … ) → (…-1/2 … -1/3 … 1/2 … 1/3 …) tali numeri solitamente sono anche rappresentabili in questo modo: … -1.0… -0.9999… -0.5…. 0.0 … 0.5… 0.75555… 1.0… …. (come separatore decimale si può usare anche la virgola “,”….. (nota: si passa dalle categorizzazioni mentali alle convenzioni sociali…) che però può implicare qualche difficoltà interpretativa nei casi in cui venga considerato anche il numero : (Zero) “0” → ( 0/Nx …. Nx/0 …) questa particolarità ha portato alla concettualizzazione elementare di infinito: “Ꝏ” Dalle esigenze dovute alle misurazioni spaziali invece, le categorizzazioni mentali relative all’utilizzo della simbologia hanno fatto in modo, per noi occidentali, di dover introdurre il concetto dei “numeri algebrici”, basti pensare alle applicazioni della “Geometria Euclieda” ed in particolare al teorema di Pitagora, dove una variante dell’enunciato recita: “La misura dell’ipotenusa è data dalla “radice quadrata” della misura dei cateti…” anche se questi enunciati erano noti anche ad altre culture…. perlomeno in oriente. In particolare, la condizione che probabilmente portò Ippaso al concetto dei “numeri irrazionali” e che sono esprimibili come “radici” di equazioni algebriche: in altre parole numeri non esprimibili correttamente se usassimo una delle versioni precedenti: √2 =1,4142135623730950488016887242097… (e non può essere il risultato di una frazione) da questa categorizzazione di numeri si può dedurre un altro concetto interessante: dati come valori infiniti quelli rappresentati da No, il valore rappresentato da N1 è sicuramente maggiore: un infinito più grande…. (fare riferimento al valore della radice quadrata) Ulteriori esigenze di misurazione, in particolare dovute a procedure di misurazioni orografiche o che in qualche modo comprendessero misure di curve portarono alla categorizzazione dei numeri trascendenti, quali “ Л“ ed “e”, il primo come sappiamo viene definito come l’area di un cerchio di raggio “1”, mentre il secondo viene definito come risultato di una serie infinita di frazioni di numeri fattoriali: Ecco allora l’esigenza di far “rientrare” tutte queste tipologie di numeri in una categoria mentale che li rappresentasse: l’insieme dei numeri reali “R”, che comprende i numeri esprimibili con o senza virgola (decimali), quindi i numeri “razionali”, e quelli “irrazionali”, algebrici e trascendenti. Attraverso questi numeri si possono esprimere le grandezze scalari (quantità di cose…) o determinare delle istantanee di grandezze vettoriali (forze, velocità ecc) , tuttavia si resero necessarie ulteriori categorizzazioni mentali per spiegare dei concetti in grado di esprimere dei vettori variabili nel tempo (vettori rotanti.. onde sinusoidali…): rappresentazione di numeri complessi: I=X+JY dove “J” è semplicemente un rotore immaginario che farà in modo di ottenere un particolare risultato: Ecco allora che tutte le categorizzazioni precedenti, ancora una volta verranno “incluse” in un nuovo “insieme numerico”, che tradotto nel sistema di comunicazione coerente dovuto al linguaggio matematico si traduce in: da quanto sopra si può desumere allora, che nelle categorizzazioni mentali, quella che contempla tutti gli altri numeri sia appunto quella dei numeri complessi. Ma il genere umano evidentemente fa buon uso della fantasia e quindi alcuni “addetti ai lavori”, per particolari esigenze, hanno introdotto delle ulteriori concettualizzazioni nel campo dei numeri complessi, definendo i “Quaternioni”(usati anche in robotica), gli “Ottonioni”, gli “Sedenioni”, nonosolo, nel campo dei numeri reali sono stati introdotti concetti come i “numeri iper-reali”, numeri “non standard” che fungono da base per l’analisi matematica moderna nel calcolo delle derivate e degli integrali. La loro forma descrittiva è la seguente: dato come assunto, che vi sia un numero dx compreso tra “0” ed un valore “1/n”, il numero iperreale si può scrivere come “ X+dx” ovvero “X + ɛ” o “monade” → “μ(x)”. Non solo, ma sono stati definiti concettualmente anche i cosiddetti numeri “p-adici” che assumono la seguente formula di rappresentazione nel linguaggio matematico: che ad esempio (10-adici) si potrebbero rappresentare come una somma infinita di interi a sinistra della virgola come riportato dalla seguente: Nella forma 10_adica quindi …99999 = -1. Questa tipologia di categorizzazione numerica venne introdotta probabilmente per effettuare operazioni complesse in analisi matematica delle metriche. Quanto sopra descritto porta nella direzione della categorizzazione “numerologica” quale approccio di analisi dei fenomeni fisici, dove possiamo indicare semplicisticamente che i “numeri”, con le loro relazioni funzionali, stanno alla base di un linguaggio logico, quindi coerente, in grado generare dei modelli atti ad interpretare quella che riteniamo essere la realtà fenomenologica dell’universo. Alcuni esempi: Il peso è una forza, ha una unità di misura numerica e si può rappresentare con un vettore (non rotante): La massa invece esprime una quantità di materia, ha una unità di misura ed è una grandezza scalare: siccome un atomo d’oro ha una massa pari a 3.2707068*10-22g presumibilmente ci vorranno circa un numero pari a 3,05744311902247E+018 atomi di oro (senza scorie di altri materiali) A proposito di numeri, quando questi vengono utilizzati per rappresentare qualcosa nel mondo geometrico, trasferiscono, come è intuibile alcune delle loro proprietà ad alcuni elementi, per il calcolo di aree, di lunghezze di archi ecc. Esistono diversi tipi di geometrie, alcune anche molto complesse e apparentemente paradossali e di difficile comprensione. A me piace immaginare la geometria come un metodo di rappresentazione verosimile della realtà fisica degli elementi e ad esempio, se mi riferisco ad un punto, che concettualmente non ha dimensioni, se lo riporto su una geometria piana cerco di immaginare un cerchio con un diametro nullo (ma sempre un cerchio) e quindi, se devo immaginare un segmento immagino una serie infinita di cerchi, uno accanto all’altro… (ma un infinito determinato dai confini del segmento), se dovessi immaginare una linea sarebbe una serie infinita di punti senza limiti, se dovesse essere un piano lo vedrei come cerchi disposti su un area e così via perlomeno fino ad immaginare dei solidi. E’ importante inoltre, assumere come concetto di base delle geometrie, che si deve fare sempre riferimento ad un sistema di coordinate, ad esempio, nella geometria piana si definiscono le ascisse e le ordinate (le coordinate “cartesiane” introdotte concettualmente da Cartesio). Ora, prendiamo in considerazione un punto e associamolo ad una coordinata, in qualsiasi direzione spaziale… potrebbe anche essere interpretato come una linea: Se aggiungiamo un’altra coordinata potremmo vedere un piano: Se aggiungessimo un’altra coordinata scopriremmo un solido: Con un po’ di immaginazione i numeri “razionali” potrebbero essere associati a dei cerchi… e i numeri iperreali come dei cerchi più piccoli… Nella geometria solida potremmo immaginare i numeri come delle sfere, magari introducendo i numeri immaginari e fornendo un concetto di “propagazione d’onda”, se non proprio i quaternioni… Nella meccanica computazionale classica e quindi nell’informatica classica, i numeri vengono generati in relazione a degli stati energetici di interdizione o saturazione di canali di passaggio della corrente elettrica, rendendo possibile un trasferimento informazionale binario. Curiosamente, questo sistema numerico, fu adottato anche da alcune popolazioni sin dal neolitico: i Gumulgal australiani (dal 10000 a.C. al 3500 a.C.) o altre antiche popolazioni africane o sudamericane. In altre parole, la forma più piccola di decodificazione su uno stato energetico complementare o logico: il BIT (contrazione di “binary-digit” o cifratura binaria). Nella simbologia rappresentativa il BIT utilizza solo due simboli derivati dal sistema decimale rappresentato con la metodologia simbolica pseudo indiana, lo “0” e l’ “1”, che indicano due possibili condizioni logiche: “VERO o FALSO” ad equivalenza simbolica positiva o negativa rispetto alla condizione di stato energetico: In logica positiva VERO = 1 e FALSO =0, ovviamente la rappresentazione è complementare in logica negativa in quanto “se non è A allora è (!)A”. Sotto l’aspetto numerologico quindi si parla di “sistema numerico” in base al raggruppamento simbolico di base: ne consegue che, intuitivamente nel sistema binario avremmo due simboli e nel sistema decimale a noi più consono, ne avremmo 10, ma evidentemente sono solo due metodi, tra innumerevoli possibilità rappresentative. La conversione tra sistemi numerici rappresentativi si può quindi effettuare con dei metodi convenzionali assumendo come equivalenza la corrispondenza simbologica relativa: Per convertire ad esempio un numero alla base 10 scritto in una base diversa da 10 bisogna sviluppare il numero nella sua forma polinomiale. Se (x)B è un numero qualsiasi scritto nella base B e se { an, an−1, an−2 …,a2, a1, a0 } sono le cifre del numero (da 0 a B−1) avremo: (x)B=an * Bn+an−1*Bn−1+⋯+a2*B2+a1*B1+a0*B0 Ovvio pensare dunque che nella computazione meccanizzata classica, partendo da una base numerica 2 si siano di seguito sviluppate le numerazioni ottali (byte) ed esadecimanli (word), che possiamo quantizzare in termini numerici come segue: Nei computer attualmente in commercio, di norma l’indirizzamento è a 64 bit e questo significa in termini numerici che un registro a 64 bit può contenere uno qualsiasi di 2 64 (oltre 18 quintilioni o 1,8 × 10^19 ) valori diversi. L'intervallo di valori interi che possono essere memorizzati in 64 bit dipende dalla rappresentazione intera utilizzata. Con i due più comuni rappresentazioni, l'intervallo è 0 e 18.446.744.073.709.551.615 (2^64 - 1) per la rappresentazione come ( senza segno ) numero binario , e -9.223.372.036.854.775.808 (-2^63 ) attraverso 9.223.372.036.854.775-807 (2^63 - 1) per rappresentazione come complemento a due. Quindi, un processore con indirizzi di memoria a 64 bit può accedere direttamente a 2^64 byte (= 16 exabyte ) di memoria indirizzabile a byte tenendo presente che la quantità di memoria viene quantizzata in multipli di byte: Kilobyte (kb) => un kilobyte ha un'unità di memoria di 1024 (2^10) Megabyte (Mb) => un megabyte ha un'unità di memoria se 1.048.576 (2^20), si tratta di circa 1 milione di byte. Gigabyte (Gb) => un gigabyte ha un'unità di memoria di 1.073.741.824 (2^30), questo circa miliardi di byte. Terabyte (Tb) => un terabyte ha un'unità di memoria di (2^40). Si tratta di circa 1 trilione di byte. Petabyte (Tb) => un petabyte ha un'unità di memoria di (2^50). Si tratta di 1,15292150460685E+018 byte. Da quanto sopra si evince che, anche con l’utilizzo di sistemi computazionali a portata di tutti, le potenzialità di rappresentazione delle metodologie di quantificazione sono potenzialmente interessanti almeno in riferimento a due fattori: Il primo fattore è la potenzialità di trattamento dei numeri, che come desumibile da quanto riportato, devono essere adeguatamente rappresentati, quindi trattabili come risultato di operazioni e computerizzati con approssimazioni il più raffinate possibili (valore assoluto dell’esponenziale o quantità di cifre decimali), poiché questa potenzialità avvicina al digitale (discreto), il concetto di contiunuum, tanto per intenderci, si tratta di rappresentazioni di numeri interi o a virgola mobile (“floats” o decimali), ma anche di numeri irrazionali e numeri complessi, poiché le esigenze sono quelle di rappresentare non solo i numeri positivi o negativi, ma anche infiniti ed infinitesimali, nonché grandezze vettoriali o matricali, le quali sono fondamentali per la rappresentazione di campi numerici e degli spazi vettoriali. Il secondo fattore invece, prende spunto dalla potenzialità di elaborare decisioni su “grandezze discrete” derivanti da elaborazioni statistiche, facendo entrare in gioco appunto, anche la “facoltà” di sviluppo di sistemi inferenziali che danno origine alla cosiddetta intelligenza artificiale, in altre parole, data una raffinata potenzialità rappresentativa dei numeri da 0 a 1 e dati dei “criteri”, che possono anche essere variabili all’interno di questo campo, si può elaborare un flusso decisionale ad albero ad esempio utilizzando un criterio di CART (Classification and Regression Trees) dove la potezialità di scelta passa da FALSO (0) a VERO (1) in un continuum statistico, in relazione al verificarsi di elaborazioni su discreti, intendendo come discreti ad esempio in termini elementari nullo, minimo, medio, massimo, magari introducendo anche i criteri di mediana e di moda, o di stima dei quartili… che a tal proposito mi rimandano il pensiero alla nuova frontiera per l’elaborazione dei dati, costituita dalle interconnessioni quantiche delle particelle subatomiche, la cui esistenza viene elaborata partendo appunto dal loro “stato potenziale” espresso nello spazio vettoriale di Hilbert e si chiamano Q-BIT che vengono rappresentati appunto come due vettori i quali assumono i valori di: e sono valori probabilistici: Notare che un q-bit in questo stato di sovrapposizione non ha un valore compreso tra "0" e "1"; piuttosto, quando misurato, il q-bit ha una probabilità |alpha|^2 del valore "0" e una probabilità |beta|^2 del valore "1", dove α e β sono ampiezze di probabilità e in generale possono essere entrambi numeri complessi. Questi sono i “ferri del mestiere” per chi si appresta ad entrare nel mondo della automazione, della robotica e dell’intelligenza artificiale. Grazie mille per la lettura !
- I 5 migliori algoritmi di machine learning ( ML ) che ogni principiante dovrebbe conoscere
Iniziamo questo articolo con un bellissimo teorema, chiamato " No Free Lunch(NFL)". In poche parole, afferma che : " Dati due algoritmi di predizione qualsiasi, sono equivalenti, quando le loro prestazioni sono approssimativamente uguali su tutti i possibili problemi" ed è particolarmente rilevante per l'apprendimento supervisionato (cioè la modellazione predittiva) perchè questo teorema va applicato quando si tratta di scegliere l'algoritmo migliore per il nostro problema . Ad esempio, non si può dire che le reti neurali siano sempre migliori degli alberi decisionali o viceversa. Ci sono molti fattori in gioco, come la dimensione e la struttura del tuo set di dati. Di conseguenza, dovresti provare molti algoritmi diversi per il tuo problema, mentre utilizzi un "test set" di dati per valutare le prestazioni e selezionare il vincitore. Ovviamente, gli algoritmi che provi devono essere appropriati per il tuo problema, ed è qui che entra in gioco la scelta del compito del modello predittivo corretto. Come analogia, se hai bisogno di pulire la tua casa, potresti usare un aspirapolvere, una scopa o uno straccio , ma non tireresti fuori una pala e inizieresti a scavare. Allora iniziamo a parlare dei 5 migliori algoritmi da imparare per risolvere semplici problemi di machine learning. Indice Il principio fondamentale Regressione lineare Regressione logistica Analisi discriminante lineare Classificazione e alberi di regressione Naive Bayes Conclusioni 1- Il principio fondamentale Tuttavia, esiste un principio comune alla base di tutti gli algoritmi di apprendimento automatico supervisionato per la modellazione predittiva. Gli algoritmi di apprendimento automatico sono descritti come l'apprendimento di una funzione di destinazione (f) che mappa al meglio le variabili di input (X) su una variabile di output (Y): Y = f (X) Questo è un compito di apprendimento generale in cui vorremmo fare previsioni in futuro (Y) dati nuovi esempi di variabili di input (X). Non sappiamo come sia la funzione (f) o la sua forma. Se lo facessimo, lo useremmo direttamente e non avremmo bisogno di apprenderlo dai dati utilizzando algoritmi di apprendimento automatico. Il tipo più comune di apprendimento automatico è imparare la mappatura Y = f (X) per fare previsioni di Y per il nuovo X. Questo è chiamato modellazione predittiva o analisi predittiva e il nostro obiettivo è rendere le previsioni più accurate possibili. Per i neofiti dell'apprendimento automatico desiderosi di comprendere le basi dell'apprendimento automatico, ecco un breve tour sui 5 migliori algoritmi di apprendimento automatico utilizzati dai data scientist. 2- Regressione Lineare La regressione lineare è forse uno degli algoritmi più noti e ben compresi in statistica e apprendimento automatico. La modellazione predittiva si occupa principalmente di ridurre al minimo l'errore di un modello o di effettuare le previsioni più accurate possibili, a scapito della spiegabilità. Prenderemo in prestito, riutilizzeremo e ruberemo algoritmi da molti campi diversi, comprese le statistiche, e li useremo per questi scopi. La rappresentazione della regressione lineare è un'equazione che descrive una retta che meglio si adatta alla relazione tra le variabili di input (x) e le variabili di output (y), trovando ponderazioni specifiche per le variabili di input chiamate coefficienti (C). Ad esempio: y = Cx + C2 Prevederemo y dato l'input x e l'obiettivo dell'algoritmo di apprendimento della regressione lineare è trovare i valori per i coefficienti C e C2. È possibile utilizzare diverse tecniche per apprendere il modello di regressione lineare dai dati, come una soluzione di algebra lineare per i minimi quadrati ordinari e l'ottimizzazione della discesa del gradiente. La regressione lineare esiste da più di 200 anni ed è stata ampiamente studiata. Alcune buone regole pratiche quando si utilizza questa tecnica sono rimuovere le variabili che sono molto simili (correlate) e rimuovere il rumore dai dati, se possibile. È una tecnica veloce e semplice e un buon primo algoritmo da provare. 3 - REGRESSIONE LOGISTICA La regressione logistica è un'altra tecnica presa in prestito dall'apprendimento automatico dal campo della statistica. È il metodo di riferimento per i problemi di classificazione binaria (problemi con due valori di classe). La regressione logistica è come la regressione lineare in quanto l'obiettivo è trovare i valori per i coefficienti che pesano ogni variabile di input. A differenza della regressione lineare, la previsione per l'output viene trasformata utilizzando una funzione non lineare chiamata funzione logistica. La funzione logistica ha l'aspetto di una grande S e trasformerà qualsiasi valore nell'intervallo da 0 a 1. Ciò è utile perché possiamo applicare una regola all'output della funzione logistica per agganciare i valori a 0 e 1 (ad esempio SE minore di 0,5 allora output 1) e prevedere un valore di classe. A causa del modo in cui il modello viene appreso, le previsioni fatte dalla regressione logistica possono essere utilizzate anche come probabilità che una data istanza di dati appartenga alla classe 0 o alla classe 1. Ciò può essere utile per i problemi in cui è necessario fornire più motivazioni per una predizione. Come la regressione lineare, la regressione logistica funziona meglio quando si rimuovono attributi che non sono correlati alla variabile di output e attributi molto simili (correlati) tra loro. È un modello veloce da apprendere ed efficace sui problemi di classificazione binaria. 4- ANALISI DISCRIMINANTE LINEARE La regressione logistica è un algoritmo di classificazione tradizionalmente limitato a soli problemi di classificazione a due classi. Se si hanno più di due classi, l'algoritmo di analisi discriminante lineare è la tecnica di classificazione lineare preferita. La rappresentazione dell'ADL è piuttosto semplice. Consiste di proprietà statistiche dei dati, calcolate per ciascuna classe. Per una singola variabile di input questo include: Il valore medio per ogni classe. La varianza calcolata in tutte le classi. Le previsioni vengono effettuate calcolando un valore discriminante per ciascuna classe e facendo una previsione per la classe con il valore più grande. La tecnica presuppone che i dati abbiano una distribuzione gaussiana (curva a campana), quindi è una buona idea rimuovere prima i valori anomali dai dati. È un metodo semplice e potente per la classificazione dei problemi di modellazione predittiva. 5 - ALBERI DI CLASSIFICAZIONE E REGRESSIONE Gli alberi decisionali sono un tipo importante di algoritmo per l'apprendimento automatico della modellazione predittiva. La rappresentazione del modello dell'albero decisionale è un albero binario. Questo è il tuo albero binario da algoritmi e strutture dati, niente di troppo stravagante. Ogni nodo rappresenta una singola variabile di input (x) e un punto di divisione su quella variabile (assumendo che la variabile sia numerica). I nodi foglia dell'albero contengono una variabile di output (y) che viene utilizzata per fare una previsione. Le previsioni vengono effettuate percorrendo le divisioni dell'albero fino ad arrivare a un nodo foglia e restituire il valore della classe a quel nodo foglia. Gli alberi sono veloci da imparare e molto veloci per fare previsioni. Inoltre sono spesso accurati per un'ampia gamma di problemi e non richiedono alcuna preparazione speciale per i dati. 6 - NAIVE BAYES Naive Bayes è un algoritmo semplice ma sorprendentemente potente per la modellazione predittiva. Il modello è composto da due tipi di probabilità che possono essere calcolate direttamente dai dati di allenamento: La probabilità di ogni classe La probabilità condizionata per ogni classe dato ogni valore x. Una volta calcolato, il modello di probabilità può essere utilizzato per fare previsioni per nuovi dati utilizzando il teorema di Bayes. Quando i dati sono a valori reali, è comune assumere una distribuzione gaussiana (curva a campana) in modo da poter stimare facilmente queste probabilità. Naive Bayes è chiamato ingenuo perché presuppone che ogni variabile di input sia indipendente. Questo è un presupposto forte e irrealistico per i dati reali, tuttavia, la tecnica è molto efficace su una vasta gamma di problemi complessi. Conclusioni Una tipica domanda posta da un principiante, di fronte a un'ampia varietà di algoritmi di apprendimento automatico, è "quale algoritmo devo usare?" La risposta alla domanda varia a seconda di molti fattori, tra cui: la dimensione la qualità e la natura dei dati il tempo di calcolo disponibile l'urgenza del compito cosa si desidera fare con i dati. Anche un esperto di data scientist non può dire quale algoritmo funzionerà meglio prima di provare diversi algoritmi. Sebbene esistano molti altri algoritmi di Machine Learning, questi sono i più popolari. Se sei un principiante del Machine Learning, questi sarebbero un buon punto di partenza per imparare. Grazie mille la lettura, condividi l'articolo a chi pensi non conosca questi algoritmi.
- Classificatore vs Regressione quale usare? Machine learning esempi pratici
Quando sei alle prime armi con gli algoritmi ed i modelli di apprendimento può accadere di trovarti in una situazione antipatica: hai i tuoi dati ma non sai che algoritmo di apprendimento utilizzare. Prima di illustrare le differenze tra le due famiglie di algoritmi e quale è più efficace per i tuoi dati, ricordiamo che stiamo operando all'interno della branca del machine learning chiamato apprendimento supervisionato. Se non conosci le tre principali famiglie del machine learning clicca qui. Questo tipo di apprendimento si basa su dei dati strutturati, quindi variabili indipendenti ( i valori delle X ) e la variabile di target ( il nostro obbiettivo Y). Questi modelli o algoritmi ricevono in input X,Y e generano una funzione del tipo F(x1,x2,..,xn) = y. Dove x1,x2, .. , xn sono le variabili che descrivono e caratterizzano il nostro target y. Vediamo ora la differenza principale tra classificatore e regressione con alcuni esempi di utilizzo nel machine learning. Indice il Classificatore Scarica l'esempio delle differenze tra i classificatori in Python gratis la Regressione Scarica esempio di Regressione Lineare in Python gratis il Classificatore I classificatori proprio come suggerisce il nome servono a catalogare o classificare il nostro target. Il nostro target dovrà quindi essere una Classe. Facciamo qualche esempio pratico per capire quando il nostro target è una variabile da classificare e quindi una classe. Un esempio in ambito della sentiment analyst : vogliamo classificare se un commento sotto i video dei nostri prodotti o servizi è uno spam o meno. Quindi la nostra variabile di target sarà "spam", se il commento è di spam, o "non spam" se il commento non conterrà altri prodotti o servizi di altre aziende. Un esempio in ambito della Computer Vision : dobbiamo creare un modello in grado di distinguere se nell'immagine è presente o meno un determinato oggetto o animale. Anche questa volta il nostro modello riceverà in input un'immagine e la dovrà classificare in base alla presenza o meno dell'oggetto che cerchiamo. Quindi anche in questo caso il nostro target è una classe, "si" se l'oggetto o l'animale è presente nell'immagine oppure "no". Un esempio nell'ambito del Marketing : supponiamo di avere i dati anagrafici, i servizi acquistati e un campo che indica se il cliente è soddisfatto o meno dei nostri clienti. Vogliamo creare un modello che passati in input nuovi dati sui clienti che hanno recentemente acquistato un servizio predica se loro sono o meno soddisfatti. Come è possibile notare il nostro target è una classe divisa in due gruppi "soddisfatto" e "non soddisfatto" quindi anche questa volta utilizzeremo un classificatore. Un esempio in ambito della Medicina : decidiamo di creare un modello che passate in input le cartelle mediche di pazienti affetti da una determinata malattia, questo possa predire lo stadio, ad esempio "Stato iniziale", "Stato avanzato" , "Stato terminale" e "Nessuno Stato" nel caso la malattia sia regredita. Quindi anche in questo tipologia di problema il nostro target è una classe divisa in 4 gruppi : "Stato iniziale", inizio malattia "Stato avanzato", avanzamento della malattia "Stato terminale" , verso il termine della malattia "Nessuno Stato" , malattia estinta dal paziente con successo Quindi ricapitolando gli algoritmi di classificazione si vanno ad utilizzare quando ciò che dobbiamo stimare non è una variabile che oscilla, ad esempio come il prezzo o gli indici di borsa, ma qualcosa di statico che è possibile suddividere o catalogare. Tra gli algoritmi di Classificazione, nel campo del machine learning i più diffusi ed utilizzati sono i seguenti: Regressione Logistica (anche se il nome tende a far pensare che sia una regressione) Albero decisionale Classificatore Bayesiano kNN Scarica l'Esempio delle differenze tra i classificatori in Python la Regressione Questi modelli al contrario, non devono trovare " uno o più piani o nodi " che classificano il target, ma una funzione che descrive il nostro target. Quindi il suo scopo è di prevedere i valori di una variabile numerica a partire da una o più variabili. Vediamo alcuni esempi dove è utile utilizzare la regressione Un esempio nell'ambito del Marketing : Abbiamo i dati delle nostre sponsorizzazioni sui social-network e quante vendite ci hanno portato. Quindi in questo caso dobbiamo cercare una funzione capace di descrivere quanto aumentando le sponsorizzazioni aumentano le vendite. Questo è proprio il lavoro della Regressione 😉. Un esempio in ambito della Medicina : decidiamo di creare un modello che passato in input il numero di antenati affetti da una determinata patologia, questo possa predire le probabilità che tu la possa aver ereditata. Anche in questo caso la Regressione risolverà il problema. Un esempio nel ramo Immobiliare: Se volessimo creare un algoritmo in grado di fare una stima del prezzo di un appartamento avremmo le nostre variabili indipendenti ( gli attributi che descrivono la casa : dimensioni, numero di stanze, numero di bagni, ecc...) che andranno a descrivere variabile di target, ossia il prezzo. In questo caso il prezzo è una variabile che a noi interessa sapere il più preciso possibile per questo motivo anche qui utilizzeremo la Regressione. L'algoritmo più utilizzato è la regressione Lineare. Scarica un Esempio di Regressione Lineare in Python Grazie per la lettura, condividi l'articolo per supportarci.
- Cosa è la business intelligence (BI) , come applicarla alla tua impresa e le principali piattaforme
Indice Iniziamo dalle basi Esempi di Business Intelligence Business Intelligence vs. analisi aziendali Strategia di Business Intelligence Business Intelligence self-service Software e sistemi di Business Intelligence La figura professionale della BI: Analista di Business Intelligence Il futuro della Business Intelligence Iniziamo dalle basi? Perché si chiama Business Intelligence! Così come un indagatore dovrai imparare a scoprire che i tuoi dati di Business nascondono informazioni preziose e segrete per questo motivo è stato coniato il termine "Business intelligence" Definizione di business intelligence La Business Intelligence (BI) sfrutta software e servizi per trasformare i dati in informazioni a supporto delle decisioni aziendali strategiche e tattiche di un'organizzazione. Gli strumenti di BI accedono e analizzano i set di dati e presentano i risultati analitici in report, riepiloghi, dashboard, grafici, tabelle e mappe per fornire agli utenti informazioni dettagliate sullo stato del proprio business. Il termine business intelligence spesso si riferisce anche a una gamma di strumenti che forniscono un accesso rapido e facile da digerire alle informazioni sullo stato attuale di un'organizzazione, sulla base dei dati disponibili. Per capire la differenza tra dati ed informazioni vi basta guardare l'esempio successivo. I dati sono un insieme di flussi generati dalla nostra azienda o clienti che si interfacciano con noi. Prendiamo ad esempio un flusso di vendita dove per ogni cliente e prodotto abbiamo una serie di numeri e lettere relative alla vendita stessa: I nostri dati: Cliente A: BLABLA12345BLABLA67890 Cliente B: BLABLA45221BLABLA06809 Cliente C: BLABLA54213BLABLA78006 Cliente D: BLABLA23541BLABLA66789 Cliente E: BLABLA22345BLABLA67890 Cliente F: BLABLA33221BLABLA78069 Cliente G: BLABLA22224BLABLA88969 Cliente H: BLABLA11213BLABLA67980 La differenza tra dati ed informazioni si trova nella capacità di saper evidenziare particolari trend o particolari dati di clienti o prodotti con determinate caratteristiche. Mettiamo il caso che si voglia capire quali clienti acquistano il prodotto di taglia maggiore che è identificato dal codice 21 e 80. Nell'immagine soprastante è veramente difficile trovarli ad occhi nudo se invece guardiamo l'immagine successiva capiamo che basterebbe evidenziare tali codici per rendere le informazioni subito visibili e disponibili: Le nostre informazioni: Cliente A: BLABLA12345BLABLA67890 Cliente B: BLABLA45221BLABLA06809 Cliente C: BLABLA54213BLABLA78006 Cliente D: BLABLA23541BLABLA66789 Cliente E: BLABLA22345BLABLA67890 Cliente F: BLABLA33221BLABLA78069 Cliente G: BLABLA22224BLABLA88969 Cliente H: BLABLA11213BLABLA67980 Questo è proprio il compito della BI, mettere in evidenza le informazioni necessarie per prendere decisioni di business pescandole tra i nostri dati che nascondono implicitamente. Esempi di business intelligence Il reporting è un aspetto centrale della business intelligence e il dashboard è forse l'archetipo dello strumento di BI. Le dashboard sono applicazioni software che raccolgono automaticamente i dati disponibili in tabelle e grafici che danno un'idea immediata dello stato dell'azienda. Sebbene la business intelligence non dica agli utenti aziendali cosa fare o cosa succederà se seguiranno un determinato corso, la BI non si limita a generare report. Piuttosto, la BI offre alle persone un modo per esaminare i dati per comprendere le tendenze e ricavare intuizioni ottimizzando lo sforzo necessario per cercare, unire e interrogare i dati necessari per prendere decisioni aziendali valide. Ad esempio, un'azienda che desidera gestire al meglio la propria catena di fornitura necessita di capacità di BI per determinare dove si verificano i ritardi e dove esistono variabilità all'interno del processo di spedizione. Quell'azienda potrebbe anche utilizzare le sue capacità di BI per scoprire quali prodotti sono più comunemente consegnati in ritardo o quali modalità di trasporto sono più spesso coinvolte nei ritardi. Oppure indicare ad un sistema scolastico i tassi di frequenza alle prestazioni degli studenti - per migliorare l'apprendimento degli studenti e i tassi di diplomati delle scuole superiori. Business intelligence vs analisi aziendale Una cosa che avrai notato da questi esempi è che forniscono informazioni sullo stato attuale dell'azienda o dell'organizzazione: dove sono le prospettive di vendita in cantiere oggi? Quanti membri abbiamo perso o guadagnato questo mese? Questa è la distinzione chiave tra business intelligence e un altro termine correlato, business analytics. La business intelligence è descrittiva e ti dice cosa sta succedendo ora e cosa è successo in passato per portarci a quello stato. L'Analisi di business, d'altra parte, è un termine generico per le tecniche di analisi dei dati che sono: predittiva - Ti può dire che cosa sta succedendo o cosa accadrà in futuro prescrittiva - Ti può dire ciò che si dovrebbe fare per raggiungere risultati migliori. (L'analisi aziendale viene solitamente considerata come quel sottoinsieme della più ampia categoria di analisi dei dati specificamente focalizzata sul business.) La distinzione tra i poteri descrittivi della BI e i poteri predittivi o descrittivi dell'analisi aziendale va un po' oltre il periodo di tempo di cui stiamo parlando. Va anche al cuore della questione a chi è destinata la business intelligence . Come spiega il blog di Stitchdata , BI mira a fornire istantanee dirette dello stato attuale delle cose ai manager aziendali. Sebbene le previsioni e i consigli derivati dall'analisi aziendale richiedano ai professionisti della scienza dei dati di analizzare e interpretare, uno degli obiettivi della BI è che dovrebbe essere facile per gli utenti finali anche ai non tecnici di capire e persino di immergersi nei dati e creare nuovi rapporti. Strategia di business intelligence In passato, i professionisti IT erano stati gli utenti principali delle applicazioni BI. Tuttavia, gli strumenti BI si sono evoluti per essere più intuitivi e facili da usare, consentendo a un gran numero di utenti in una varietà di domini organizzativi di utilizzare gli strumenti. Howson di Gartner distingue due tipi di BI. La prima è la BI tradizionale o classica, in cui i professionisti IT utilizzano dati transazionali interni per generare report. Il secondo è la BI moderna, in cui gli utenti aziendali interagiscono con sistemi agili e intuitivi per analizzare i dati più rapidamente. Howson spiega che le organizzazioni generalmente optano per la BI classica per determinati tipi di report, come i report normativi o finanziari, in cui l'accuratezza è fondamentale e le domande e i set di dati utilizzati sono standard e prevedibili. Le organizzazioni in genere utilizzano i moderni strumenti di BI quando gli utenti aziendali hanno bisogno di informazioni su dinamiche in rapida evoluzione, come gli eventi di marketing, in cui la velocità è valutata rispetto a ottenere i dati corretti al 100%. Tuttavia, sebbene una solida business intelligence sia essenziale per prendere decisioni aziendali strategiche, molte organizzazioni hanno difficoltà a implementare strategie di BI efficaci, a causa di pratiche inadeguate sui dati, errori tattici e altro ancora. Business intelligence self-service La spinta a consentire a chiunque di ottenere informazioni utili dagli strumenti di business intelligence ha dato origine alla business intelligence self-service, una categoria di strumenti di BI mirati a eliminare la necessità di intervento IT nella generazione di report. Gli strumenti di BI self-service consentono alle organizzazioni di rendere i report dei dati interni dell'azienda più prontamente disponibili ai manager e ad altro personale non tecnico. Tra le chiavi del successo della BI self-service ci sono dashboard di business intelligence e interfacce utente che includono menu a discesa e punti di drill-down intuitivi che consentono agli utenti di trovare e trasformare i dati in modi di facile comprensione. Sarà senza dubbio necessaria una certa quantità di formazione, ma se i vantaggi degli strumenti sono abbastanza evidenti, i dipendenti saranno ansiosi di salire a bordo. Tieni presente, tuttavia, che ci sono anche delle insidie nella BI self-service . Guidando i tuoi utenti aziendali a diventare ingegneri dei dati ad hoc , puoi finire con un mix caotico di metriche che variano da un reparto all'altro, incorrere in problemi di sicurezza dei dati e persino eseguire grosse licenze o fatture SaaS se non c'è un controllo centralizzato sull'implementazione dello strumento . Quindi, anche se ti stai impegnando per la business intelligence self-service all'interno della tua organizzazione, non puoi semplicemente acquistare un prodotto standard, indirizzare il tuo personale all'interfaccia utente e sperare per il meglio. Software e sistemi di business intelligence Una varietà di diversi tipi di strumenti ricade sotto l'ombrello della business intelligence. Il servizio di selezione del software SelectHub suddivide alcune delle categorie e delle caratteristiche più importanti : Dashboard Visualizzazioni Segnalazione Estrazione dei dati ETL (extract-transfer-load: strumenti che importano dati da un archivio dati a un altro) OLAP (elaborazione analitica online) Di questi strumenti, SelectHub afferma che i dashboard e la visualizzazione sono di gran lunga i più popolari; offrono i riepiloghi dei dati rapidi e facili da digerire che sono al centro della proposta di valore di BI. Ci sono tonnellate di fornitori e offerte nello spazio BI e guadare attraverso di loro può diventare travolgente. Alcuni dei principali attori includono: Tableau , una piattaforma di analisi self-service fornisce la visualizzazione dei dati e può integrarsi con una vasta gamma di origini dati, tra cui Microsoft Azure SQL Data Warehouse ed Excel Splunk , una "piattaforma di analisi guidata" in grado di fornire business intelligence e analisi dei dati di livello aziendale Alteryx , che combina analisi da una gamma di fonti per semplificare i flussi di lavoro e fornire una vasta gamma di approfondimenti BI Qlik , basato sulla visualizzazione dei dati, BI e analisi, fornisce una piattaforma BI estesa e scalabile Domo , una piattaforma basata su cloud che offre strumenti di business intelligence su misura per vari settori (come servizi finanziari, sanità, produzione e istruzione) e ruoli (inclusi CEO, vendite, professionisti della BI e lavoratori IT) Dundas BI , che viene utilizzato principalmente per la creazione di dashboard e scorecard, ma può anche eseguire report standard e ad-hoc Google Data Studio , una versione potenziata della familiare offerta di Google Analytics Einstein Analytics , il tentativo di Salesforce.com di migliorare la BI con l'AI Birst , un servizio basato su cloud in cui più istanze del software BI condividono un backend dati comune. La figura professionale della BI: analista di business intelligence Qualsiasi azienda che prende sul serio la BI dovrà avere nel personale analisti di business intelligence. In generale, mirano a utilizzare tutte le funzionalità degli strumenti di BI per ottenere i dati di cui le aziende hanno bisogno, il più importante è scoprire le aree di perdita di entrate e identificare dove è possibile apportare miglioramenti per risparmiare denaro o aumentare i profitti. Anche se la tua azienda si affida quotidianamente a strumenti di BI self-service, gli analisti di business intelligence hanno un ruolo importante da svolgere, poiché sono necessari per la gestione e la manutenzione di tali strumenti e dei relativi fornitori. Inoltre, impostano e standardizzano i report che i manager genereranno per assicurarsi che i risultati siano coerenti e significativi in tutta l'organizzazione. E per evitare problemi di immondizia / spazzatura, gli analisti di business intelligence devono assicurarsi che i dati immessi nel sistema siano corretti e coerenti, il che spesso implica estrarli da altri archivi dati e pulirli. I lavori di analista di business intelligence spesso richiedono solo una laurea, almeno a livello di ingresso, anche se per avanzare di livello un MBA può essere utile o addirittura richiesto. A partire da ottobre 2019, lo stipendio medio di business intelligence è di circa $ 67.500, anche se a seconda del datore di lavoro che potrebbe variare da $ 49.000 a $ 94.000. Il futuro della business intelligence Andando avanti, Howson afferma che Gartner vede una terza ondata all'orizzonte, qualcosa che la società di ricerca chiama "analisi aumentata", in cui l'apprendimento automatico è integrato nel software e guiderà gli utenti nelle loro query sui dati. "Sarà BI e analisi, e sarà intelligente", dice. Le combinazioni incluse in queste piattaforme software renderanno ogni funzione più potente individualmente e più preziosa per gli uomini d'affari che le utilizzano, afferma Gorman. "Qualcuno esaminerà i rapporti, ad esempio, sulle vendite dello scorso anno - che è BI - ma riceverà anche previsioni sulle vendite del prossimo anno - questa è l'analisi aziendale - e poi aggiungerà a ciò una capacità what-if: cosa succederebbe se noi abbiamo fatto X invece di Y ", dice Gorman, spiegando che i produttori di software si stanno muovendo per sviluppare applicazioni che forniranno quelle funzioni all'interno di una singola applicazione piuttosto che distribuirle tramite più piattaforme come avviene ora. "Ora il sistema fornisce consigli di valore superiore. Rende il decisore più efficiente, più potente e più preciso ”, aggiunge. E sebbene la BI rimarrà preziosa in sé e per sé, Howson afferma che le organizzazioni non possono competere se non si muovono oltre la sola BI e adottano anche analisi avanzate. In effetti, il rapporto Magic Quadrant di Gartner prevede che entro il 2020 le organizzazioni che offrono "agli utenti l'accesso a un catalogo curato di dati interni ed esterni realizzeranno il doppio del valore aziendale dagli investimenti in analisi rispetto a quelli che non lo fanno". Howson aggiunge: “C'è bisogno di reporting, ma il reporting da solo non è sufficiente. Se stai solo facendo report, sei già indietro. A meno che i tuoi rapporti non siano intelligenti e agili, sei indietro. Sei un ritardatario. " Esempio di Dashboard: Grazie per aver letto l'articolo, commenta e condividilo !
- Che cosa è il Deep Learning (DL)
Mi dispiace iniziare con questa definizione ma ci tengo a smentire subito un mito sul Deep Learning, ossia quello che si può trovare su altri siti web. Gli attuali modelli di Deep Learning funzionano come i modelli di apprendimento del cervello Questa affermazione è totalmente priva di senso e non ha nessun supporto scientifico. D'altronde se ciò fosse vero saremmo in una situazione apocalittica. Facciamo un passo indietro. Dopo aver visto e capito cosa è il Machine Learning e come esso è suddiviso, possiamo andare ancora più affondo e concentrarci su una sotto-branca del ML, il Deep Learning. Per chi è alle prime armi inizierei con il dire che il deep learning è una famiglia di algoritmi, spesso e volentieri complessi, i quali basandosi sui concetti base delle reti neurali riescono a creare dei modelli matematici per fare previsioni o classificare dei dati nuovi. Fino a quì sembra molto simile al Machine Learning. La differenza sottile ma fondamentale tra Machine Learning e Deep Learning sta proprio nel termine Deep. Il termine "Deep Learning" in italiano viene tradotto come " apprendimento profondo" ma la qualifica "deep/profondo" non fa riferimento ad una comprensione più profonda, anche se ad oggi è la branca più avanzata dell'intelligenza artificiale, ma si riferisce all'idea di aggiungere un numero maggiore di 2/3 Layer (o Livelli di raffinazione dei dati) . Confuso? Gli algoritmi di Machine Learning che utilizzano reti neurali solitamente si basano su 3 Layer o Livelli : input elaborazione/hidden output Negli algoritmi di Deep Learning arriviamo ad avere anche alcune centinaia di Layer o Livelli Ti propongo una semplice animazione per comprendere meglio i "super-poteri " del deep learning. Ma proviamo a capire il motivo per il quale gli algoritmi di Deep Learning utilizzano un numero maggiore di Layer e quale sia il vantaggio nell'usare più Livelli se un problema potrebbe essere risolto anche con meno Livelli. Quando ci troviamo a dover analizzare un problema reale per arrivare alla costruzione di un modello in grado di classificare o stimare il nostro problema, prima del Deep Learning, la prima cosa che avremmo dovuto fare è la Feature Extraction. In altre parole ci saremmo messi noi a capire quali sono le variabili che riteniamo più importanti per stimare o classificare il nostro problema, solo dopo questo passaggio le avremmo passate al nostro algoritmo che costruiva il modello. Ma qui sorge un problema, se avessimo centinaia di variabili che noi reputiamo importanti ma in realtà ne basterebbero solo dieci per arrivare a classificare o stimare il nostro output oppure se ritenessimo che basterebbero dieci variabili ma ne servirebbero cento ? Questo è uno dei motivi fondamentali per il quale è nato il Deep Learning. La potenza del Deep Learning sta nella capacità di individuare in modo autonomo le variabili che influenzano il nostro output finale, eliminando quindi tutta la parte di Feature Extraction. L'eliminazione di questo passaggio in alcuni campi ha fatto una differenza ENORME. Pensa un attimo ai problemi della computer-vision ad esempio creare un algoritmo che sia in grado di classificare un immagine in base alla presenza o meno di un animale. Saresti capace di identificare tutte le variabili che potrebbero portare un algoritmo ad essere in grado di fare una tale classificazione? Grazie al Deep Learning ci basterebbe raccogliere un grande insieme di immagini, una buona parte con la presenza di animali e un altra parte senza la presenza di animali. Una volta pre-classificate le immagini e fatto allenare l'algoritmo di DL sulle nostre foto questo avrà creato un modello in grado di distinguere se in una nuova foto è presente o meno un animale. Grazie mille per la lettura, condividi l'articolo per sostenerci