{"id":1965,"date":"2022-10-24T09:25:43","date_gmt":"2022-10-24T09:25:43","guid":{"rendered":"http:\/\/architeles.pl\/ethics\/?p=1965"},"modified":"2023-01-11T10:29:52","modified_gmt":"2023-01-11T10:29:52","slug":"uczenie-nadzworowane-i-nienadzorowane-roznica-zastosowanie-mozliwosci-oraz-ograniczenia","status":"publish","type":"post","link":"https:\/\/architeles.eu\/ethics\/index.php\/2022\/10\/24\/uczenie-nadzworowane-i-nienadzorowane-roznica-zastosowanie-mozliwosci-oraz-ograniczenia\/","title":{"rendered":"Uczenie nadzworowane i nienadzorowane &#8211; r\u00f3\u017cnica, zastosowanie, mo\u017cliwo\u015bci oraz ograniczenia"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone wp-image-1970\" src=\"http:\/\/architeles.pl\/ethics\/wp-content\/uploads\/2022\/10\/kevin-ku-w7ZyuGYNpRQ-unsplash-300x225.jpg\" alt=\"\" width=\"817\" height=\"613\" srcset=\"https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/kevin-ku-w7ZyuGYNpRQ-unsplash-300x225.jpg 300w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/kevin-ku-w7ZyuGYNpRQ-unsplash-1024x768.jpg 1024w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/kevin-ku-w7ZyuGYNpRQ-unsplash-768x576.jpg 768w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/kevin-ku-w7ZyuGYNpRQ-unsplash-1536x1152.jpg 1536w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/kevin-ku-w7ZyuGYNpRQ-unsplash-2048x1536.jpg 2048w\" sizes=\"(max-width: 817px) 100vw, 817px\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-size: 8pt\">Zdj\u0119cie: https:\/\/unsplash.com\/photos\/w7ZyuGYNpRQ<\/span><\/p>\n<p><strong>W tym artykule zajmiemy si\u0119 podstawami uczenia maszynowego, oraz om\u00f3wimy jego r\u00f3\u017cne ga\u0142\u0119zie. Zastanowimy si\u0119 kiedy nale\u017cy skorzysta\u0107 z algorytmu uczenia nadzorowanego i nienadzorowanego, oraz przeanalizujemy ich mocne i s\u0142abe strony. <\/strong><!--more--><\/p>\n<p><strong><span style=\"font-size: 18pt\">Uczenie maszynowe &#8211; kilka s\u0142\u00f3w wprowadzenia<\/span><\/strong><\/p>\n<p>Istnieje wiele r\u00f3\u017cnych definicji uczenia maszynowego:<\/p>\n<blockquote><p>\u201cMachine learning is the study of computer algorithms that allow computer programs to automatically improve through experience. (Tom Mitchell, 1997)\u201d<\/p><\/blockquote>\n<blockquote><p>&#8222;The field of study that gives computers the ability to learn without being explicitly programmed. (Arthur Samuel, 1959)&#8221;<\/p><\/blockquote>\n<p>W skr\u00f3cie uczenie maszynowe jest to ga\u0142\u0105\u017a sztucznej inteligencji, gdzie systemy komputerowe s\u0105 w stanie uczy\u0107 si\u0119 oraz dostosowywa\u0107 wykorzystuj\u0105c algorytmy i modele statystyczne do analizowania i wyci\u0105gania wniosk\u00f3w danych. Wyr\u00f3\u017cniamy cztery g\u0142\u00f3wne rodzaje algorytm\u00f3w uczenia maszynowego:<\/p>\n<ul>\n<li>Nienadzorowane <em>(ang. Supervised Learning)<\/em><\/li>\n<li>Nadzorowane <em>(ang. Unsupervised Learning)<\/em><\/li>\n<li>Cz\u0119\u015bciowo Nadzorowane <em>(ang. Semi-supervised Learning)<\/em><\/li>\n<li>Ze wzmocnieniem <em>(ang. Reinforcement Learning)<\/em><\/li>\n<\/ul>\n<p>W tym po\u015bcie przyjrzymy si\u0119 dw\u00f3m pierwszym i wspomnimy o mniej popularnym uczeniu cz\u0119\u015bciowo nadzorowanym.<\/p>\n<p><strong><span style=\"font-size: 18pt\">Uczenie nadzorowane<\/span><\/strong><\/p>\n<p>Uczenie nadzorowane opiera si\u0119 o zbiory danych, gdzie mam zar\u00f3wno pr\u00f3bki <em>(ang.<\/em> Samples) oraz odpowiadaj\u0105ce im etykiety <em>(ang. Labels)<\/em>. Z takiego zbioru tworzymy matematyczny model, kt\u00f3ry podczas trenowania na wej\u015bciu otrzymuje dan\u0105 wej\u015bciow\u0105, czyli pr\u00f3bk\u0119, a na wyj\u015bciu odpowiadaj\u0105c\u0105 jej etykiet\u0119. Uczenie Nadzorowane mo\u017cna podzieli\u0107 na dwa g\u0142\u00f3wne typy:<\/p>\n<ul>\n<li><strong>Klasyfikacja<\/strong> &#8211; algorytm przypisuje dane wej\u015bciowe do jednej (lub wielu) z g\u00f3ry okre\u015blonych kategorii &#8211; etykiet, na podstawie wzorc\u00f3w, kt\u00f3rych uczy si\u0119 ze zbioru ucz\u0105cego. Najlepiej to zrozumie\u0107 na prostym przyk\u0142adzie. Powiedzmy, \u017ce chcemy zbudowa\u0107 klasyfikator, kt\u00f3ry na wej\u015bcie b\u0119dzie rozpoznawa\u0142 zdj\u0119cia kot\u00f3w. Nasz zbi\u00f3r danych wej\u015bciowych sk\u0142ada si\u0119 wtedy ze zdj\u0119\u0107, natomiast etykiety reprezentuj\u0105 fakt, czy na zdj\u0119ciu jest kot, czy te\u017c nie. Powiedzmy 1 &#8211; zdj\u0119cie kota i 0 &#8211; to nie jest zdj\u0119cie kota. Nasz model nast\u0119pnie na podstawie zaprezentowanych mu zdj\u0119\u0107 kota wyci\u0105gnie wnioski jakie w\u0142asno\u015bci musi mie\u0107 zdj\u0119cie, aby je zaklasyfikowa\u0107 jako kot (np. na zdj\u0119ciu musi by\u0107 zarys twarzy kota sk\u0142adaj\u0105cy si\u0119 z par oczu i szpiczastych uszu, lub wyra\u017any, puszysty ogon futrzaka). Poprawnie wytrenowany model jest w stanie generalizowa\u0107, czyli rozpoznawa\u0107 zdj\u0119cia kot\u00f3w, kt\u00f3rych wcze\u015bniej nie widzia\u0142.<\/li>\n<li><strong>Regresja<\/strong> &#8211; kolejny algorytm uczenia nadzorowanego. Metoda wykorzystuje algorytm do zrozumienia relacji mi\u0119dzy pr\u00f3bkami, a etykietami. Modele regresji liniowych s\u0105 przydatne do wyznaczania warto\u015bci liczbowych na podstawie danych. Przyk\u0142adem mo\u017ce by\u0107 pr\u00f3ba predykcji cen akcji na podstawie danych z przesz\u0142o\u015bci. W takim przypadku nasz zbi\u00f3r danych ucz\u0105cych sk\u0142ada si\u0119 na przyk\u0142ad z ceny akcji z ostatnich siedmiu dni &#8211; pr\u00f3bki, oraz ceny akcji z dnia dzisiejszego &#8211; etykiety. Podobnie jak w poprzednim przyk\u0142adzie, poprawnie skonstruowany model b\u0119dzie w stanie w pewnym stopniu poprawnie odwzorowywa\u0107 ceny akcji w rzeczywisto\u015bci.<\/li>\n<\/ul>\n<p>Poni\u017cej znajduje si\u0119 lista popularnych algorytm\u00f3w uczenia nadzorowanego. Nie b\u0119dziemy ich omawia\u0107, poniewa\u017c to wykracza poza za\u0142o\u017cenia tego artyku\u0142u. Dla zainteresowanych zamieszczamy jednak linki do obja\u015bnie\u0144 zasady dzia\u0142ania ka\u017cdego z nich.<\/p>\n<ol>\n<li><a href=\"https:\/\/medium.com\/swlh\/k-nearest-neighbor-ca2593d7a3c4\">K Najbli\u017cszych S\u0105siad\u00f3w <em>(ang. K-Nearest Neighbor &#8211; KNN)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/towardsdatascience.com\/https-medium-com-pupalerushikesh-svm-f4b42800e989\">Wektory No\u015bne <em>(ang. Support Vector Machine &#8211; SVM)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/analytics-vidhya\/understanding-the-linear-regression-808c1f6941c0\">Regresja Liniowa <em>(ang. Linear Regression)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/towardsdatascience.com\/beginners-guide-to-logistic-regression-eb1e9af717ae\">Regresja Logistyczna <em>(ang. Logistic Regression)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@srishtisawla\/linear-discriminant-analysis-d38decf48105\">Liniowa Analiza Dyskryminacyjna <em>(ang. Linear Discriminant Analysis &#8211; LDA)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/towardsdatascience.com\/decision-trees-explained-3ec41632ceb6\">Drzewa Decyzyjne <em>(ang. Decidion Trees)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@srishtisawla\/introduction-to-naive-bayes-for-classification-baefefb43a2d\">Naiwny Klasyfikator Bayesowski <em>(ang. Naive Bayes)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=aircAruvnKk\">Sieci Neuronowe <em>(ang. Neural Networks &#8211; NN) <\/em><\/a>\u00a0Tu akurat jest bardzo przyjemna seria na YouTubie<\/li>\n<\/ol>\n<p>Uczenie nadzorowane ma r\u00f3wnie\u017c swoje wady. Po pierwsze, tak jak wcze\u015bniej wspomnieli\u015bmy, wymagany jest zbi\u00f3r danych z przygotowanymi etykietami. W du\u017cej ilo\u015bci przypadk\u00f3w proces etykietowania jest mozolny i kosztowny na tyle, \u017ce istniej\u0105 specjalne firmy, kt\u00f3re zajmuj\u0105 si\u0119 dostarczaniem etykiet do danych. Sam proces obr\u00f3bki danych <em>(ang. pre-processing)<\/em> te\u017c mo\u017ce sprawi\u0107 wiele k\u0142opot\u00f3w. Bior\u0105c pod uwag\u0119 ogromn\u0105 ilo\u015b\u0107 nienadzorowanych danych (danych bez etykiet), kt\u00f3re nieustannie wszyscy generuj\u0105 swoja aktywno\u015bci\u0105 online, uczenie nadzorowane mo\u017ce si\u0119 wydawa\u0107 marnotrawieniem danych.<\/p>\n<p>Kolejne ograniczenie wynika z samego za\u0142o\u017cenia uczenia nadzorowanego. Jego celem jest wydobywanie i replikowanie relacji w istniej\u0105cych danych. Wynika to z twierdzenia o uniwersalnej aproksymacji, kt\u00f3re m\u00f3wi, \u017ce nawet jednowarstwowa sie\u0107 neuronowa jest w stanie aproksymowa\u0107 dowoln\u0105 funkcj\u0119 ci\u0105g\u0142\u0105 (jednak w praktyce nie dzia\u0142a to a\u017c tak dobrze). Oznacza to, \u017ce modele uczenia nadzorowanego s\u0105 na tyle &#8222;m\u0105dre&#8221;, na ile &#8222;m\u0105dry&#8221; jest zbi\u00f3r na kt\u00f3rym model si\u0119 uczy. Tworzy to pewne ograniczenie. Za\u0142\u00f3\u017cmy, \u017ce chcemy stworzy\u0107 model, kt\u00f3rego zadaniem b\u0119dzie gra w szachy, czyli po prostu budujemy silnik szachowy. Do tego zadania chcemy skorzysta\u0107 z uczenia nadzorowanego, czyli tworzymy zbi\u00f3r ucz\u0105cy sk\u0142adaj\u0105cy si\u0119 z zapisanych rozgrywek arcymistrz\u00f3w szachowych. Dan\u0105 wej\u015bciow\u0105 do naszego modelu b\u0119dzie stan planszy, a etykiet\u0105 nast\u0119pny optymalny ruch zawodnika. Po sesji treningowej nasz model w najlepszym przypadku b\u0119dzie gra\u0142 z dok\u0142adno\u015bci\u0105 najlepszego cz\u0142owieka. Jest to bariera, kt\u00f3rej nie mo\u017cemy pokona\u0107 korzystaj\u0105c z uczenia nadzorowanego.<\/p>\n<p>Podsumowuj\u0105c, uczenie nadzorowane polega na uog\u00f3lnianiu zwi\u0105zk\u00f3w w danych. Iluzja &#8222;inteligencji&#8221; jest tak na prawd\u0119 bardzo dobr\u0105 wyszukiwark\u0105 relacji w danych zar\u00f3wno liniowych jak i nieliniowych. Istnieje ograniczenie co do tego, jak dobrze algorytmy nadzorowane mog\u0105 wykonywa\u0107 swoje zadanie (100%). Modele uczenia nadzorowanego s\u0105 przeznaczone do jednego konkretnego zadania. Model s\u0142u\u017c\u0105cy do rozpoznawania na zdj\u0119ciach kot\u00f3w nie poradzi sobie z rozpoznawaniem innych obiekt\u00f3w na przyk\u0142ad ps\u00f3w.<\/p>\n<p><strong><span style=\"font-size: 18pt\">Uczenie nienadzorowane<\/span><\/strong><\/p>\n<p>Uczenie nienadzorowane, w przeciwie\u0144stwie do nadzorowanego, nie korzysta ze zbioru etykiet. Algorytmy i modele wykrywaj\u0105 ukryte wzorce w danych bez potrzeby interwencji cz\u0142owieka (st\u0105d nazwa \u201enienadzorowane\u201d). Algorytmy uczenia nienadzorowanego wykorzystuje si\u0119 do trzech g\u0142\u00f3wnych zada\u0144:<\/p>\n<ul>\n<li><b>Klastrowanie <\/b>&#8211; to technika do grupowania nieoznaczonych danych na podstawie ich podobie\u0144stw i r\u00f3\u017cnic. Algorytm dzieli dane na ustalon\u0105 wcze\u015bniej liczb\u0119 klastr\u00f3w w taki spos\u00f3b, \u017ce pr\u00f3bki w danej grupie s\u0105 do siebie podobne bardziej ni\u017c pr\u00f3bki w innych grupach. Klastrowanie znajduje zastosowanie w wielu dziedzinach, na przyk\u0142ad w wyszukiwarkach internetowych, gdzie grupuje si\u0119 wyniki wyszukiwania na podstawie podobie\u0144stw, a tym samym znacznie poprawa wydajno\u015b\u0107 wyszukiwania.<\/li>\n<li><strong>Metoda Asocjacyjna<\/strong> &#8211; wykorzystuje r\u00f3\u017cne regu\u0142y do \u200b\u200bznajdowania relacji mi\u0119dzy zmiennymi w danym zbiorze danych. Swoje zastosowanie znajduje w systemach rekomendacyjnych, gdzie \u0142\u0105czy si\u0119 w grupy rzeczy, kt\u00f3re cz\u0119sto u\u017cytkownicy kupuj\u0105 razem.<\/li>\n<li><strong>Redukcja Wymiarowo\u015bci<\/strong> &#8211; stosowana w przypadku, gdy dane wej\u015bciowe posiadaj\u0105 zbyt du\u017c\u0105 liczb\u0119 cech. Polega na zmniejszeniu liczby cech w danych, przy akceptowalnym uszczerbku na informacji przenoszonej w danych. Mniejsza ilo\u015b\u0107 danych wej\u015bciowych przyspiesza dzia\u0142anie algorytmu. Zjawisko zbyt du\u017cej ilo\u015bci cech w danych okre\u015bla si\u0119 mianem &#8222;Kl\u0105twy Wymiarowo\u015bci&#8221;. Jest to problem poniewa\u017c w przypadku, gdy dane maj\u0105 wi\u0119cej cech ni\u017c obserwacji, ryzykujemy silnym przeuczeniem modelu, co prowadzi do jego fatalnych wynik\u00f3w na danych, kt\u00f3rych jeszcze nie widzia\u0142. Innymi s\u0142owy, zamiast generalizowa\u0107, model zapami\u0119tuje odpowiedzi do danych.<\/li>\n<\/ul>\n<p>Podobnie jak w przypadku uczenia nadzorowanego poni\u017cej zamieszczamy list\u0119 algorytm\u00f3w, kt\u00f3ra opiera si\u0119 na uczeniu nienadzorowanym.<\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li><a href=\"https:\/\/medium.com\/@aptrishu\/understanding-principle-component-analysis-e32be0253ef0\">Analiza G\u0142\u00f3wnych Sk\u0142adowych <em>(ang. Principal Component Analysis &#8211; PCA)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/towardsdatascience.com\/k-means-clustering-an-introduction-9825ea998d1e\">Metoda K-\u015arednich <em>(ang. K-Means)<\/em><\/a><\/li>\n<li><a href=\"https:\/\/jonathan-hui.medium.com\/machine-learning-singular-value-decomposition-svd-principal-component-analysis-pca-1d45e885e491\">Rozk\u0142ad Wed\u0142ug Warto\u015bci Osobliwych <em>(ang. Singular Value Decomposition &#8211; SVD)<\/em><\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Jedn\u0105 z wad uczenia si\u0119 bez nadzoru jest to, \u017ce jest ono bardziej kosztowne ni\u017c w przypadku nauki z nadzorem, poniewa\u017c interpretacja wynik\u00f3w mo\u017ce wymaga\u0107 interwencji cz\u0142owieka, aby zrozumie\u0107 wzorce i skorelowa\u0107 je z wiedz\u0105 domenow\u0105 (mo\u017ce zdarzy\u0107 si\u0119 tak, \u017ce klastry uzyskane przez algorytm nie zawsze musz\u0105 mie\u0107 pokrycie z klasami rzeczywistymi). Uzyskane w ten spos\u00f3b wyniki mog\u0105 mie\u0107 mniejsz\u0105 dok\u0142adno\u015b\u0107 ni\u017c w przypadku uczenia nadzorowanego. Wynika to z tego, \u017ce dane wej\u015bciowe nie s\u0105 znane i nie s\u0105 z g\u00f3ry oznaczone przez ludzi. Oznacza to, \u017ce maszyna musi to zrobi\u0107 sama. Nie mo\u017cemy by\u0107 pewni poprawno\u015bci uzyskanych wynik\u00f3w, poniewa\u017c nie ma etykiety ani miernika wyj\u015bciowego potwierdzaj\u0105cego ich przydatno\u015b\u0107.<\/p>\n<p><strong><span style=\"font-size: 18pt\">Uczenie cz\u0119\u015bciowo nadzorowane<\/span><\/strong><\/p>\n<p>Na koniec chcieliby\u015bmy pokr\u00f3tce wspomnie\u0107 o uczeniu cz\u0119\u015bciowo nadzorowanym. Stosuje si\u0119 je w momencie, kiedy mamy do dyspozycji zbi\u00f3r danych, kt\u00f3ry tylko w pewnej cz\u0119\u015bci posiada etykiety. Tego typu problem jest wymagaj\u0105cy, poniewa\u017c ani algorytmy nadzorowane, ani nienadzorowane nie s\u0105 w stanie efektywnie wykorzysta\u0107 takiej kombinacji danych. Uczenie cz\u0119\u015bciowo nadzorowane polega na wykorzystaniu tej ma\u0142ej ilo\u015bci danych z etykiet\u0105 do wytworzenia etykiet dla reszty zbiory danych. Proces ten jest iteracyjny, gdzie model, kt\u00f3ry generuje etykiety staje si\u0119 coraz lepszy z ka\u017cd\u0105 kolejn\u0105 iteracj\u0105.<\/p>\n<p><strong><span style=\"font-size: 18pt\">Uczenie nienadzorowane &#8211; demo<\/span><\/strong><\/p>\n<p>W celu utrwalenia zdobytej wiedzy, zaprezentujemy r\u00f3wnie\u017c kr\u00f3tkie demo wykorzystania klasteryzacji w celu grupowania danych. Wygenerujemy grup\u0119 punkt\u00f3w w dwuwymiarowej przestrzeni, a nast\u0119pnie wykorzystamy podstawowy algorytm k-\u015brednich (k-means), w celu pogrupowania ich w klastry. Algorytm ten pr\u00f3buje podzieli\u0107 zbi\u00f3r danych na k roz\u0142\u0105cznych grup (klastr\u00f3w), tak aby punkty le\u017c\u0105ce w jednym klastrze znajdowa\u0142y si\u0119 jak najbli\u017cej siebie. Ca\u0142o\u015b\u0107 zosta\u0142a napisana w j\u0119zyku Python i wykorzystuje m.in. bibliotek\u0119 scikit-learn. Zacznijmy od zaimplementowania podstawowych modu\u0142\u00f3w i funkcji pomocniczych:<\/p>\n<p><code>from time import sleep<\/code><br \/>\n<code>from IPython.display import display, clear_output<\/code><br \/>\n<code>import matplotlib as mpl<\/code><br \/>\n<code>import matplotlib.pyplot as plt<\/code><br \/>\n<code>from matplotlib import lines<\/code><br \/>\n<code>import numpy as np<\/code><br \/>\n<code>import pandas as pd<\/code><br \/>\n<code>import plotly.express as px<\/code><br \/>\n<code>import seaborn as sns<\/code><br \/>\n<code>from sklearn.cluster import KMeans<\/code><br \/>\n<code>from sklearn.datasets import make_blobs # Datasets<\/code><\/p>\n<p><code># Colormap for moons<\/code><br \/>\n<code>RdYlBu = plt.get_cmap('RdYlBu')<\/code><\/p>\n<p><code>def show_scatter(data, prediction=None, centers=[]):<\/code><br \/>\n<code>if prediction is not None:<\/code><br \/>\n<code>plt.scatter(data[:, 0], data[:, 1], c=prediction, cmap=RdYlBu, alpha=0.5);<\/code><br \/>\n<code>else:<\/code><br \/>\n<code>plt.scatter(data[:,0], data[:,1])<\/code><br \/>\n<code>for center in centers:<\/code><br \/>\n<code>plt.scatter(center[0], center[1], marker=\"X\", s=300, color='red')<\/code><\/p>\n<p>W pierwszej kolejno\u015bci, przy u\u017cyciu funkcji make_blobs (https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.datasets.make_blobs.html), wygenerujmy i wy\u015bwietlmy dwuwymiarowy zbi\u00f3r danych zawieraj\u0105cy trzy klastry (centers = 3).<\/p>\n<p><code>X,y = make_blobs(centers=3, n_features = 2, n_samples=300, random_state=0, cluster_std=0.7)<br \/>\nprint('Samples\" \\n', X[:10])<br \/>\nprint('\\nLabels: \\n', y[:10])<br \/>\nshow_scatter(X)<\/code><\/p>\n<figure id=\"attachment_2066\" aria-describedby=\"caption-attachment-2066\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-2066 size-medium\" src=\"http:\/\/architeles.pl\/ethics\/wp-content\/uploads\/2022\/10\/clusters-300x203.png\" alt=\"\" width=\"300\" height=\"203\" srcset=\"https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/clusters-300x203.png 300w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/clusters-75x50.png 75w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/clusters.png 377w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-2066\" class=\"wp-caption-text\">Wygenerowane punkty &#8211; \u0142atwo mo\u017cna zauwa\u017cy\u0107 3 klastry<\/figcaption><\/figure>\n<p>Dzi\u0119ki odpowiednio dobranej warto\u015bci odchylenia standardowego (<code>cluster_std=0.7<\/code>), mo\u017cemy bez trudu dostrzec obecno\u015b\u0107 trzech klastr\u00f3w. Zobaczmy teraz dzia\u0142anie algorytmu k-means z biblioteki scikit-learnv:<\/p>\n<p><code>k = 3<\/code><br \/>\n<code>kmeans = KMeans(n_clusters=k)<\/code><br \/>\n<code>y_pred = kmeans.fit_predict(X)<\/code><br \/>\n<code>centers = kmeans.cluster_centers_<\/code><br \/>\n<code>print(kmeans.inertia_)<\/code><br \/>\n<code>show_scatter(X, y_pred, centers)<\/code><\/p>\n<figure id=\"attachment_2067\" aria-describedby=\"caption-attachment-2067\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"size-medium wp-image-2067\" src=\"http:\/\/architeles.pl\/ethics\/wp-content\/uploads\/2022\/10\/clusters_after-300x217.png\" alt=\"\" width=\"300\" height=\"217\" srcset=\"https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/clusters_after-300x217.png 300w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/clusters_after.png 451w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-2067\" class=\"wp-caption-text\">Punkty po klasteryzacji<\/figcaption><\/figure>\n<div class=\"text-top-div\">\n<div class=\"markdown\">\n<p>Nad wykresem wypisali\u015bmy r\u00f3wnie\u017c warto\u015b\u0107 kmeans.inertia_. Inertia mierzy, jak dobrze zestaw danych zosta\u0142 pogrupowany przez K-Means. Warto\u015b\u0107 ta jest sum\u0105 kwadrat\u00f3w odleg\u0142o\u015bci pr\u00f3bek do najbli\u017cszego \u015brodka skupie\u0144. Na koniec zaprezentujemy, jak zmienia si\u0119 wspomniana warto\u015b\u0107 w zale\u017cno\u015bci od liczby klastr\u00f3w k, dla wcze\u015bniej wygenerowanego zbioru danych.<\/p>\n<p><code>km_list = list()<\/code><\/p>\n<p><code>for k in range(1,10):<\/code><br \/>\n<code>km = KMeans(n_clusters=k)<\/code><br \/>\n<code>y_pred = km.fit(X)<\/code><br \/>\n<code>km_list.append(pd.Series({'clusters': k, <\/code><br \/>\n<code>'inertia': km.inertia_}))<\/code><\/p>\n<p><code>plot_data = (pd.concat(km_list, axis=1)<\/code><br \/>\n<code>.T<\/code><br \/>\n<code>[['clusters','inertia']]<\/code><br \/>\n<code>.set_index('clusters'))<\/code><\/p>\n<p><code>ax = plot_data.plot(marker='o',ls='-')<\/code><br \/>\n<code>ax.set_xticks(range(0,10,1))<\/code><br \/>\n<code>ax.set_xlim(0,10)<\/code><br \/>\n<code>ax.set(xlabel='Cluster', ylabel='Inertia');<\/code><\/p>\n<figure id=\"attachment_2068\" aria-describedby=\"caption-attachment-2068\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"size-medium wp-image-2068\" src=\"http:\/\/architeles.pl\/ethics\/wp-content\/uploads\/2022\/10\/interia-300x200.png\" alt=\"\" width=\"300\" height=\"200\" srcset=\"https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/interia-300x200.png 300w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/interia-75x50.png 75w, https:\/\/architeles.eu\/ethics\/wp-content\/uploads\/2022\/10\/interia.png 403w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-2068\" class=\"wp-caption-text\">Zmiana warto\u015bci interia w zale\u017cno\u015bci od liczby k<\/figcaption><\/figure>\n<\/div>\n<\/div>\n<p><strong><span style=\"font-size: 18pt\">\u0179r\u00f3d\u0142a<\/span><\/strong><\/p>\n<p>medium.com\/@raosrinivas2580\/supervised-versus-unsupervised-learning-8ef2b9411b81<\/p>\n<p>www.ibm.com\/cloud\/blog\/supervised-vs-unsupervised-learning<\/p>\n<p>towardsdatascience.com\/supervised-vs-unsupervised-machine-learning-ae895afc57f<\/p>\n<p>gowthamy.medium.com\/machine-learning-supervised-learning-vs-unsupervised-learning-f1658e12a780<\/p>\n<p>towardsdatascience.com\/what-is-machine-learning-and-types-of-machine-learning-andrews-machine-learning-part-1-9cd9755bc647<\/p>\n<p>medium.com\/analytics-vidhya\/the-severe-limitations-of-supervised-learning-are-piling-up-eca1ecf3e113<\/p>\n<p>https:\/\/towardsdatascience.com\/k-means-clustering-algorithm-applications-evaluation-methods-and-drawbacks-aa03e644b48a<\/p>\n<p>https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.datasets.make_blobs.html<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zdj\u0119cie: https:\/\/unsplash.com\/photos\/w7ZyuGYNpRQ W tym artykule zajmiemy si\u0119 podstawami uczenia maszynowego, oraz om\u00f3wimy jego r\u00f3\u017cne ga\u0142\u0119zie. Zastanowimy si\u0119 kiedy nale\u017cy skorzysta\u0107 z algorytmu uczenia nadzorowanego i nienadzorowanego, oraz przeanalizujemy ich mocne i s\u0142abe strony.<\/p>\n","protected":false},"author":87,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[185],"tags":[15,43,20],"class_list":["post-1965","post","type-post","status-publish","format-standard","hentry","category-uj-2022-23","tag-ai","tag-data-science","tag-sztuczna-inteligencja"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts\/1965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/comments?post=1965"}],"version-history":[{"count":8,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts\/1965\/revisions"}],"predecessor-version":[{"id":2071,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts\/1965\/revisions\/2071"}],"wp:attachment":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/media?parent=1965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/categories?post=1965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/tags?post=1965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}