{"id":37955,"date":"2019-10-31T22:20:47","date_gmt":"2019-10-31T19:20:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/linejnaya-regressiya-i-metody-eyo-vosstanovleniya\/"},"modified":"2019-10-31T22:20:47","modified_gmt":"2019-10-31T19:20:47","slug":"linejnaya-regressiya-i-metody-eyo-vosstanovleniya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/linejnaya-regressiya-i-metody-eyo-vosstanovleniya","title":{"rendered":"Regressione lineare e metodi per il suo ripristino","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/60ca67872405e9f15b151e958f04260d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fonte: <noindex><a rel=\"nofollow\" href=\"https:\/\/xkcd.com\/1725\/\">xkcd<\/a><\/noindex><\/i><\/p>\n<p>La regressione lineare \u00e8 uno degli algoritmi di base per molte aree legate all'analisi dei dati. La ragione \u00e8 evidente. \u00c8 un algoritmo molto semplice e comprensibile, che ne favorisce un ampio utilizzo da decenni, se non secoli. L'idea \u00e8 che supponiamo un rapporto lineare tra una variabile e un insieme di altre variabili, e poi cerchiamo di ricostruire questo rapporto.<\/p>\n<p>Ma in questo articolo non parleremo dell'applicazione della regressione lineare per risolvere problemi pratici. Qui verranno considerate caratteristiche interessanti della realizzazione di algoritmi distribuiti per il suo ripristino, con cui ci siamo trovati ad affrontare durante la scrittura del modulo di apprendimento automatico in <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. Un po' di matematica di base, fondamenti di apprendimento automatico e calcolo distribuito aiutano a capire come ripristinare la regressione lineare, anche se i dati sono distribuiti tra migliaia di nodi.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Di cosa si tratta?<\/h3>\n<p>\nCi troviamo di fronte al problema di ripristinare una dipendenza lineare. Come dati di input viene fornito un insieme di vettori di variabili presumibilmente indipendenti, a ciascuno dei quali viene associato un certo valore di una variabile dipendente. Questi dati possono essere rappresentati come due matrici:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/2ffbdd09fdc5efaf287fbb4935033302.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nOra, dato che si presume una dipendenza, e in pi\u00f9 lineare, scriviamo la nostra supposizione come un prodotto di matrici (per semplificare l'annotazione si presume qui e in seguito che il termine indipendente dell'equazione sia nascosto da <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/21e90cb829e0bc2e12c836f7810c1b1a.png\" style=\"display:block;margin: 0 auto;\" \/>, e l'ultima colonna della matrice <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/25c0af2e153ae371e71588efe3bc2ee2.png\" style=\"display:block;margin: 0 auto;\" \/> contiene degli zeri):<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/b1c3c8d2332ae27eedeef675178dee4f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nAssomiglia molto a un sistema di equazioni lineari, vero? S\u00ec, ma \u00e8 probabile che questo sistema non abbia soluzioni. La ragione \u00e8 il rumore, che \u00e8 presente praticamente in qualsiasi dato reale. Inoltre, una causa pu\u00f2 essere l'assenza di una dipendenza lineare in s\u00e9, che si potrebbe cercare di mitigare introducendo variabili aggiuntive che dipendono non linearmente da quelle originali. Consideriamo il seguente esempio:<br \/>\n<img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/d449b8f931e91cc7b33634ee8d4a4329.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fonte: <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Linear_regression\">Wikipedia<\/a><\/noindex><\/i><\/p>\n<p>Questo \u00e8 un semplice esempio di regressione lineare, che dimostra la dipendenza di una variabile (sull'asse <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/fdea97dff413fb13444d7fd8ab65ca0b.png\" style=\"display:block;margin: 0 auto;\" \/>) da un'altra variabile (sull'asse <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/edf9cb265e4e4655cd84fb8739843952.png\" style=\"display:block;margin: 0 auto;\" \/>). Affinch\u00e9 il sistema di equazioni lineari corrispondente a questo esempio abbia una soluzione, tutti i punti devono trovarsi esattamente su una linea retta. Ma non \u00e8 cos\u00ec. E non si trovano su una linea retta proprio a causa del rumore (o perch\u00e9 l'ipotesi di una dipendenza lineare era errata). Pertanto, per ripristinare la dipendenza lineare dai dati reali \u00e8 solitamente necessario introdurre un'altra ipotesi: i dati in ingresso contengono rumore e questo rumore ha <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Normal_distribution\">una distribuzione normale<\/a><\/noindex>. Si possono fare ipotesi anche su altri tipi di distribuzione del rumore, ma nella stragrande maggioranza dei casi si considera proprio la distribuzione normale, di cui parleremo in seguito.<\/p>\n<h3>Il metodo della massima verosimiglianza<\/h3>\n<p>\n. Dunque, abbiamo ipotizzato la presenza di un rumore casuale distribuito normalmente. Cosa fare in questa situazione? A tal fine, in matematica esiste e viene ampiamente utilizzato <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Maximum_likelihood_estimation\">il metodo della massima verosimiglianza<\/a><\/noindex>. In sintesi, consiste nella scelta <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Likelihood_function\">della funzione di verosimiglianza<\/a><\/noindex> e nella successiva massimizzazione.<\/p>\n<p>Torniamo al ripristino della dipendenza lineare dai dati con rumore normale. Notiamo che la dipendenza lineare prevista \u00e8 una media matematica <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/73cd24a6605bce1a4f38339ee8c61613.png\" style=\"display:block;margin: 0 auto;\" \/> della distribuzione normale presente. Allo stesso tempo, la probabilit\u00e0 che <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/caaf32b1af58d748244acbab640bbab8.png\" style=\"display:block;margin: 0 auto;\" \/> assuma un certo valore, a condizione della presenza di osservazioni <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/9cda87721bba4812b7cec96f204ff5f6.png\" style=\"display:block;margin: 0 auto;\" \/>, si presenta nel seguente modo:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/7acbd6bff263d52773617904d3249a96.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nOra sostituiamo <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/d5a167a87fa416e938678b2a80b353dc.png\" style=\"display:block;margin: 0 auto;\" \/> e <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/330ad17be2629a5159b513ba95a96c72.png\" style=\"display:block;margin: 0 auto;\" \/> le variabili che ci servono:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/57531f93ee0d0050b1fbfc64419f44ad.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nResta solo trovare il vettore <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/801ebcd43ae0bc0cf54bc0f68bdc21da.png\" style=\"display:block;margin: 0 auto;\" \/>, per il quale questa probabilit\u00e0 \u00e8 massima. Per massimizzare tale funzione \u00e8 conveniente prima logaritmizzarla (il logaritmo della funzione raggiunger\u00e0 il massimo nello stesso punto in cui si trova la funzione stessa):<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/7485448a44f8ee201254fea4208deb54.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nCi\u00f2 si riduce, a sua volta, a minimizzare la seguente funzione:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/0957864e5dfbfc1147c24784df67af20.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nA proposito, questo \u00e8 chiamato metodo <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Linear_least_squares\">dei minimi quadrati<\/a><\/noindex>. Spesso tutte le considerazioni sopra riportate vengono omesse e si utilizza semplicemente questo metodo.<\/p>\n<h3>Scomposizione QR<\/h3>\n<p>\nIl minimo della funzione sopra riportata pu\u00f2 essere trovato se si trova il punto in cui il gradiente di questa funzione \u00e8 nullo. E il gradiente sar\u00e0 scritto nel seguente modo:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/1581c46f8fa625826ae2f76ec561dc3f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/QR_decomposition\">Scomposizione QR<\/a><\/noindex> \u00e8 un metodo matrice per risolvere il problema di minimizzazione utilizzato nel metodo dei minimi quadrati. Pertanto, riscriviamo l'equazione in forma matriciale:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/4ee809a96550577df855fbd57049a41c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nPertanto, scomponiamo la matrice <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/2fa2b32bef5246132da5b3b9bc713ab5.png\" style=\"display:block;margin: 0 auto;\" \/> in matrici <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/fd8c620c602ae49e8d6e39ef8b551d0b.png\" style=\"display:block;margin: 0 auto;\" \/> e <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/32804631a9a2f8bff35d0bcf7c29bfc6.png\" style=\"display:block;margin: 0 auto;\" \/> e svolgiamo una serie di trasformazioni (l'algoritmo di fattorizzazione QR non verr\u00e0 considerato qui, soltanto il suo utilizzo rispetto al compito assegnato):<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/56cfb4ed9126e632cba51940c0d9afe6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nMatrice <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/106bb4d6704eb9f42078555c662a8b97.png\" style=\"display:block;margin: 0 auto;\" \/> \u00e8 ortogonale. Questo ci consente di liberarci dal prodotto <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/618077c012f7b81f23756b9c1e54eb73.png\" style=\"display:block;margin: 0 auto;\" \/>:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/1715fb2e77d8be75e68e4791997aaa44.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nE se sostituiamo <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/926c51120ec8608bf81dc8f36fcc3ef4.png\" style=\"display:block;margin: 0 auto;\" \/> in <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/9e578153ea2dc36d0eb86be4eedf4899.png\" style=\"display:block;margin: 0 auto;\" \/>, otteniamo <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/8cd914db7317c01dc5449c70b36dba73.png\" style=\"display:block;margin: 0 auto;\" \/>. Considerando che <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/88fa4e81fc2bedf16e41e90e320a5647.png\" style=\"display:block;margin: 0 auto;\" \/> \u00e8 una matrice triangolare superiore, appare nel modo seguente:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/689eaaece2a497c5bd02582e3e672a41.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nQuesto pu\u00f2 essere risolto con il metodo di sostituzione. L'elemento <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/e163597c97a539238731c31ca5ce011b.png\" style=\"display:block;margin: 0 auto;\" \/> si trova come <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/211d86418c9a38f164f490b1a7b5fb71.png\" style=\"display:block;margin: 0 auto;\" \/>, l'elemento precedente <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/ed3742b3a7cfb14bad801485a8cf01df.png\" style=\"display:block;margin: 0 auto;\" \/> si trova come <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/b3e582f565e1060b47af4008a98c3524.png\" style=\"display:block;margin: 0 auto;\" \/> e cos\u00ec via.<\/p>\n<p>Qui vale la pena notare che la complessit\u00e0 dell'algoritmo risultante grazie all'uso della fattorizzazione QR \u00e8 pari a <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/c5c20145b7b165120d9979c2e2ca4711.png\" style=\"display:block;margin: 0 auto;\" \/>. Tuttavia, nonostante l'operazione di moltiplicazione delle matrici si presti bene alla parallelizzazione, scrivere una versione distribuita efficace di questo algoritmo non sembra possibile.<\/p>\n<h3>Discesa del gradiente<\/h3>\n<p>\nParlando della minimizzazione di una certa funzione, \u00e8 sempre utile ricordare il metodo (stocastico) del gradiente discendente. Questo \u00e8 un metodo semplice ed efficace per la minimizzazione, basato sul calcolo iterativo del gradiente della funzione in un punto e sul successivo spostamento nella direzione opposta al gradiente. Ogni passo di questo tipo avvicina la soluzione al minimo. Il gradiente assume ancora la stessa forma:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/d195806787197323312be7c0b9d8b240.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Inoltre, questo metodo si presta bene alla parallelizzazione e distribuzione grazie alle propriet\u00e0 lineari dell'operatore gradiente. Notiamo che nella formula sopra riportata, sotto il segno di sommatoria ci sono termini indipendenti. In altre parole, possiamo calcolare il gradiente in modo indipendente per tutti gli indici <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/0c10d574f70b318b6562fb444e460fa7.png\" style=\"display:block;margin: 0 auto;\" \/> da uno fino a <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/c9b39d76c5f724af137b5db3053e1a60.png\" style=\"display:block;margin: 0 auto;\" \/>, parallelamente, calcolare il gradiente per gli indici da <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/1a9407fcb4ec67a171463d36dca30a80.png\" style=\"display:block;margin: 0 auto;\" \/> fino a <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/f1e29c5b16d68d6377108f53803a9cd0.png\" style=\"display:block;margin: 0 auto;\" \/>. Poi sommare i gradienti risultanti. Il risultato della somma sar\u00e0 lo stesso di se avessimo calcolato il gradiente per gli indici da uno fino a <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/c5ec5004c59a5343f22894ef676606e3.png\" style=\"display:block;margin: 0 auto;\" \/>. Pertanto, se i dati sono distribuiti tra pi\u00f9 parti, il gradiente pu\u00f2 essere calcolato indipendentemente su ciascuna parte, e poi i risultati di questi calcoli possono essere sommati per ottenere il risultato finale:<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/073ce5e3a6688e3a1ae7774aaff1a843.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dal punto di vista dell'implementazione, ci\u00f2 rientra nella paradigmatica <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/MapReduce\">MapReduce<\/a><\/noindex>. In ogni fase del gradiente discendente, a ciascun nodo di dati viene assegnato un compito per calcolare il gradiente, quindi i gradienti calcolati vengono raccolti insieme e il risultato della loro somma viene utilizzato per migliorare il risultato.<\/p>\n<p>Nonostante la semplicit\u00e0 di implementazione e la possibilit\u00e0 di esecuzione nella paradigmi MapReduce, il gradiente discendente presenta anche i suoi svantaggi. In particolare, il numero di passi necessari per raggiungere la convergenza \u00e8 significativamente maggiore rispetto ad altri metodi pi\u00f9 specializzati.<\/p>\n<h3>LSQR<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/web.stanford.edu\/group\/SOL\/software\/lsqr\/\">LSQR<\/a><\/noindex> \u00e8 un altro metodo per risolvere il compito assegnato, adatto sia per la ricostruzione della regressione lineare che per la risoluzione di sistemi di equazioni lineari. La sua principale caratteristica \u00e8 che combina i vantaggi dei metodi matriciali con l'approccio iterativo. Le implementazioni di questo metodo possono essere trovate sia nella libreria <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.scipy.org\/doc\/scipy-0.14.0\/reference\/generated\/scipy.sparse.linalg.lsqr.html\">SciPy<\/a><\/noindex>, sia in <noindex><a rel=\"nofollow\" href=\"http:\/\/matlab.izmiran.ru\/help\/techdoc\/ref\/lsqr.html\">MATLAB<\/a><\/noindex>. Non verr\u00e0 fornita qui la descrizione di questo metodo (puoi trovarla nell'articolo <noindex><a rel=\"nofollow\" href=\"https:\/\/web.stanford.edu\/group\/SOL\/software\/lsqr\/lsqr-toms82a.pdf\">LSQR: An algorithm for sparse linear equations and sparse least squares<\/a><\/noindex>). Invece, verr\u00e0 dimostrato un approccio che consente di adattare LSQR per l'esecuzione in un ambiente distribuito.<\/p>\n<p>Alla base del metodo LSQR c'\u00e8 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.netlib.org\/utk\/people\/JackDongarra\/etemplates\/node198.html\">una procedura di bidiagonalizzazione<\/a><\/noindex>. Questa \u00e8 una procedura iterativa, ogni iterazione consiste nei seguenti passaggi:<br \/>\n<img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/3c2f7b5c6f57830e9b522023a8e72a48.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMa se assumiamo che la matrice <img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/e86c3c422629b78bc574f66db8a6139d.png\" style=\"display:block;margin: 0 auto;\" \/> sia partizionata orizzontalmente, allora ogni iterazione pu\u00f2 essere rappresentata come due passaggi MapReduce. In questo modo si riesce a minimizzare il passaggio di dati durante ciascuna delle iterazioni (solo vettori di lunghezza pari al numero di incognite):<\/p>\n<p><img decoding=\"async\" alt=\"Regressione lineare e metodi per il suo ripristino\" src=\"\/wp-content\/uploads\/2019\/09\/6b67654b29ed24283c4b04d66c05ea5c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProprio questo approccio viene utilizzato nell'implementazione della regressione lineare in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apache\/ignite\/blob\/master\/modules\/ml\/src\/main\/java\/org\/apache\/ignite\/ml\/math\/isolve\/lsqr\/AbstractLSQR.java\">Apache Ignite ML<\/a><\/noindex>.<\/p>\n<h3>Conclusione<\/h3>\n<p>\nEsistono molti algoritmi per la ricostruzione della regressione lineare, ma non tutti possono essere applicati in qualsiasi condizione. Ad esempio, la decomposizione QR \u00e8 ottima per risolvere con precisione su piccole masse di dati. Il gradiente discendente si implementa facilmente e consente di trovare rapidamente una soluzione approssimata. LSQR, d'altra parte, combina le migliori caratteristiche dei due algoritmi precedenti, poich\u00e9 pu\u00f2 essere distribuito, converge pi\u00f9 rapidamente rispetto al gradiente discendente e consente anche un arresto anticipato dell'algoritmo, a differenza della decomposizione QR per la ricerca di soluzioni approssimate.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465743\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: xkcd \u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u043c\u0443 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0447\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0433\u043e \u0448\u0438\u0440\u043e\u043a\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u043e\u0442\u043d\u0438, \u043b\u0435\u0442. \u0418\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0442 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28483,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37955","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a:\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/linejnaya-regressiya-i-metody-eyo-vosstanovleniya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0435\u0451 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a:\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/linejnaya-regressiya-i-metody-eyo-vosstanovleniya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:20:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:20:47+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Regressione lineare e metodi per la sua ricostruzione | ProHoster","description":"Fonte:","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/linejnaya-regressiya-i-metody-eyo-vosstanovleniya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0435\u0451 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f | ProHoster","og:description":"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a:","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/linejnaya-regressiya-i-metody-eyo-vosstanovleniya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:20:47+00:00","article:modified_time":"2019-10-31T19:20:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37955","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 19:55:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:17:23","updated":"2026-01-23 19:55:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37955"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37955\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28483"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}