Inhoudsopgave:
- Gelet op het psychometrische model
- Zoek naar verborgen factoren
- Componenten gebruiken, geen factoren
- Dimensie-reductie realiseren
Video: Software Testing Tutorials for Beginners 2024
Gegevenswetenschappers kunnen Python gebruiken om factor- en hoofdcomponentanalyse uit te voeren. SVD werkt rechtstreeks op de numerieke waarden in gegevens, maar u kunt ook gegevens uitdrukken als een relatie tussen variabelen. Elke functie heeft een zekere variatie. U kunt de variabiliteit berekenen als de variatiemaatstaf rond het gemiddelde. Hoe meer de variantie, hoe meer informatie er in de variabele zit.
Als u de variabele bovendien in een set plaatst, kunt u de variantie van twee variabelen vergelijken om te bepalen of ze correleren, wat een maat is voor hoe sterk ze dezelfde waarden hebben.
Door alle mogelijke correlaties van een variabele met de andere in de set te controleren, kunt u ontdekken dat u twee soorten variantie kunt hebben:
-
Unieke variantie: Sommige variantie is uniek voor de variabele die wordt onderzocht. Het kan niet worden geassocieerd met wat er met een andere variabele gebeurt.
-
Gedeelde variantie: Sommige variantie wordt gedeeld met een of meer andere variabelen, waardoor er redundantie in de gegevens ontstaat. Redundantie houdt in dat u dezelfde informatie kunt vinden, met enigszins verschillende waarden, in verschillende functies en bij vele waarnemingen.
Natuurlijk is de volgende stap het bepalen van de reden voor gedeelde variantie. Een poging om een dergelijke vraag te beantwoorden, en te bepalen hoe om te gaan met unieke en gedeelde varianties, leidde tot de creatie van analyse van factoren en hoofdcomponenten.
Gelet op het psychometrische model
Lang voordat veel computerleren-algoritmen werden bedacht, probeerde psychometrics , de discipline in de psychologie die zich bezighoudt met psychologische metingen, een statistische oplossing te vinden om effectief dimensies te meten in persoonlijkheid. De menselijke persoonlijkheid is, net als bij andere aspecten van de mens, niet direct meetbaar. Het is bijvoorbeeld niet mogelijk om precies te meten hoeveel een persoon introvert of intelligent is. Vragenlijsten en psychologische tests wijzen alleen op deze waarden.
Psychologen wisten van SVD en probeerden het op het probleem toe te passen. Gedeelde variantie trok hun aandacht: als sommige variabelen bijna hetzelfde zijn, zouden ze dezelfde oorzaak moeten hebben, dachten ze. Psychologen creëerden factoranalyse om deze taak uit te voeren! In plaats van SVD rechtstreeks op gegevens toe te passen, hebben ze het toegepast op een nieuw gemaakte matrix die de algemene variantie bijhoudt, in de hoop dat alle informatie wordt gecondenseerd en nieuwe handige functies worden hersteld, genaamd fa c torens .
Zoek naar verborgen factoren
Een goede manier om te laten zien hoe u factoranalyse gebruikt, is om te beginnen met de Iris-gegevensset.
van sklearn. datasets importeren load_iris van sklearn. decompositie import FactorAnalysis iris = load_iris () X, y = iris. data, iris. doelwitfactor = FactorAnalysis (n_components = 4, random_state = 101). fit (X)
Nadat de gegevens zijn geladen en alle voorspellende functies zijn opgeslagen, wordt de klasse FactorAnalysis geïnitialiseerd met een verzoek om naar vier factoren te zoeken. De gegevens worden vervolgens gepast. U kunt de resultaten verkennen door het kenmerk componenten_ te bekijken, dat een array retourneert met meetwaarden voor de relatie tussen de nieuw gemaakte factoren, in rijen geplaatst en de oorspronkelijke elementen in kolommen.
Op het snijpunt van elke factor en functie geeft een positief getal aan dat er een positieve verhouding tussen beide bestaat; een negatief getal wijst er in plaats daarvan op dat ze afwijken en dat de een het tegenovergestelde is van de ander.
U moet verschillende waarden van n_components testen, omdat het niet mogelijk is om te weten hoeveel factoren in de gegevens aanwezig zijn. Als het algoritme vereist is voor meer dan bestaande factoren, genereert het factoren met lage waarden in de array components_.
Panda's importeren als pd print pd. DataFrame (factorcomponenten_, kolommen = iris, functie-namen) kelklengte (cm) kelkbladbreedte (cm) bloembladlengte (cm) bloembladbreedte (cm) 0 0. 707227 -0. 153147 1. 653151 0. 701569 1 0. 114676 0. 159763 -0. 045604 -0. 014052 2 0. 000000 -0. 000000 -0. 000000 -0. 000000 3 -0. 000000 0. 000000 0. 000000 -0. 000000
In de test op de Iris-dataset, bijvoorbeeld, zouden de resulterende factoren maximaal 2, niet 4 moeten zijn, omdat slechts twee factoren significante verbindingen hebben met de originele kenmerken. U kunt deze twee factoren als nieuwe variabelen in uw project gebruiken, omdat ze een onzichtbare maar belangrijke functie weerspiegelen waarop de eerder beschikbare gegevens slechts een aanwijzing gaven.
Componenten gebruiken, geen factoren
Als een SVD met succes kan worden toegepast op de algemene variantie, vraagt u zich wellicht af waarom u deze niet op alle varianties kunt toepassen. Met behulp van een licht aangepaste startmatrix konden alle relaties in de gegevens op dezelfde manier worden gereduceerd en gecomprimeerd als hoe SVD het doet.
De resultaten van dit proces, die veel lijken op SVD, worden principal components analysis (PCA) genoemd. De nieuwe functies worden componenten genoemd. In tegenstelling tot factoren worden componenten niet beschreven als de hoofdoorzaak van de gegevensstructuur, maar zijn ze slechts geherstructureerde gegevens, zodat u ze kunt bekijken als een grote, slimme optelling van geselecteerde variabelen.
Voor toepassingen op het gebied van gegevenswetenschap lijken PCA en SVD op elkaar. PCA wordt echter niet beïnvloed door de schaal van de originele functies (omdat het werkt op correlatiemetingen die alle tussen -1 en +1 waarden zijn gebonden) en PCA richt zich op het opnieuw opbouwen van de relatie tussen de variabelen, en biedt dus verschillende resultaten van SVD aan.
Dimensie-reductie realiseren
De procedure voor het verkrijgen van een PCA is vrij gelijkaardig aan de factoranalyse.Het verschil is dat u niet het aantal te extraheren componenten opgeeft. U bepaalt later hoeveel componenten u moet bewaren na het controleren van het explain_variance_ratio_ attribuut, dat kwantificering van de informatieve waarde van elk geëxtraheerd onderdeel oplevert. In het volgende voorbeeld ziet u hoe u deze taak uitvoert:
van sklearn. decompositie import PCA import panda's als pd pca = PCA (). fit (X) afdrukken 'Verklaarde variantie per component:% s'% pca. explain_variance_ratio_ print pd. DataFrame (pca. Components_, columns = iris. Feature_names) Uitleg van variantie per component: [0. 92461621 0. 05301557 0. 01718514 0. 00518309] kelklengte (cm) kelkbladbreedte (cm) bloembladlengte (cm) bloembladbreedte (cm) 0 0. 361590 -0. 082269 0. 856572 0. 358844 1 -0. 656540 -0. 729712 0. 175767 0. 074706 2 0. 580997 -0. 596418 -0. 072524 -0. 549061 3 0. 317255 -0. 324094 -0. 479719 0. 751121
In deze decompositie van de Iris-gegevensset geeft de vectorarray van explain_variance_ratio_ aan dat de meeste informatie is geconcentreerd in de eerste component (92,5 procent). Het is daarom mogelijk om de volledige dataset terug te brengen tot slechts twee componenten, waardoor er minder ruis en overtollige informatie uit de oorspronkelijke dataset komt.