Kurs Analityka Big DataBig Data

Wprowadzenie



KROK 1

Wprowadzenie do Big Data Analytics

CO TO JEST BIG DATA?

Big Data to dowolna duża ilość danych ustrukturyzowanych, częściowo ustrukturyzowanych i nieustrukturyzowanych, które mogą zostać wydobyte w celu uzyskania informacji, w których indywidualne rekordy przestają mieć znaczenie i tylko agregują je. Dane stają się Big Data, gdy przetwarzanie ich przy użyciu tradycyjnych technik jest trudne.

CHARAKTERYSTYKA BIG DATA:

Istnieje wiele cech Big Data. Omówmy kilka tutaj.

1. Objętość: duże zbiory danych oznaczają ogromne ilości danych generowanych przez czujniki, maszyny połączone z eksplozją internetu, media społecznościowe, handel elektroniczny, urządzenia GPS itp.

2. Prędkość: implikuje szybkość, z jaką napływają dane, tak jak użytkownicy Facebooka generują 3 miliony polubień dziennie, a użytkownicy tworzą około 450 milionów tweetów dziennie.

3. Różnorodność: sugeruje rodzaj formatów i można je podzielić na 3 typy:

- Strukturalne - RDBMS, takie jak Oracle, MySQL, starsze systemy, takie jak Excel, Access

- Półustrukturyzowane - e-maile, tweety, pliki dziennika, opinie użytkowników

- Nieustrukturyzowane - zdjęcia, wideo, pliki audio.

4. Wiarygodność: Odnosi się do stronniczości, szumu i nieprawidłowości w danych. Jeśli chcemy uzyskać znaczący wgląd w te dane, musimy je wstępnie oczyścić.

5. Ważność: Odnosi się do adekwatności i precyzji danych, ponieważ ważność danych jest bardzo ważna przy podejmowaniu decyzji.

6. Zmienność: Odnosi się do tego, jak długo dane są ważne, ponieważ dane, które są obecnie aktualne, mogą nie być ważne zaledwie kilka minut lub dni później.

DLACZEGO BIG DATA JEST WAŻNE?

Sukces organizacji polega nie tylko na tym, jak dobrze radzi sobie w prowadzeniu działalności, ale także na tym, jak dobrze może analizować swoje dane i uzyskiwać wgląd w swoją firmę, konkurentów itp. Duże zbiory danych mogą pomóc ci w podjęciu właściwej decyzji we właściwej decyzji czas. Dlaczego nie RDBMS? Skalowalność jest głównym problemem w RDBMS, bardzo trudno jest zarządzać RDBMS, gdy zmieniają się wymagania lub liczba użytkowników. Kolejny problem z RDBMS polega na tym, że musimy zdecydować o strukturze bazy danych na początku, a późniejsze wprowadzanie jakichkolwiek zmian może być ogromnym zadaniem. W przypadku dużych zbiorów danych potrzebujemy elastyczności i niestety RDBMS nie może tego zapewnić.

TERMINOLOGIA ANALITYCZNA

Analityka to jedno z niewielu pól, w którym wiele różnych terminów jest rozpowszechnianych przez wszystkich i wiele z nich brzmi podobnie, ale są one używane w różnych kontekstach. Niektóre terminy brzmią bardzo odmiennie, ale są podobne i można je stosować zamiennie. Ktoś, kto nie zna się na Analityce, spodziewał się pomylić z bogactwem terminologii dostępnej w tej dziedzinie. Analityka to proces dzielenia problemu na prostsze części i korzystania z wnioskowania na podstawie danych w celu podejmowania decyzji. Analityka nie jest narzędziem ani technologią, a raczej sposobem myślenia i działania. Business Analytics określa zastosowanie Analityki w sferze biznesu. Obejmuje analizę marketingową, analizę ryzyka, analizę oszustw, analizę CRM, analizę lojalności, analizę operacji, a także analizę HR. W ramach działalności Analityka jest wykorzystywana we wszystkich branżach, takich jak analityka finansowa, analityka zdrowotna, analityka detaliczna, analityka telekomunikacyjna, analityka internetowa. Analityka predykcyjna zyskała na popularności w ostatnich latach vs. retrospektywna natura, taka jak OLAP i BI, Analiza opisowa polega na opisywaniu lub eksploracji dowolnego rodzaju danych. Eksploracja i przygotowanie danych jest niezbędne, aby w dużym stopniu polegać na analizie opisowej. Big Data Analytics to nowy termin używany do analizy nieustrukturyzowanych danych i dużych danych, takich jak terabajty, a nawet petabajty danych. Big Data to dowolny zestaw danych które nie mogą być analizowane za pomocą konwencjonalnych narzędzi.

RODZAJE ANALITYKI

Analitykę można zastosować do tak wielu problemów i w wielu różnych branżach, że ważne jest, aby poświęcić trochę czasu na zrozumienie zakresu analiz w biznesie. Przyjrzymy się bliżej 3 szerokim klasyfikacjom analitycznym: 1. W oparciu o branżę. 2. W oparciu o funkcję biznesową. 3. W oparciu o rodzaj oferowanych spostrzeżeń. Zacznijmy od spojrzenia na branże, w których wykorzystanie analizy jest bardzo powszechne. Istnieją pewne branże, które zawsze tworzyły ogromną ilość danych, takie jak karty kredytowe i towary konsumpcyjne. Branże te były jednymi z pierwszych, które wprowadziły analizy. Analityka jest często klasyfikowana na podstawie branży, do której jest stosowana, dlatego usłyszysz takie terminy, jak analizy ubezpieczeniowe, analizy detaliczne, analityka internetowa i tak dalej. Możemy nawet sklasyfikować analitykę na podstawie funkcji biznesowej, w której jest używana. Klasyfikacja analityki na podstawie funkcji biznesowej i wpływu wygląda następująco:

- Analityka marketingowa

- Analizy sprzedaży i HR

- Analizy łańcucha dostaw i tak dalej

Może to być dość długa lista, ponieważ analiza ma wpływ na praktycznie każdą działalność biznesową w dużej organizacji. Ale najbardziej popularny sposób klasyfikowania analiz opiera się na tym, co pozwala nam to zrobić. Wszystkie informacje są gromadzone dla różnych branż i różnych działów. Wszystko, co musimy zrobić, to kroić i kroić dane na różne sposoby, być może patrząc na nie pod różnymi kątami lub wzdłuż różnych wymiarów itp. Jak widać analiza opisowa jest prawdopodobnie najprostszym rodzajem analizy, ponieważ wykorzystuje istniejące informacje z przeszłości, aby zrozumieć decyzje w teraźniejszości i miejmy nadzieję, że pomoże zdecydować o skutecznym źródle działania w przyszłości. Jednak ze względu na względną łatwość zrozumienia i opisową analizę analityczną często uważano za stonowanego bliźniaka analityki. Ale jest również niezwykle potężna pod względem potencjału i w większości sytuacji biznesowych, analiza opisowa może pomóc rozwiązać większość problemów. Detaliści są bardzo zainteresowani zrozumieniem relacji między produktami. Chcą wiedzieć, czy dana osoba kupuje produkt A, czy prawdopodobnie kupuje również produkt B lub produkt C. Nazywa się to analizą powinowactwa produktu lub analizą skojarzeń i jest powszechnie stosowane w branży detalicznej. Nazywa się to również analizą koszyka rynkowego i jest używane w odniesieniu do zestawu technik, które można zastosować do analizy koszyka zakupów lub transakcji. Czy zastanawiałeś się kiedyś, dlaczego mleko jest umieszczane z tyłu sklepu, a magazyny i guma do żucia znajdują się przy kasie? Wynika to z faktu, że za pośrednictwem detalistów analitycznych zdajesz sobie sprawę, że podczas podróży na tył sklepu, aby odebrać niezbędne rzeczy, możesz po prostu pokusić się o coś innego, a także dlatego, że czasopisma i guma do żucia są tanimi zakupami impulsowymi. Postanawiasz wrzucić je do koszyka, ponieważ nie są zbyt drogie i prawdopodobnie patrzyłeś na nie, czekając w kolejce przy kasie. Analiza predykcyjna działa poprzez identyfikację wzorców i danych historycznych, a następnie użycie statystyki, aby wyciągać wnioski na temat przyszłości. Na bardzo uproszczonym poziomie staramy się dopasować dane do określonego wzorca, a jeśli uważamy, że dane są zgodne z określonym wzorcem, możemy przewidzieć, co stanie się w przyszłości. Spójrzmy na inny przykład dotyczący analizy predykcyjnej w branży telekomunikacyjnej. Duża firma telekomunikacyjna ma dostęp do wszelkiego rodzaju informacji o nawykach telefonicznych klienta:

- Ile czasu spędzają na telefonie?

-Ile połączeń międzynarodowych wykonują?

- Czy wolą numery SMS lub połączenia poza swoim miastem?

Jest to informacja, którą można uzyskać wyłącznie poprzez obserwację lub analizę opisową. Ale takie firmy, co ważniejsze, chciałyby wiedzieć, którzy klienci planują odejść i nawiązać nowe połączenie ze swoimi konkurentami. Wykorzysta tu informacje historyczne, ale w celu uzyskania wyników wykorzysta modelowanie i analizę predykcyjną. To jest analiza predykcyjna. Chociaż analiza opisowa jest bardzo potężnym narzędziem nadal daje nam informacje tylko o przeszłości, podczas gdy w rzeczywistości główną troską większości użytkowników zawsze będzie przyszłość. Właściciel hotelu chciałby przewidzieć, ile jego pokoi będzie zajmowanych w przyszłym tygodniu. Dyrektor generalny firmy Pharma będzie chciał wiedzieć, który z jego testowanych leków najprawdopodobniej odniesie sukces. W tym przypadku analizy predykcyjne są o wiele bardziej przydatne. Oprócz tych narzędzi istnieje trzeci rodzaj analiz, który powstał bardzo niedawno, być może zaledwie dziesięć lat temu. Nazywa się to analizą nakazową. Analizy preskryptywne wykraczają poza analitykę predykcyjną, mówiąc nie tylko o tym, co się dzieje, ale także o tym, co może się wydarzyć, a co najważniejsze, co z tym zrobić. Może również informować o wpływie tych decyzji, co sprawia, że analiza nakazowa jest tak nowoczesna. Domeny biznesowe, które są świetnymi przykładami, w których można zastosować nakazową analizę, to przemysł lotniczy lub ogólnokrajowe sieci drogowe. Preskryptywne analizy mogą przewidzieć skutecznie korygujące wąskie gardła na drogach lub zidentyfikować drogi, na których można wprowadzić opłaty za przejazd w celu usprawnienia ruchu. Aby zobaczyć, jak funkcjonuje analiza nakazowa w branży lotniczej, spójrzmy na następujący przykład. Linie lotnicze zawsze szukają sposobów na optymalizację swoich tras w celu uzyskania maksymalnej wydajności. Mogą to być miliardy dolarów oszczędności, ale nie jest to takie łatwe. Przy ponad 50 milionach lotów komercyjnych na świecie co roku, jest to lot co sekundę. Prosta trasa lotu między dwoma miastami, powiedzmy, San Francisco i Bostonem, ma 2000 opcji trasy. Dlatego branża lotnicza często polega na nakazowej analizie, która decyduje o tym, co, kto i jak powinien latać samolotem, aby obniżyć koszty i zyski. Przyjrzeliśmy się zatem dość dogłębnej analizie opisowej, predykcyjnej i nakazowej. Celem tego kursu będzie analiza opisowa. Pod koniec poświęcimy trochę czasu na zrozumienie niektórych bardziej popularnych technik modelowania predykcyjnego.

CYKL ŻYCIA ANALITYKI

Cykl życia Analityki ma różne etapy i wiele osób opisuje go na wiele sposobów, ale ogólny pomysł pozostaje taki sam. Rozważmy następujące etapy cyklu życia projektu Analityki.

- Identyfikacja problemu

- Formułowanie hipotez

- Zbieranie danych

- Eksploracja danych

- Przygotowanie danych / manipulacja

- Planowanie modelu / budowanie

- Sprawdenie poprawności modelu

- Oceń / Monitoruj wyniki

1. Identyfikacja problemu: Problem to sytuacja, która jest oceniana jako coś, co wymaga naprawy. Naszym zadaniem jest upewnienie się, że rozwiązujemy odpowiedni problem, może nie być to ten przedstawiony nam przez klienta. Co naprawdę musimy rozwiązać? Czasami stwierdzenia problemów, które otrzymujemy od firmy, są bardzo proste. Na przykład:

- Jak zidentyfikować najcenniejszych klientów?

- W jaki sposób mogę zminimalizować straty wynikające z braku dostępności produktu na półce?

- Jak zoptymalizować mój ekwipunek?

- Jak wykryć klientów, którzy prawdopodobnie nie wykonają płatności rachunków?

Są to proste stwierdzenia problemów i naprawdę nie ma wątpliwości co do tego, co próbujemy osiągnąć dzięki projektowi analitycznemu. Jednak za każdym razem nasze oświadczenie biznesowe może nie prowadzić do jednoznacznej identyfikacji problemu. Czasami oświadczenia biznesowe są na bardzo wysokim poziomie, dlatego będziesz musiał spędzić czas z firmą, aby zrozumieć potrzeby i uzyskać kontekst. Konieczne może być podzielenie tego problemu na podproblemy w celu zidentyfikowania krytycznych wymagań. Być może trzeba pomyśleć o ograniczeniach, które należy uwzględnić w rozwiązaniu. Przypuśćmy, że pracujesz dla firmy obsługującej karty kredytowe, a firma mówi ci, że jest problem, na który chcą spojrzeć, a mianowicie: "Chcemy otrzymywać wnioski o kartę kredytową tylko od dobrych klientów" . Teraz z perspektywy biznesowej, czy jest to prawidłowe oświadczenie biznesowe? Z pewnością na bardzo wysokim poziomie jest to ważny wymóg biznesowy. Czy jednak dla twojego celu, jakim jest zbudowanie rozwiązania mającego na celu rozwiązanie tego pytania, jest to bardzo ważne stwierdzenie, czy wystarczający punkt wyjścia do analizy danych? Nie. Ponieważ z takim oświadczeniem biznesowym jest wiele problemów. Co to znaczy, że chcemy otrzymywać wnioski o kartę kredytową tylko od dobrych klientów? Spójrzmy na problem z tym stwierdzeniem problemu. Chcę otrzymywać wnioski o kredyt wyłącznie od dobrych klientów. Jednym z najbardziej oczywistych problemów związanych z tym stwierdzeniem jest to, kim są dobrzy klienci? Jeśli masz wiedzę na temat branży kart kredytowych, jedną z odpowiedzi dla dobrego klienta mogą być ludzie, którzy nie zwlekają z płatnościami. Oznacza to, że wydajesz na kartę kredytową i spłacasz jej kartę kredytową na czas. Jednak inną definicją dobrego klienta mogą być ludzie, którzy nie płacą na czas. Dlaczego? Ponieważ jeśli nie zapłacisz na czas, wystawca karty kredytowej może obciążyć Cię wysokimi stopami procentowymi od tego salda na karcie kredytowej. Tego rodzaju klienci nazywani są rewolwerami. Kto naprawdę jest dobrym klientem dla firmy wydającej karty kredytowe? Czy ci klienci płacą na czas? Czy są to klienci, którzy nie wywiązują się ze zobowiązań i nie płacą na czas. Odpowiedź może być taka ,że obaj są dobrymi klientami. Jak to możliwe? To zależy od twojej perspektywy. Jeśli chcesz zminimalizować ryzyko, jeśli pracujesz w dziale ryzyka firmy wydającej karty kredytowe, Twoją definicją dobrego klienta są klienci, którzy płacą na czas, klienci, którzy wywiązują się ze zobowiązań. Jeśli natomiast patrzysz na przychody, to dobrym pomysłem na dobrego klienta mogą być ludzie, którzy dużo wydają na kartę kredytową i nie zwracają jej całej. Mają wysoką równowagę obrotową. Teraz, jako analityk, kto decyduje, kim są dobrzy klienci? Gdy wystawca karty kredytowej wyda Ci wyciąg biznesowy, który mówi, że chcemy przyjąć wniosek o kartę kredytową tylko od dobrych klientów. Czy wiesz, że szukają ryzyka lub przychodów? To naprawdę zależy od interesów biznesowych; zależy to od celów biznesowych na ten rok. W rzeczywistości dobry klient w tym roku może być złym klientem w przyszłym roku. Dlatego ważne jest, aby uzyskać kontekst lub opis problemu przed rozpoczęciem analizy. Ale to nie jedyny problem z tym opisem problemu. Innym problemem jest zastanowienie się nad decyzją: czy naprawdę możesz nalegać na otrzymywanie dobrych aplikacji lub czy możesz nalegać na zatwierdzanie dobrych aplikacji. Czy decyzja jest na etapie składania wniosku lub zatwierdzania? Czy naprawdę możesz kontrolować aplikacje, aby były dobre, czy możesz kontrolować decyzje, aby umożliwić dostęp do ciebie tylko dobrym klientom?. Innym problemem związanym z tym opisem problemu jest to, że chcemy otrzymywać wnioski o karty kredytowe tylko od dobrych klientów. Czy realistyczne jest zakładanie, że będziesz mieć rozwiązanie, które nigdy nie przyjmie złego klienta? Ponownie, nie jest to realistyczny wynik. Wracając do naszego stanu definicji problemu, którym jest problem biznesowy, chcę uzyskać dobrych klientów jako wystawca kart kredytowych. Jak przekształcić ten problem w coś, co może rozwiązać podejście analityczne? Jednym ze sposobów jest dodanie szczegółów do opisu problemu. Pomyśl więc o konkretnych, wymiernych, osiągalnych, realistycznych i terminowych wynikach, które możesz dołączyć do tego opisu problemu. Dlatego podkreślamy, że musisz dokładnie zrozumieć kontekst biznesowy i porozmawiać czy masz do czynienia z właściwym problemem. Jak mogę dodać szczegóły do tego problemu? Załóżmy, że patrzę na to z perspektywy ryzyka, ponieważ w tym roku moje firmy wydające karty kredytowe skupiły się na zmniejszeniu ryzyka portfela. Mógłbym mieć różne oświadczenia o problemach biznesowych. Na przykład zmniejsz straty z domyślnej karta kredytowa o co najmniej 30 procent w ciągu pierwszych 12 miesięcy po wdrożeniu nowej strategii. Opracuj algorytm do sprawdzania aplikacji, które nie spełniają kryteriów określonych przez klienta, co zmniejszy domyślne wartości o 20 procent w ciągu najbliższych 3 miesięcy. Zidentyfikuj strategie ograniczenia domyślnych zobowiązań o 20 procent w ciągu najbliższych trzech miesięcy, umożliwiając zagrożonym klientom dodatkowe opcje płatności. Zdecydowaliśmy, że dobrą definicją problemu zajmujemy się z perspektywy ryzyka. Ale w przypadku tego samego oświadczenia biznesowego mamy teraz trzy różne oświadczenia dotyczące problemów, które dotyczą trzech różnych rzeczy. Znowu, który z nich powinienem wybrać jako punkt wyjścia do mojej analizy? Czy powinienem identyfikować strategie dla moich obecnych klientów, czy powinienem szukać potencjalnych nowych klientów? Ponownie jest to coś, co może wynikać z potrzeb biznesowych. Dlatego ważne jest, aby stale rozmawiać z biznesem, aby upewnić się, że rozpoczynając projekt analityczny, rozwiązujesz właściwe stwierdzenie problemu. Dotarcie do jasno zdefiniowanego problemu jest często oparte na odkryciach - zacznij od definicji pojęciowej, a poprzez analizę (pierwotną przyczynę, analizę wpływu itp. kształtujesz i redefiniujesz problem pod względem zagadnień. Problem staje się znany, gdy dana osoba widzi rozbieżność między tym, jakie rzeczy są i tym, jakie powinny być. Problemy mogą być zidentyfikowane przez:

- Badania porównawcze / porównanie

- Raportowanie wyników - ocena bieżących wyników w stosunku do celów i założeń

- Analiza SWOT - ocena mocnych stron, słabości, szans i zagrożeń

- Skargi / ankiety

Czasami to, co uważamy za problem, nie jest prawdziwym problemem, więc aby dojść do prawdziwego problemu, konieczne jest sondowanie. Analiza przyczyn pierwotnych jest skuteczną metodą sondowania - pomaga zidentyfikować, co, jak i dlaczego coś się wydarzyło. Rozważmy wzrost rotacji pracowników w naszej organizacji. Musimy dowiedzieć się czemu Pięć Razy Dlaczego odnosi się do praktyki pytania pięć razy, dlaczego problem istnieje, aby dotrzeć do jego pierwotnej przyczyny:

- Dlaczego pracownicy wyjeżdżają do innej pracy?

- Dlaczego pracownicy nie są zadowoleni?

- Dlaczego pracownicy uważają, że są niedopłacani?

- Dlaczego inni pracodawcy płacą wyższe pensje?

- Dlaczego popyt na takich pracowników wzrósł na rynku?

Podstawowe pytania do zdefiniowania problemu:

- Kto powoduje problem?

- Kogo dotyczy ten problem?

- Co się stanie, jeśli ten problem nie zostanie rozwiązany? Jakie są skutki?

- Gdzie i kiedy występuje ten problem?

- Dlaczego występuje ten problem?

- Jak powinien działać proces?

- Jak ludzie obecnie radzą sobie z problemem?

2. Formułowanie hipotezy: Rozbij problemy i formułuj hipotezy. Określ ramy pytań, na które należy odpowiedzieć, lub tematów, które należy zbadać, aby rozwiązać problem.

- Opracuj kompleksową listę wszystkich możliwych problemów związanych z problemem

- Ogranicz obszerną listę, eliminując duplikaty i łącząc nakładające się problemy

- Korzystając z budowania konsensusu, przejdź do listy głównych problemów.

3. Zbieranie danych: Aby odpowiedzieć na kluczowe pytania i zweryfikować hipotezy, konieczne jest zebranie realistycznych informacji. W zależności od rodzaju rozwiązywanego problemu można zastosować różne techniki gromadzenia danych. Zbieranie danych jest kluczowym etapem rozwiązywania problemów - jeśli jest powierzchowne, stronnicze lub niekompletne, analiza danych będzie trudna.

Techniki zbierania danych:

- Korzystanie z danych, które zostały już zebrane przez innych

- Systematycznie wybieraj i obserwuj cechy ludzi, przedmiotów lub wydarzeń.

- Ustne pytania respondentów, indywidualnie lub w grupie.

- Zbieranie danych na podstawie odpowiedzi udzielonych przez respondentów w formie pisemnej.

- Ułatwienie bezpłatnych dyskusji na wybrane tematy z wybraną grupą uczestników.

4. Eksploracja danych: Przed przeprowadzeniem formalnej analizy danych analityk musi wiedzieć, ile przypadków znajduje się w zbiorze danych, jakie zmienne są uwzględnione, ile jest brakujących obserwacji i jakie ogólne hipotezy dane mogą wesprzeć. Wstępna eksploracja zestawu danych pomaga odpowiedzieć na te pytania, zapoznając analityków z danymi, z którymi pracują. Analitycy często używają wizualizacji do eksploracji danych, ponieważ umożliwia ona użytkownikom szybkie i proste przeglądanie większości istotnych funkcji ich zbioru danych. W ten sposób użytkownicy mogą zidentyfikować zmienne, które mogą mieć interesujące obserwacje. Wyświetlając dane graficznie za pomocą wykresów rozrzutu lub wykresów słupkowych, użytkownicy mogą sprawdzić, czy dwie lub więcej zmiennych koreluje i ustalić, czy są dobrymi kandydatami do dalszej szczegółowej analizy.

5. Przygotowanie danych: Dane przychodzą do Ciebie w formie, która nie jest łatwa do analizy. Musimy wyczyścić dane i sprawdzić ich spójność, konieczna jest obszerna manipulacja danymi w celu ich analizy.

Etapy przygotowania danych mogą obejmować:

- Importowanie danych

- Identyfikacja zmiennych / Tworzenie nowych zmiennych

- Sprawdzanie i podsumowywanie danych

- Wybieranie podzbiorów danych

- Wybieranie zmiennych i zarządzanie nimi.

- Łączenie danych

- Dzielenie danych na wiele zestawów danych.

- Leczenie brakujących wartości

- Leczenie odstępne

Identyfikacja zmiennych: Najpierw zidentyfikuj zmienne predykcyjne (wejściowe) i docelowe (wyjściowe). Następnie określ typ danych i kategorię zmiennych.

Analiza jednoczynnikowa: Na tym etapie badamy zmienne jeden po drugim. Metoda przeprowadzania analizy jednoczynnikowej będzie zależeć od tego, czy typ zmiennej jest kategoryczny czy ciągły. Przyjrzyjmy się tym metodom i miarom statystycznym indywidualnie dla zmiennych jakościowych i ciągłych.

Ciągłe zmienne: W przypadku zmiennych ciągłych musimy zrozumieć centralną tendencję i rozprzestrzenianie się zmiennej. Są one mierzone przy użyciu różnych metod wizualizacji metryk statystycznych.

Zmienne jakościowe: W przypadku zmiennych jakościowych używamy tabeli częstotliwości, aby zrozumieć rozkład każdej kategorii. Możemy również odczytać jako procent wartości w każdej kategorii. Można to zmierzyć za pomocą dwóch wskaźników, liczby i procentu dla każdej kategorii.

6. Budowanie modelu: To tak naprawdę cały proces budowania rozwiązania i wdrażania rozwiązania. Większość czasu poświęconego na projekt spędza się na etapie wdrażania rozwiązania. Jedną z interesujących rzeczy, o których należy pamiętać przy podejściu analitycznym, jest to, że podejście analityczne podczas budowania modeli, modeli analitycznych, jest procesem bardzo iteracyjnym, ponieważ nie ma czegoś takiego jak ostateczne rozwiązanie lub idealne rozwiązanie. Zazwyczaj poświęcasz czas na budowanie wielu modeli na wielu rozwiązaniach, zanim znajdziesz najlepsze rozwiązanie, z którym firma będzie współpracować.

7. Istnieje wiele sposobów podejmowania decyzji z perspektywy biznesowej. Analityka to jeden sposób. Istnieją inne sposoby podjęcia decyzji. Może to być podejmowanie decyzji opartych na doświadczeniu. Może to być proces decyzyjny oparty na przeszukaniu. I nie za każdym razem zawsze wybierzesz podejście analityczne. Jednak na dłuższą metę sensowne jest budowanie zdolności analitycznych, ponieważ prowadzi to do bardziej obiektywnego podejmowania decyzji. Ale zasadniczo, jeśli chcesz danych, aby przyspieszyć podejmowanie decyzji, musisz upewnić się, że zainwestowałeś w gromadzenie odpowiednich danych, aby umożliwić Ci podejmowanie decyzji na podstawie danych

8. Ocena / monitorowanie modelu: Jest to ciągły proces mający na celu przede wszystkim sprawdzenie skuteczności rozwiązania w czasie. Pamiętaj, że analityczne podejście do rozwiązywania problemów różni się od standardowego podejścia do rozwiązywania problemów. Musimy pamiętać o tych punktach:

- Dane mają wyraźną pewność co do identyfikacji rozwiązania.

- Używamy technik analitycznych opartych na teoriach numerycznych.

- Musisz dobrze zrozumieć teoretyczne koncepcje sytuacji biznesowych, aby stworzyć realne rozwiązanie.

Oznacza to, że potrzebujesz dobrego zrozumienia sytuacji biznesowej i kontekstu biznesowego, a także silnej wiedzy na temat podejść analitycznych i umieć łączyć koncepcje, znaleźć praktyczne rozwiązanie. W niektórych branżach tempo zmian jest bardzo wysokie. Rozwiązania starzeją się więc bardzo szybko. W innych branżach tempo zmian może nie być tak wysokie, a kiedy zbudujesz rozwiązanie, możesz mieć rozwiązanie na 2-3 lata, które będzie działać, ale trzeba będzie dostosować, aby zarządzać nowymi warunkami biznesowymi. Jednak sposobem oceny, czy Twoje rozwiązanie działa, jest okresowe sprawdzanie skuteczności rozwiązania. Konieczne jest śledzenie niezawodności w czasie i może być konieczne wprowadzenie niewielkich zmian, aby przywrócić rozwiązanie na właściwe tory. Czasami może być konieczne zbudowanie całego rozwiązania od zera, ponieważ środowisko zmieniło się tak drastycznie, że zbudowane rozwiązanie nie łączy się już w obecnym kontekście biznesowym

WSPÓLNE BŁĘDY W ANALITYCZNYM MYŚLENIU

Definicja problemu przez klienta może być niepoprawna. Może mu brakować wiedzy i doświadczenia, które posiadasz. Ponieważ większość problemów nie jest unikalna, możemy potwierdzić problem i możliwe rozwiązania w stosunku do innych źródeł. Najlepsze rozwiązania problemu są często zbyt trudne do wdrożenia przez klienta. Zachowaj więc ostrożność w zalecaniu optymalnego rozwiązania problemu. Większość wyjaśnień wymaga pewnego stopnia ugody w celu wykonania.


KROK 2

Rozpoczęcie pracy z R

WPROWADZENIE

R jest językiem programowania do analizy statystycznej i raportowania. R jest prostym językiem programowania, który zawiera wiele funkcji do analizy danych, ma efektywne narzędzie do obsługi i przechowywania danych. R zapewnia graficzne możliwości analizy danych i raportowania. Proszę o zainstalowanie R and R studio, które można bezpłatnie pobrać. Kiedy po raz pierwszy otworzysz Studio R, zobaczysz cztery okna.

1. Skrypty: Służy jako obszar do pisania i zapisywania kodu R.
2. Obszar roboczy: Wyświetla zestaw danych i zmienne w środowisku R.
3. Wykresy: Wyświetla wykresy wygenerowane przez kod R.
4. Konsola : Zapewnia historię wykonanego kodu R i danych wyjściowych

OPERACJE ELEMENTARNE W R


1. Wyrażenia:

Jeśli pracujesz tylko z liczbami R możesz użyć jako zaawansowanego kalkulatora, po prostu wpisz

4 + 5

i naciśnij enter, otrzymasz wartość 9.

R może wykonywać obliczenia matematyczne bez konieczności przechowywania go w obiekcie. Wynik jest wydrukowany na konsoli. Spróbuj obliczyć iloczyn 2 lub więcej liczb (* to operator mnożenia).

6 * 9 # otrzymasz 54.

Cokolwiek napisane po znaku # będzie uważane za komentarz w R.

R stosuje się do reguł BODMAS, aby wykonywać operacje matematyczne. Wpisz następujące polecenia i zrozum różnicę.

20-15 * 2 # otrzymasz -10

(20-15) * 2 #uzyskasz 10

Uważaj, aby oddzielić dowolną wartość od 0, aby uzyskać inf (nieskończoność).

wpisz to polecenie w konsoli i sprawdź

8/0

Te operacje matematyczne można łączyć w długie formuły, aby osiągnąć określone zadania.



2. Wartości logiczne:

Niewiele wyrażeń zwraca "wartość logiczną": PRAWDA lub FAŁSZ. (znane jako wartości "boolowskie"). Spójrz na wyrażenie, które daje nam logiczną wartość:

6 < 9 # PRAWDA

3. Zmienne:

Możemy przechowywać wartości w zmiennej, aby uzyskać do niej dostęp później.

X <- 48 # do przechowywania wartości w x.

Y <- "YL, Prasad" (nie zapomnij cudzysłowów)

Teraz X i Y są obiektami utworzonymi w R, mogą być używane w wyrażeniach w pozycji oryginalnego wyniku. Spróbuj wywołać X i Y, wpisując nazwę obiektu

Y # [1] "YL, Prasad"

musimy pamiętać, że R rozróżnia małe i wielkie litery.Jeśli przypiszesz wartość do znaku X i wywołasz małe X, wyświetli się błąd. Spróbuj podzielić X przez 2 (/ jest operatorem dzielenia) # dostaniesz 24 jako odpowiedź Możemy ponownie przypisać dowolną wartość do zmiennej w dowolnym momencie. Przypisz "Lakshmi" do Y.

Y <- "Lakshmi"

Możemy wyświetlić wartość zmiennej po prostu wpisując jej nazwę w konsoli. Spróbuj wyświetlić bieżącą wartość Y. Jeśli napisałeś ten kod, gratulacje! Pierwszy kod napisałeś w R i stworzyłeś obiekt.

4. Funkcje

Możemy wywołać funkcję, wpisując jej nazwę, a następnie w nawiasie argumenty tej funkcji. Wypróbuj funkcję sumowania, aby dodać kilka liczb. Wchodzić:

sum(1, 3, 5) # 9

Używamy funkcji sqrt, aby uzyskać pierwiastek kwadratowy z 16.

sqrt(16) # 4

16^.5 # również daje taką samą odpowiedź jak 4

Pierwiastek kwadratowy jest najczęściej stosowaną transformacją wraz z transformacją logów podczas przygotowywania danych. Wpisz następujące polecenia i sprawdź odpowiedzi

log(1) # 0

log(10) # 2.302585

log10(100) # to zwróci 2, ponieważ log 100 o podstawie 10 wynosi 2. W dowolnym momencie, jeśli chcesz uzyskać dostęp do okna pomocy, możesz wpisać następujące polecenia

help(exp)

? exp

Jeśli chcesz podać przykład funkcji, podaj następujące polecenie:

example (log)

R pozwala zapisać środowisko robocze, w tym zmienne i załadowane biblioteki, do pliku danych .R za pomocą funkcji save.image (). Istniejący plik danych .R można załadować za pomocą funkcji load.image ().

5. Pliki Polecenia R można zapisywać i przechowywać w plikach tekstowych (z rozszerzeniem ".R") w celu ich późniejszego wykonania. Załóżmy, że zachowaliśmy kilka przykładowych skryptów. Możemy wyświetlić listę plików w bieżącym katalogu z poziomu R wywołując funkcję list.files.

list.files ()

USTAWIANIE KATALOGU ROBOCZEGO

Przed zagłębieniem się w R zawsze lepiej jest skonfigurować katalog roboczy do przechowywania wszystkich naszych plików, skalarów, wektorów, ramek danych itp. Po pierwsze, chcemy wiedzieć, który katalog domyślnie używa R. aby to zrozumieć, wpisz polecenie:

getwd () # [1] "C:/Users/admin/Documents"

Teraz chcę ustawić dane folderu R jako mój katalog roboczy, który znajduje się na dysku D. aby to zrobić, wydam polecenie:

setwd ("D:/ R Data")

Naciśnij Enter (kliknij przycisk Prześlij ikonę), aby upewnić się, że polecenie zostało wykonane i katalog roboczy został ustawiony. Ustawiamy dane folderu R na dysku D jako katalog roboczy. Nie oznacza to, że utworzyliśmy tutaj coś nowego, ale właśnie przypisaliśmy miejsce jako katalog roboczy, tutaj zostaną dodane wszystkie pliki. Aby sprawdzić, czy katalog roboczy został poprawnie skonfigurowany, wydaj polecenie:

getwd ()

STRUKTURY DANYCH W R

Struktura danych to interfejs do danych zorganizowanych w pamięci komputera. R zapewnia kilka rodzajów struktury danych, z których każda ma na celu optymalizację niektórych aspektów przechowywania, dostępu lub przetwarzania. Przykłady struktur danych: 1. Wektor 2. Macierz 3. Czynnik 4. Ramka Danych

1. Wektory

Wektory są podstawowym elementem składowym danych w R. Zmienne R są w rzeczywistości wektorami. Wektor może składać się tylko z wartości z tej samej klasy. Testy wektorów można przeprowadzić za pomocą funkcji is.vector(). Nazwa może brzmieć przerażająco, ale wektor to po prostu lista wartości. Wartościami wektorowymi mogą być liczby, ciągi znaków, wartości logiczne lub dowolny inny typ, o ile wszystkie są tego samego typu. Rodzaje wektorów: Całkowity, Numeryczny, Logiczny, Znakowy, Złożony. R zapewnia funkcjonalność, która umożliwia łatwe tworzenie i manipulowanie wektorami. Poniższy kod R ilustruje sposób tworzenia wektora za pomocą funkcji łączenia, c() lub operatora dwukropka:, Stwórzmy wektor liczb:

c(4,7,9)

Funkcja c (c jest skrótem od Combine) tworzy nowy wektor, łącząc listę wartości. Utwórz wektor z ciągami znaków:

c("a", "b", "c")

Sekwencja wektorów

Możemy stworzyć wektor z notacją początek : koniec, aby utworzyć sekwencje. Zbudujmy wektor z sekwencji liczb całkowitych od 5 do 9.

5:9 # Tworzy wektor o wartościach od 5 do 9

Możemy nawet wywołać funkcję seq. Spróbujmy zrobić to samo z seq:

seq (5,9)

Dostęp do wektora

Po utworzeniu wektora z niektórymi łańcuchami i zapisaniu go, możemy odzyskać indywidualną wartość w wektorze, podając jego indeks liczbowy w nawiasach kwadratowych.

sentence <- c('Learn', 'Data', 'Analytics')

sentence[3] # [1] "Analytics"

Możemy przypisać nowe wartości do istniejącego wektora. Spróbuj zmienić trzecie słowo na "Science":

sentence [3] <- "Science"

Jeśli dodasz nowe wartości do wektora, wektor wzrośnie, aby je uwzględnić. Dodajmy czwarte słowo:

sentence [4] <- 'By YL, Prasad'

Możemy użyć wektora w nawiasach kwadratowych, aby uzyskać dostęp do wielu wartości. Spróbuj uzyskać pierwsze i czwarte słowo:

sentence [c(1, 4)]

Oznacza to, że możesz pobrać zakresy wartości. Uzyskaj od drugiego do czwartego słowa:

sentence [2:4]

Możemy ustawić zakresy wartości, po prostu podając wartości w wektorze.

sentence [5:7] <- c('at', 'PRA', 'Analytix') #aby dodać słowa od 5 do 7

Spróbuj uzyskać dostęp do siódmego słowa wektora sentence:

sentence[7]

Nazwy wektorów

Stwórzmy 3-elementowy wektor i zapiszmy go w zmiennej rang. Możemy przypisywać nazwy do elementów wektora, przekazując drugi wektor wypełniony nazwami do funkcji przypisywania nazw, w następujący sposób:

ranks <- 1:3

names(ranks) <- c("first", "second", "third")

ranks

Możemy użyć tych nazw, aby uzyskać dostęp do wartości wektora.

ranks["first"]

Macierze

Macierz w R to zbiór jednorodnych elementów ułożonych w 2 wymiarach.

•  Macierz jest wektorem z atrybutem dim, tj. wektorem liczb całkowitych podającym liczbę lub wiersze i kolumny.

•  Funkcje dim(), nrow() i ncol() zapewniają atrybuty macierzy.

•  Wiersze i kolumny mogą mieć nazwy, dimnames(), rownames(), colnames()

Przyjrzyjmy się podstawom pracy z macierzami, tworzeniem ich, uzyskiwaniem do nich dostępu i wykreślenia. Stwórzmy macierz o wysokości 3 wierszy i szerokości 4 kolumn, z wszystkimi polami ustawionymi na 0.

Sample <- matrix (0, 3, 4)

Konstrukcja macierzy

Możemy zbudować macierz bezpośrednio z elementami danych, zawartość matrycy jest domyślnie wypełniona wzdłuż orientacji kolumny. Spójrz na poniższy kod, zawartość Sample jest wypełniana kolumnami kolejno.

Sample <- matrix( 1:20, nrow=4, ncol=5)

Dostęp do macierzy

Aby uzyskać wartości z macierzy, wystarczy podać dwa wskaźniki zamiast jednego. Wydrukujmy naszą macierz próbek:

print (Sample)

Spróbuj uzyskać wartość z drugiego wiersza w trzeciej kolumnie Sample:

Sample [2,3]

Możemy uzyskać cały wiersz macierzy, pomijając indeks kolumny (zachowując przecinek). Spróbuj pobrać trzeci rząd:

Sample [3,] # [1] 3 7 11 15

Aby uzyskać całą kolumnę, pomiń indeks wiersza. Pobierz czwartą kolumnę:

Sample [,4] # [1] 13 14 15 16

Czynniki

Gdy chcemy, aby dane zostały pogrupowane według kategorii, R ma specjalny typ zwany factor do śledzenia tych skategoryzowanych wartości. Czynnik jest wektorem, którego elementy mogą przyjmować jedną z określonych wartości. Na przykład "Płeć" zwykle przyjmuje tylko wartości "Mężczyzna", "Kobieta" i "NA". Zbiór wartości, które mogą przyjmować elementy czynnika, nazywa się jego poziomami.

Tworzenie Czynników

Aby kategoryzować wartości, wystarczy przekazać wektor do funkcji factor:

gender <- c('male', 'female', 'male', 'NA', 'female')

types <- factor(gender)

print(gender)

Zobaczysz nieprzetworzoną listę ciągów, powtarzane wartości i inne. Teraz wyświetl współczynnik typów:

print(types)

Rzućmy okiem na leżące u podstaw liczby całkowite. Przekaż współczynnik do funkcji as.integer:

as.integer(types) # [1] 2 1 2 3 1

Za pomocą funkcji poziomów można uzyskać tylko poziomy czynników:

levels(types) # [1] "female" "male" "NA"

Ramki danych

Ramki danych zapewniają strukturę do przechowywania i uzyskiwania dostępu do kilku zmiennych możliwie różnych typów danych. Ze względu na ich elastyczność w obsłudze wielu typów danych, ramki danych są preferowanym formatem wejściowym dla wielu funkcji modelowania dostępnych w R. Utwórzmy trzy indywidualne obiekty o nazwach Id, Gender i Age i połączmy je w zbiór danych.

Id <- c(101, 102, 103, 104, 105)

Gender <- c('male', 'female', 'male', 'NA', 'female')

Age <- c(38,29,NA,46,53)

Id, Gender i Age są trzema pojedynczymi obiektami, R ma strukturę znaną jako ramka danych, która może powiązać wszystkie te zmienne w jednej tabeli lub arkuszu kalkulacyjnym Excel. Ma określoną liczbę kolumn, z których każda powinna zawierać wartości określonego typu. Ma także nieokreśloną liczbę wierszy - zestawy powiązanych wartości dla każdej kolumny. Łatwo jest utworzyć zestaw danych, wystarczy wywołać funkcję data.frame i podać argumenty Id, Gender i Age. Przypisz wynik do zestawu danych Test:

Test <- data.frame(Id, Gender, Age)

Wyświetl test, aby zobaczyć jego zawartość:

print(Test)

fix(Test) # Aby wyświetlić ten zestaw danych obiektu

Dostęp do ramki danych: Dostęp do poszczególnych części ramki danych jest łatwy. Możemy uzyskać poszczególne kolumny, podając ich numer indeksu w nawiasach podwójnych. Spróbuj uzyskać drugą kolumnę (Gender) Test:

Test [[2]]

Możesz podać nazwę kolumny jako ciąg w nawiasach podwójnych dla większej czytelności

Test [["Age"]]

Możemy nawet użyć skrótu: nazwa ramki danych, znak dolara i nazwa kolumny bez cudzysłowów.

Test$Gender

2.5 IMPORTOWANIE I EKSPORTOWANIE DANYCH

Dość często musimy pozyskiwać nasze dane z zewnętrznych plików, takich jak pliki tekstowe, arkusze Excela i pliki CSV, aby wykonać to R otrzymał możliwość łatwego ładowania danych z zewnętrznych plików. Twoje środowisko może mieć wiele obiektów i wartości, które możesz usunąć za pomocą następującego kodu:

rm(list = ls ())

Funkcja rm() umożliwia usuwanie obiektów z określonego środowiska. Importowanie plików TXT: Jeśli masz plik .txt lub plik tekstowy rozdzielany tabulatorami, możesz go łatwo zaimportować za pomocą podstawowej funkcji R read.table ().

setwd ("D: / R Data")

Inc_ds <- read.table ("Income.txt")

W przypadku plików, które używają ciągów separatora innych niż przecinki, można użyć funkcji read.table. Argument sep = definiuje znak separatora i można określić znak tabulacji za pomocą "\t". Wywołaj read.table na "Inc_tab.txt", używając separatorów tabulatorów:

read.table ("Inc_tab.txt", sep= "\t")

Czy zauważysz nagłówki kolumn "V1", "V2" i "V3"? Pierwszy wiersz nie jest automatycznie traktowany jako nagłówki kolumn w read.table. To zachowanie jest kontrolowane przez argument nagłówka. Ponownie wywołaj read.table, ustawiając nagłówek na TRUE:

Inc_th <- read.table ("Inc_tab.txt", sep= "\ t", nagłówek = TRUE)

fix (Inc_th)

Importowanie plików CSV: Jeśli masz plik, który oddziela wartości przecinkiem, zwykle masz do czynienia z plikiem .csv. Możesz załadować zawartość pliku CSV do ramki danych, przekazując nazwę pliku do funkcji read.CSV.

read.CSV ("Employee.csv") # Wykonanie tego R oczekuje obecności naszych plików w katalogu roboczym.

Eksporujemy pliki za pomocą funkcji write.table: Funkcja write.table generuje pliki danych. Pierwszy argument określa, która ramka danych w R ma zostać wyeksportowana. Następny argument określa plik do utworzenia. Domyślny separator to pusta spacja, ale dowolny separator można określić w opcji sep =. Ponieważ nie chcemy dołączać nazw wierszy, otrzymaliśmy opcję row.names = FALSE, Domyślnym ustawieniem opcji quote jest uwzględnianie cudzysłowów wokół wszystkich wartości znaków, tj. Wokół wartości w zmiennych łańcuchowych i wokół nazw kolumn. Jak pokazaliśmy w tym przykładzie, bardzo często nie chce się cytatów podczas tworzenia pliku tekstowego.

write.table(Employee, file="emp.txt", row.names = FALSE, quote = FALSE)


KROK 3

Eksploracja Danych

WPROWADZENIE

Ilekroć mamy zamiar stworzyć model, bardzo ważne jest, aby zrozumieć dane i znaleźć ukryty wgląd w dane. Powodzenie projektu analizy danych wymaga głębokiego zrozumienia danych. Eksploracja danych pomoże ci stworzyć dokładne modele, jeśli wykonasz to w zaplanowany sposób. Przed formalną analizą danych analityk musi wiedzieć, ile przypadków znajduje się w zbiorze danych, jakie zmienne są uwzględnione, ile brakujących obserwacji znajduje się w zbiorze danych. Etapy eksploracji danych obejmują zrozumienie zbiorów danych i zmiennych, sprawdzanie atrybutów danych, rozpoznawanie i usuwanie brakujących wartości, wartości odstających, zrozumienie podstawowej prezentacji danych itp. działania w zakresie eksploracji danych obejmują badanie danych w zakresie podstawowych miar statystycznych i tworzenie wykresy i wykresy do wizualizacji i identyfikacji relacji i wzorców. Wstępna eksploracja zestawu danych pomaga odpowiedzieć na te pytania, zapoznając analityków z danymi, z którymi pracują. Dodatkowe pytania i uwagi dotyczące etapu warunkowania danych obejmują: Jakie są źródła danych? Jakie są pola docelowe? Jak czyste są dane? Jak spójna jest zawartość i pliki? Jako specjalista ds. danych musisz ustalić, w jakim stopniu dane zawierają brakujące lub niespójne wartości oraz czy dane zawierają wartości odbiegające od normalnych, i oceń spójność typów danych. Na przykład, jeśli zespół spodziewa się, że pewne dane będą liczbowe, potwierdź, że są one numeryczne lub jest to połączenie ciągów alfanumerycznych i tekstu. Przejrzyj zawartość kolumn danych lub innych danych wejściowych i sprawdź, czy mają one sens. Na przykład, jeśli projekt obejmuje analizę poziomów dochodów, wyświetl podgląd danych, aby potwierdzić, że wartości dochodów są dodatnie lub czy dopuszczalne są zera lub wartości ujemne. Poszukaj dowodów na systematyczny błąd. Przykłady obejmują przesyłanie danych z czujników lub innych źródeł danych, które ulegają awarii bez uprzedzenia, co powoduje nieprawidłowe, nieprawidłowe lub brakujące wartości danych. Przejrzyj dane do pomiaru, jeśli definicja danych jest taka sama dla wszystkich pomiarów. W niektórych przypadkach kolumna danych jest zmieniana lub kolumna przestaje być zapełniana, bez opisywania tej zmiany lub powiadamiania innych. Po zebraniu przez zespół przynajmniej niektórych zestawów danych potrzebnych do późniejszej analizy, przydatnym krokiem jest wykorzystanie narzędzi do wizualizacji danych w celu przeanalizowania wzorców wysokiego poziomu w danych, umożliwiając bardzo szybkie zrozumienie cech danych. Jednym z przykładów jest użycie wizualizacji danych w celu zbadania jakości danych, takich jak to, czy dane zawierają wiele nieoczekiwanych wartości lub innych wskaźników brudnych danych. Innym przykładem jest Skośność, jeśli większość danych jest mocno przesunięta w kierunku jednej wartości lub końca kontinuum. Wizualizacja danych umożliwia użytkownikowi wyszukiwanie interesujących obszarów, powiększanie i filtrowanie w celu znalezienia bardziej szczegółowych informacji o danym obszarze danych, a następnie wyszukanie szczegółowych danych w określonym obszarze. Takie podejście zapewnia ogólny widok danych i dużą ilość informacji o danym zbiorze danych w stosunkowo krótkim czasie.

WYTYCZNE I UWAGI

Przejrzyj dane, aby upewnić się, że obliczenia pozostały spójne w kolumnach lub tabelach dla danego pola danych. Na przykład, czy czas życia klienta zmienił się w pewnym momencie w trakcie gromadzenia danych? Lub jeśli pracujesz z finansami, czy obliczanie odsetek zmieniło się z prostych na złożone na koniec roku? Czy dystrybucja danych pozostaje spójna we wszystkich danych? Jeśli nie, jakie działania należy podjąć, aby rozwiązać ten problem? Oceń ziarnistość danych, zakres wartości i poziom agregacji danych. Czy dane reprezentują populację będącą przedmiotem zainteresowania? W przypadku danych marketingowych, jeśli projekt koncentruje się na klientach w wieku wychowawczym, czy dane te reprezentują to, czy są pełne seniorów i nastolatków? Czy w przypadku zmiennych związanych z czasem pomiary są codzienne, tygodniowe, miesięczne? Czy to wystarczy? Czy wszędzie mierzy się czas w sekundach? A może w niektórych miejscach są to milisekundy? Określ poziom szczegółowości danych potrzebnych do analizy i oceń, czy obecny poziom znaczników czasu w danych spełnia tę potrzebę. Czy dane są standaryzowane / znormalizowane? Czy skale są spójne? Jeśli nie, w jakim stopniu dane są spójne lub nieregularne? Są to typowe kwestie, które powinny być częścią procesu myślowego, gdy zespół ocenia zestawy danych uzyskane dla projektu. Zdobycie głębokiej wiedzy na temat danych będzie miało kluczowe znaczenie, gdy przyjdzie czas na budowę i uruchamianie modeli w dalszej części procesu.

SPRAWDŹ CZĘŚĆ DANYCH DATASET

setwd("D:/R data")
Employee <- read.csv("Employee.csv")
fix(Employee)
print(Employee)

Funkcja print() wyświetla zawartość ramki danych (lub dowolnego innego obiektu). Zawartość można zmienić za pomocą funkcji edit().
edit(Employee)

SPRAWDŹ WYMIAR DANYCH

Użyj dim(), aby uzyskać wymiary ramki danych (liczba wierszy i liczba kolumn). Dane wyjściowe to wektor.

Dim(Employee)

Użyj nrow() i ncol(), aby uzyskać odpowiednio liczbę wierszy i liczbę kolumn. Możemy uzyskać te same informacje, wyodrębniając pierwszy i drugi element wektora wyjściowego z dim().

nrow(Employee)
ncol(Employee)
Sprawdź funkcje i zrozum dane, wyświetlając kilka pierwszych wierszy za pomocą funkcji head(). Domyślnie R wyświetli pierwsze 6 wierszy. Możemy użyć head(), aby uzyskać pierwsze n obserwacji, a tail(), aby uzyskać ostatnie n obserwacji; domyślnie n = 6. Są to dobre polecenia do uzyskania intuicyjnego wyobrażenia o tym, jak wyglądają dane, bez ujawniania całego zestawu danych, który może mieć miliony wierszy i tysiące kolumn.

head(Employee)

Jeśli chcemy wybrać tylko kilka wierszy, możemy określić tę liczbę wierszy.

Selecting Rows(Observations)
Samp <- Employee[1:3,]
head(mydata) # Pierwsze 6 wierszy zestawu danych
head(mydata, n=10) # Pierwsze 10 wierszy zestawu danych
head(mydata, n= -10) # Wszystkie wiersze oprócz ostatnich 10
tail(mydata) # Ostatnie 6 wierszy
tail(mydata, n=10) # Ostatnie 10 wierszy
tail(mydata, n= -10) # Wszystkie wiersze oprócz pierwszych 10
Nazwy zmiennych lub nazwy kolumn

names(Employee)

SPRAWDŹ CZĘŚĆ OPISU DATASETU

Część deskryptora oznacza metadane (dane o danych):

str(Employee)

Funkcja str() zapewnia strukturę ramki danych. Ta funkcja identyfikuje całkowite i liczbowe (podwójne) typy danych, zmienne czynnikowe i poziomy, a także kilka pierwszych wartości dla każdej zmiennej. Wykonując powyższy kod, możemy uzyskać informacje o atrybutach zmiennych, takich jak nazwa zmiennej, typ itp. "Num" oznacza, że zmienna "count" jest liczbowa (ciągła), a "Factor" oznacza, że zmienna jest kategoryczna z kategoriami lub poziomami. Polecenie sapply (Employee, class) zwróci nazwy i klasy (np. numeryczne, liczby całkowite lub znaki) każdej zmiennej w ramce danych.

sapply(Employee, class)

Aby uzyskać wszystkie kategorie lub poziomy zmiennej jakościowej, użyj funkcji levels()

levels(Employee)

TWORZENIE WIZUALIZACJI

Powszechnie używamy wizualizacji danych do eksploracji danych, ponieważ pozwala ona użytkownikom na szybkie i proste przeglądanie większości istotnych funkcji zestawu danych. Wizualizacje pomagają nam zidentyfikować zmienne, które mogą mieć interesujące relacje. Wyświetlając dane graficznie za pomocą wykresów punktowych lub wykresów słupkowych, możemy sprawdzić, czy dwie lub więcej zmiennych koreluje i ustalić, czy są dobrymi kandydatami do dalszej szczegółowej analizy. Przydatnym sposobem postrzegania wzorców i niespójności w danych jest eksploracyjna analiza danych z wizualizacją. Wizualizacja daje zwięzły obraz danych, które mogą być trudne do zrozumienia na podstawie samych liczb i podsumowań. Zmienne x i y danych w ramce danych można zamiast tego wizualizować na wykresie, który łatwo przedstawia związek między dwiema zmiennymi. Wizualizacja pomaga nam tworzyć różne typy wykresów, takie jak:

1. Histogram
2. Wykres kołowy
3. Wykres słupkowy / liniowy
4. Fabuła pudełka
5. Wykres punktowy

Histogramy: Histogramy można tworzyć za pomocą funkcji hist(x), gdzie x jest wektorem liczbowym wartości do wykreślenia. Opcja freq = FALSE wykreśla gęstości prawdopodobieństwa zamiast częstotliwości. Opcja breaks = kontroluje liczbę pojemników.

# Prosty histogram
hist(Employee$Salary)
# Kolorowy histogram z różną liczbą pojemników
hist(Employee$Salary, breaks=12, col="red")
# Nałożone histogramy
hist(Employee$Salary, breaks="FD", col="green")
hist(Employee$Salary [Employee$Gender=="Male"], breaks="FD", col="gray",
add=TRUE)
legend("topright", c("Female","Male"), fill=c("green","gray"))

Wykresy kołowe: Wykresy kołowe są tworzone za pomocą funkcji pie(x, labels =), gdzie x jest nieujemnym wektorem numerycznym wskazującym obszar każdego wycinka, a labels = zapisuje wektor znakowy nazw dla wycinków.

# Prosty wykres kołowy
Items_sold <- c(10, 12,4, 16, 8)
Location <- c("Hyderabad", "Bangalore", "Kolkata", "Mumbai", "Delhi")
pie(Items_sold, labels = Location, main="Pie Chart of Locations")
# 3D Rozłożony wykres kołowy
library(plotrix)
pie3D(slices,labels=lbls,explode=0.1, main="Pie Chart of Countries ")

Wykres słupkowy / liniowy:

Wykres liniowy: Wykresy liniowe są zwykle preferowane, gdy mamy analizować rozkład trendów w danym okresie. Wykres liniowy nadaje się również do wykresów, w których musimy porównać względne zmiany wielkości w pewnej zmiennej (jak czas).

# Aby utworzyć prosty wykres liniowy:

Plot(, type=l)

Wykresy pudełkowe: Wykresy pudełkowe można tworzyć dla poszczególnych zmiennych lub dla zmiennych według grup. Format to boxplot(x, data =), gdzie x jest formułą, a data = oznacza ramkę danych dostarczającą dane. Przykładem formuły jest grupa y~, w której dla każdej wartości grupy generowany jest osobny wykres pudełkowy dla zmiennej numerycznej y. Dodaj varwidth = TRUE, aby szerokości wykresu pudełkowego były proporcjonalne do pierwiastka kwadratowego z rozmiarów próbek. Addhorizontal = TRUE, aby odwrócić orientację osi.

# Boxplot wynagrodzenia według wykształcenia
boxplot(Salary~Education,data=Employee, main="Wynagrodzenia według wykształcenia", xlab="Education", ylab="Salary")
boxplot jest słowem kluczowym do generowania boxplot. Wykres odbywa się między wynagrodzeniem pracowników a poziomem wykształcenia. Istnienie wartości odstających w zbiorze danych obserwuje się jako punkty poza ramką.

Wykresy rozrzutu: Istnieje wiele sposobów tworzenia wykresu rozrzutu w R. Podstawową funkcją jest plot(x, y), gdzie x i y to wektory numeryczne oznaczające punkty (x, y) do wykreślenia.

# Prosty wykres rozrzutu
attach(Employee)
plot(Age, Salary, main="Scatterplot on Age vs Salary",
xlab="Age", ylab="Salary ", pch= 19

BRAK DANYCH

Przyjrzyjmy się, jak można wykryć brakujące dane w fazie eksploracji danych za pomocą wizualizacji. Ogólnie rzecz biorąc, analitycy powinni szukać anomalii, weryfikować dane ze znajomością domeny i decydować o najbardziej odpowiednim podejściu do czyszczenia danych. Rozważ scenariusz, w którym bank przeprowadza analizy danych posiadaczy rachunków w celu oceny zatrzymania klientów.

rowSums(is.na(mydata)) # Liczba braków w wierszu
colSums(is.na(mydata)) # Liczba braków w kolumnie / zmiennej
# Konwertuj na brakujące dane
mydata[mydata$age=="& ","age"] <- NA
mydata[mydata$age==999,"age"] <- NA
# Funkcja complete.cases() zwraca logiczny wektor wskazujący, które przypadki są zakończone
# lista wierszy danych, w których brakuje wartości
mydata[!complete.cases(mydata),]
# Funkcja na.omit () zwraca obiekt z listowym usunięciem brakujących wartości.
# Tworzenie nowego zestawu danych bez brakujących danych
mydata1 <- na.omit(mydata)

Wartości ekstremalne: obserwacje ekstremalne są przedmiotem zainteresowania i zasługują na naszą uwagę, ponieważ są czymś więcej niż zwykłymi wartościami odstającymi na końcu krzywej dzwonowej. Są to te, które wypaczają rozkład do pokazanego wcześniej kształtu F. Wykres pola dla wykrywania wartości odstających: wartość odstająca jest wynikiem bardzo różnym od reszty danych. Analizując dane, musimy pamiętać o takich wartościach, ponieważ wpływają one na model, który pasujemy do danych. Dobry przykład tego uprzedzenia można zobaczyć, patrząc na prosty model statystyczny, taki jak średnia. Załóżmy, że film otrzymuje ocenę od 1 do 5. Siedem osób obejrzało film i oceniło film z ocenami 2, 5, 4, 5, 5, 5 i 5. Wszystkie z wyjątkiem jednej z tych ocen są dość podobne (głównie 5 i 4), ale pierwsza ocena była zupełnie inna od pozostałych. To była ocena 2. To jest przykład wartości odstającej. Wykresy pudełkowe mówią nam coś o rozkładach wyników. Wykresy pokazują nam najniższą (dolną poziomą linię) i najwyższą (górną) linię poziomą. Odległość między najniższą poziomą linią a najniższą krawędzią przyciemnionego pudełka to zakres, między którym przypada najniższe 25% wyników (tzw. dolny kwartyl). Ramka (zabarwiony obszar) pokazuje środkowe 50% wyników (znane jako zakres międzykwartylowy); tj. 50% wyników jest większych niż najniższa część zabarwionego obszaru, ale mniejsza niż górna część zabarwionego obszaru. Odległość między górną krawędzią przyciemnionego pudełka a górną poziomą linią pokazuje zakres, pomiędzy którym przypada górne 25% wyników (górny kwartyl). Na środku przyciemnionego pudełka znajduje się nieco grubsza pozioma linia. To reprezentuje wartość mediany. Podobnie jak histogramy, mówią nam również, czy rozkład jest symetryczny czy pochylony. W celu symetrycznego rozmieszczenia wąsów po obu stronach pudełka mają one równą długość. Wreszcie zauważysz małe kółka nad każdym polem wykresu. Są to przypadki uważane za wartości odstające. Każde koło ma obok siebie liczbę, która mówi nam, w którym rzędzie edytora danych znaleźć przypadek. Wykres ramkowy jest szeroko stosowany do badania istnienia wartości odstających w zbiorze danych. Dwa ważne fakty, o których należy pamiętać w przypadku wykresu pudełkowego to : 1. Liczba obserwacji w zestawie danych musi wynosić co najmniej pięć. 2. Jeśli w zestawie danych znajduje się więcej niż jedna kategoria, należy je posortować według kategorii. Zestaw danych zawierający oceny 5 studentów z przedmiotów z języka angielskiego i przedmiotów ścisłych istnieje w formacie CSV. boxplot jest słowem kluczowym do generowania boxplot. Wykreślanie odbywa się między ocenami uzyskanymi przez studentów a przedmiotem. Istnienie wartości odstających w zbiorze danych obserwuje się jako punkty poza ramką. Chcemy skupić się na interesujących momentach na peryferiach, znanych jako wartości odstające i dlaczego mogą być ważne. Kiedy wartości odstające stają się skrajnymi obserwacjami po lewej lub po prawej stronie, może to zmienić założenia przyjęte przez statystę w konfiguracji badania dotyczące zachowania rekrutowanej populacji, co może zagrozić dowodowi badania i ostatecznie kosztownej porażce. Obserwacje ekstremalne są przedmiotem zainteresowania i zasługują na naszą uwagę, ponieważ są czymś więcej niż zwykłymi wartościami odstającymi na końcu krzywej dzwonowej. Są to te, które wypaczają rozkład do kształtu F.

KROK 4

Przygotowanie Danych

WPROWADZENIE

Przygotowanie danych obejmuje etapy eksploracji, przetwarzania wstępnego i danych reklamacyjnych przed modelowaniem i analizą. Szczegółowe zrozumienie danych ma kluczowe znaczenie dla powodzenia projektu. Musimy zdecydować, w jaki sposób uwarunkować i przekształcić dane, aby uzyskać format umożliwiający późniejszą analizę. Może być konieczne wykonanie wizualizacji danych, aby pomóc nam zrozumieć dane, w tym ich trendy, wartości odstające i relacje między zmiennymi danych. Przygotowanie danych jest zwykle najbardziej pracochłonnym krokiem i w rzeczywistości zespoły spędzają co najmniej 50% czasu projektu w tej krytycznej fazie. Jeśli zespół nie jest w stanie uzyskać wystarczającej ilości danych o wystarczającej jakości, może nie być w stanie wykonać kolejnych kroków w cyklu życia. Przygotowanie danych odnosi się do procesu czyszczenia danych, normalizacji zestawów danych i wykonywania transformacji danych. Krytyczny krok w cyklu życia analizy danych, warunkowanie danych może obejmować wiele skomplikowanych kroków w celu połączenia lub scalenia zestawów danych lub w inny sposób wprowadzenia zestawów danych w stan umożliwiający analizę w kolejnych fazach. Uwarunkowanie danych jest często postrzegane jako etap przetwarzania wstępnego dla analizy danych, ponieważ obejmuje wiele operacji na zbiorze danych przed opracowaniem modeli do przetwarzania lub analizy danych. Etapy przygotowania danych obejmują:

1. Tworzenie nowych zmiennych.
2. Grupowanie danych, usuwanie duplikatów obserwacji w zbiorze danych.
3. Formatowanie.
4. Przechowywanie, upuszczanie, zmiana nazwy, etykietowanie.
5. Przetwarzanie warunkowe.
6. Funkcje.
7. Łączenie zestawów danych.
8. Transpozycja danych.

TWORZENIE NOWYCH ZMIENNYCH

Weźmy zestaw danych pracowników, mamy ich miesięczne dane dotyczące dochodu, chcemy obliczyć podwyżkę ich wynagrodzeń i obliczyć nową pensję. Używamy operatora przypisania (<-) do tworzenia nowych zmiennych.

setwd("D:/R data")
Employee <- read.csv("Employee.csv")
fix(Employee)
Utwórz zmienną o nazwie Bonus z 8% wzrostem wynagrodzenia
Employee$Bonus <- Employee$Salary*.08
Employee$Newsal <- Employee$Salary + Employee$Bonus
fix(Employee)

SORTOWANIE DANYCH

Aby zgrupować ramkę danych w R, użyj funkcji order(). Domyślnie sortowanie jest ROSNĄCE. Dodaj zmienną sortującą. Znak minus oznacza kolejność MALEJĄCO.

# Sortuj według wieku
Agesort <- Employee[order(Age),]
#Sortowanie z wieloma zmiennymi, sortuj według płci i wieku
Mul_sort <- Employee[order(Gender, Age),]

Wykonując powyższy kod, posortowaliśmy ramkę danych na podstawie Gender jako pierwszej preferencji i Age jako drugiej.
#Sortuj według Gender (rosnąco) i Age (malejąco)
Rev_sort <- Employee[order(Gender, -Age),]
detach(Employee)

IDENTYFIKACJA I USUWANIE DUPLIKOWANYCH DANYCH

Możemy usunąć zduplikowane dane za pomocą funkcji duplicated() i unique(), a także funkcji odrębnej w pakiecie dplyr. Funkcja duplicated() zwraca wektor logiczny, w którym PRAWDA określa, które elementy wektora lub ramki danych są duplikatami. Biorąc pod uwagę następujący wektor:

Cust_Id <- c (101, 104, 104, 105, 104, 105)

Aby znaleźć pozycję zduplikowanych elementów w x, możemy użyć tego:

duplicated(Cust_Id)

Możemy wyświetlić zduplikowane elementy, wykonując następujący kod.

Cust_Id [duplicated(Cust_Id)]

Jeśli chcesz usunąć zduplikowane elementy i uzyskać tylko unikalne wartości, użyj! Duplicated(), gdzie! jest logiczną negacją:

Uniq_Cust <- Cust_Id [! Duplicated (Cust_Id)]

W naszych codziennych zadaniach musimy tworzyć, modyfikować, manipulować i przekształcać dane, aby przygotować je do analizy i raportowania. Używamy niektórych lub innych funkcji do większości operacji na danych. Znajomość tych funkcji może znacznie ułatwić programowanie. Możemy usunąć zduplikowane wiersze z ramki danych na podstawie wartości kolumn, w następujący sposób: # Usuń duplikaty na podstawie kolumn Work_Balance

Uniq_WB <- Employee [!duplicated(Employee$ Work_Balance), ]

Możesz wyodrębnić unikalne elementy w następujący sposób:

unique(Cust_Id)

Możliwe jest również zastosowanie unique() do ramki danych, aby usunąć zduplikowane wiersze w następujący sposób:

unique(Employee)

Funkcja distinct() w pakiecie dplyr może być używana do przechowywania tylko unikatowych / odrębnych wierszy z ramki danych. Jeśli istnieją zduplikowane wiersze, zachowany zostanie tylko pierwszy wiersz. Jest to wydajna wersja podstawowej funkcji R unique(). Pakiet dplyr można załadować i zainstalować w następujący sposób:

install.packages("dplyr")

library("dplyr")

Usuń zduplikowane wiersze na podstawie wszystkich kolumn:

distinct(Employee)
#Usuń zduplikowane wiersze na podstawie określonych kolumn (zmiennych): Usuń zduplikowane wiersze na podstawie JobSatisfaction.
distinct(Employee, JobSatisfaction)
# Usuń zduplikowane wiersze na podstawie JobSatisfaction i Perf_Rating.
distinct(Employee, JobSatisfaction, Perf_Rating)

FILTROWANIE OBSERWACJI NA PODSTAWIE WARUNKÓW

Age_Con <- Employee[which(Employee$Age < 40), ]

Podczas filtrowania obserwacji na podstawie zmiennych znakowych musimy osadzić ciąg w cudzysłowach.

Sex_Con <- Employee[which(Employee$Gender ="male"), ]
Filtruj obserwacje na podstawie wielu warunków

Mul_Con <-Employee[which(Employee $Gender=='Female' & Employee $Age < 30),]

Wybór za pomocą funkcji subset

Funkcja subset() jest najłatwiejszym sposobem wybierania zmiennych i obserwacji. W poniższym przykładzie wybieramy wszystkie wiersze, które mają wartość wieku większą lub równą 50 lub wiek mniejszą niż 30. Zachowujemy kolumny Emp_Id i Age.

# Korzystanie z funkcji podzbioru
Test <- subset(Employee, Age >= 50 | Age < 30, select=c(Emp_Id, Age))

Przetwarzanie warunkowe

Dość często musimy przetwarzać dane w oparciu o określone warunki, a podejmowanie decyzji jest ważną częścią programowania. Można to osiągnąć za pomocą warunkowej instrukcji if ... else.

Składnia instrukcji If:

if (test_expression) {
statement
}

Możemy tworzyć nowe zmienne, używając, jeśli inaczej. Chcemy promować nasz produkt tylko wśród osób, których dochód przekracza 40 tys.

Employee$Promo <- ifelse(Employee$Salary>40000,"Promote Product","Do not Promote Product")
fix(Employee)

# Tutaj sprawdzamy, czy elementy Wynagrodzenia pracownika $ są większe niż 40000, jeśli element jest większy niż 40000, przypisuje wartość Promuj produkt do promocji pracownika, a jeśli nie jest on większy niż 40000, przypisuje wartość z Nie promuj produktu na promocję $ pracownik. Chcemy przypisać wartości Low, Medium i High do zmiennej Sal_Grp. Aby to zrobić, możemy użyć zagnieżdżonych instrukcji ifelse():

Employee$Sal_Grp <-ifelse(Employee$Salary >20000 & Employee$Salary<50000," Medium", ifelse(Employee$Salary >= 50000, "High","Low"))

Teraz to mówi, najpierw sprawdź, czy każdy element wektora Salary jest > 20000 i < 50000. Jeśli tak, przypisz Medium do Sal_Grp. Jeśli tak nie jest, sprawdź następną instrukcję ifelse (), czy Salary > 50000. Jeśli tak, przypisz Sal_Grp wartość High. Jeśli nie jest to żaden z nich, przypisz Low.

FORMATOWANIE

Jest to powszechnie stosowane w celu poprawy wyglądu danych wyjściowych, możemy używać już istniejących (zdefiniowanych przez system) formatów, a nawet tworzyć niestandardowe formaty do wartości bin w efektywny sposób. Korzystając z tego, możemy grupować dane na różne sposoby, bez konieczności tworzenia nowego zestawu danych. Wyobraźmy sobie, przeprowadziliśmy ankietę na temat nowego produktu (A / c): Ogólnie zadowolony - 1 - Bardzo niski 2 - Niski 3. OK, 4 - Dobry 5 Bardzo dobry. Chociaż istnieje wiele sposobów pisania niestandardowych rozwiązań, analityk powinien znać specjalne procedury, które mogą zmniejszyć potrzebę niestandardowego kodowania. R będzie traktować czynniki jako zmienne nominalne, a czynniki uporządkowane jako zmienne porządkowe. Możesz użyć opcji w funkcjach factor() i ordered() do sterowania mapowaniem liczb całkowitych na ciągi. Możemy użyć funkcji czynnikowej do stworzenia własnych etykiet wartości.

setwd("D:/R data")
Shop <- read.csv("Shopping.csv")
fix(Shop)
# Zmienna marki w zestawie danych Sklepu ma kod 1, 2, 3 .: Chcemy dołączyć etykiety wartości
1=Samsung, 2=Hitachi, 3=Bluestar.
Shop$Brand <- factor(Shop$Brand, levels = c(1,2,3),
labels = c("Samsung", "Hitachi", "Bluestar"))
# zmienna y jest kodowana 1,2, 3,4 i 5 # chcemy dołączyć etykiety wartości 1 - Bardzo niski 2 - Niski 3. OK 4 - Ddobry 5 - Bardzo dobry.
Shop$Overall_Sat <- ordered(Shop$Overall_Sat, levels = c(1,2,3,4,5),
labels = c("Very Low", "Low", "OK", "Good", "Extremely Good"))

Czasami możesz chcieć utworzyć nową zmienną kategorialną, klasyfikując obserwacje według wartości zmiennej ciągłej. Załóżmy, że chcesz utworzyć nową zmienną o nazwie Age.Cat, która klasyfikuje ludzi jako "Młodych", "Dorosłych" i "Starych" według ich wieku. Osoby w wieku poniżej 35 lat są klasyfikowane jako młode, osoby między 35 a 60 rokiem życia są klasyfikowane jako dorośli, a osoby powyżej 60 lat są klasyfikowane jako osoby starsze.

Employee$Age.Cat<-cut(Employee$Age, c(18,35, 60,90), c("Young", "Adult", "Old")

UTRZYMANIE, OPADANIE, ZMIANA NAZWY, ETYKIETOWANIE

# Wybierz zmienne
myvars <- c("Brand", "Safety", "Look")
Sub_shop <- Shop[myvars]
fix(Sub_shop)
# Wyklucz 4 i 6 zmienną
Sub_data <- Shop[c(-4,-6)]
fix(Sub_data)
# Zmień nazwę interaktywnie
fix(Shop) # results are saved on close
# Zmień nazwę programowo
library(reshape)
Ren_Shop <- rename(Shop, c(Safety="Security"))

Etykietowanie zmiennych: Możemy przypisać etykiety zmiennych w var.labels do kolumn w danych ramki danych za pomocą etykiety funkcji z pakietu Hmisc.

install.packages("Hmisc")
library("Hmisc")
label(Shop[["Overall_Sat"]]) <- "Overall Satisfaction of the Customer"
label(Shop[["Look"]]) <- "Look and Feel of the Product"
label(Shop)

FUNKCJE

Funkcja zwraca wartość z obliczeń lub manipulacji systemem, która wymaga zero lub więcej argumentów. Funkcja jest tworzona przy użyciu słowa kluczowego function. Podstawowa składnia definicji funkcji R jest następująca:

New_Var <- nazwa_funkcji (Argument1, Argument2, ... N).

Funkcja jest rozpoznawana przez użycie nazwy funkcji, po której następuje natychmiast argument (argumenty) funkcji, oddzielone przecinkami i ujęte w nawiasy. Liczba wymaganych i opcjonalnych argumentów jest jednak różna. Niektóre funkcje mają po prostu jeden wymagany argument. Inne mają jeden wymagany i jeden lub więcej opcjonalnych argumentów. W większości przypadków ważna jest kolejność argumentów. Niektóre funkcje nie przyjmują argumentów, w takim przypadku wymagany jest zerowy zestaw nawiasów.

Funkcje znakowe

Funkcje toupper, tolower: Te funkcje zmieniają wielkość liter argumentu

Name <- 'Ramya Kalidindi' #Przypisywanie wartości do zmiennej
upcf <- toupper (Name)
locf <- tolower(Name)

Funkcja trimws: Dość często dane, które otrzymujemy, mogą zawierać niepożądane spacje i chcemy je usunąć, aby nasze dane były czyste. Używamy funkcji trimws, aby radzić sobie z odstępami łańcucha.

Name <- " Y Lakshmi Prasad "
Trimmed_Name <- trimws(Name, which = c("both", "left", "right"))

Funkcja substr: Ta funkcja służy do wydobywania znaków ze zmiennych łańcuchowych. Argumenty substr() określają wektor wejściowy, początkową pozycję znaku i końcową pozycję znaku. Ostatni parametr jest opcjonalny. W przypadku pominięcia wszystkie znaki po lokalizacji określonej w drugim miejscu zostaną wyodrębnione.

Req_Name <- substr(Name, 6, 12)

Tworzenie zmiennej łańcuchowej ze zmiennych numerycznych

stringx <- as.character (numericx)
typeof (stringx)
typeof (numericx)

Funkcja typeof() może być używana do weryfikacji typu obiektu, możliwe wartości to logiczne, całkowite, podwójne, złożone, znakowe, surowe, lista, NULL, zamknięcie (funkcja), specjalne i wbudowane.

Twórz zmienne numeryczne ze zmiennych łańcuchowych.

Argument w funkcji as.numeric, liczba całkowita jest liczbą znaków w łańcuchu, podczas gdy liczba dziesiętna jest opcjonalną specyfikacją, ile znaków występuje po przecinku.

numericx <- as.numeric (stringx)
typeof (stringx)
typeof (numericx)

Zadanie: Oblicz przyrost na 10% i uzyskaj nowe wynagrodzenie dla każdego Id.
Num_data <- data.frame(Id = c(101,102,103),
Salary =c(40700,12000,37000))
sapply(Num_data, mode)
Num_data$Char_sal <- as.character(Num_data$Salary)
typeof(Num_data$Char_sal)
Num_data$Saln <- as.numeric(Num_data$Char_sal)
typeof(Num_data$Saln)
Num_data$Bonus <- Num_data$Saln*.10
fix(Num_data)
Num_data$New_Sal <- Num_data$Saln+Num_data$Bonus

Funkcje numeryczne

Funkcja Abs: Używamy tej funkcji do uzyskania wartości bezwzględnej;

a = 5
aba <- abs (a)
Val <- -28,86
Req <- abs (Val))

Wartości Floor(Base) and ceiling(Top):

Flx = floor(X) # Wartość bazowa
Cilx = ceilling(X) # Najwyższa wartość
Funkcja Round:
Val= 43.837
Rval1=round(Val) #44
Rval2=round(Val,digits=2) #43.84

Funkcja MAX: Zwraca największą brakującą wartość z listy

X = maks. (2,6, NA, 8,0)
Funkcja MIN: Zwraca najmniejszą nie brakującą wartość z listy

Y = min (2,6,1,7,0, -2)
Funkcja Sum: zwraca sumę (całkowitą) wartości

Y = Sum(9,8,., 9)
Funkcja mean: Oblicza się ją, biorąc sumę wartości i dzieląc ją przez liczbę wartości w serii danych. Funkcja mean() służy do obliczenia tego w R.

# Utwórz wektor i znajdź jego średnią.
x <- c (7,3, NA, 4,18,2,54,8)
res_mean <- mean(x)
print (res_mean)
# Znajdź średnie spadające wartości NA.
resmean_na <- mean(x, na.rm = PRAWDA)
print (resmean_na)
Funkcja median: środkową wartością w serii danych jest mediana. Funkcja median() jest używana w R do obliczenia tej wartości.

# Utwórz wektor i znajdź medianę.
x <- c (12,7,3,4.2,18,2,54, -21,8, -5)
median.result <- mediana (x)
print (median.result)
Funkcje daty / godziny: Funkcje daty / godziny to zestaw funkcji, które zwracają części daty, wartości daty lub godziny lub konwertują wartości liczbowe na wartości R daty lub godziny. Te funkcje są przydatne do wyodrębniania daty i godziny z wartości daty i godziny lub przekształcania osobnych wartości miesiąca, dnia i roku w wartość daty R.

Funkcje Sys.Date, date: Funkcja zwraca dzisiejszą datę z zegara systemowego, nie wymagając żadnych argumentów.

Sys.Date() zwraca dzisiejszą datę.
date() zwraca aktualną datę i godzinę.
# print today's date
today <- Sys.Date()
format(today, format="%B %d %Y")
format(today, format="%m %d %Y")
format(today, format="%m %d %y")

Możesz zauważyć, że data systemowa jest prezentowana na różne sposoby, gdy zmieniamy format. Musimy znaleźć format, który lepiej pasuje do naszych wymagań i wybrać go. Konwertowanie znaków na datę: Możesz użyć funkcji as.Date () do konwersji danych znaków na daty. Format to As.Date (x, "format"), gdzie x to dane znakowe, a format daje odpowiedni format. Domyślny format to rrrr-mm-dd

Testdts <- as.Date(c("1982-07-12", "1975-03-01"))
# Użyj as.Date () do konwersji ciągów na daty
Testdts <- as.Date(c("1982-07-12", "1975-03-01"))
# liczba dni między 7/12/82 a 03/01/75
days <- Testdts [1] - Testdts [2]

ŁĄCZENIE DANYCH

Odczytywanie danych z dwóch lub więcej zestawów danych i przetwarzanie ich przez Append Rows, Append Columns, Merging

Dołączanie wierszy: Łączenie zestawów danych zasadniczo oznacza układanie jednego zestawu danych na drugim, to znaczy, biorąc pod uwagę dwa zestawy danych, wszystkie rekordy z drugiego zestawu danych zostaną dodane na końcu pierwszego zestawu danych podczas konkatenacji zestawów danych mają identyczną strukturę, ale inną zawartość. Przez strukturę rozumiemy, że tabele miałyby takie same nazwy kolumn, a kolumny miałyby ten sam typ (numeryczny lub znakowy). Jeśli kolumna istnieje w co najmniej jednym zestawie danych, ale nie w innym, kolumna ta jest uwzględniana we wszystkich rekordach wyjściowych, ale z brakującą wartością dla wszystkich rekordów w tabelach, które nie miały tej kolumny. Funkcja rbind umożliwia dołączenie jednego zestawu danych na dole drugiego, co jest znane jako dołączanie lub łączenie zestawów danych. Jest to przydatne, gdy chcesz połączyć dwa zestawy danych, które zawierają różne obserwacje dla tych samych zmiennych. Korzystając z funkcji rbind, musimy upewnić się, że każdy zestaw danych zawiera tę samą liczbę zmiennych i wszystkie nazwy zmiennych są zgodne. Konieczne może być usunięcie lub zmiana nazw niektórych zmiennych w tym procesie. Zmienne nie muszą być ułożone w tej samej kolejności w zestawach danych, ponieważ funkcja rbind automatycznie dopasowuje je według nazwy. Funkcja rbind nie identyfikuje duplikatów ani nie sortuje danych. Możesz to zrobić dzięki funkcjom unikalnym i zamówieniowym.

sale1 <- data.frame(Cust_Id = c(101,103,105),
Amount_Spent =c(1700,1200,3700),
Pur_dt = c(20-03-2015,20-03-2015,20-03-2015))
fix(sale1)
sale2 <- data.frame(Cust_Id = c(103,104,105,108),
Pur_dt = c(22-03-2015,22-03-2015,22-03-2015,22-03-2015),
Amount_Spent =c(1800,3400,2500,3200))
fix(sale2)
saleall <-rbind(sale1, sale2)
fix(saleall)

Zauważ, że nowy zestaw danych zawiera wszystkie oryginalne dane w oryginalnej kolejności, w tym dwie kopie danych dla Cust_Id 103 i 105. Możemy dołączyć dwa lub więcej zbiorów danych w ten sam sposób.

Dołączanie kolumn: Funkcja cbind wkleja jeden zestaw danych na bok innego. Jest to przydatne, jeśli dane z odpowiednich wierszy każdego zestawu danych należą do tej samej obserwacji. Funkcji cbind można używać tylko do łączenia zestawów danych o tej samej liczbie wierszy.

Scalanie zestawów danych przez wspólne zmienne: Funkcja scalania pozwala połączyć dwa zestawy danych poprzez dopasowanie obserwacji zgodnie z wartościami wspólnych zmiennych. Rozważ zestawy danych sale1 i loc1. Zestawy danych mają wspólną zmienną o nazwie Cust_Id, której można użyć do dopasowania odpowiednich obserwacji.

loc1 <- data.frame(Cust_Id = c(101,102,103,104,105),
Location =c("Hyderabad","Bangalore","Chennai","Hyderabad","Bangalore"))
Merdata <- merge(sale1,loc1)
fix(Merdata)
Funkcja merge identyfikuje zmienne o tej samej nazwie i używa ich do dopasowania obserwacji. W tym przykładzie oba zestawy danych zawierają zmienną o nazwie Cust_Id, więc R automatycznie używa tej zmiennej, aby dopasować obserwacje.

All_mer <- merge (sale1, loc1, all = T)
fix (All_mer)

Po połączeniu dwóch zestawów danych z funkcją merge R automatycznie wyklucza wszelkie niedopasowane obserwacje, które pojawiają się tylko w jednym z zestawów danych. Argumenty all, all.x i all.y pozwalają kontrolować, w jaki sposób R radzi sobie z niedopasowanymi obserwacjami. Aby zachować wszystkie niedopasowane obserwacje, ustaw argument all na T:

L_mer <- merge(sale1,loc1,all.x=T)
fix(L_mer)
R_mer <- merge(sale1,loc1,all.y=T)
fix(R_mer)

Aby połączyć dwie ramki danych (zestawy danych) w poziomie, użyj funkcji scalania. W większości przypadków łączysz dwie ramki danych za pomocą jednej lub więcej wspólnych zmiennych kluczowych (tj. sprzężenia wewnętrznego).

# scal dwie ramki danych według identyfikatora
total <- merge(data frameA,data frameB,by="ID")

Dodawanie wierszy: Aby połączyć dwie ramki danych (zestawy danych) pionowo, użyj funkcji rbind. Dwie ramki danych muszą mieć te same zmienne, ale nie muszą być w tej samej kolejności.

total <- rbind (data frame A, data frame B)

TRANSPOZYCJA DANYCH

Przekształcanie zestawu danych jest również znane jako Obracanie, Transpozycja lub Transformacja zestawu danych. Zwykle ma to zastosowanie do zestawów danych, w których wykonano powtarzane pomiary, funkcja zmiany kształtu służy do zmiany orientacji danych., Ale przed wykonaniem zmiany kształtu musimy zadać sobie następujące pytania:

•  Co powinno pozostać takie samo
•  Która zmienna powinna wzrosnąć
•  Która zmienna powinna zmaleć
•  Która zmienna powinna przejść na środek

# Przeniesienie danych
setwd("D:/R data")
Vitals <- read.csv("Vitals.csv")
fix(Vitals)
T_vitals<-reshape( Vitals, direction="wide", v.names="Result", timevar="VS_Test", idvar="Pat_Id")
fix(T_vitals)

Ponieważ Pat_Id jest określony w idvar, pozostał na tej samej pozycji, wszystkie pozostałe zmienne zostały transponowane. Użyj argumentu v.names, aby określić zmienną, którą chcesz podzielić na różne kolumny. Użyj argumentu timevar, aby określić zmienną wskazującą, do której kolumny należy wartość. Użyj argumentu idvar, aby określić, która zmienna jest używana do grupowania rekordów.

KROK 5

Myślenie Statystyczne

WPROWADZENIE

Statystyka to nauka zajmująca się zbieraniem, klasyfikacją, analizą i interpretacją faktów liczbowych oraz wykorzystaniem teorii prawdopodobieństwa w celu uporządkowania agregatów danych. Przyjrzyjmy się niektórym problemom biznesowym, z którymi boryka się człowiek biznesu, gdzie potrzebuje statystycznych metod ich rozwiązywania.

•  Gdzie powinniśmy otworzyć nasz nowy sklep detaliczny?
•  Jak duże pomieszczenia powinniśmy wynająć?
•  Ile osób powinienem obsłużyć w tym sklepie?
•  Jaki jest odpowiedni poziom zapasów dla każdego produktu?
•  Jak zwiększyć wartość klienta i ogólne przychody?
•  Jak opracować nowe, udane produkty?
•  Czy powinniśmy przyjmować zamówienia online, czy nie?
•  Ile powinniśmy zainwestować w reklamę?
•  Jak obniżyć koszty operacyjne?

TERMINOLOGIA STATYSTYCZNA

Przed rozwiązaniem wyżej wymienionych problemów przyjrzyjmy się terminom statystycznym, które pozwalają nam wygodnie radzić sobie z tymi scenariuszami.
Populacja: Populacja to kompletny zestaw elementów, które mają co najmniej jedną wspólną cechę.
Próbka: podzbiór populacji wybrany do analizy.
Parametr: miara obliczana dla całej populacji.
Statystyka: miara obliczana na próbce.
Statystyki opisowe: służą do opisywania lub podsumowywania danych w sposób znaczący i użyteczny. Możemy opisywać dane na wiele sposobów, takich jak miary tendencji centralnej, miary dyspersji, miary lokalizacji i kształtu rozkładu. Miary opisowe dają lepsze wyczucie danych i mogą przedstawiać ogólny obraz danych, statystyki te obejmują średnią, tryb, medianę, minimum, maksimum, wariancję, odchylenie standardowe, skośność, kurtozę itp.
Statystyki wnioskowania: metody wykorzystujące teorię prawdopodobieństwa do dedukcji właściwości populacji na podstawie analizy właściwości próbki danych z niej pobranej.
Statystyka predykcyjna: metody przewidywania przyszłych prawdopodobieństw na podstawie danych historycznych.
Statystyka preskryptywna: Metody pozwalają nam na określenie szeregu możliwych działań i prowadzą nas w kierunku optymalnego rozwiązania.

Zmienna losowa: zmienna, której wartość może ulec zmianie ze względu na przypadek.
Odchylenie: Nadawanie niesprawiedliwej preferencji jednej rzeczy względem drugiej.
Zmienna: Zmienna jest cechą lub atrybutem, który można zmierzyć lub policzyć.

Dane można podzielić na 2 typy:

1. Dane jakościowe: Jeśli możemy ustawić dane w dowolnej liczbie grup, nazywamy te dane danymi jakościowymi. Jeśli nie ma uporządkowania między kategoriami, nazywamy tę zmienną, zmienną nominalną, jeśli kategorie mogą być uporządkowane, wówczas nazywamy tę zmienną jako zmienną porządkową.
2. Dane ilościowe: jest to pomiar wyrażony w liczbach, ale nie wszystkie liczby są liczbowe, takie jak numer telefonu komórkowego i kod pocztowy w Indiach, których nie możemy dodawać ani odejmować.

SKALA POMIARU

Są to sposoby kategoryzacji różnych typów zmiennych.

Skala nominalna: Skala ta spełnia właściwość tożsamości pomiaru. Weźmy na przykład Płeć. Osoby mogą być klasyfikowane jako "mężczyzna" lub "kobieta", ale żadna wartość nie reprezentuje mniej więcej "płci" niż druga. Religia i rasa to inne przykłady zmiennych, które są zwykle mierzone w skali nominalnej.
Skala porządkowa: ta skala ma właściwość zarówno tożsamości, jak i wielkości. Każda wartość na skali porządkowej ma unikalne znaczenie i ma uporządkowany związek z każdą inną wartością na skali. Weźmy przykład oceniania filmu ?. Otrzymujemy odpowiedzi na bardzo dobre, dobre, średnie, złe itp.
Skala interwałów: ta skala ma właściwości identyczności, wielkości i równych przedziałów. Doskonałym przykładem skali interwałowej jest skala Fahrenheita do pomiaru temperatury. Skala składa się z równych jednostek temperatury, tak że różnica między 40 a 50 stopni Fahrenheita jest równa różnicy między 50 a 60 stopni Fahrenheita. Dzięki skali interwałowej wiesz również, jak duże lub mniejsze są.
Skala stosunku: ta skala pomiaru spełnia wszystkie cztery właściwości pomiaru: tożsamość, wielkość, równe przedziały i zero bezwzględne. Na przykład, jeśli waga obiektu wynosi 80 kilogramów, możemy powiedzieć, że ten obiekt jest podwójny w stosunku do obiektu który waży 40 kilogramów. Zmienne takie jak wzrost, wiek, waga mają unikalne znaczenie, mogą być uporządkowane według rangi, jednostki wzdłuż skali są sobie równe, a absolutne zero.

TECHNIKI POBIERANIA PRÓBEK

Techniki pobierania próbek to metody stosowane do pobrania próbki z populacji. Istnieją różne metody próbkowania. Statystyka próby jest charakterystyczną cechą próby, statystyki próby mogą być wykorzystane jako oszacowanie punktowe dla parametru populacji. Wybór prostej próbki losowej (SRS):

•  Bezstronny: Każda jednostka ma równe szanse na wybór w próbie
•  Niezależny: Wybór jednej jednostki nie ma wpływu na wybór innych jednostek
•  SRS to złoty standard, w stosunku do którego mierzone są wszystkie inne próbki

Wybieranie ramki próbkowania:

•  Ramka próbkowania to po prostu lista elementów, z których można pobrać próbkę.
•  Czy ramka próbkowania reprezentuje populację?
•  Dostępna lista może różnić się od żądanej listy: np. nie mamy listy klientów, którzy nie kupili w sklepie.
•  Czasami nie istnieje kompleksowa ramka próbkowania: przy prognozowaniu na przyszłość. Tak więc pełna lista akceptacji ofert kart kredytowych jeszcze nie istnieje.

Typowe wady pobierania próbek:

•  Zbieranie danych tylko od ochotników (próbka dobrowolnej odpowiedzi): - np. recenzje online (maps.google.com, tripadvisor.com)
•  Wybór łatwo dostępnych respondentów (próba wygody): - np. wybranie ankiety w centrum handlowym In-Orbit
•  Wysoki wskaźnik braku odpowiedzi (ponad 70%): - np. Ankiety CEO / CIO dotyczące niektórych trendów w branży

Wariacja próbkowania:

•  Średnia próbki różni się w zależności od próbki
•  Średnia próbki może być (i najprawdopodobniej jest różna) od średniej populacji
•  Średnia próbki jest zmienną losową

Centralne twierdzenie graniczne (CLT) i rozkład średniej próbki:

Rozkład średniej próbki będzie normalny, gdy rozkład danych w populacji będzie normalny. W przeciwnym razie zakładamy, że jest on w przybliżeniu normalny, nawet jeśli rozkład danych w populacji nie jest normalny, jeśli wielkość próby jest "dość duża". CLT jest ważny, gdy każdy punkt danych w próbce jest niezależny od drugiego, a wielkość próbki jest wystarczająco duża.

Jak duży jest wystarczająco duży?

•  Zależy od dystrybucji danych - przede wszystkim od symetrii i obecności wartości odstających
•  Jeśli dane są dość symetryczne i mają kilka wartości odstających, nawet mniejsze próbki są w porządku. W przeciwnym razie potrzebujemy większych próbek
•  Próbka o wielkości 30 jest uważana za wystarczająco dużą, ale może to / nie być wystarczające

Rozkłady próbkowania i centralne twierdzenie graniczne:

•  Ilu nowych klientów pozyskam, jeśli otworzę sklep w tym obszarze?
•  Jaki jest odpowiedni poziom zapasów
•  Jaki jest odpowiedni poziom zapasów dla naszego nowego ereadera?
•  Jaki jest wpływ braku zapasów
•  Jaki jest wpływ braku zapasów na zachowanie konsumentów?
•  Jakie oprocentowanie powinniśmy pobierać za tę pożyczkę?
•  Czy nasza jakość poprawi się po zleceniu konsultacji?
•  Ile czasu spędzają potencjalni klienci w sieci?
•  Czy po połączeniu skróciły się terminy realizacji naszych zamówień?
•  Ile ma takich pożyczek Ile takich pożyczek było niespłaconych w przeszłości?
•  Jaka jest ilość osobogodzin potrzebnych do ukończenia takiego projektu?

Wprowadzenie do teorii prawdopodobieństwa: prawdopodobieństwo jest wykorzystywane w całej firmie do oceny ryzyka związanego z podejmowaniem decyzji. Każda podjęta przez nas decyzja niesie ze sobą pewną szansę na niepowodzenie, dlatego analiza prawdopodobieństwa jest przeprowadzana formalnie i nieformalnie. Większość z nas stosuje prawdopodobieństwa z dwoma warunkami:

1. Kiedy wystąpi jedno lub drugie zdarzenie
2. W przypadku wystąpienia dwóch lub więcej zdarzeń
Rozumiemy to na przykładzie biżuterii z okazji Dnia Festiwalu. Jakie jest prawdopodobieństwo, że dzisiejszy popyt przekroczy naszą średnią sprzedaż? Jakie jest prawdopodobieństwo, że popyt przekroczy naszą średnią sprzedaż, a ponad 20% naszych sił sprzedaży nie zgłosi do pracy?

Zmienna losowa:

•  Zmienna losowa opisuje prawdopodobieństwo niepewnego przyszłego wyniku liczbowego losowego procesu.
•  Jest to zmienna, ponieważ może przyjąć jedną z kilku możliwych wartości.
•  Jest losowa ponieważ z każdą możliwą wartością wiąże się pewna szansa.

Niezależna: gdy wartość przyjmowana przez jedną zmienną losową nie wpływa na wartość przyjmowaną przez drugą zmienną losową: np. rzut dwiema kostkami.

Zależna: gdy wartość jednej zmiennej losowej daje nam więcej informacji na temat drugiej zmiennej losowej: np. wzrost i waga studentów.

TEORIA PRAWDOPODOBIEŃSTWA

Podejście klasyczne: prawdopodobieństwo zdarzenia jest równe liczbie wyników, w których zdarzenie ma miejsce, podzielonej przez całkowitą liczbę możliwych wyników.
Podejście względnej częstotliwości: Podczas rzucania monetą początkowo stosunek liczby głów do liczby prób pozostanie zmienny. Wraz ze wzrostem liczby tials stosunek zbiega się do stałej liczby (powiedzmy 0,5).
Podejście prawdopodobieństwa subiektywnego: opiera się na przeszłych doświadczeniach i intuicji jednostki. Większość decyzji kierowniczych dotyczy konkretnych, unikalnych sytuacji
Rozkład prawdopodobieństwa: rozkład prawdopodobieństwa jest regułą, która identyfikuje możliwe wyniki zmiennej losowej i przypisuje każdemu prawdopodobieństwo.

•  Rozkład dyskretny ma skończoną liczbę wartości: np. wartość nominalna karty, staż pracy studentów zaokrąglony do najbliższego miesiąca.
•  Rozkład ciągły ma wszystkie możliwe wartości w pewnym zakresie: np. miesięczna sprzedaż w sklepie detalicznym, tętno pacjentów w szpitalu. Ciągłe rozkłady są łatwiejsze w obsłudze i są dobrym przybliżeniem, gdy istnieje duża liczba możliwych wartości

Dyskretny rozkład prawdopodobieństwa: Załóżmy, że losowo wybrałeś kartę z talii kart. Jakie jest prawdopodobieństwo, że ta karta będzie

•  Większa niż 7?
•  Równa lub większa niż 6?
•  Mniejsza niż 3?
•  Większa niż 4 i mniej niż 8?

Dzienna sprzedaż dużych płaskich telewizorów w sklepie (X): Jakie jest prawdopodobieństwo sprzedaży? Jakie jest prawdopodobieństwo sprzedaży co najmniej trzech telewizorów?
Oczekiwana wartość lub średnia: Oczekiwana wartość lub średnia (?) zmiennej losowej jest średnią ważoną jej wartości, prawdopodobieństwa służą jako wagi. Jaka jest średnia liczba zegarków sprzedawana dziennie?
Odchylenie i odchylenie standardowe: obie miary zmienności lub niepewności w zmiennej losowej.
Wariancja (σ2): Średnia ważona kwadratowych odchyleń od średniej, Prawdopodobieństwa służą jako wagi, Jednostki są kwadratem jednostek zmiennej.
Odchylenie standardowe (σ): Pierwiastek kwadratowy wariancji, Mają takie same jednostki jak zmienna
Rozkład dwumianowy: Rozkład dwumianowy opisuje dyskretne dane wynikające z eksperymentu znanego jako proces Bernoulliego. Rzucanie monety określoną liczbę razy jest procesem Bernoulliego, a wyniki takich rzutów mogą być reprezentowane przez dwumianowy rozkład prawdopodobieństwa. Sukces lub porażka rozmówców w teście umiejętności może być również opisany przez proces Bernoulliego. Z drugiej strony rozkład częstotliwości żywotności świetlówek w fabryce byłby mierzony w ciągłej skali godzin i nie kwalifikowałby się jako rozkład dwumianowy. Funkcja masy prawdopodobieństwa, średnia i wariancja jest następująca:

Charakterystyka rozkładu dwumianowego

•  Możliwe są tylko dwa możliwe wyniki: głowy lub reszka, tak lub nie, sukces lub porażka
•  Każdy proces Bernoulliego ma swoje charakterystyczne prawdopodobieństwo. Weźmy sytuację, w której historycznie siedem dziesiątych wszystkich osób, które ubiegały się o określony rodzaj pracy, zdało egzamin. Powiedzielibyśmy, że charakterystycznym prawdopodobieństwem jest tutaj 0,7, ale moglibyśmy opisać nasze wyniki testów jako Bernoulli tylko wtedy, gdybyśmy byli pewni, że odsetka tych
•  Jednocześnie wynik jednego testu nie może wpływać na wynik innych testów.

Dystrybucja Poissona: Dystrybucja Poissona jest używana do opisania szeregu procesów, w tym dystrybucji połączeń telefonicznych przechodzących przez system rozdzielnic, zapotrzebowania pacjentów na usługi w placówce służby zdrowia, przyjazdu ciężarówek i samochodów do punktu poboru opłat oraz liczba wypadków na skrzyżowaniu.

Wszystkie te przykłady mają wspólny element: można je opisać za pomocą dyskretnej zmiennej losowej, która przyjmuje wartości całkowite (0, 1, 2, 3, 4 itd.). Liczba pacjentów przybywających do szpitala w danym przedziale czasu będzie wynosić 0, 1, 2, 3, 4, 5 lub inną liczbę całkowitą. Podobnie, jeśli policzysz liczbę samochodów przybywających do punktu poboru opłat na autostradzie w ciągu około 10 minut, liczba będzie wynosić 0, 1, 2, 3, 4, 5 itd. Funkcja masy prawdopodobieństwa, średnia i wariancja są następujące:

Charakterystyka rozkładu Poissona

•  Jeśli weźmiemy pod uwagę przykład liczby samochodów, średnią liczbę pojazdów, które przybywają na godzinę szczytu, można oszacować na podstawie danych o ruchu drogowym w przeszłości.
•  Jeśli podzielimy godzinę szczytu na odstępy po jednej sekundzie każda, stwierdzimy, że następujące stwierdzenia są prawdziwe.
• Prawdopodobieństwo, że dokładnie jeden pojazd dotrze do pojedynczej kabiny na sekundę, jest bardzo małą liczbą i jest stałe dla każdego przedziału jednej sekundy.
•  Prawdopodobieństwo, że dwa lub więcej pojazdów dotrze w ciągu jednej sekundy, jest tak małe, że możemy przypisać mu wartość zerową.
• Liczba pojazdów, które przybywają w danym interwale jednosekundowym, jest niezależna od czasu, w którym interwał jednosekundowy występuje w godzinach szczytu.
•  Liczba przylotów w dowolnym przedziale jednosekundowym nie zależy od liczby przylotów w żadnym innym przedziale jednosekundowym.

ROZKŁAD NORMALNY

Co to jest rozkład normalny?

•  Jak wykonać obliczenia prawdopodobieństwa związane z rozkładem normalnym?
•  Jakie są różne ważne właściwości rozkładu normalnego?

Podstawy rozkładu normalnego:

•  Wykres pdf (funkcja gęstości prawdopodobieństwa) jest krzywą w kształcie dzwonu
•  Normalna zmienna losowa przyjmuje wartości od -∞ do +∞
•  Jest symetryczny i wyśrodkowany wokół średniej (która jest również medianą i trybem)
•  Dowolny rozkład normalny można określić za pomocą tylko dwóch parametrów - średniej (?) i odchylenia standardowego (σ)
Piszemy to jako X ˜ N (μ, σ2)

Normalna dystrybucja ma zastosowania w wielu obszarach administracji biznesowej. Na przykład:

•  Współczesna teoria portfela zwykle zakłada, że zwroty ze zdywersyfikowanego portfela aktywów są zgodne z normalnym rozkładem.
•  W zarządzaniu operacjami zmiany procesów często są zwykle rozkładane.
•  W zarządzaniu zasobami ludzkimi wydajność pracowników jest czasem uważana za normalnie rozłożoną.

Czy rozkład jest normalny? Aby rozkład był normalny, powinny zostać spełnione następujące warunki:

•  Średnia, mediana i tryb powinny być prawie równe
•  Odchylenie standardowe powinno być niskie
•  Skośność i kurtoza powinny być bliskie zeru
•  Mediana powinna leżeć dokładnie pomiędzy górnym i dolnym kwartylem

Wykres normalnego prawdopodobieństwa: Wykres normalnego prawdopodobieństwa to technika graficzna do testowania normalności: ocena, czy zbiór danych jest w przybliżeniu normalnie rozłożony. W tym przypadku porównujemy zaobserwowane prawdopodobieństwo skumulowane z teoretycznym prawdopodobieństwem skumulowanym. Jeśli obserwowane dane pochodzą z rozkładu normalnego, powinniśmy uzyskać linię prostą. W przypadku rozkładu normalnego 68,2% danych mieści się w zakresie jednego odchylenia standardowego. (średnia - odchylenie standardowe, średnia + odchylenie standardowe).

Odstępstwa od normalności: jak możemy powiedzieć, że rozkład normalny jest rozsądnym przybliżeniem danych? Możemy spojrzeć na dane 1. Więcej niż jeden tryb sugerujący dane pochodzą z odrębnych grup, 2. Brak symetrii danych, 3. Niezwykłe wartości ekstremalne. Jeśli którykolwiek z nich zaobserwujemy, możemy powiedzieć, że dane nie są normalne. Możemy zidentyfikować te różnice, patrząc na 1. Kontrola wzrokowa histogramu 2. Podsumowania numeryczne, takie jak Skośność i Kurtoza 3. Podsumowania graficzne (wykres normalnego kwantylu).

1. Miary tendencji centralnej: Istnieją dokładnie trzy sposoby znalezienia wartości centralnej:

Średnia arytmetyczna, mediana i tryb.
Średnia jest obliczana przez znalezienie sumy danych z badania i podzielenie ich przez całkowitą liczbę danych. Określenie częstości akcji serca jest ważną częścią stanu medycznego. Oto wektor zawierający liczbę uderzeń serca. rytmy <- c (94, 83, 84, 93, 82, 78, 98, 84). Szybkim sposobem oceny naszych danych byłoby uzyskanie średniej liczby uderzeń. Statystycy nazywają to "środkiem". Wywołaj funkcję średnią z uderzeń serca.

mean(beats)
barplot (beats)
Jeśli narysujemy linię na wykresie reprezentującą średnią, możemy łatwo porównać różne wartości ze średnią. Funkcja abline może przyjmować parametr h o wartości, przy której narysowana zostanie linia pozioma lub parametr v dla linii pionowej. Po wywołaniu aktualizuje poprzednią fabułę. Narysuj poziomą linię w poprzek wykresu na środku:

abline (h = mean(beats))

Mediana jest środkową wartością w zestawie danych. Oblicza się go najpierw poprzez uporządkowanie danych w kolejności numerycznej, a następnie zlokalizowanie wartości na środku listy. Weźmy przykład ocen uzyskanych przez grupę studentów. Załóżmy, że egzamin został przeprowadzony dla 50 znaków.

marks <- c (14, 13, 14, 23, 42, 24, 47, 18)
mean (marks)

Zobaczmy, jak ten nowy środek pokazuje się na tym samym wykresie.

barplot (marks)
abline (h = mean (marks))

Rzeczywiste może być stwierdzenie, że nasi uczniowie mają średnio 24.375 ocen, ale prawdopodobnie również wprowadzają w błąd. W takich sytuacjach prawdopodobnie bardziej przydatne jest mówienie o wartości "mediany". Mediana jest obliczana przez sortowanie wartości i wybranie środkowej.

Wywołaj funkcję mediany na wektorze:

median(marks)

Pokażmy medianę na wykresie. Narysuj poziomą linię w poprzek wykresu na środkowej.

abline (h = median(marks))

Tryb to liczba, która pojawia się najczęściej w zbiorze danych.

2. Miary dyspersji: Chcemy dowiedzieć się, jak rozłożyć dane na podstawie wartości centralnej, tj. średniej. W tym przypadku chcielibyśmy przyjrzeć się miarom dyspersji, takim jak zasięg, wariancja, odchylenie standardowe.

Zakres: Aby uzyskać zakresu, odejmij najmniejszą liczbę od największej.

Wariancja: Pochodzi z sumy kwadratowej różnicy każdej z danych ze średniej arytmetycznej danych.

Odchylenie standardowe: weź pierwiastek kwadratowy wariancji, otrzymamy odchylenie standardowe danych. Statystycy używają pojęcia "odchylenie standardowe" od średniej, aby opisać zakres typowych wartości dla zestawu danych. W przypadku grupy liczb pokazuje, jak często różnią się one od wartości średniej. Aby obliczyć odchylenie standardowe, należy obliczyć średnią wartości, a następnie odjąć średnią od każdej liczby i obliczyć wynik, a następnie uśrednić te kwadraty i przyjąć pierwiastek kwadratowy z tej średniej. Weź wektor z wartościami wynagrodzeń osób pracujących w dziale.

wynagrodzenie <- c (46000, 50000, 35000, 30000, 44800, 45000, 10200, 15000)
barplot (wynagrodzenie)
meanValue <- mean(wynagrodzenie)
Zobaczmy wykres pokazujący średnią wartość:
abline (h = meanValue)

Do obliczenia odchylenia standardowego używamy funkcji sd. Wywołajmy teraz sd na wektorze wynagrodzeń i przypiszmy wynik do zmiennej odchylenia.

odchylenie <- sd (wynagrodzenie)
Dodamy linię na wykresie, aby pokazać jedno odchylenie standardowe powyżej średniej

abline (h = meanValuć + odchylenie)

Teraz spróbuj dodać linię na wykresie, aby pokazać jedno odchylenie standardowe poniżej średniej (dolnej części normalnego zakresu):

abline (h = meanValue - odchylenie)
3. Miary lokalizacji: Aby lepiej zrozumieć dane, obserwujemy nawet miary lokalizacji, takie jak kwartyle, decyle i percentyle, które dzielą dane odpowiednio na 4, 10 i 100 części.

4. Kształt rozkładu: Istnieją dwie statystyki związane z kształtem, skośnością i kurtozą.

Skośność: wykrywa, czy dane są symetryczne względem centralnej wartości rozkładu. Jeśli histogram ma długi lewy ogon, nazywamy to danymi ujemnie wypaczonymi, a jeśli histogram ma długi prawy ogon, możemy powiedzieć, że dane są wypaczone pozytywnie.

Kurtoza: Jest to miara, która może powiedzieć o tym, jak płaskie lub szczytowe są dane. Jeśli wartość kurtozy jest dodatnia, możemy zrozumieć, że dane są leptokurtyczne (szczytowe), jeśli wartość jest ujemna, dane są platykurtyczne (płaskie). Wartość kurtozy dla rozkładu mezokurtycznego wynosi zero (normalna). Rozkład normalny jest asymetryczny, ciągły rozkład prawdopodobieństwa, który jest jednoznacznie określony przez średnią i odchylenie standardowe. Każdy rozkład normalny można przekształcić w standardowy rozkład normalny (wynik Z).

UZYSKANIE OPISOWYCH STATYSTYK

Aby obliczyć konkretną statystykę dla każdej ze zmiennych w zbiorze danych jednocześnie, użyj funkcji sapply, jeśli w zbiorze danych brakuje jakichkolwiek wartości, a następnie ustaw argument na.rm na T:

sapply (Zdrowie, średnia, na.rm = T)

Możemy zaobserwować niektóre ostrzeżenia w oknie konsoli, ponieważ jeśli dowolna zmienna w zbiorze danych nie jest numeryczna, funkcja sapply zachowuje się niespójnie. Tutaj próbujemy obliczyć maksymalną wartość dla każdej ze zmiennych w zestawie danych Health. R zwraca komunikat o błędzie, ponieważ kilka zmiennych w zestawie danych to zmienne czynnikowe. Aby uniknąć tego problemu, wyklucz wszelkie zmienne nienumeryczne z zestawu danych, używając funkcji podzbioru nawiasu. Jeśli chcemy pogrupować wartości zmiennej numerycznej zgodnie z poziomami współczynnika i obliczyć statystyki dla każdej grupy, możemy użyć funkcji tapply lub agregacji.

tapply (Zdrowie $ Wiek, Zdrowie $ Płeć, średnia)

Możemy również użyć funkcji agregującej do podsumowania zmiennych według grup. Korzystanie z funkcji agregującej ma tę zaletę, że można podsumować kilka zmiennych ciągłych jednocześnie.

aggregate (pracownik $ wynagrodzenie ~ płeć, pracownik, średnia)

Ponownie możesz także użyć więcej niż jednej zmiennej grupującej. Na przykład, aby obliczyć średnią pensji dla każdej kombinacji płci i wykształcenia dla zestawu danych pracownika:

aggregate (wynagrodzenie ~ płeć + wykształcenie, pracownik, średnia)

Aby podsumować dwie lub więcej zmiennych ciągłych jednocześnie, zagnieźdź je w funkcji cbind.

aggregate (cbind (wynagrodzenie, wiek) ~ poziom, pracownik, średnia)

Uzyskaj częstotliwość między tabelami: Tabele tabel lub nieprzewidzianych tabel to rodzaj tabeli, która wyświetla rozkład częstotliwości zmiennych w wierszu, a druga w kolumnie. Te tabele są szeroko stosowane w Business Analytics, ponieważ zapewniają wzajemne powiązania między zmiennymi. Zbudujmy tabelę kontyngencji, używając funkcji tabeli na czynnikach Health $ Gender i Health $ Response Możesz generować tabele częstotliwości za pomocą funkcji table(), tabel proporcji za pomocą funkcji prop.table(), a częstotliwości brzeżne za pomocą margin.table(). # zbuduj tabelę zdarzeń awaryjnych w oparciu o płeć i czynniki reakcji

Health_table <- table (Health $ Płeć, Health $ Response)
Tabela zdrowia
margin.table (Health_table, 1) Częstotliwości # A (zsumowane nad B)
margin.table (Health_table, 2) Częstotliwości # B (zsumowane nad A)
prop.table (Health_table) # procenty komórek
prop.table (Health_table, 1) # procenty wierszy
prop.table (Health_table, 2) # wartości procentowe kolumny

Funkcja summary: Funkcja summary() zapewnia kilka statystyk opisowych, takich jak średnia i mediana, dotyczących zmiennej, takiej jak ramka danych Wysokość w zdrowiu. Aby utworzyć podsumowanie wszystkich zmiennych w zbiorze danych, użyj funkcji podsumowania. Funkcja podsumowuje każdą zmienną w sposób odpowiedni dla jej klasy. W przypadku zmiennych numerycznych podaje średnią, medianę, zakres i zakres międzykwartylowy. W przypadku zmiennych czynnikowych podaje liczbę w każdej kategorii. Jeśli zmienna ma jakieś brakujące wartości, powie ci ile jest brakujących wartości. summary(Zdrowie) zapewni przegląd rozkładu każdej kolumny. Funkcja summary generuje wszystkie statystyki opisowe związane ze zmienną wysokością w zestawie danych Health. Normalność rozkładu implikuje element symetrii związane z dystrybucją. Skośność i kurtoza zestawu danych występują w okolicach zera. Podstawowa analiza daje wynik, że zmienna wysokość jest zwykle rozkładana w zbiorze danych Zdrowie.

UZYSKANIE NIERUCHOMOŚCI STATYSTYCZNYCH

Statystyki wnioskowania odnoszą się do wyciągania wniosków na temat populacji na podstawie danych z próby.

Przedziały ufności: Podczas przeprowadzania analizy statystycznej musimy odpowiedzieć na następujące pytania.

•  Jak podać oszacowanie przedziału (przedział ufności) dla parametrów populacji, takich jak średnia?
•  Jak skorygować oszacowanie przedziału, jeśli odchylenie standardowe populacji nie jest znane?
•  Jak obliczyć przedział ufności dla proporcji populacji?
•  Jaka powinna być wielkość próbki do pobrania dla pożądanej szerokości oszacowania przedziału?

Testowanie hipotez:

1. Czy powinienem obsłużyć ten projekt z jeszcze jednym programistą?
2. Czy powinniśmy otworzyć nasz nowy sklep detaliczny w lokalizacji X?
3. Czy powinniśmy zatrudnić tę firmę konsultingową?
4. Czy powinniśmy nabyć tę linię lotniczą?
5. Czy powinniśmy inwestować w reklamę online?
6. Czy powinniśmy podwyższyć oprocentowanie tej pożyczki?
7. Czy powinniśmy wejść na indyjski rynek detaliczny?
Gdy rozwiązujemy tego rodzaju pytania, może być konieczne znalezienie odpowiedzi na kilka dodatkowych pytań, takich jak:

•  Jak i kiedy formułować hipotezy dotyczące parametrów populacji?
•  Jak obliczyć siłę dowodów?
•  Co to są błędy typu I i typu II?

Jak sformułować hipotezę: Hipoteza jest pozycją początkową, która jest otwarta na test i odrzucenie w świetle silnych dowodów negatywnych. Początkowe przekonanie nazywa się hipotezą zerową (H0). Na ogół status quo mówi: nie rób nic. Jego negacja nazywana jest hipotezą alternatywną (HA, Ha, H1). Często twierdzenie, które należy przetestować, lub zmiana, którą należy wykryć, mówi: zrób coś. Te dwie hipotezy wykluczają się wzajemnie i wyczerpują się zbiorowo

Proces testowania hipotez: Rozpocznij od hipotez na temat parametru populacji. Parametrem może być średnia, proporcja lub coś innego. Zbierz informacje z losowo wybranej próbki i oblicz odpowiednią statystykę próbki. Odrzucamy / nie odrzucamy hipotezy na podstawie informacji o próbie, jeśli jest ona silnie niezgodna z hipotezą zerową? Jeśli tak, to odrzucona hipoteza.

Przykład supermarketowego programu lojalnościowego: supermarket planuje uruchomić program lojalnościowy, jeśli spowoduje to, że średnie wydatki na kupującego wyniosą ponad 120 USD tygodniowo. Losowa próba 80 kupujących zarejestrowanych w programie pilotażowym wydała średnio 130 USD w ciągu tygodnia ze standardowym odchyleniem 40 USD. Czy należy uruchomić program lojalnościowy?

Proces testowania

•  Zacznij od założenia, że H0 (zwykle status quo) jest prawdziwe? : np. Uważam, że wydatki będą mniejsze lub równe 120 USD.

•  Określ, co należy rozumieć przez "wystarczająco silny dowód", aby odrzucić H0 np. prawdopodobieństwo znalezienia średniej próby powinno być mniejsze niż 0,05
•  Zbierz dowody, które zostaną wykorzystane do przetestowania H0: np. pilotaż przyniósł średnie wydatki w wysokości 130 USD w próbie 80 klientów
•  Oblicz prawdopodobieństwo zaobserwowania danego lub silniejszego dowodu, np. Maksymalne prawdopodobieństwo uzyskania próbki o wartości 130 USD lub większej w ramach H0 wynosi 0,01
•  Zawrzeć i podjąć odpowiednie działania? : na przykład. dowody są wystarczająco silne (0,01 <0,05), aby odrzucić H0, a następnie uruchomić kartę. Podczas wyciągania wniosków możesz popełnić dwa rodzaje błędów:

Decyzja / Rzeczywistość : Nie odrzucaj H0 : Odrzuć H0

H0 to prawda : Prawidłowa decyzja : Błąd typu I.

H0 jest fałszem : Błąd typu II : Prawidłowa decyzja

Prawdopodobieństwo popełnienia błędu typu I jest takie samo jak wartość p. Wartość α można interpretować jako dopuszczalne prawdopodobieństwo popełnienia błędu typu I (zwanego również poziomem istotności). Hipoteza jest założeniem dotyczącym parametru populacji, który podlega testowi i odrzuceniu na podstawie dowodów. Test hipotezy ma zastosowanie, gdy menedżer zajmuje określoną pozycję w parametrze populacji, który należy odrzucić, aby podjąć działanie. Naukowiec danych zazwyczaj atakuje błąd typu I zwany poziomem istotności. Jeśli obliczone prawdopodobieństwo danej próbki jest mniejsze niż poziom istotności w ramach hipotezy zerowej, odrzuca swoją hipotezę zerową i wprowadza niezbędną zmianę.

TEST CHI-KWADRAT

Test asocjacji chi-kwadrat: Test asocjacji chi-kwadrat pomaga ustalić, czy dwie lub więcej zmiennych kategorialnych jest powiązanych. Test ma hipotezę zerową, że zmienne są niezależne, a alternatywną hipotezę, że nie są one niezależne. Test jest odpowiedni tylko wtedy, gdy istnieją wystarczające dane, które są zwykle definiowane jako wszystkie komórki tabeli, które mają oczekiwane, co najmniej pięć. W przypadku tabel dwukierunkowych można użyć narzędzia chisq.test (moja tabela) do przetestowania niezależności zmiennej wierszowej i kolumnowej. Domyślnie wartość p jest obliczana na podstawie asymptotycznego rozkładu chi-kwadrat statystyki testowej.

chisq.test (Zdrowie $ Leczenie, Zdrowie $ Odpowiedź)

Ponieważ wartość p jest mniejsza niż poziom istotności 0,05, możemy odrzucić hipotezę zerową i stwierdzić, że oba są powiązane zmiennymi.

Dokładny test Fishera: dokładny test Fishera służy do testowania powiązania między dwiema kategorycznymi zmiennymi, z których każda ma dwa poziomy. można go używać nawet wtedy, gdy dostępnych jest bardzo mało danych. Test ma hipotezę zerową, że dwie zmienne są niezależne, a alternatywną hipotezę, że nie są one niezależne.

fisher.test (Zdrowie $ Leczenie, Zdrowie $ Odpowiedź)
Do wyników testu dołączony jest 95-procentowy przedział ufności dla ilorazu szans. Możesz zmienić rozmiar interwału za pomocą argumentu conf.level:

fisher.test (Health $ Treatment, Health $ Response, conf.level = 0.99)

fisher.test (x) zapewnia dokładny test niezależności. x jest dwuwymiarową tabelą kontyngencji w postaci macierzy.

Analiza zmiennych ciągłych: Analizując zmienne ciągłe, możemy potrzebować odpowiedzi na kilka pytań.

•  Jak porównać średnie z dwóch populacji przy użyciu sparowanych obserwacji?
•  Kiedy i jak porównać dwie populacje oznacza użycie niezależnych próbek?
•  Jak sprawdzić różnice w dwóch proporcjach populacji?

Przykład programu redukcji wagi: Ekspert odżywiania chciałby ocenić wpływ zorganizowanych programów diety na masę uczestników. Losowo wybiera 60 uczestników programu dietetycznego i mierzy ich wagę (w kg) tuż przed zapisaniem się do programu i bezpośrednio po jego zakończeniu. Czy na podstawie tych dowodów nowy program diety skutecznie redukuje wagę? Łańcuch zdrowia może polecić konwencjonalną dietę niskokaloryczną za darmo lub może zalecić nową dietę, płacąc opłatę licencyjną. Firma stwierdziła, że warto uiścić opłatę licencyjną, jeśli zdobędą wystarczającą liczbę dodatkowych członków, co jest możliwe, jeśli nowa dieta obniży średnią wagę o 3 kg lub więcej w porównaniu z konwencjonalną dietą niskokaloryczną. Firma zbiera dane na temat odchudzania od dwóch prostych losowych próbek osób, z których jedna przechodzi nową dietę, a druga konwencjonalną dietę przez 6 miesięcy

TEST

Test t dla jednej próbki służy do porównania średniej wartości próbki ze stałą wartością oznaczoną m0. Ma hipotezę zerową, że średnia populacji jest równa m0, i hipotezę alternatywną, że nie jest.

# Jedna próbka t-test
setwd("D:/R data")
WR_Trt <- read.csv("Wt_red.csv")
fix(WR_Trt)
OS_ttest <- WR_Trt[which(WR_Trt$Treatment=="Dummy Pill"),]
OS_ttest$Change <- OS_ttest$Before-OS_ttest$After
fix(OS_ttest)
OS_tt_res<- t.test(OS_ttest$Change, mu=3)

Argument podaje wartość, z którą chcesz porównać średnią próbki. Jest opcjonalny i ma domyślną wartość 0. Domyślnie R wykonuje test dwustronny. Aby wykonać test jednostronny, ustaw alternatywny argument na "większy" lub "mniej". Aby dostosować rozmiar interwału, użyj argumentu conf.level:

t.test(OS_ttest$Change, mu=1, alternative="greater")
t.test(OS_ttest$Change, mu=1, conf.level=0.99)

Dwupróbkowy test t służy do porównania średnich wartości dwóch niezależnych próbek w celu ustalenia, czy są one pobierane z populacji w jednakowych średnich wartościach. Ma zerową hipotezę, że dwa średnie są równe, i alternatywną hipotezę, że nie są równe. Aby wykonać test t dla dwóch próbek z danymi w formie stosu, użyj polecenia: t.test(values~groups, dataset gdzie wartości to nazwa zmiennej zawierającej wartości danych, a grupa to zmienna zawierająca nazwy próbek. Jeśli zmienna grupująca ma więcej niż dwa poziomy, musisz określić, które dwie grup

t.test(WR_Trt$Change~WR_Trt$Treatment, WR_Trt, Treatment %in% c("Old_Trt", "Test_Drug"))

Domyślnie R używa osobnych oszacowań wariancji podczas przeprowadzania testów dwóch prób i sparowanych. Jeśli uważasz, że wariancje dla dwóch grup są równe, możesz skorzystać z oszacowania łącznej wariancji. Aby użyć oszacowania wariancji w puli, ustaw argument var.equal na T.

Sparowany test T: sparowany test t służy do porównania średnich wartości dla dwóch próbek, gdzie każda wartość w jednej próbce odpowiada określonej wartości w drugiej próbce. Ma hipotezę zerową, że dwa średnie są równe, a alternatywną hipotezę, że nie są równe.

# paired t-test
t.test(WR_Trt$Before,WR_Trt$After,paired=T)

Jest to naturalne, a także wykonalne przed i po pomiarach na tych samych obiektach, w tym przypadku używamy testu sparowanego.

Rozkłady próbkowania średnich dwóch próbek: Dwa rozkłady średnich prób są normalne, pod warunkiem że warunek Twierdzenia o granicy centralnej jest spełniony osobno dla 1. Niezależność taka jak kto jest w próbce nie wpływa na to, kto jeszcze jest w tej próbce i kto jest w próbce nie wpływa na to, kto jest w drugiej próbie. 2. Warunki wielkości, takie jak Liczba obserwacji w każdej próbce, muszą przekraczać 10-krotność wartości bezwzględnej Kurtozy i 10-krotność kwadratowej Skośności w tej próbce.

Przykład: Odsetek dietetyków, którzy tracą na wadze: Załóżmy, że alternatywnym wskaźnikiem pomiaru wydajności programu dietetycznego jest odsetek uczestników, którzy stracili więcej niż 3 kg. Najlepszym sposobem porównania średnich dwóch rozkładów jest użycie sparowanych obserwacji, jeśli jest to wykonalne. Średnia różnica w sparowanych obserwacjach próbki jest zgodna z rozkładem normalnym zgodnie z Central Limit Theorem. Gdy sparowane obserwacje nie są możliwe, używamy niezależnych próbek i formułujemy hipotezę dotyczącą różnicy między dwoma średnimi. Ważne jest, aby upewnić się, że badani zostali losowo przydzieleni do dwóch próbek, aby uniknąć pomyłek. Podobne podejście można zastosować do przetestowania różnicy proporcji między dwoma.

ANALIZA WARIANCJI (ANOVA)

Analiza wariancji pozwala porównać średnie z trzech lub więcej niezależnych próbek. Jest odpowiedni, gdy wartości są rysowane z rozkładu normalnego i gdy wariancja jest w przybliżeniu taka sama w każdej grupie. Hipoteza zerowa dla testu jest taka, że średnia dla wszystkich grup jest taka sama, a alternatywna hipoteza jest taka, że średnia jest różna dla co najmniej jednej pary grup. Zastanówmy się nad następującymi pytaniami i spróbuj odpowiedzieć na nie w studium przypadku.

•  Dlaczego do porównania średnich populacji wymagana jest analiza wariancji (ANOVA)?
•  Jaka jest zasada sumy kwadratów?
•  Jak przeprowadzić test ANOVA?
•  Jaką dalszą analizę należy wykonać, jeśli test ANOVA jest istotny?

Studium przypadku: Program redukcji wagi: Załóżmy, że ekspert odżywiania chciałby dokonać oceny porównawczej trzech programów dietetycznych. Losowo przypisuje równą liczbę uczestników do każdego z tych programów ze wspólnej puli wolontariuszy. Załóżmy, że średnie straty masy w każdej grupie (ramionach) eksperymentów wynoszą 4 kg, 7 kg, 5,4 kg. Co ona może wyciągnąć? Tutaj ważne są dwa rodzaje zmian. Nie każda osoba w każdym programie zareaguje identycznie na program diety. Łatwiej jest zidentyfikować zmiany w różnych programach, jeśli zmiany w programach są mniejsze, dlatego metoda nazywa się Analiza wariancji (ANOVA). Formalizowanie intuicji stojącej za wariacjami. Bardziej zaskakujące i przydatne jest: Suma kwadratów ogółem (SST), Suma kwadratów Leczenie (SSTR), Suma kwadratów Błąd (SSE)

Test statystyczny pod kątem równości średnich:

n przedmiotów równo podzielonych na r grupy

Hipotezy: H0: ?1 = ?2 = ?3 =… = ?r. Odrzuć hipotezę zerową, jeśli wartość p
aov(Change~Treatment, WR_Trt)

Wyniki analizy składają się z wielu komponentów, których R nie wyświetla automatycznie. Jeśli zapiszesz wyniki w obiekcie, jak pokazano tutaj, możesz użyć dalszych funkcji, aby wyodrębnić różne elementy wyniku:

aovobject<-aov(Change~Treatment, WR_Trt)

#Once zapisaniu wyników jako obiekt możesz wyświetlić tabelę ANOVA z funkcją anova:

anova (aovobject)
# Aby wyświetlić współczynniki modelu, użyj funkcji coef:
coef (aovobject)
# Aby wyświetlić przedziały ufności dla współczynników, użyj funkcji confint:
confint (aovobject)
# One Way Anova (całkowicie losowy projekt)
fit <- aov (Zmiana ~ Leczenie, WR_Trt)

Tabela ANOVA: Jeśli odrzucimy hipotezę zerową, że wszystkie średnie są równe, prawdopodobieństwo popełnienia błędu wynosi mniej niż 2,5%. Czy możemy stwierdzić, że dieta testowa jest bardziej skuteczna niż stara dieta ?. Zakres zmienności między grupami i wewnątrz grup determinuje siłę dowodów w stosunku do hipotezy zerowej, że średnie wszystkich grup są równe. Suma kwadratów odchyleń (wokół średniej średniej) jest równa sumie błędów kwadratów odchyleń (wokół odpowiednich średnich grup) plus suma leczenia odchyleń kwadratu (grupa oznacza wokół wielkiego środka). Test ANOVA porównuje średnie kwadratowe leczenie ze średnimi kwadratowymi błędami. Jeśli stosunek ten jest "znacznie" większy, możemy odrzucić hipotezę zerową, że średnie są równe.

KROK 6

Machine Learning

WPROWADZENIE

Czy kiedykolwiek myślałeś, że Maszyny mogą uczyć się i organizować pracę bardziej konsekwentnie niż Ty? Czy kiedykolwiek myślałeś o tych pytaniach?

•  Jakie zadania są dobre do wykonania przez maszyny, które dla ludzi nie są dobre lub odwrotnie
•  Co to oznacza uczenie maszynowe?
•  Jak nauka wiąże się z inteligencją? Czy człowiek może naprawdę stworzyć Inteligentne Maszyny, które mogą przewyższyć Człowieka na wiele sposobów? Co to znaczy być inteligentnym?
•  Czy wierzysz, że kiedykolwiek zostanie zbudowana maszyna ujawniająca inteligencję?
•  Co to znaczy być świadomym, czy można być inteligentnym i nieświadomym lub odwrotnie?

Kiedy widzimy wiele danych, nie jesteśmy pewni, czego szukać i co tam jest, i co zostanie znalezione. Miej to na uwadze, uczenie się to nie tylko podejście do życia, ale także podejście do eksploracji danych i uczenia maszynowego, zawsze podchodzimy do danych i uczenia maszynowego z takim podejściem, które zaprowadzi Cię bardzo daleko. Omówmy filozofię uczenia się, uczymy się na wiele sposobów. Uczymy się przez asymilację, czytamy dużo książek, oglądamy dużo filmów, słuchamy piosenek, to jest asymilacja. Rzeczy, których się uczymy, muszą być zastosowane, w przeciwnym razie zapomnimy, stosujemy te rzeczy, robiąc i omawiając. Ten tekst będzie zawierała zarówno teoretyczne, jak i praktyczne scenariusze, postaramy się zastosować niektóre rzeczy tutaj do rzeczywistych zestawów danych, możesz użyć dowolnego języka, jakiego potrzebujesz, dowolnego ulubionego narzędzia (używam R jako narzędzia), stosujemy rzeczy, których się nauczyliśmy. Po skończeniu aplikacji możemy przejść do dostosowywania wszystkiego, czego się nauczyłeś i stworzyć coś nowego. Po wypełnieniu tego tekstu chcę, takie jakieś stwierdzenie : Wiedza jest tym, co pozostało po zapomnieniu faktów. Ten tekst nie dotyczy uczenia się określonych formuł, ale tak naprawdę dotyczy pojęć. Zajmę się tematami z różnych dziedzin, różnymi problemami rozwiązanymi za pomocą uczenia maszynowego. Ten tekst pomoże Ci zrozumieć, jakie są różne algorytmy uczenia maszynowego, których używamy w branży do rozwiązywania problemów biznesowych. Są trzy I, które stworzą świetny produkt. Spójrzmy na radio i telewizję, były świetnymi produktami swoich czasów, ale dziś zobaczmy, jakie cechy sprawiają, że produkt jest świetny. Pierwsze I to Interfejs produktu. Czy muszę czytać instrukcję obsługi produktu, czy mój produkt może obsługiwać 5-latek lub nawet 70-letni facet, pole wyszukiwania Google to przykład świetnego interfejsu. Następne I to Infrastruktura, budujemy produkty nie na komputery PC. Nastąpiła zmiana paradygmatu, wcześniej ludzie budują produkty takie jak Windows O/S, Outlook, wszystkie te są przeznaczone na komputery PC. Jeśli spojrzysz na LinkedIn, YouTube, Google, Facebook, są to produkty stworzone dla świata, z których mogą korzystać miliardy ludzi na całym świecie. Trzecie I , aby stworzyć świetny produkt, to Inteligencja. Jeśli spojrzysz na wyszukiwanie w Google i wpiszesz zapytanie, ma ono pewną autosugestię. Kiedy na nie patrzysz, masz wrażenie, że Google czyta w twoich myślach, filmy z YouTube'a podczas oglądania, sugerują podobne filmy, czujesz, że produkt jest inteligentny. LinkedIn, Amazon, Netflix, kiedy z nich korzystasz i przeglądasz rekomendacje, które uważamy za bardzo inteligentne. Ta funkcja jest znana jako sztuczna inteligencja, bez której produkty te mogą nie odnieść takiego sukcesu. Tak więc, ilekroć myślisz o zbudowaniu nowego produktu, pomyśl w ten sposób, że powinien on zawierać wszystkie Trzy Ja. Moja książka dotyczy części Inteligencji i zawsze dyskutujemy o tym, jak stworzyć Inteligentny produkt za pomocą uczenia maszynowego

DLACZEGO UCZENIE MASZYNOWE?

Uczenie maszynowe, sztuczna inteligencja, eksploracja danych, analiza dużych zbiorów danych - wszystko to wygląda podobnie i prawie dotyczy tego samego. Może istnieć niewielka różnica w podejściu i nakładaniu się między nimi, ale wszystko, co musisz zrozumieć, to wszystko to samo. Uczenie maszynowe jest tradycyjnym terminem używanym i używamy tego samego terminu. Pozwólcie, że przedstawię perspektywę uczenia maszynowego: wezmę przykład rankingu stron internetowych. Jest to proces przesłania zapytania do wyszukiwarki, która następnie wyszukuje strony internetowe powiązane z zapytaniem i zwraca je w odpowiedniej kolejności. Aby osiągnąć ten cel, wyszukiwarka musi "wiedzieć", które strony są trafne, a które pasują do zapytania. Taką wiedzę można uzyskać ze struktury linków stron internetowych, ich zawartości, częstotliwości, z jaką użytkownicy będą podążać za sugerowanymi linkami w zapytaniu. Filtrowanie grupowe to kolejna aplikacja do uczenia maszynowego, sklep e-commerce, taki jak Amazon, intensywnie wykorzystuje te informacje, aby zachęcić użytkowników do zakupu dodatkowych towarów. Spójrzmy na filtrowanie spamu, jesteśmy zainteresowani odpowiedzią tak / nie, czy e-mail zawiera odpowiednie informacje, czy nie. Jest to całkowicie zależne od użytkownika: w przypadku często podróżujących wiadomości e-mail od linii lotniczych informujące go o ostatnich zniżkach mogą okazać się cennymi informacjami, podczas gdy dla wielu innych odbiorców może to być bardziej uciążliwe. Aby zwalczyć te problemy, chcemy zbudować system, który będzie w stanie nauczyć się klasyfikować nowe wiadomości e-mail. Spójrzmy na diagnozę raka, ma wspólną strukturę, która biorąc pod uwagę dane histologiczne tkanki pacjenta, możemy wnioskować, czy pacjent jest zdrowy, czy nie. Tutaj nawet jesteśmy proszeni o wygenerowanie odpowiedzi tak / nie na podstawie zestawu obserwacji. wszyscy pracujemy dla różnych firm, widzieliśmy określoną ilość danych, jeśli cofniesz się i spojrzysz na to, co robi świat, to po prostu cudowne, że zebrali wiele danych, jeśli spojrzysz na sekwencję genów, projekt genomu człowieka, ludzi są zebrane sekwencje genów każdego organizmu, jest to miliard sekwencji, które musisz przeanalizować, teraz możesz sobie wyobrazić, ile to danych. Za każdym razem, gdy przesuwasz kartę kredytową lub debetową, tworzysz dużo danych, Za każdym razem, gdy kupujesz lub sprzedajesz akcje, generowany jest punkt danych, za każdym razem, gdy piszesz książkę lub dokument prawny, lub gdy wysyłasz satelitę, te satelity gromadzą wszelkiego rodzaju dane. Pozwólcie, że dam trochę pojęcia o Big Data, każdego dnia odbywa się prawie 200 milionów tweetów i istnieje około 500 milionów kont na Twitterze. Użytkownicy YouTube przesyłają 100 godzin filmów co minutę, w Internecie co minutę powstaje 800 nowych stron internetowych, Facebook przetwarza 100 terabajtów danych każdego dnia, co miesiąc udostępnianych jest 30 miliardów elementów, co daje ponad 30 petabajtów danych użytkownika. Google przetwarza 20 petabajtów danych dziennie, chodzi o indeksowanie sieci, indeksowanie sieci itp. Wal-Mart ponad 1 milion transakcji klientów co godzinę, to zupełnie nowy świat, w którym żyjcie w arkuszach kalkulacyjnych Excel, nie wystarczy, że nie można załadować danych do komputera, przetwarzać danych za pomocą komputera i tworzyć wglądu w dane, nie jest to możliwe. Zastanówmy się, jak się tu dostaliśmy? Nie dotarliśmy tu przypadkiem, wiele rzeczy musiało się tu dostać, ta eksplozja danych jest możliwa dzięki lepszym czujnikom, kiedy mówię czujnik, wszystko, co zbiera punkt danych, to czujnik, termometr to czujnik, GPRS w samochodzie jest czujnikiem, nawet my jesteśmy czujnikami, za każdym razem, gdy generujemy punkty danych, kiedy wykonujesz połączenie z telefonu, tworzysz dane, za każdym razem, gdy przesuwasz kartę, generujesz dane, chcę, abyś wyobraził sobie nowy świat, w którym żyjemy. Po zebraniu danych, kiedy uzyskujemy pewne statystyki, nadal jesteśmy w stanie wygenerować wiele statystyk, raportów i histogramów, ale to nie jest inteligencja. To są obliczenia brutalnej siły, musimy zdawać sobie sprawę ze wszystkich rzeczy, które robimy. Eksperci od uczenia maszynowego myślą o futurystycznych rzeczach, twierdzą, że nasza technologia jest taka, że nasze maszyny są częścią ludzkości. Stworzyliśmy je, aby się rozwijać, co jest wyjątkowe w ludziach. To stwierdzenie jest prawdziwe przez cały czas, jeśli spojrzysz na nagich ludzi, stworzyli narzędzia do polowania, wymyślili ogień, stworzyli koła, chcemy zobaczyć bardzo daleko wynaleziony teleskop, chcieliśmy zobaczyć bardzo mały tak wynaleziony mikroskop, cokolwiek stworzymy, jak samoloty, dźwigi, ma się rozszerzyć. To czego nie przedłużono, co zawsze chcemy stworzyć i wciąż nie odnosimy sukcesów, jest nasz mózg, kiedy patrzę na problem, jak go rozwiązać, kiedy zobaczyliśmy obraz, jak to zrobić rozpoznajemy to? Teraz naszym celem jest stworzenie maszyny, która jest inteligentna, nie tylko kalkulator, nie tylko przechowuje dużo danych, nie tylko złożony program, ale w jaki sposób uczynić inteligentną maszynę tak inteligentną jak ludzki mózg. Spójrzmy nawet na ewolucję komputerów, wyobraź sobie, że pierwszy komputer został stworzony tak ,że musisz wejść do komputera, podłączyć przewody, aby programować. Potem wymyślono komputery IBM, potem laptopy, od jednego komputera uniwersyteckiego do jednego komputera w każdym domu, dzięki IBM i Microsoft, posiadanie komputera w domu to ich wizja. Jaka jest kolejna ewolucja informatyki? Przetwarzanie w chmurze to kolejna ewolucja. Jest to centrum danych, płyty główne są połączone jeden po drugim w szafie, nie potrzebujemy do nich monitora ani klawiatury. Wszystkie dane generowane przez Amazon, YouTube, LinkedIn, Twitter, Facebook itp. znajdują się w centrum danych. Jaka jest przyszłość. Przyszłościąć nazywamy komputere kwantowy, wykraczającym poza tradycyjny rodzaj obliczeń, który wykorzystuje stany kwantowe atomu do obliczeń i przechowywania informacji. Całe centrum danych może zmieścić się w tym komputerze kwantowym, więc możesz sobie wyobrazić przyszłość komputerów. Porównaj pierwszy komputer z komputerem kwantowym, oba wyglądają na niezdarne, ale ten drugi jest bilion razy szybszy niż pierwszy komputer. W najbliższych dniach możemy mieć miniaturę komputerów kwantowych, a centra danych komputera kwantowego zastanawiają się, co się stanie. Trzeba pamiętać, że moc obliczeniowa rośnie w ogromnym tempie wykładniczym, a my możemy sobie poradzić z danymi bez względu na rozmiar. Spójrzmy na ewolucję technologii informacyjnej. Podzieliłem je na trzy części. Pierwsza to era indeksowania, w której jedyne, co musieliśmy zrobić, to znaleźć sposób na zebranie danych, przechowywać je w bazie danych w taki sposób, abyśmy mogli je pobrać za pomocą zapytania SQL. To była era indeksowania, tutaj nawet nowoczesne wyszukiwarki należą do tej kategorii, nawet wyszukiwarka Google to gigantyczny system indeksowania, kluczem jest słowo, a wartość to dokument zawierający wszystkie słowa, ale w gruncie rzeczy to nic więcej niż system SQL. Ludzie pytali o podstawowe pytania, takie jak czy mogę wziąć średnią wszystkich osób pracujących w dziale lub w określonej technologii z określonym wieloletnim doświadczeniem. Właśnie tam zakończył się system indeksowania. Następna era to era interpretacji, w tej erze myśleliśmy, że powinienem móc zinterpretować dane w bardzo interesujący sposób, czy istnieje jakiś ukryty wzorzec w danych, czy dane mówią coś, czego nie jestem świadomy, oto co to nauka bez nadzoru, której się nauczymy. Chodzi o to, aby wyjść poza zapytania i pozwolić, aby dane mówiły o tym, co ma, ponieważ zadaję więcej pytań niż proste zapytanie. Widzimy wiele przykładów na ten temat w całym tekście. Następna era to era inteligencji, w której podejmujemy decyzje. Czy mogę korzystać z moich danych, nie tylko jako bazy danych, czy mogę również przewidywać przyszłość ?, Czy ten klient zamierza odejść ?, Którą osobę polecisz na LinkedIn w przyszłości ?, Jaki jest nowy produkt, który powinienem stworzyć dla rynku ?, Jak mogę podjąć decyzję na podstawie moich przeszłych doświadczeń, we wszystkich danych, które miałem? W erze inteligencji nadzorowane uczenie się i optymalizacja upadną. Istnieją dwa cele uczenia maszynowego. Do tej pory rozumiemy, że jesteśmy w świecie bogatym w dane i musimy coś zrobić z tymi danymi. Uczenie maszynowe jest na to sposobem.

JAK DZIAŁA UCZENIE MASZYNOWE?

Aby to zrozumieć, musimy pomyśleć o naturze umysłu? Czy chcemy zrozumieć, jak działa umysł? Czym jest inteligencja? Czego się uczysz? Co myślisz? Na przykład mogę zbudować system OCR do odczytu znaków tekstowych książki, ale czy on rozumie tekst. Czy możemy przejść od czytania tekstu do rozumienia tekstu? Czy możemy przejść od słuchania do słuchania i rozumienia dźwięku? Czy telefon komórkowy, kamera wideo, której używasz do robienia zdjęć lub filmów, mogą je zrozumieć i zinterpretować jako jak lubisz? Jak możemy rozszerzyć maszyny na ten poziom? To jeden z celów Sztucznej Inteligencji. W 1950 roku Alan Turing przyszedł ze swoim testem. Jak możemy powiedzieć, że maszyny są inteligentne? Wymyślił ciekawy test zwany testem Turinga, w zasadzie test polega na tym, czy dana osoba rozmawia z dwoma polami czatu, jeden z czatów jest podłączony do komputera drugi z prawdziwą osobą, osobą. Celem jest określenie, który jest maszyną, a którnie, jeśli osoba A nie może powiedzieć, że rozmawia z maszyną lub osobą, możemy powiedzieć, że osiągnął poziom sztucznej inteligencji. Obecnie mówimy o naszej wyszukiwarce Google, bardzo ostrożnie wybieramy słowa kluczowe, zachowujemy kolejność, ponieważ może on rozumieć tylko zapytania oparte na słowach kluczowych, nie może zrozumieć pytań i zapomnieć o rozmowach. Chcemy ewoluować od słów kluczowych po pytania, a nawet rozmowy. Firmy takie jak Google starają się rozwiązać ten problem i stworzyć maszynę tak dobrą jak ludzki mózg. Drugim celem uczenia maszynowego są decyzje oparte na danych. Pozwólcie, że podam kilka przykładów, w jakiej pozycji reklama / strona ma być wyświetlana dla danego zapytania?. Czy powinienem zatwierdzić tę pożyczkę mieszkaniową, czy nie? Który film pokaże się następnie na YouTube? Firmy muszą odpowiedzieć na wszystkie te pytania, to nie jest jedna wielka decyzja, wszystkie są mikro decyzjami, które należy podjąć kilka razy. Celem jest podejmowanie decyzji w sposób bardziej systematyczny, bardziej zorganizowany. Powinieneś spojrzeć na swoją firmę i zobaczyć, jakie decyzje podejmują twoje firmy, czy są one oparte na odczuciu, czy są oparte na wcześniejszych studiach przypadków, czy naprawdę są oparte na danych? Musimy sprawdzić, czy mamy wystarczającą ilość danych, aby podjąć decyzję, jak mierzymy i zatwierdzamy decyzję, to właśnie jest celem tego kursu, aby uczynić cię lepszym naukowcem danych, który może gromadzić dane i konwertować je na problem badawczy, opracowywać modele, wdrażać modele itp., Nauka o danych jest kombinacją trzech rzeczy: 1. Dane 2. Algorytmy ML 3. Domena wiedzy. Każdy z nas może być silny w jednej lub dwóch i musimy wybrać innąh, aby zostać naukowcem danych. Wyobraź sobie, że jeśli jesteś absolwentem informatyki, z przyjemnością poradzisz sobie z algorytmami, stosując algorytmy do zestawów danych dostarczonych przez klienta, ale kiedy przychodzisz do prawdziwego świata, zajmowanie się danymi jest ogromnym problemem. Spróbujmy zrozumieć słowo Data Mining, Mining to proces poszukiwania diamentów w ogromnej masie kamieni. W rzeczywistości dane są skąpe, na wiele sposobów nawet nie możesz sobie wyobrazić. Musimy zrozumieć, że dane nie są proste, jak zakładamy. To jest jak twój 2-letni dzieciak. Lubisz go, ale robi wiele rzeczy, z których nie jesteś zadowolony. Nie zachowuje się tak, jak chcesz. Załóżmy, że jesteśmy silni zarówno w zakresie algorytmów danych, jak i uczenia maszynowego, które wciąż musimy wiedzieć jak zastosować je wszystkie w rzeczywistych sytuacjach, ponieważ dane w różnych domenach zachowują się inaczej. Domena wiedzy odgrywa bardzo ważną rolę w Data Science. Tylko wtedy, gdy masz silną domenę, zrozumiesz, którego parametru szukać , jakiego rodzaju funkcji szukać. Zrozumiałem, że wszystkie te trzy elementy odgrywają istotną rolę w Data Science. Ludzie, którzy są silni we wszystkich tych trzech, będą nazywani naukowcami danych. Mam nadzieję, że po przeczytaniu tego tekstu staniesz się silny we wszystkich trzech rzeczach.

RODZAJE NAUCZANIA MASZYNOWEGO

Uczenie się bez nadzoru: Otrzymałeś mnóstwo danych, nie powiedziano ci, czego szukać? Teraz możesz być bardziej kreatywny. Wyobraź sobie, że dostarczyłeś swojemu dziecku papier, szkicowniki i wszystkie inne rzeczy i poprosiłeś go, aby coś narysował. Potrafi być bardzo kreatywny i rysować, co mu się podoba, i wyjaśnia, co to za rysunek. To jest nauka bez nadzoru. W tym przypadku staramy się znaleźć strukturę i gramatykę w danych, abyśmy mogli je wyczuć. W uczeniu się bez nadzoru, to nad czym pracujemy, to dane nieoznakowane. Wyobraź sobie, że dałem Ci wszystkie filmy z YouTube, który film jest oglądany ile razy, i kto oglądał, który film, ale nie powiedziałem, co z tym zrobić, staje się to problemem bez nadzoru.

Nadzorowane uczenie się: wyobraź sobie, że twoje dziecko po prostu do ciebie wraca i pyta, co narysować? Jeśli podasz kolejne dane wejściowe, takie jak narysuj Drzewo lub narysuj Dom, wówczas będzie to nadzorowane uczenie się. Oznacza to, że nauka nadzorowana ma miejsce wtedy, gdy wiesz, czego szukać. W uczeniu nadzorowanym oznaczyliśmy dane danymi i staramy się znaleźć zarówno strukturę, jak i zmienną, która powoduje drugą zmienną (struktura i przyczynowość) poprzez budowanie modeli. Kiedy budujesz model, który mówi przewidywanie oszustwa, przewidywanie odejścia klienta, przewidywanie następnego filmu na youtube, który klient obejrzy, przewidywanie rekomendacji LinkedIn, przewidywanie raka, kiedy podasz bardzo konkretny problem, wówczas stanie się on nadzorowanym nauczaniem. Pomyślmy o uczeniu się bez nadzoru, wyobraź sobie, że zaczynasz nową działalność, przejrzałeś różne studia przypadków i odkryłeś 20 problemów z CRM (zarządzanie relacjami z klientami), teraz możemy pracować nad tymi 20 problemami z CRM i możemy się cieszyć, że znalazłeś odpowiedzi na wszystkie problemy. Ale czy możesz się z nimi dobrze czuć? Czy mamy gwarancję, że nie będzie żadnych innych problemów? Jaki jest problem z tym podejściem? Wyobraźmy sobie, że wszystkie studia przypadków znajdują się w krajach zachodnich i chcesz je zastosować w Indiach. Problemy w Indiach byłyby bardzo trudne i mogą być bardzo różne. Wyobraź sobie, dlaczego Amazon nie mógł pracować w Indiach takimi, jakimi są? Ponieważ w Indiach Fabmart (wiele osób uważa, że Flipkart) wprowadził nową koncepcję zwaną pobraniem (COD), bez tej opcji, w Indiach Amazon nie odniósłby sukcesu. Musimy więc być pokorni w zakresie wiedzy o Twojej dziedzinie. musimy sprawdzić, czy dane coś do Ciebie mówią, tam się otwieramy i powiedzieć, że pozwolę sobie na naukę bez nadzoru. Pozwól mi zobaczyć, co mówią dane poza tym, co myślałeś.

Uczenie częściowo nadzorowane: w tego rodzaju uczeniu otrzymujesz dane oznaczone i nieznakowane, ilość oznaczonych danych jest mniejsza w porównaniu z całkowitą ilością danych. Uczenie częściowo nadzorowane polega na tym, jak wykorzystać uczenie się bez nadzoru w połączeniu z oznaczonymi danymi, aby zbudować jeszcze lepszy model.

Aktywne uczenie się : powiedzmy, że mamy 2000 przykładów oznakowanych danych, proces etykietowania jest bardzo kosztowny, muszę wybrać następnego faceta z 10 milionów przykładów, które wciąż nie są oznaczone, muszę wybrać kolejne 20 zdjęć, ponieważ mam po prostu ograniczenia, takie jak finansowanie i czas, które przykłady powinienem oznaczyć jako pierwszy? Ponieważ to określi następny model, który zbudujesz. Nazywa się to aktywnym uczeniem się.

Uczenie się ze wzmocnieniem: W tego rodzaju uczeniu się nie budujemy modelu, który odwzorowuje od A do B, ale budujemy model, który odwzorowuje całą sekwencję działań na wynik. Podobnie jak w szachach, każda pozycja figury określa, czy wygrasz, czy przegrasz. Nie możesz ocenić pojedynczego kroku, ale możesz ocenić całą grę jako jednostkę. Wyobraź sobie scenariusz bankowy, w którym ocenia swoich klientów na podstawie sekwencji działań od otwarcia konta do zamknięcia konta. Seria działań staje się prowadzić do lojalności klienta lub rezygnacji. W końcu, gdy się odejdzie, zrozumiesz, że jedno lub więcej działań w tej sekwencji było niewłaściwych. Oznacza to, że pracujesz nad serią decyzji, a nie jedną. Pozwól mi wziąć przykład słów reklamowych Google, wchodzisz, otwierasz firmę, otwierasz konto słów reklamowych i określasz te słowa kluczowe, których chcemy używać w mojej firmie. Teraz dzieje się wiele oszustw, co się dzieje, ludzie używaj słów takich jak Mahatma Gandhi w sklepie z zabawkami, dlaczego? klient zastosował tę sztuczkę? wiesz, że to dobre zapytanie, gdy jest dobre, pojawi się moja reklama, ale nie ma to znaczenia. Teraz istnieją dobre algorytmy uczenia maszynowego, które określają, czy słowo kluczowe jest odpowiednie dla firmy, czy nie. Ale czasami decyzje były bardzo niejasne. Teraz algorytm uczenia maszynowego nie może dać ci rozwiązania, musisz podjąć ostateczne wezwanie, ponieważ model uczenia maszynowego nie jest w stanie podjąć decyzji. Wtedy dzieje się dużo aktywnego uczenia się. Musimy więc zrozumieć, że nie ma systemu opartego wyłącznie na uczeniu maszynowym, zawsze łączymy uczenie maszynowe z ludzkim myśleniem. Automatyzujemy, ale kiedy maszyna nie jest pewna, co robić, używamy ludzkiego myślenia.

KROK 7

Redukcja Wymiarów

WPROWADZENIE

Jeśli mam setki zmiennych, tworzenie wykresów rozrzutu i znajdowanie relacji między zmiennymi nie jest takie łatwe. Aby zrozumieć dane, co możemy zrobić poza wykresami rozrzutu? Robimy redukcję wymiarów, w zasadniczy sposób i jeden z najczęściej używanych algorytmów zwany analizą głównych składników. Przy dużej liczbie zmiennych macierz dyspersji może być zbyt duża, aby właściwie badać i interpretować. Par byłoby zbyt wiele aby korelacje między zmiennymi do rozważenia. Graficzne wyświetlanie danych może również nie być szczególnie pomocne w przypadku, gdy zestaw danych jest bardzo duży. Aby interpretować dane w bardziej sensownej formie, konieczne jest zatem zmniejszenie liczby zmiennych do kilku, możliwych do interpretacji, liniowych kombinacji danych. Każda kombinacja liniowa będzie odpowiadać elementowi głównemu. Kiedy mamy do czynienia z sytuacją, w której mamy ogromny zestaw funkcji z mniejszą liczbą punktów danych, w tej sytuacji dopasowanie modelu może skutkować niższą mocą prognozowania. Nazywa się to Klątwą Wymiarów. Tutaj rozwiązaniem może być dodanie większej liczby punktów danych lub zmniejszenie przestrzeni funkcji. Nazywa się to redukcją wymiarowości.

TECHNIKI REDUKCJI RÓŻNEJ WYMIAROWOŚCI

Kiedy mamy do czynienia z ogromnymi danymi, nie jesteśmy pewni przydatności zebranych informacji. Mamy więc tendencję do usuwania niektórych zmiennych, zakładając, że nie są one tak naprawdę przydatne. To może nie być poprawnym podejściem, ponieważ dostępnych jest niewiele technik do łączenia tych zmiennych razem i tworzenia nowego czynnika lub głównego składnika. Istnieje wiele technik, których możemy użyć do redukcji wymiarów

1. Analiza czynnikowa,
2. Analiza głównych składników,
3. Analiza dyskryminacyjna. itp.

Będziemy teraz badać ten algorytm. Pozwól nam zrozumieć, dlaczego przeprowadzamy analizę głównych składników. Analiza głównego składnika jest jedną z metod stosowanych do zrozumienia struktury danych, kształtu danych, kowariancji danych, co nie jest możliwe w przypadku prostych wykresów rozrzutu. Analiza czynnikowa jest pomocna w następujących przypadkach:

•  Kiedy mamy dużą liczbę zmiennych w naszym zbiorze danych i musimy zmniejszyć tę liczbę.
•  Przed wykonaniem analizy regresji lub analizy skupień na zbiorze danych ze skorelowanymi zmiennymi.
•  Podczas analizy wyników ankiety, w których odpowiedzi na wiele pytań wydają się być wysoce skorelowane.
Przed wykonaniem redukcji wymiarów musimy sprawdzić, czy wymagana jest redukcja wymiarów, sprawdzając współliniowość. Redukcję wymiarów wykonujemy w przypadku naruszenia założeń OLS z powodu współliniowości. W redukcji wymiarowości możemy zastosować 1. podejście do ekstrakcji cech lub 2. podejście do wyboru cech

WSPÓŁLINIOWOŚĆ

Współliniowość oznacza, że zmienne niezależne są ze sobą wysoce skorelowane. W analizie regresji ważne jest założenie, że model regresji nie powinien mieć do czynienia z problemem współliniowości.

Dlaczego wspólliniowość jest problemem? : Jeśli celem badania jest sprawdzenie, w jaki sposób zmienne niezależne wpływają na zmienną zależną i jeśli te zmienne wyjaśniające są silnie skorelowane, trudno jest stwierdzić, która konkretna zmienna ma wpływ na zmienną zależną. Innym sposobem spojrzenia na problem współliniowości jest: indywidualne wartości P testu t mogą wprowadzać w błąd. Oznacza to, że wartość P może być wysoka, co oznacza, że zmienna nie jest ważna, nawet jeśli zmienna jest ważna.
Jak wykryć współliniowość ?: Variance Inflation Factor (VIF) - Zapewnia wskaźnik, który mierzy, o ile wariancja (kwadrat szacowanego odchylenia standardowego) szacowanego współczynnika regresji jest zwiększona z powodu kolinearności.
Interpretacja VIF: Jeżeli współczynnik inflacji wariancji zmiennej predykcyjnej wynosi 5, oznacza to, że wariancja współczynnika tej zmiennej predykcyjnej jest 5 razy większa niż w przypadku, gdyby zmienna predyktorowa nie była skorelowana z innymi zmiennymi predykcyjnymi.
Studium przypadku: Załóżmy, że analizujesz produkt (pralkę), zebrałeś informacje od różnych użytkowników w całym kraju, zadając następujące pytania:

Oceń to w skali 1-5 (1: bardzo niska, 5: - bardzo wysoka)
•  Jak dobrze wygląda produkt?
•  Jak wygodnie korzystasz z produktu?
•  Jak często napotykasz trudności w korzystaniu z produktu?
•  Jak często dzwoniłeś do działu obsługi klienta?
•  Jaka jest odpowiedź z Call Center?
•  Jak bardzo jesteś zadowolony z naszego produktu?

Chcesz się dowiedzieć, czy te zmienne mają problem z wspóliniowością, czy nie. Możemy to zrobić, uruchamiając model lm i obliczając VIF (Variance Inflation Factor).

# Krok 1: Odczytaj dane
setwd('D:/R data')
Cus.drt <- read.csv("Cus_satis.csv", header=T)
# Krok 2: Sprawdź problem współliniowości
Model = lm(Overall ~ ., data=Cus.drt)
Rsq = summary(Model)$r.squared
vif = 1/(1 - Rsq)
vif

Ponieważ uzyskana wartość vif jest mniejsza niż 5, możemy powiedzieć, że problem współliniowości nie istnieje.

GŁÓWNA ANALIZA KOMPONENTÓW

PCA: Jeśli mamy mniejszą liczbę funkcji, możemy użyć wykresów rozrzutu do ich oceny. Ale wyobraź sobie, jak odkryjesz dane 100-wymiarowe. Czy nawet w tym celu możemy wykonać parowanie wykresów punktowych? Tutaj nadal chcemy wiedzieć, jaka jest struktura danych. Co jest innego niż wykresy rozrzutu? Tak nazywamy Projekcje, główną analizę komponentów. Omówmy, czym jest PCA i dlaczego jest bardzo przydatne? Zrozumiesz, jeśli nie PCA, jakie inne techniki można zastosować ? PCA jest techniką stosowaną do zrozumienia struktury danych, kształtu opartego na kowariancji danych. Co to jest projekcja? Używamy terminu projekcja dość często, więc zrozummy, co to jest. Pozwól mi podać kilka przykładów, aby wyjaśnić ten termin. Wyobraź sobie, że jesteśmy na boisku do krykieta, patrząc na trzy pniaki, których używamy w krykieta. To jest trójwymiarowa struktura. Wyobraźmy sobie, że wzięliśmy światło pochodni, skupiamy światło na pniakach i obserwujemy cień po drugiej stronie. Nazywa się to projekcją. Jeśli zmienimy źródło światła pod różnymi kątami, otrzymamy inną projekcję. Dane są nadal takie same. Projektujemy je w innym kierunku, aby uzyskać różne wymiary. Załóżmy, że jeśli rzutujemy je poziomo pod kątem 180 stopni otrzymujemy linię prostą jako rzut. Teraz rozumiem wymiar linii prostej. Jest 1-wymiarowy. Ale musimy pomyśleć, jaka jest utrata informacji, gdy wyświetlamy dane pod kątem 180 stopni? Jeśli oryginalne dane zostały usunięte po projekcji, czy możemy je zrekonstruować? Ile informacji straciliśmy? Oto pytania, które musimy sobie zadać przed wyświetleniem danych. PCA to liniowa transformacja ortogonalna, która przekształca dane w nowy układ współrzędnych, tak że największa wariancja przy dowolnym rzucie danych leży na pierwszej współrzędnej, druga największa wariancja na drugiej współrzędnej i tak dalej. PCA wykorzystuje ortogonalne odwzorowanie silnie skorelowanych zmiennych do zestawu wartości liniowo nieskorelowanych zmiennych zwanych składowymi głównymi. Liczba głównych składników jest mniejsza lub równa liczbie oryginalnych zmiennych. Ta transformacja liniowa jest zdefiniowana w taki sposób, że pierwszy główny składnik ma największą możliwą wariancję. To odpowiada jak największej zmienności danych, biorąc pod uwagę cechy wysoce skorelowane. Teraz zrozummy terminologię:

1. Kierunek projekcji: Źródło światła i kąt światła
2. Surowe dane w przestrzeni 3D: rzeczywiste pniaki, które są zamocowane w przestrzeni trójwymiarowej.
3. Dane rzutowane w przestrzeni 2D: cień na drugim końcu.

W zależności od kierunku projekcji cień się zmieni, ale nie dane. Jeśli zmienię światło dalej, otrzymam inną projekcję. Tak więc projekcja, którą otrzymujemy, jest funkcją tego skąd pochodzi światło i zawsze cień znajduje się po drugiej stronie. Wyobraźmy sobie, że rzutowaliśmy trzy pnie pod czterema różnymi kątami i otrzymujemy projekcje A, B, C, D. Teraz, jak możemy zdecydować, która z tych projekcji w A, B, C, D jest najlepszą projekcją? Mierzymy trafność projekcji na podstawie ilości informacji, które może zachować. Projekcja, która zachowuje maksymalną ilość informacji, nazywana jest najlepszą projekcją. Załóżmy, że uważamy "A" za najlepszą projekcję, co projekcja A robi inaczej niż inne? Co się dzieje, gdy wykonujemy inne prognozy, tracimy informacje. Właściwie surowe dane są w 3 wymiarach, potem zrobiliśmy projekcję, projekcja jest przybliżeniem surowych danych. Po projekcji otrzymujemy dwuwymiarową przestrzeń, co oznacza, że tracimy trochę informacji, ponieważ przechodzimy z 3D na 2D. Celem redukcji wymiarowości, projekcji jest utrata minimalnej ilości informacji. Tak więc prawidłowa odpowiedź zależy od kryteriów, których używamy. Tutaj naszym kryterium jest zminimalizowanie utraty informacji lub prognoza, która zachowuje maksymalną ilość informacji w surowych danych, jest najlepszą prognozą. W tej definicji najlepsza jest projekcja A, ponieważ zachowuje ona maksymalną strukturę surowych danych. Oczywiście stracimy trochę struktury, ale stratę utrzymamy na minimalnym poziomie. W przypadku D, jeśli pokazują nam tylko rzut, ale nie surowe dane, nie możemy zrekonstruować surowych danych. Oznacza to, że nie możemy mieć pojęcia, jakie są surowe dane. Myśleliśmy, że w rzeczywistości nieprzetworzone dane są linią prostą. Straciliśmy więc ogromną ilość informacji w D, a bardzo niewiele informacji zachowano w D. Więc pamiętajcie o tym, ilekroć projektujemy dane, powinniśmy utracić informacje, ale projekcja, w której mamy minimalną ilość utraty informacji, jest uważana za najlepsza projekcja. Możemy więc zdefiniować pojęcie najlepszej projekcji jako projekcję, w której tracimy minimalną ilość informacji. Weźmy jeszcze jeden przykład, wyobraźmy sobie sferyczne dane, kiedy projektujemy dane 2D, otrzymamy dane rzutowane w przestrzeni 1D. Tutaj straciliśmy trochę informacji, ponieważ punkty na tej samej linii poziomej pojawią się jako jeden punkt na ekranie. Więc straciliśmy to rozróżnienie. ponieważ nie możemy odróżnić różnicy między dwoma różnymi punktami danych na tej samej linii poziomej. Ale moglibyśmy zmniejszyć wymiarowość z 2D do 1 D. Wyobraźmy sobie, że jeśli skierujemy światło w różnych innych kierunkach, otrzymamy różne rzuty, załóżmy, że jeśli mamy trzy rzuty A, B, C, powiedz mi, która jest najlepszą projekcją? Nie, nie możemy powiedzieć, ponieważ wszystkie są takie same. Ilekroć dane są sferyczne, oznacza to, że są równo rozdzielone, a obie funkcje są całkowicie nieskorelowane, co oznacza, że cechy są całkowicie niezależne od siebie, w takim przypadku, bez względu na to, co robisz w zakresie projekcji, stracisz taką samą ilość informacji. Dlatego badamy kowariancję, ponieważ chcemy osiągnąć stan, w którym dane stają się tak sferyczne, że wszystkie prognozy są równie dobre lub równie złe. Koncepcyjnie mogą istnieć nieskończone sposoby wyświetlania danych, ale kiedy projektujemy dane ortogonalnie, przechwytujemy informacje o różnych rodzajach punktów danych i różnych rodzajach struktur, w pierwszym przypadku przechwytuję rozkład pionowy, a w drugim przechwytuję rozkład poziomy, to, co przechwytuję z jednej strony, jest całkowicie różne od tego, co przechwytuję z drugiej strony, i te dwie projekcje łącznie przechwytują pełne informacje na temat surowych danych. Pomysł polega na tym, że kiedy dostaję pierwszą projekcję, w której przechwyciłem większość danych, następna najlepsza projekcja, która da mi inne informacje, które utraciłem w pierwszej projekcji. To powinno być prostopadłe do pierwszej projekcji. Ponieważ dane są w 2D, potrzebuję tylko 2 rzutów, aby uchwycić pełną informację w danych. Spójrz na pozostałe dwa rzuty, ilość informacji zarejestrowanych w obu rzutach jest dokładnie taka sama. Pozwólcie, że podam kolejny przykład rzutów ortogonalnych, gdy używamy różnych rzutów ortogonalnych, które są pod kątem 90 stopni względem siebie, te dwa rzuty są ortogonalne, co oznacza, że informacje przechwycone przez jedną projekcję są całkowicie różne od informacji przechwyconych przez inną projekcję, oba w połączeniu otrzymam pełną informację. Można powiedzieć, że rzutowanie jest dobre, gdy rzut uwzględnia kształt i zachowuje wariancję. Projekcję, która zachowuje maksymalną wariancję, nazywamy ich składnikiem Pierwszej Podstawowej, w którym zachowana jest maksymalna wariancja. Tutaj wariancja oznacza, że ilość informacji jest zachowana. Wyobraź sobie, że funkcja nie ma wariancji, to nie ma w niej zawartości informacyjnej. Tak więc zachowanie wariancji jest jednym z kryteriów najlepszej projekcji. Pierwszy główny składnik przechwytuje maksymalną wariancję i cokolwiek pozostała wariancja zostanie przechwycona przez drugi główny składnik i tak dalej i tak dalej. Teraz wyobraź sobie, że jeśli masz dane 100-wymiarowe, pierwszy główny składnik przechwytuje maksymalną wariancję, a drugi główny składnik, który jest prostopadły do pierwszego, przechwytuje drugą najlepszą wariancję. Wtedy wszystko, co pozostanie, zostanie przechwycone przez trzeci, który będzie prostopadły do pierwszych dwóch głównych elementów i tak dalej. W PCA staramy się znaleźć w kolejności sekwencyjnej zestaw rzutów, tak aby pierwszy główny składnik przechwytywał maksymalną wariancję i trwał do końca. Jeśli moje dane mają N wymiarów, mogę mieć co najwyżej N głównych składników, Wyobraźmy sobie dwuwymiarowe punkty danych, w regionie jest X punktów danych, Mu jest średnią z tych punktów danych. (Mu (X)) . X(n) jest n-tym punktem danych w X punktach danych, a jeśli rzutujemy je razem, naszą koncepcją jest zachowanie maksymalnej wariancji. Załóżmy, że rzutowaliśmy światło z dwóch źródeł, a Mu(Y) jest rzutowaną wersją Mean, a Y(n) jest rzutowaną wersją N-tego punktu danych. Wyobraźmy sobie, że spojrzeliśmy na projekty na dwa sposoby, możemy zrozumieć, że pierwsza projekcja zachowała maksymalną wariancję w porównaniu do drugiej. Teraz powinniśmy obliczyć, jaka jest przewidywana średnia Mu(Y), czyli N dla całego Y(n). Celem było zmaksymalizowanie zachowania wariancji. Patrzę na rzutowaną przestrzeń i dowiaduję się, która z nich jest lepszą projekcją. Projekcja to nic innego jak tylko nieprzetworzone dane, pomnożenie ich przez wektor, i daje jedną liczbę, która daje jedną projekcję. Y(n) jest pojedynczą liczbą, która mówi mi, jak daleko jest od tego punktu i tak dalej. Teraz, jeśli chcę obliczyć średnią, to, co mówię, to 1 powyżej N, średnia dla wszystkich wartości Y. To tylko przykład jednego punktu, ale w rzeczywistości projektujemy wszystkie punkty przestrzeni i bierzemy średnie wartości tych punktów i jeśli rozwinę równanie W transponuje Xn (W to wektor liniowy, który mówi mi o kierunku projekcji) .Wyciągam podsumowanie, a pozostała część to nic innego jak średnia. Średnią można wykonać na dwa sposoby, np. najpierw rzutujesz wszystkie punkty danych i bierzesz średnią, albo bierzesz średnią i rzutujesz wszystkie punkty później. W obu sytuacjach otrzymasz ten sam wynik. Jaka jest wariancja w przestrzeni Y? Rozbieżność jest niczym innym, jak tylko wziąć każdy punkt danych. Jak daleko jest od średniej, jeśli masz dane wraz z kierunkiem chmury, starasz się zachować lub zmaksymalizować wariancję, ponieważ otrzymany kształt jest dłuższy, to jest to, co próbujemy to zrobić, jeśli podstawię wartość Y, Y jest niczym innym jak W transponuje tutaj X, jeśli zrobię tu trochę matematyki, to co się stanie, W transponuje kowariancję razy W, staje się to przestrzenią kowariancji. Idea polega na tym, że staje się to kowariancją, w zasadzie to, co robimy, bierzemy W razy transpozycja razy kowariancję razy W i to staje się, w postaci pojedynczej liczby, liczba ta będzie tutaj znacznie niższa, ta sama liczba będzie znacznie wyższa w innym przypadku. Tak więc, jeśli chcesz zmaksymalizować wariancję, znajdź W, która maksymalizuje wariancję. Teraz staje się to problemem optymalizacji, tak to ujęliśmy, bierzesz macierz kowariancji danych, masz surowe dane, takie jak dane czterowymiarowe, bierzesz średnią ze wszystkich kolumn, otrzymujemy cztery liczby, bierz kowariancję macierzy, ta macierz nazywa się W, chcesz znaleźć tę W, która jest kierunkiem, tak że wariancja jest zmaksymalizowana w rzutowanej przestrzeni. Kiedy robisz to zasadniczo, rozwiązujesz problem wektora własnego, kowariancji. Być może zrozumiałeś koncepcyjnie, co próbujemy zrobić. Staramy się znaleźć ten kierunek, który maksymalizuje zachowanie wariancji. Stwierdzamy, że W, które maksymalizuje i jest całkowicie związane z macierzą kowariancji danych. Spójrzmy na to w przypadku zestawu danych, który ma 8 zmiennych numerycznych i 500 obserwacji. tutaj możesz uzyskać macierz 8 * 8, a kiedy spojrzymy na kowariancję, przekątna jest wariancją każdej cechy, co jest rozkładem samej cechy, jest to macierz 8 * 8. Wzięliśmy sumowanie ponad 500 punktów, z których każdy jest sumą wielkości 8 * 8, mi x i mi x to 8-wymiarowy punkt, środek wszystkich punktów, Xn jest n-tym punktem danych, w zasadzie biorąc średnio 500 macierzy 8 * 8, to daje macierz kowariancji. Kiedy weźmiesz wektor własny, staje się on pierwszym głównym składnikiem. gdy obliczasz wartości własne zasadniczo, daje to 8 wektorów własnych. Pamiętaj, że nieprzetworzone dane mają 8 wymiarów, więc prognozy również będą wynosić 8, więc otrzymaliśmy 8 głównych składników łącznie, i dla każdego głównego składnika daje również . W wartościach własnych, które mówią, w jakim kierunku występuje wariancja każdego głównego składnika, możemy zobaczyć pierwszy główny składnik, który zachowuje bardzo dużą wariancję. W PCA staramy się wziąć całą wariancję danych, staramy się wycisnąć całą wariancję w pierwszym głównym składniku danych, oczywiście nie możemy uzyskać całej wariancji pierwszego głównego składnika, ale możemy spróbować to zmaksymalizować. Tak mówimy po przeanalizowaniu wyniku, staramy się uzyskać maksymalną możliwą wariancję w pierwszym głównym składniku, a następnie w drugim i tak dalej. Pomysł jest taki, że 8-wymiarowe dane dają 8 głównych składników, ale pierwszy główny składnik będzie miał maksymalną kowariancję. Jeśli weźmiesz wszystkie 8 wymiarów, wówczas pokrywamy całą wariancję, ale dane mają trochę szumu, dobrze jest stracić trochę informacji, ważne jest, aby zachować odpowiednią ilość informacji i odpowiedni rodzaj informacji, dlatego rzutujemy dane na 2 lub 3 główne elementy.

Zobaczmy kilka przykładów bez nadzoru:

W PCA projekcja jest jednym rodzajem struktury, gdzie może się wydawać, że dane mają 200 wymiarów lub 1000 wymiarów, te kolumny nie nadeszły, ponieważ dane mają te kolumny, te kolumny nadeszły, ponieważ ktoś uznał, że to ważna kolumna. Zawsze dobrze jest być konserwatywnym i na początku mieć więcej kolumn, ponieważ nie wiesz, ile będziesz chciał później użyć. Firma taksówkowa może gromadzić Twoje dane, na przykład ile czasu możesz poczekać, do jakiej części miasta należysz, o której godzinie zaczynasz pracę w biurze itp. nie wiedzą, jak z nich korzystać teraz, ale być może wykorzystają je później . Zasadniczo zbieramy więcej kolumn, aby zachować ostrożność, ponieważ później nie powinniśmy mówić och! Powinienem był nawet zebrać to pole danych, dlatego nazywamy zbieranie danych sztuką, sztuką myślenia koncepcyjnego. Ale kiedy zbierzesz więcej kolumn, twój zestaw danych będzie grubszy, teraz musimy dowiedzieć się, jaka jest prawdziwa struktura danych. Przydaje się więc PCA.
Studium przypadku: Organizacja zajmująca się oprogramowaniem ma problem z wyczerpaniem i chce znaleźć powody odejścia pracowników z organizacji. Zebrali różne wymiary i chcą skompresować je do kilku funkcji, aby mogli skoncentrować się na tych problemach. Teraz naszym zadaniem jest dowiedzieć się, czy możemy zmniejszyć wymiary, czy nie. Chcemy dowiedzieć się, ile wymiarów wystarcza do przeniesienia co najmniej 80% wariancji danych. Eksploracyjna analiza czynnikowa (EFA) jest powszechną w naukach społecznych techniką wyjaśniania wariancji między kilkoma zmiennymi mierzonymi jako mniejszym zestawem zmiennych ukrytych. EFA jest często używana do konsolidacji danych ankietowych poprzez ujawnienie grup (czynników) leżących u podstaw poszczególnych pytań.

WYKONYWANIE ANALIZY CZYNNIKA

# Krok 1: Odczytaj dane
setwd('D:/R data')
Emp.fa <- read.csv("Emp_satis.csv", header=T)
# Krok 2: Zainstaluj i załaduj pakiet
install.packages ("psych")
library(psych)
#Krok 3: Przeglądaj dane
head(Emp.fa) #show sample data
dim(Emp.fa) #check dimensions
str(Emp.fa) #show structure of the data
fix(Emp.fa)
# Krok 4: Przygotowanie danych
fa.req <- subset(Emp.fa, select=-c(Empid,Overall))
#Krok 5: Oblicz i wyświetl matrycę korelacji
corMat <- cor(fa.req)
corMat
#Krok 6: Wykonaj analizę czynnikową

Użyj fa(), aby przeprowadzić skośną analizę eksploracyjną czynnika w osi głównej i zapisać rozwiązanie dla zmiennej R. Aby uzyskać rozwiązanie czynnikowe, użyjemy funkcji fa() z pakietu psych, który otrzymuje następujące podstawowe argumenty.

Mod.fa <- fa (r = corMat, nfactors = 3, rotate = "varimax", fm = "ml")
Gdzie,
#r: macierz korelacji
#nfactors: liczba czynników do wyodrębnienia (domyślnie = 1)
#rotate: jedna z kilku metod rotacji macierzy, takich jak "varimax" lub "oblimin"
#fm: jedna z kilku metod faktorowania, takich jak "pa" (oś główna) lub "ml" (maksymalne prawdopodobieństwo)

Należy pamiętać, że podczas przeprowadzania EFA dostępnych jest kilka metod rotacji i faktorowania. Metody rotacji można opisać jako ortogonalne, które nie pozwalają na korelację uzyskanych czynników, i skośne, co pozwala na korelację uzyskanych czynników. Metody faktorowania można opisać jako powszechne, które są stosowane, gdy celem jest lepsze opisanie danych, oraz komponent, które są stosowane, gdy celem jest zmniejszenie ilości danych.

#Krok 7: Wyświetl wyniki rozwiązania

Mod.fa

WYKONANIE GŁÓWNEJ ANALIZY KOMPONENTÓW

# Krok 1: Odczytaj dane

setwd('D:/R data')
Emp.drt <- read.csv("Emp_satis.csv", header=T)

#Krok 2: Przeglądaj dane
head(Emp.drt) #show sample data
dim(Emp.drt) #check dimensions
str(Emp.drt) #show structure of the data
fix(Emp.drt)
colnames(Emp.drt)

# Krok 3: Przygotowanie danych
Emp.req <- subset(Emp.drt, select=-c(Empid))

# Krok 4: Sprawdź problem wielokoliniowości
Model = lm(Overall ~ ., data=Emp.req)
Rsq = summary(Model)$r.squared
vif = 1/(1 - Rsq)
vif

Ponieważ uzyskana wartość vif jest większa niż 5, możemy powiedzieć, że występuje wielokoliniowość. Zdecydowaliśmy się więc na redukcję wymiarów.

# Krok 5: Przygotowanie danych

Emp.pro <- subset(Emp.drt, select=-c(Empid,Overall))

#Krok 6: Utwórz główne składniki
Emp.pca <- prcomp(Emp.pro,center=TRUE,scale=TRUE)
print(Emp.pca)

#Krok 7: Utwórz wykres piargowy
plot(Emp.pca, type="lines")

Metoda #summary opisuje znaczenie komputerów osobistych. Pierwszy wiersz opisuje ponownie odchylenie standardowe związane z każdym komputerem. Drugi rząd pokazuje odsetek wariancji w danych wyjaśnionych przez każdy składnik, podczas gdy trzeci rząd opisuje skumulowany odsetek wyjaśnionej wariancji.

#Krok 8: Wykonaj podsumowanie

KROK 8

Grupowanie

WPROWADZENIE

Grupowanie jest procesem organizowania obiektów w grupy, których członkowie są w pewien sposób podobni, które zajmuje się znajdowaniem Struktury w zbiorze Nieoznaczonych Danych. Gromada jest zatem zbiorem obiektów, które są między nimi "podobne" i są "niepodobne" do obiektów należących do innych klastrów. Weźmy przykład firmy z laptopem, która promuje swoją najnowszą markę laptopów. Chcą dostosować modele reklam, ludzie mieszkający w jednej części miasta różnią się od ludzi, którzy mieszkają w innej części miasta. Musimy wysłać inną reklamę do różnych osób. Co my tu zrobiliśmy? Klastrowanie wykonujemy intuicyjnie. Możemy zacząć od jednej lub dwóch wiadomości i możemy to zrobić aż do indywidualnej, tj. spersonalizowanej reklamy. Grupowanie jest więc tym, co robimy, gdy chcemy tworzyć grupy, ponieważ nie można utworzyć jednej wiadomości dla każdej osoby, jest to zbyt kosztowne na jednym końcu spektróm i nie można wysłać tej samej wiadomości do wszystkich, ponieważ jest ona zbyt duża. Co teraz zrobisz? Robisz coś w środku, co nazywa się klastrowaniem? Teraz Pomyśl o centrum obsługi klienta firmy taksówkowej. Chcą wiedzieć, jakie są problemy CRM, zaczynają od niektórych problemów i rozwiązań, a następnie udoskonalają zestaw problemów w oparciu o problemy CRM. Pomyśl o tym, skąd znają te problemy jeszcze przed założeniem firmy ? Być może wzięli pod uwagę problemów zgłoszonych przez poprzednie firmy taksówkowe, a potem stał się problemem klasyfikacyjnym. W jaki sposób odkrywasz nowe rzeczy, które się pojawiają na twoim rynku, my zajmujemy się grupowaniem. Różne rodzaje technik klastrowania:

1. Wyłączne klastrowanie (klastrowanie częściowe): Klastrowanie K-Means
2. Nakładające się klastry: Klastrowanie Fuzzy C-Means
3. Hierarchiczne grupowanie: góra-dół (dzielenie), dół-góra (gromadzenie)
4. Grupowanie probabilistyczne: Mieszanka Gaussa
5. Grupowanie widmowe

CZĘŚCIOWA KLASTROWANIE

Klastrowanie częściowe może być twarde lub miękkie, w klastrowaniu twardym to tak, jakbyś grupował punkt danych do jednej określonej funkcji klastra. Skoro należy do tego klastra, nie może należeć do żadnego innego klastra. W miękkim klastrowaniu uważamy, że punkt danych wygląda jak należący do tego klastra, ale ma nawet cechy drugiego klastra, więc częściowo należy do tego, a częściowo do innego. Pozwólcie, że zastosuję obie strategie do tego punktu danych, który nazywa się miękkim klastrowaniem. Początkowo, kiedy tworzysz klastry, nie wiesz, jak dokładne są centra klastrów, więc nie chcesz robić twardego klastrowania. Jeśli twoje dane zawierają zbyt dużo hałasu, nie chcesz robić twardego klastrowania, ponieważ nie masz pewności.

Hierarchizm: To nie jest technika grupowania, jest to w rzeczywistości filozofia patrzenia na dane, zawsze twoje dane mają hierarchię. Bez względu na domenę, w której się znajdujesz, może to być sekwencja genów, finanse, ubezpieczenie, zawsze istnieje hierarchia. Świat składa się z hierarchii. Hierarchia jest integralną częścią natury, mózg rozumie hierarchie. Ilekroć ktoś przekazuje ci dane, pierwsze pytanie, jakie należy zadać, to jaka jest w tym hierarchia? Twój model mentalny jest zawsze tutaj jest hierarchią. Jak uważasz, że hierarchia zależy od ciebie. Jaki poziom hierarchii zastosujesz, zależy od ciebie. Ile zależy Ci na poziomie w hierarchii. Pomyśl tylko o systemie menu w call center telekomu, jeśli masz ten problem, naciśnij 1, a jeśli to problem, naciśnij 2 itd., Nawet po naciśnięciu 1 otrzymasz więcej opcji menu i tak dalej. Hierarchia to wbudowany proces w systemie biznesowym, organizacji, a nawet w danych. Uczenie się bez nadzoru polega na uczeniu się struktury danych, kiedy mówimy, że struktura, to naprawdę oznacza hierarchię. Możesz zadać mi pytanie, jeśli wszystko jest w hierarchii, dlaczego więc potrzebujemy klastrowania częściowego? Jeśli chcemy zastosować podejście oddolne do tworzenia klastrów, powinniśmy znać odległość par między wszystkimi parami, punktami danych od siebie. Czy jest to możliwe dla dużej liczby punktów danych? Nie, więc jeśli zastosujemy podejście odgórne, musimy wykonać klastrowanie częściowe na każdym etapie klastrowania. Chodzi o to, że najpierw muszę zbudować 5 klastrów, ponieważ nie mogę mieć systemu menu, który działa do 100. Tak więc najpierw zbuduję 5 klastrów, a następnie zbuduję podgrupy, ponieważ wiem, że dane są zgodne z hierarchią. Oznacza to, że używam w tym przypadku obu metod grupowania, ale moim modelem koncepcyjnym jest hierarchia. Oznacza to, że używamy klastrowania częściowego jako części klastrowania z góry na dół. Tego oczekuje przemysł od naukowca danych.

Klastrowanie K-Means zależy od:

•  Musisz znać liczbę klastrów
•  W zależności od inicjalizacji, którą spotkałeś, uzyskasz inny klaster
•  W zależności od funkcji odległości możesz uzyskać inny klaster.

Kiedy mówię, funkcja odległości, nie ma czegoś takiego jak funkcja odległości, musisz stworzyć własną funkcję odległości, to jest tak, jakby iść na piknik, musisz zabrać ze sobą stół piknikowy, ponieważ nie idziemy do restauracji . Podobnie, musisz wprowadzić własną funkcję odległości do części uczenia maszynowego. To bardzo ważna część. Im lepsze funkcje odległości, tym lepiej zdefiniowane algorytmy uczenia maszynowego. K-Means, oznacza ,że w klastrze nie ma znaczenia, jak zdefiniujesz funkcję odległości. Jjeśli wszystko jest narzędziem, nie musimy robić tego kursu z tak dużym stresem. Jaka jest Twoja rola jako naukowca danych? Tam właśnie przybędą nasze umiejętności. Pomyśl teraz o tym, jak zdefiniujesz, że funkcja odległości między dwoma wznawia się? Starszeństwo to jedno, zestaw umiejętności to drugie , firmy, dla których pracował, uniwersytet, do którego uczęszczał, jest inny i tak dalej. Pomyśl o funkcji odległości między profilem jednej osoby a profilem drugiej osoby, jaka jest odległość między dwoma filmami? Aktorzy, reżyser, muzyka ,można zdefiniować bardzo skomplikowane funkcje odległości. Tak więc jedną z najważniejszych ról badaczy danych jest zdefiniowanie funkcji odległości. Cała kreatywność tkwi w tych rzeczach, nikt nie zdefiniuje tych rzeczy dla ciebie, ponieważ lepiej znasz domenę, znasz dane i lepiej znasz dystrybucję, Twoim zadaniem jest zdefiniowanie tych rzeczy. Teraz trzeci rodzaj grupowania nazywany jest klastrowaniem spektralnym. Wiele razy dane przychodzą do nas w tej formie, podobnie jak tabela, w której każdy wiersz jest punktem danych, a my mamy określone cechy jako kolumny lub wymiary. Możesz użyć grupowania K-Means lub grupowania gromadzenia tylko wtedy, gdy zdefiniujesz odległość między dwoma punktami danych. Dlatego funkcją odległości jest ważna, ale często otrzymujesz dane różnego rodzaju, które są podobne do siebie. Nie dowiemy się, jak wyglądają dane, powiedzą nam tylko, że jest to podobne. W takim przypadku dane wyglądają jak wykres, na którym każdy węzeł jest punktem danych, nie ma swoich funkcji, wszystko co wiemy, to odległości między punktami danych. Celem w grupowaniu jest intuicyjne minimalizowanie odległości między punktami a ich przedstawicielami. Wyobraźcie sobie system demokratyczny, ponieważ wszyscy nie mogą zasiadać w parlamencie, wysyłamy naszych przedstawicieli tak, aby przedstawiciel był najbliżej wszystkich punktów danych. Użyj tej analogii, aby pomyśleć o grupowaniu k-średnich, że wektor średni jest reprezentatywny dla grupy ludzi lub grupy punktów danych, a dobry wektor średni musi znajdować się blisko wszystkich tych punktów, które reprezentuje.

• Jak wykorzystujemy tę analogię do zdefiniowania funkcji celu?
• Jakie są parametry?

Istnieją dwa rodzaje parametrów: 1. Parametr asocjacji, który mówi, jak się masz przypisz klaster do punktu danych i 2.Jak zaktualizować średni wektor? Spójrzmy na Formułę Grupowania:



W formule można zobaczyć dwa symbole sumowania, jeden dla punktów danych, a drugi dla klastrów, nie ma to nic wspólnego z liczbą wymiarów. Korzystam z funkcji odległości euklidesowej. Podczas wykonywania grupowania K-Means. Musimy zrozumieć, że wybraliśmy przedstawiciela grupy, kiedy on przenosi się z naszej grupy do innej grupy, staje się przedstawicielem nowej grupy, a jakiś inny facet zostanie przedstawicielem grupy, która została pominięta. Chodzi o to, że możemy mieć dowolną liczbę przedstawicieli, ale chcę to zrobić w optymalny sposób. Pomyśl o tym jak o problemie z kurczakiem i jajami, jeśli zdecydujemy o powiązaniu, możemy obliczyć średnią lub zdecydować o średniej i obliczyć powiązanie. Są to dwa powiązane problemy i nie wiemy od czego zacząć. Możemy albo zacząć od losowego przypisania centrów skupień, albo możemy zacząć od przypisania losowych lokalizacji w danych, ponieważ oznacza to, że jedno z dwóch jest prawidłowym punktem początkowym. To jest tak: Biorąc pod uwagę deltę - znajdź średnią lub biorąc pod uwagę średnią znajdź deltę. Kiedy te problemy zostaną rozwiązane, nadejdzie etap, w którym średnia i delta się nie zmienią, co nazywamy to konwergencją. Grupowanie jest algorytmem iteracyjnym, zaczynamy od jakiegoś wektora średniego, a losowe inicjalizacje, później omówimy więcej inicjalizacji, a potem co się stanie? jakie są punkty, które niektórzy idą na m1, a jakie są punkty na m2? Następnie drugie pytanie, biorąc pod uwagę średnią w iteracji p, chcemy znaleźć przypisanie do klastra. Kiedy mówię Iteracja, zaczyna się od średniej, znajdując właściwą deltę, a następnie używając delty do znalezienia następnej średniej. To jest jedno równanie. Początkowo t wynosi 0, co oznacza, że jest to iteracja 0, i powoli zwiększamy t. Kiedy mamy punkty danych, bierzemy punkty jako wektory i obliczamy odległość, przypisujemy punkty danych do wektora na podstawie odległości. Następnie zaktualizuj wartość średnią i przejdź do następnej iteracji. Chodzi o to, aby zacząć od pewnych środków, użyliśmy średniej do przypisania klastra, a następnie bierzemy przypisanie klastra do obliczenia średniej. Następnie iterujemy jeszcze raz i jeszcze raz, aż się zbiegnie. Nazywa się to krokiem oczekiwania. W kroku maksymalizacji mówi się, że biorąc pod uwagę, że są to zadania, należy zmaksymalizować funkcję celu.

Krok E: Centra klastrów -> Przypisania klastrów
Krok M: Przydziały klastrów -> Centra klastrów.

Pomyśl tylko o chodzeniu: jeśli weźmiemy jedną nogę, jest ona stroma w kształcie litery E, a następnie stawiamy nogę i bierzemy drugą nogę, którą jest M-Step. W żadnym punkcie chodzenia nie można podnieść obu nóg ani postawić obu nóg. Odpowiedzmy na dwa kolejne pytania:

•  Jak wybieramy K?
•  Jak inicjujemy?

Jak optymalnie przypisujemy przedstawicieli do punktów danych? podczas rozwiązywania tego problemu optymalizacji nie ma gwarancji, że istnieje jedno dobre rozwiązanie. Teraz wyobraź sobie, że Twoim celem jest wspięcie się na najbliższe wzgórze lub celem jest upadek najbliższej doliny. Albo spadasz, by znaleźć najniższy punkt, albo wspinasz się, by znaleźć najbliższe wzgórze. Jeśli chcę się wspiąć, pójdę w kierunku, który daje mi maksymalną zgodę na pochylenie, i osiągnę jeden szczyt , ale jeśli zacznę od innego punktu, dojdę do innego szczytu, a większość algorytmów uczenia maszynowego ma tego rodzaju problem. W wielu przypadkach funkcja optymalizacji jest taka, ma wiele lokalnych optimów, z których jeden jest globalnym optimum. Jaki klaster K-Means gwarantuje, gdziekolwiek zaczniesz, gwarantuję lokalne optymalne parametry, że nie może zagwarantować, że osiągniesz globalne optymalne wartości. Dlatego inicjalizacja odgrywa bardzo ważną rolę w klastrowaniu K-Means. Nawet jeśli milion razy korzystasz z klastrowania K-Means, nikt nie może zagwarantować Ci globalnego optymalnego rozwiązania. To, co możemy zrobić w klastrowaniu K-Means, to spróbować z różnymi punktami inicjalizacji i znaleźć optymima, a wśród tych lokalnych optymów możesz wybrać najlepszy. Dlatego za każdym razem, gdy przeprowadzamy klastrowanie, musimy spróbować uzyskać rozłożenie początkowych punktów na wszystkie punkty danych.

Najdalszy pierwszy punkt Inicjalizacji: Jest to technika używana do rozwiązania problemu inicjalizacji. W tej metodzie najpierw wybieramy średnią i wybieramy najdalszy punkt od średniej i używamy jej jako pierwszego centrum skupień. Teraz traktuj to jako ziarno i oblicz najdalszy punkt z tego nowego zarodka i rozważ ten punkt jako drugie centrum klastrów, teraz mam dwa centra klastrów, które zagwarantowały mi maksymalne rozproszenie danych. Teraz potrzebuję trzeciego ziarna, które powinno być najdalej od obu nasion, musimy powiedzieć, że odległość od obu nasion powinna być maksymalna, obliczamy wynik wszystkich punktów, tak aby nowe ziarno było w maksymalnej odległości od obu punktów, a następnie wybieramy czwarte nasienie, które powinno być maksymalną odległością od wszystkich trzech punktów danych. Nie przeszkadza nam, gdy mamy do czynienia z 4 lub 5 klastrami, ale w czasie rzeczywistym może być konieczne radzenie sobie z nimi setki wymiarów i miliony obserwacji, to jak zdecydujesz o liczbie klastrów? Mogę mieć wszystkie moje punkty danych w jednym klastrze lub utworzyć klaster dla każdego punktu danych. Tutaj oba podejścia nie są przydatne. Celem jest znalezienie odpowiedniej liczby klastrów. Są dwa sposoby myślenia. Opiera się na naszym problemie biznesowym. Jeśli podam trzy opcje, czy chcesz utworzyć 2, 5 lub 200 klastrów? Decyzje te opierają się na naszych potrzebach biznesowych. Jeśli powiemy, że możemy obsłużyć 5 rodzajów skarg, ponieważ mamy ograniczone zasoby, nie możemy zrobić 200 klastrów i osobno zajmować się wszystkimi skargami, ponieważ jest to bardzo kosztowne, pozwól mi zgrupować te 200 koncepcji w 5 klastrów więc 5 to rozsądna liczba. Możemy użyć ogólnej reguły, która stanowi ułamek pierwiastka kwadratowego danych. Pierwiastek kwadratowy z liczby punktów danych. Możemy nawet wybrać odpowiednią liczbę klastrów na podstawie decyzji opartych na uczeniu maszynowym. Istnieje poprawna liczba klastrów dla każdego zestawu danych, ale pytanie brzmi, czy możemy ją znaleźć, czy nie. Właściwa liczba klastrów jest ważnym zagadnieniem, ponieważ poza którym staje się hałasem, poniżej którego nie przechwytuje się żadnej struktury (Sygnał). Podczas klastrowania PCA lub K-Means musimy zastanowić się, ile szumu i ile sygnału jest w danych. Możemy użyć statystyk Gap, aby znaleźć odpowiednią liczbę klastrów, próbujemy z szeregiem klastrów, powiedzmy od 3 do 20 dla każdego klastra, którego używasz albo najdalszy algorytm próbkowania pierwszego punktu lub wiele losowych inicjalizacji, cokolwiek zrobisz, otrzymasz trochę statystyk. Wykreśl te statystyki i oblicz lukę, a ona powie ci odpowiednią liczbę klastrów. Cały czas śledzimy ten proces, przerwa nie może być ujemna, ponieważ oczekiwany zakłada całkowicie losowy hałas lub całkowicie jednolity rozkład. Zakładając, że liczba punktów danych, które są równomiernie rozmieszczone, jest najgorszą możliwą strukturą, jaką możemy mieć, to jest to, co służy do obliczenia oczekiwanego, który zawsze będzie niższy niż obserwowany. Mamy więc nadzieję, że dane będą miały strukturę, która wykracza poza losowy rozkład danych.

HIERARCHICZNE KLASTROWANIE

W tym typie mamy dwa podejścia, takie jak: 1. Z góry na dół (dzieląca) 2. Z dołu na górę (skupiająca). W podejściu z góry na dół bierzemy cały zestaw jako pojedynczy klaster i dzielimy je na dwa klastry, a z obu klastrów dzielimy kolejne klastry i tak dalej. Robiąc klastrowanie na każdym etapie, przyjmujemy podejście klastrowania K-średnich w przypadku danych wielowymiarowych i klastrowania sferycznego w przypadku danych tekstowych. Jeśli tworzymy bezpośrednio 4-5 klastrów za jednym razem, co nazywa się klastrowaniem partycjonowanym, podczas gdy to podejście dzielenia ich krok po kroku nazywa się klastrowaniem dzielącym, podobnie jak najpierw tworzymy dwa klastry z klastra głównego, a następnie dzielimy oba klastry na dwa. . Takie podejście nazywa się hierarchicznym klastrowaniem z góry na dół, a my ciągle idziemy w dół i w dół i tak dalej. Teraz możesz zapytać, czy jeśli zastosujemy podejście K-średnie i podejście odgórne, czy gwarantujemy, że na końcu otrzymamy taką samą liczbę klastrów z tymi samymi podmiotami? Odpowiedź brzmi: nie. Hierarchia jest naturalnym sposobem, w jaki dane się pojawiają, w miarę możliwości powinniśmy myśleć hierarchicznie, zawsze możemy używać klastrowania częściowego na każdym poziomie, ale ostatecznie robimy klastrowanie hierarchiczne. Spójrzmy na inny rodzaj klastrowania, tj. skupiające hierarchiczne klastrowanie, które jest bardzo często wykorzystywane w następującym scenariuszu. Wyobraź sobie, że punkty danych nie są bardzo duże, co oznacza, że nie mamy zbyt wielu punktów danych, ale chcemy naprawdę dobrego klastra, w takim przypadku ludzie wolą stosować klastrowanie skupiające. Weźmy przykład niektórych sekwencji genów, grupujemy geny razem, a one tworzą klaster. Wyobraź sobie, że istnieją pewne punkty danych, chcę móc je grupować i organizować, użyłem grupowania aglomeracyjnego. Mógłbym to uzyskać, metodą odgórną lub metodą oddolną. Więc nie mówię, której metody używam. Chodzi o to, że możemy zorganizować dane w węźle liścia w hierarchię. Weźmy przykłady liczb 0-9 i chcemy znaleźć, które są bardziej podobnymi punktami danych, najpierw bierzemy dwie liczby, które wyglądają bardzo podobnie, istnieje bardzo jasne pojęcie, że 1 i 7 wyglądają podobnie, więc je scalam, więc, kiedy je scalam, otrzymuję klaster o rozmiarze drugim i mam n-2 klastrów o rozmiarze 1, mogę traktować każdy punkt danych jako klaster, początkowo gdy nic nie zrobiłem, każdy punkt danych jest grupa. Ilekroć myślimy o klastrowaniu, możemy myśleć o tym, jaka jest najmniejsza liczba klastrów, jaką możemy mieć i jaka jest największa liczba klastrów, jaką możemy mieć? więc najmniejszą liczbą może być 1, a największą liczbą może być liczba punktów danych. Klaster skupiający pomaga nam budować klastry od n do jednego, łącząc klastry oddolnie. Otrzymasz spektrum wszystkich możliwych klastrów od 1 do N.

OCENA TENDENCJI KLASTRA

Przed zastosowaniem jakiejkolwiek metody klastrowania w zbiorze danych naturalne pytanie brzmi: czy zestaw danych zawiera jakieś nieodłączne klastry ? Dużym problemem w uczeniu maszynowym bez nadzoru jest to, że metody klastrowania zwracają klastry, nawet jeśli dane nie zawierają żadnych klastrów. Innymi słowy, jeśli ślepo zastosujesz analizę skupień w zbiorze danych, podzieli dane na klastry. Dlatego przed wyborem podejścia klastrowego musimy zdecydować, czy zestaw danych zawiera znaczące klastry, czy nie. Jeśli tak, to ile jest tam klastrów. Proces ten jest definiowany jako ocena tendencji do tworzenia klastrów lub wykonalności analizy klastrów. Możemy zastosować metody statystyczne i wizualne do oceny tendencji do tworzenia klastrów. Można zauważyć, że algorytm k-średnich i klastrowanie hierarchiczne narzucają klasyfikację losowo równomiernie rozmieszczonego zestawu danych, nawet jeśli nie ma w nim znaczących klastrów. Aby uniknąć tego problemu, stosuje się metody oceny tendencji do tworzenia klastrów. Metody oceny tendencji do tworzenia klastrów: Ocena tendencji do tworzenia klastrów określa, czy dany zestaw danych zawiera znaczące klastry. Istnieją dwie metody określania tendencji do tworzenia klastrów: 1) statystyczna (statystyka Hopkinsa) i 2) metody wizualne (wizualna ocena algorytmu tendencji klastra (VAT)).
Statystyka Hopkinsa: Statystyka Hopkinsa służy do oceny tendencji klastrowania zbioru danych poprzez pomiar prawdopodobieństwa, że dany zestaw danych zostanie wygenerowany przez jednolity rozkład danych. Innymi słowy, testuje losowość przestrzenną danych. Wartość H około 0,5 oznacza, że są blisko siebie, a zatem dane D są równomiernie rozmieszczone. Hipotezę zerową i alternatywną definiuje się następująco. Hipoteza zerowa polega na tym, że zestaw danych D jest równomiernie rozłożony (tj. Bez znaczących klastrów), a alternatywna hipoteza to zestaw danych D nie jest jednolicie rozproszone (tj. zawiera znaczące klastry). Jeśli wartość statystyki Hopkinsa jest bliska zeru, możemy odrzucić hipotezę zerową i wyciągnąć wniosek, że zestaw danych D jest w znacznym stopniu klastrem danych. Funkcja R do obliczania statystyki Hopkinsa: Funkcja hopkins() może być używana do statystycznej oceny tendencji do tworzenia klastrów w R.

#1.Odczytaj plik csv, aby załadować dane
setwd("D:/R data")
Clus_ds <- read.csv("Clus_sample.csv", header=TRUE)
head(Clus_ds)
str(Clus_ds)
fix(Clus_ds)
#2. Sprawdź klastrowanie za pomocą metody wizualnej Metoda: Utwórz wykres rozproszenia
plot(CAD~Neuro,Clus_ds)
# Oblicz statystyki Hopkinsa dla zestawu danych
set.seed(123)
hopkins(Clus_stan, n = nrow(Clus_stan)-1)
#Jeśli wartość H jest znacznie poniżej progu 0,5, jest wysoce zdolna do skupiania.

Określ liczbę Klastrów

setwd("D:/R data")
Clus_ds <- read.csv("Cluster.csv", header=TRUE)
Clus_req <- Clus_ds[-c(1,8)]
Clus_stan <- scale(Clus_req)
wssplot <- function(Clus_stan, nc=5, seed=1234){
wss <- (nrow(Clus_stan)-1)*sum(apply(Clus_stan,2,var))
for (i in 2:nc){
set.seed(seed)
wss[i] <- sum(kmeans(Clus_stan, centers=i)$withinss)}
plot(1:nc, wss, type="b", xlab="Number of Clusters",
ylab="Within groups sum of squares")}

# Parametr danych to numeryczny zestaw danych do analizy, nc to maksymalna liczba klastrów do rozważenia, a seed to seed o losowej liczbie.

wssplot(Clus_stan)
library(NbClust)
set.seed(1234)
nc <- NbClust(Clus_stan, min.nc=2, max.nc=5, method="kmeans")
table(nc$Best.n[1,])
barplot(table(nc$Best.n[1,]),
xlab="Numer of Clusters", ylab="Criteria",
main="Choose Number of Clusters by 26 Criteria")

STUDIUM PRZYPADKU

Wielospecjalistyczna sieć szpitali zajmująca się kardiologią, endokrynologią, psychiatrią i specjaliści od urologii chcą stworzyć określone strategie mające na celu poprawę ich działalności i optymalnie wykorzystują swoje zasoby. Teraz Twoim zadaniem jest tworzenie klastrów i sugerowanie, które powinny być strategią, którą należy stosować w każdym klastrze.

# Krok 1: Zainstaluj i załaduj wymagane pakiety
if(!require(clustertend)) install.packages("clustertend")
library(clustertend)
# Krok 2: Załaduj dane
setwd("D:/R data")
Clus_ds <- read.csv("Cluster.csv", header=TRUE)
#Krok 3: Przeglądaj dane
fix(Clus_ds)
head(Clus_ds)
str(Clus_ds)
#Krok 4: Usuń zmienne jakościowe, takie jak identyfikator i stan
Clus_req <- Clus_ds [-c (1,8)]
# Krok 5: Usunięcie brakujące po liście
Clus_req <- na.omit (Clus_req)
summary (Clus_req)
str (Clus_req)
#Krok 6: Wykonaj normalizację
Clus_stan <- scale(Clus_req) # standardize variables
head(Clus_stan)
summary(Clus_stan)
# Krok 7: Określ liczbę klastrów
library(NbClust)
set.seed(1234)
nc <- NbClust(Clus_stan, min.nc=2, max.nc=5, method="kmeans")
table(nc$Best.n[1,])
barplot(table(nc$Best.n[1,]),
xlab="Numer of Clusters", ylab="Criteria",
main="Choose Number of Clusters by 26 Criteria")
# Krok 8: Oblicz odległość: Hierarchiczne grupowanie totemów
dt <- dist(Clus_stan, method = "euclidean") # distance matrix
fit.hc <- hclust(dt, method="ward.D2")
# Krok 9: Utwórz dendrogram klastra za pomocą pełnej metody łączenia
plot (fit.hc) # display dendrogram
#Krok 10: Wytnij drzewo na 4 grupy
groups<- cutree (fit.hc, k = 4)
#Krok 11: Utwórz dendrogram klastra z czerwonymi ramkami wokół 4 klastrów
rect.hclust (fit.hc, k = 4, border = "red")
#Krok 12: Wykonaj analizę skupień K-średnich
set.seed (1234)
fit.km <- kmeans (Clus_stan, 4, nstart = 25)
#Krok 13: Określ liczbę punktów danych w każdym klastrze
fit.km $size
#Krok 14: Pokaż centra
fit.km$centers
#Krok 15: Pokaż klastry
fit.km $cluster
#Krok 16: Uzyskaj środki klastra
aggregate(Clus_stan,by=list(fit.km$cluster),FUN=mean)
# Krok 17: Dołącz przypisanie klastra do oryginalnego zestawu danych
Clus_Fin <- data.frame(Clus_ds,fit.km$cluster)
fix(Clus_Fin)
#Krok 18: Utwórz wykres klastra
library(cluster)
clusplot(Clus_Fin, fit.km$cluster, color=TRUE, shade=TRUE, labels=4, lines=0)

KROK 9

Analiza Koszyka Rynku

WPROWADZENIE

Analiza koszyka rynkowego ma kilka nazw, takich jak Wykrywanie wzorców / Wyszukiwanie wzorców / Reguły stowarzyszenia / Analiza koszyka rynkowego / Wyszukiwanie zestawów przedmiotów. Zapewnia wgląd w to, które produkty są zazwyczaj kupowane razem i które najbardziej odpowiadają promocji. Uczenie się reguł asocjacyjnych jest popularną techniką Data Mining do odkrywania interesujących relacji między zmiennymi w dużych bazach danych.

Co to jest wykrywanie wzorców?

Wzorce: zestaw elementów, podsekwencji lub podstruktur, które często występują razem w zestawie danych. Wzory reprezentują nieodłączne i ważne właściwości zestawów danych. Wykrywanie wzorców to odkrywanie wzorców z ogromnych zestawów danych. Wykrywanie wzorców służy do znajdowania nieodłącznych prawidłowości w zbiorze danych i może działać jako podstawa dla wielu podstawowych zadań eksploracji danych, takich jak asocjacja, korelacja, analiza szeregów czasowych, analiza przyczynowości, analiza skupień, wzorce sekwencyjne i strukturalne.
Co to są wzorce: wzorce to zestaw elementów, które często występują razem w zbiorze danych, który reprezentuje ważne właściwości zestawów danych. Możemy użyć reguł asocjacyjnych, aby odpowiedzieć na tego rodzaju pytania:

•  Jakie produkty często kupowano razem?
•  Jakie są kolejne zakupy po zakupie określonego produktu?
•  Jakie sekwencje słów prawdopodobnie tworzą frazy w tym korpusie?
•  Jakie są częste przedmioty, które kupuje ten klient?
•  Jaka jest średnia liczba produktów na zamówienie?
•  Jaki jest najczęstszy przedmiot znaleziony w jednym zamówieniu?
•  Kiedy kupił laptopa, kiedy kupi drukarkę?
•  Skoro kupił iPhone6, czy będzie zainteresowany iPhone7?
•  Do której strony wszedł, gdzie się przeniósł, ile czasu tam spędził?
•  Które choroby występują częściej u osób z tą specyficzną sekwencją genową?
•  Klienci, którzy kupili ten produkt, jakie inne produkty kupują?
•  Jaka jest średnia liczba zamówień na klienta?
•  Jaka jest średnia liczba unikalnych przedmiotów na zamówienie?
•  Nietypowe kombinacje roszczeń ubezpieczeniowych mogą być oznaką oszustwa,
•  Jak je znaleźć?
•  Historie pacjentów medycznych mogą wskazywać na prawdopodobne powikłania w oparciu o określone kombinacje leczenia. Jak często występują te zdarzenia niepożądane?

Celem zasad asocjacji jest rozpoznanie ekscytujących relacji między przedmiotami. Każda z odsłoniętych reguł ma postać X → Y, co oznacza, że gdy obserwowany jest punkt X, obserwowany jest również punkt Y. W tym przypadku lewa strona (LHS) reguły to X, a prawa strona (RHS) tej reguły to Y. Weźmy listę kilku transakcji podanych w pliku Transact.txt ze sklepu spożywczego sąsiadującego z centrum fitness.

Możemy chcieć odpowiedzieć na następujące pytania:

•  Jakie dwa przedmioty będą częściej kupowane razem niż jakiekolwiek inne przedmioty?
•  Który produkt nigdy nie jest kupowany z Jam?

Na te pytania można odpowiedzieć, obserwując dane ręcznie. Teraz prawdziwym problemem jest to, w jaki sposób generujemy te reguły automatycznie na dużych danych?

TERMINOLOGIA ODKRYCIA WZORÓW

Zestaw przedmiotów: Każda transakcja, która zawiera jedną lub więcej pozycji. Jest również znana jako zestaw przedmiotów. Termin itemset odnosi się do zbioru przedmiotów lub pojedynczych bytów, które zawierają pewien rodzaj relacji. Może to być zestaw przedmiotów zakupionych razem w jednej transakcji, zestaw profili wyszukiwanych na LinkedIn w jednej sesji lub zestaw hiperłączy klikanych przez jednego użytkownika w danej sesji.
Zestaw elementów K: Zestaw elementów zawierający k elementów nazywa się zestawem elementów K. Używamy nawiasów klamrowych, takich jak {pozycja 1, pozycja 2, ... pozycja k}, aby oznaczyć zestaw k-pozycji.
Wsparcie: Jednym z kluczowych elementów reguł stowarzyszenia jest wsparcie. Biorąc pod uwagę zestaw przedmiotów X, obsługa X jest procentem transakcji zawierających X.
Bezwzględne wsparcie (liczba) X: Częstotliwość lub liczba wystąpień zestawu przedmiotów X.
Obsługa względna: Część transakcji zawierająca X (tj. Prawdopodobieństwo, że transakcja zawiera X)
Dla 1 zestawu przedmiotów: Wsparcie = częstotliwość (X) / N
Dla 2 zestawów przedmiotów: Wsparcie = częstotliwość (X, Y) / N

W podanym przykładzie, jeśli chleb pojawił się 4 razy w 5 transakcjach, to znaczy, że 4/5 (80%) wszystkich transakcji zawiera itemset {chleb}, wówczas wsparcie {chleb} wynosi 0,8. Podobnie, jeśli 60% wszystkich transakcji zawiera itemset {Chleb, Mleko}, wówczas wsparcie {Chleb, Mleko} wynosi 0,6. Zestaw przedmiotów X jest częsty, jeśli wsparcie X jest nie mniejsze niż próg minsup (oznaczony jako ?). Częsty zestaw przedmiotów zawiera elementy, które pojawiają się razem ponad kryterium minimalnego wsparcia. Jeśli minimalne wsparcie jest ustawione na 0,5, dowolny zestaw przedmiotów może być uważany za częsty zestaw przedmiotów, jeśli wsparcie dla częstego zestawu przedmiotów powinno być większe lub równe minimalnemu wsparciu. W naszym przykładzie zarówno {Chleb}, jak i {Chleb, mleko} są uważane za częste zestawy przedmiotów przy minimalnym wsparciu 0,5.
Zaufanie: Zaufanie definiuje się jako miarę pewności lub wierności związaną z każdą odkrytą regułą. Matematycznie zaufanie jest procentem transakcji zawierających zarówno X, jak i Y spośród wszystkich transakcji zawierających X.
Pewność, c: warunkowe prawdopodobieństwo, że transakcja zawierająca X również zawiera Y. Pewność = Częstotliwość (X, Y) / Częstotliwość (X)
Na przykład jeśli {Chleb, Banan, Mleko} ma wsparcie 0,20, a {Chleb, Banan} ma również wsparcie 0,20, pewność reguły {Chleb, Banan} ? {Mleko} wynosi 1, co oznacza 100% czasu, w którym klient kupuje chleb i banan, kupuje się również mleko. Zasada jest zatem poprawna dla 100% transakcji zawierających chleb i banan. Relacja jest ekscytująca, gdy algorytm identyfikuje relację za pomocą miary zaufania większej lub równej minimalnej ufności. istnieje ograniczenie pewności, ponieważ może zidentyfikować interesujące reguły ze wszystkich reguł kandydujących, bierze pod uwagę tylko poprzednik (X) i współwystępowanie X i Y; to robi aby nie brać pod uwagę konsekwencji reguły (Y). Tak więc zaufanie nie jest w stanie stwierdzić, czy reguła zawiera prawdziwe implikacje relacji, czy też reguła jest czysto przypadkowa. Czasami X i Y mogą być statystycznie niezależne, ale nadal uzyskują wysoki wynik ufności. Winda poradzi sobie z tym problemem.
Podnoszenie: Podnoszenie mierzy, ile razy X i Y występują razem, niż się spodziewano, jeśli są statystycznie niezależne od siebie. Wzrost jest miarą tego, w jaki sposób X i Y są naprawdę powiązane, a nie przypadkiem dzieje się razem.



Wzrost wynosi 1, jeśli X i Y są statystycznie niezależne od siebie. Natomiast wzrost X ? Y większy niż 1 wskazuje, że reguła jest warta zachodu. Większa wartość wzrostu sugeruje większą skuteczność powiązania między X i Y. Zakładając 10 transakcji, z {Chlebem, Masłem} występującym w 4 transakcjach, {Chleb} występujący w 4, a {Masło} występujący w 5, następnie Lift (Chleb ? Masło) = 0,4 / (0,4 * 0,5) = 2,0 Jeśli {Masło, Zboże} występujące w 3 transakcjach z nich, {Zboże} występujące w 4, a {Masło} pojawiające się w 5, następnie Lift (Masło ? Zboże) = 0,3 / (0,5 * 0,4) = 1,5. Obserwując je, możemy powiedzieć, że chleb i masło mają silniejszy związek niż płatki zbożowe i masło.

ALGORYTM APRIORI

Algorytm Apriori stosuje iteracyjne podejście do ujawnienia częstego zestawu przedmiotów, najpierw określając wszystkie możliwe zestawy 1-przedmiotów, na przykład {Bread}, {Cereal}, {Butter} i identyfikuje, które z nich są częste. Przyjmijmy, że kryterium minimalnego wsparcia wynosi 0,5, algorytm identyfikuje i zachowuje zestaw przedmiotów, który pojawia się w co najmniej 50% wszystkich transakcji i odrzuca zestaw przedmiotów, który ma wsparcie mniejsze niż 0,5, proces ten nazywa się przycinaniem.
Zasada przycinania Apriori: jeśli jakiś zestaw przedmiotów jest rzadki, jego nadzbiór nie powinien nawet zostać wygenerowany. W następnej iteracji zidentyfikowane częste zestawy 1-elementowe są sparowane w zestawy 2-elementowe ({Chleb, Płatki}, {Chleb, Masło}, ...) i ponownie oceniane pod kątem znalezienia wśród nich częstych zestawów 2-elementowych. Jest to proces iteracyjny, przy każdej iteracji algorytm sprawdza, czy można spełnić kryterium wsparcia. Jeśli spełnia kryterium, algorytm powiększa zestaw elementów, powtarzając proces, aż skończy się obsługa lub dopóki zestaw elementów nie osiągnie ustalonej długości.
Założenia Apriori: Załóżmy, że {chleb, masło} jest częste. Ponieważ każde wystąpienie chleba, masło obejmuje zarówno chleb, jak i masło, to zarówno chleb, jak i masło muszą być również częste. Tak więc, jeśli zestaw elementów K jest częsty, wszystkie jego podzestawy (zestawy elementów K-1, k-2) są również częste

Kroki w wykonaniu algorytmu Apriori:

•  Zarys Apriori (poziom, generowanie i testowanie kandydatów)
•  Początkowo zeskanuj DB raz, aby uzyskać częsty zestaw 1 elementów
•  Powtórz
•  Wygeneruj kandydujące zestawy przedmiotów o długości (k + 1) z zestawów przedmiotów o długości-k
•  Przetestuj kandydatów na DB, aby znaleźć częste zestawy (k + 1)
•  Ustaw k: = k +1
•  Do momentu wygenerowania zestawu częstych lub kandydujących
•  Zwraca wszystkie wyprowadzone częste zestawy przedmiotów

Zalety algorytmu Apriori:

•  Używa dużej właściwości itemset.
•  Łatwo zrównoleglony.
•  Łatwy do wdrożenia.

Wady algorytmu Apriori:

•  Zakłada, że baza danych transakcji jest rezydentem pamięci. Wymaga do m skanowania baz danych. Algorytm Apriori może być bardzo wolny, a wąskim gardłem jest generowanie kandydatów. Na przykład, jeśli DB transakcji ma 104 częste zestawy 1 elementów, wygenerują 107 zestawów 2 elementów, nawet po zastosowaniu zamknięcia w dół. Aby obliczyć te z sup więcej niż minsup, baza danych musi być skanowana na każdym poziomie. Potrzebuje (n +1) skanów, gdzie n jest długością najdłuższego wzoru.

Metody poprawy wydajności Apriori:

1. Liczenie zestawów przedmiotów na podstawie skrótu: zestaw przedmiotów k, którego odpowiadająca liczba koszyków mieszających jest poniżej progu, nie może być częsta
2. Redukcja transakcji: Transakcja, która nie zawiera częstych zestawów przedmiotów K, jest bezużyteczna w kolejnych skanach
3. Partycjonowanie: Każdy zestaw elementów, który jest potencjalnie częsty w DB, musi być częsty w co najmniej jednej partycji DB
4. Próbkowanie: eksploracja podzbioru danych, dolny próg wsparcia + metoda określania kompletności
5. Dynamiczne zliczanie zestawów przedmiotów: dodawaj nowy zestaw przedmiotów tylko wtedy, gdy szacuje się, że wszystkie ich podzbiory są częste

Istnieje wiele zastosowań Reguł Stowarzyszenia, które obejmują:

•  Analiza koszyka rynkowego
•  Fizyczne lub logiczne umieszczenie produktu w pokrewnych kategoriach produktów,
•  Cross-marketing, (Cross Selling, Up selling)
•  Projektowanie katalogu,
•  Analiza kampanii sprzedażowych,
•  Programy promocyjne,
•  Analiza strumienia kliknięć lub analiza dziennika internetowego,
•  Analiza sekwencji biologicznych, systemy rekomendujące programy kart lojalnościowych, takie jak Amazon, Facebook, LinkedIn i Netflix

STUDIUM PRZYPADKU

Wczesnym rankiem weźmy zestaw danych transakcji w pobliżu centrum fitness. Pozwól nam zrozumieć, jakie są częste zakupy biegaczy lub spacerowiczów, i znajdź powiązanie między nimi, aby sklepikarz chciał przygotować wymagane rzeczy dla swoich klientów.

Krok 1: Załaduj zestaw danych
setwd("D:/R data")
basket <-read.table("Transact.txt", header=TRUE, sep="\t")
Krok 2: Zobacz pierwsze 10 obserwacji
head(basket, n=10)
Krok 3: Zrozumienie struktury i części deskryptora danych
str (basket)
Krok 4: W razie potrzeby przekonwertuj zmienne numeryczne na czynniki
fac <- c (1,2,4)
basket [, fac] <- lapply (basket [, fac], factor)
str (basket)
Krok 5: Podziel dane
dt <- split(basket$Products, basket$ID)
Krok 6: Załaduj wymagane pakiety i biblioteki
if(!require(arules)) install.packages("arules")

Jesteśmy teraz gotowi wydobyć kilka zasad. Zawsze będziesz musiał przejść wymagane minimum wsparcia i pewność siebie. Załóżmy, że chcielibyśmy ustawić minimalne wsparcie na 0.3 i minimalne zaufanie 0,8. Chcemy pokazać 5 najważniejszych zasad

Krok 7: Uzyskaj zasady
rules <- apriori(basket, parameter = list(supp = 0.3, conf = 0.8)))
Krok 8: Konwertuj dane na poziom transakcji
dt2 = as(dt,"transactions")
summary(dt2)
inspect(dt2)
Krok 9: Znajdź najczęstsze przedmioty
itemFrequency (dt2, type = "relative")
itemFrequencyPlot (dt2, topN = 5)
Krok 10: Zgromadź i zwięźle zasady:
Jeśli reguły są zbyt długie. Możemy zwięzić reguły, dodając parametr "maxlen" do twojej funkcji Apriori:

rules = apriori(dt2, parameter=list(support=0.3, confidence=0.8))
rules = apriori(dt2, parameter=list(support=0.3, confidence=0.8, minlen = 3))
rules = apriori(dt2, parameter=list(support=0.3, confidence=0.8, maxlen = 4)))
Krok 11: Konwertuj reguły na ramkę danych
rules3 = as (rules, "data.frame")
write (rules, "D: \\ rules.csv", sep = ",")
Krok 12: Pokaż tylko określone reguły dotyczące produktów
inspect( subset( rules, subset = rhs %pin% "Bread" ))
Krok 13: Pokaż 10 najważniejszych zasad
options(digits=2)
inspect(rules[1:10]))
Krok 14: Uzyskaj informacje podsumowujące
summary(rules)
Krok 15: Sortuj reguły, ponieważ chcemy najpierw napisać najbardziej odpowiednie reguły według poufności lub podnoszenia
rules<-sort(rules, by="confidence", decreasing=TRUE)
rules<-sort(rules, by="lift", decreasing=TRUE)
Krok 16: Usuń niepotrzebne reguły
Czasami reguły się powtarzają. Jako analityk możesz usunąć element z zestawu danych. Alternatywnie możesz usunąć wygenerowane zbędne reguły.

subset.matrix <- is.subset(rules, rules)
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA
redundant <- colSums(subset.matrix, na.rm=T) >= 1
which(redundant)
rules.pruned <- rules[!redundant]
rules<-rules.pruned
Krok 17: Wyczyść zasady
rules3$rules=gsub("\\{", "", rules3$rules)
rules3$rules=gsub("\\}", "", rules3$rules)
rules3$rules=gsub("\"", "", rules3$rules)
Krok 18: Podziel regułę
library(splitstackshape)
Rules4=cSplit(rules3, "rules","=>")
names(Rules4)[names(Rules4) == 'rules_1'] <- 'LHS'
Rules5=cSplit(Rules4, "LHS",",")
Rules6=subset(Rules5, select= -c(rules_2))
names(Rules6)[names(Rules6) == 'rules_3'] <- 'RHS'"
Krok 19: Celowanie w przedmioty:
Teraz, gdy wiemy, jak generować reguły, ogranicz wydajność, powiedzmy, że chcieliśmy kierować elementy i generować reguły. Zilustrowano dwa typy celów, którymi możemy być zainteresowani na przykładzie "Chleba":
# Co klienci prawdopodobnie kupią przed zakupem "Chleba"
rules<-apriori(data=dt, parameter=list(supp=0.5,conf = 0.8),
appearance = list(default="lhs",rhs="Bread"), control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:4])
# Co klienci prawdopodobnie kupią, jeśli kupią "Chleb"
rules<-apriori(data=dt, parameter=list(supp=0.5,conf = 0.7),
appearance = list(default="rhs",lhs="Bread"), control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:3])
Krok 20: Wizualizacja:
Wreszcie chcemy zmapować reguły na wykresie. Do tego potrzebujemy pakietu "arulesViz".
# Zainstaluj pakiet arulesViz
library(arulesViz)
plot(rules,method="graph",interactive=TRUE,shading=NA)

KROK 10

Szacowanie Gęstości Jądra

WPROWADZENIE

Kiedy patrzymy na dane, pierwszą rzeczą, którą chcemy dowiedzieć się, czy to struktura danych, w tym celu tworzymy histogramy danych w oparciu o jedną lub więcej funkcji. Funkcje są również znane jako wymiary, zmienne, kolumny, dlatego używamy tych terminów zamiennie. Histogram pokazuje wiele rzeczy, na przykład miejsca, w których punkty danych są bardziej widoczne, a gdzie mniej. Możemy to nazwać Funkcjami gęstości prawdopodobieństwa, ponieważ po prostu patrząc na histogram możemy powiedzieć, jakie jest prawdopodobieństwo wystąpienia określonego punktu danych. Jest to jednowymiarowe oszacowanie gęstości. Ale jednowymiarowy histogram to za mało, tak naprawdę to, czego naprawdę chcemy, to oszacowanie gęstości połączenia. Czy słyszysz historię pięciu niewidomych, którzy dotykają Słonia i opisują go? Co oni tam robili? Każdy niewidomy mężczyzna w opowieści wyjaśniający jeden wymiar słonia i wreszcie możemy dojść do wniosku, ponieważ żaden z nich nie opisuje słonia w całości. Kiedy patrzymy na pojedynczy wymiar, możemy odnieść wrażenie, że dane mogą być niepoprawne. Jeśli spojrzymy na te same dane z innego wymiaru, mogę uzyskać zupełnie inne wrażenie. Teraz rzeczywistym rozkładem może być kombinacja tych dwóch w wspólnej przestrzeni. Celem oszacowania gęstości jest ustalenie wspólnej dystrybucji. Pozwól, że dam ci jeszcze jeden przykład, aby zrozumieć oszacowanie gęstości. Weźmy naszą kartę kredytową za przykład i używamy jej normalnie przez wiele lat. Jeśli ktoś ukradł twoją kartę kredytową, może użyć karty nieco inaczej, ponieważ nie wie, w jaki sposób korzystamy z naszej karty i gdzie używamy jej częściej. Teraz wyobraź sobie, w jaki sposób firma wydająca karty kredytowe wykrywa to nieco nietypowe lub nieco nienormalne zachowanie? Jak to uchwycić? Co robi model? Pozwólcie, że podam jeszcze jeden przykład: otrzymaliśmy reklamę w Google dotyczącą określonego słowa kluczowego. Zwykle ludzie mogą klikać tę reklamę w pewnym tempie na podstawie danego dnia i liczby zapytań oraz liczby wyświetleń itp. Na podstawie tych słów kluczowych. uzyskać w przybliżeniu pewną liczbę kliknięć. Wyobraźmy sobie, że mam konkurenta. Mój konkurent chce, aby moje pieniądze zostały zmarnowane. Co może zrobić, może stworzyć robota, pisząc program, który wielokrotnie klika reklamę, za każdym razem, gdy pojawia się pytanie dotyczące tego konkretnego punktu . Teraz czego oczekujesz od Google? Oczekujesz, że Google wykryje to nienormalne zachowanie i miejsce, z którego dochodzi do kliknięć. W tym miejscu przydatne jest właśnie oszacowanie gęstości jądra. Pozwól, że powiem ci bardzo ważną zasadę danych. Pierwszą rzeczą jest to, że dane mają hierarchię. Drugą rzeczą jest to, że dane mają strukturę i hałas. Dane zawsze będą miały strukturę i hałas. Naszym celem w nauczaniu bez nadzoru (szacowanie gęstości jądra) jest ustalenie, która część, jeśli dane mają strukturę, a która część danych ma hałas. Kiedy zrobiliśmy PCA, zachowaliśmy trochę. Główne składniki i odrzuciliśmy niektóre inne elementy, ponieważ uważaliśmy, że niektóre elementy mają w sobie strukturę, a inne mają hałas. Jak decydujemy, ile głównych elementów musimy zachować? Jak decydujemy, ile klastrów musimy utworzyć? To jest nasze wezwanie i to jest piękno, jeśli nauka danych. Tutaj naszym celem jest dowiedzieć się, jak skompletować pożądany model, aby wychwytywał on maksymalny sygnał, a nie szum. Jeśli uznamy, że istnieje tylko jedno zachowanie użytkownika karty kredytowej, nie udaje nam się uchwycić struktury zachowania karty kredytowej, ponieważ istnieją różne rodzaje ludzi z różnymi rodzajami zachowań karty kredytowej, takimi jak sposób korzystania z karty przez nastolatków i sposób korzystania z karty przez producenta domu oraz w jaki sposób student korzysta z karty itp. W oparciu o domenę, którą masz do czynienia, musisz zdecydować o strukturze i współczynniku szumów oraz ile danych lub szumów możemy się tutaj spodziewać? Pozwolę sobie na prosty przykład, jeśli mamy do czynienia z danymi tekstowymi, jeśli popatrzymy na naukową grupę dokumenty, możemy się spodziewać więcej danych i mniej hałasu, ponieważ są one dobrze napisane i nie byłoby błędów ortograficznych i gramatycznych. Ale jeśli mamy do czynienia z danymi na Twitterze, możemy popełnić wiele błędów ortograficznych. Na tej podstawie musimy sprawdzić, ile danych potrzebujemy przechwycić i jak skomplikowany byłby mój model. Hałas może być naturalny, a hałas może być zamierzony. W scenariuszu dotyczącym karty kredytowej oszustwo jest umyślnym hałasem, a na Twitterze jest to niezamierzony hałas.

CO TO JEST KERNEL?

Jądro jest specjalnym rodzajem funkcji gęstości prawdopodobieństwa (PDF) z dodaną właściwością, że musi być nieujemne, równe i rzeczywiste. Co to jest estymacja gęstości jądra? : Estymacja gęstości jądra jest nieparametryczną metodą szacowania funkcji gęstości prawdopodobieństwa (PDF) ciągłej zmiennej losowej. Jest nieparametryczny, ponieważ nie zakłada żadnego podstawowego rozkładu dla zmiennej. Metoda szacowania gęstości jądra przezwycięża dyskrecję podejścia histogramu poprzez centrowanie gładkiej funkcji jądra w każdym punkcie danych, a następnie sumowanie w celu uzyskania oceny gęstości. Zasadniczo w każdym punkcie danych tworzona jest funkcja jądra z punktem danych w środku, co zapewnia symetryczność jądra względem danych. Plik PDF jest następnie szacowany jako średnia z zaobserwowanych punktów danych w celu utworzenia płynnego przybliżenia danych, aby zapewnić, że spełnia następujące właściwości pliku PDF. Każda możliwa wartość pliku PDF, tj. Funkcja nie jest ujemna. Zdefiniowana całka pliku PDF ponad jego zestawem pomocniczym wynosi 1. Szacunkowa gęstość jądra jest sumą wypukłości, która jest przypisana do każdego punktu danych, a wielkość wypukłości reprezentuje prawdopodobieństwo przypisane sąsiedztwu wartości wokół tego punktu danych . Każda nierówność jest wyśrodkowana w punkcie danych i rozkłada się symetrycznie, aby pokryć sąsiednie wartości punktu danych. Każde jądro ma przepustowość i określa szerokość guza. Większa przepustowość skutkuje krótszym i szerszym wybrzuszeniem, które rozciąga się dalej od środka i przypisuje większe prawdopodobieństwo sąsiednim wartościom.

KROKI W BUDOWIE SZACUNKU GĘSTOŚCI ZIARNA

1. Wybierz jądro, typowe są jak normalne (gaussowskie), jednolite (prostokątne).
2. W każdym punkcie danych zbuduj skalowaną funkcję jądra, gdzie K() jest wybraną funkcją jądra. Parametr h nazywa się przepustowością, szerokością okna lub parametrem wygładzania.
3. Dodaj wszystkie indywidualne skalowane funkcje jądra i podziel przez n, co daje prawdopodobieństwo 1 / n dla każdego Xi. Zapewnia również, że oszacowanie gęstości jądra integruje się z 1 w stosunku do jego zestawu wsparcia.

Wybór przepustowości

Wybór przepustowości jest najtrudniejszym krokiem w tworzeniu dobrego oszacowania gęstości jądra, który uwzględnia podstawowy rozkład zmiennej. Możemy przestrzegać prostych zasad, takich jak:

1. Małe h powoduje małe odchylenie standardowe, a jądro umieszcza większość prawdopodobieństwa na punktach danych. Używamy tego, gdy wielkość próbki jest duża, a dane są ciasno upakowane.
2. Duże h powoduje duże odchylenie standardowe, a jądro rozkłada większe prawdopodobieństwo z punktu danych na sąsiednie wartości. Używamy tego, gdy próbka jest mała, a dane są rzadkie. Funkcja density() w R oblicza wartości oszacowania gęstości jądra. Zastosowanie funkcji plot() do obiektu utworzonego przez density() wykreśli oszacowanie. Zastosowanie funkcji summary() do obiektu ujawni przydatne statystyki dotyczące oszacowania. Używamy tej metody, aby poznać strukturę i gramatykę danych. Jeśli słuchamy utworu muzycznego, możemy powiedzieć, że pochodzi on od Rahmana lub Ilayi radży.
Jak możemy to zrobić? Nasz mózg przechował muzykę i znajduje strukturę w określonej kolejności. Nawiasem mówiąc, wykonujemy wiele oszacowań gęstości w naszym mózgu. Załóżmy, że wszystkie samochody na świecie mają ten sam kolor i kształt, widzieliśmy wiele danych, spróbuj skompresować je do modelu. Nie pamiętamy wszystkich samochodów, ale wciąż możemy rozpoznać nowy samochód, ponieważ widzieliśmy wiele danych, rozpoznajemy, jakie są samochody, a następnie kiedy widzę inne dane lub nowy obiekt, mogę powiedzieć, że to samochód. Co się dzieje? Co robi twój mózg? Widzisz dużo danych, twój mózg stworzył model, a gdy zobaczyłeś nowy punkt danych, możesz zrozumieć, że to samochód. W tym celu wystarczy Twój model za każdym razem, gdy nie potrzebujesz danych. Używamy techniki KDE nawet w celu znalezienia wartości odstających. Oprócz tego, aby dowiedzieć się, ile jest sygnału i szumu, możemy zdefiniować, w jaki sposób złożoność modelu. Im bardziej złożony model, zaczynamy rejestrować hałas, jeśli model jest zbyt prosty, nie możemy uchwycić struktury. Tak więc musimy mieć odpowiednią złożoność modelu. Oszacowanie gęstości ma wiele rzeczy psychologicznych, które robimy. Wyobraźmy sobie sytuację, w której chcesz podarować Żonie wyjątkowy prezent. Jak może się czuć / mierzyć wyjątkowość? Bierze wszystkie możliwe prezenty i oblicza prawdopodobieństwo, jeśli prawdopodobieństwo jest większe, nazywamy to normalnym. Jeśli prawdopodobieństwo jest bardzo rzadkie, nazywamy to Unikatowym / Powieścią. Oszacowanie gęstości jądra jest używane w

•  Oszustwo z wykorzystaniem karty kredytowej
•  Wykrywanie włamań
•  Oszustwo sprzedawcy
•  Zachowanie terrorystyczne

Oszacowanie gęstości służy nawet do rozwiązywania problemów klasyfikacyjnych. Wyobraź sobie, że wzięliśmy sekwencję genów i dowiadujemy się, czy on jest cukrzycą, czy nie, wyobraź sobie złożoność modelu. Możemy mieć 1 milion danych o sekwencji genów pacjentów z cukrzycą i 1 milion sekwencji genów osób bez cukrzycy. Wyobraź sobie tutaj złożoność. Zebraliśmy sekwencje genów 1 miliona pacjentów z cukrzycą i 1 miliona osób bez cukrzycy i staramy się ustalić część sekwencję genów, na którą powinienem spojrzeć i którą część sekwencji genów muszę zmodyfikować przy narodzinach dziecka, aby nie mógł rozwinąć cukrzycy przez całe życie. Jeśli wiemy, jak zbudować estymację gęstości jądra, możemy zrobić tak skomplikowaną rzecz. Próbujemy znaleźć te sekwencje, które są bardziej powszechne u diabetyków, i jak mogę zmodyfikować te sekwencje po urodzeniu, aby nigdy nie miały cukrzycy przez resztę życia. Aby to zrobić, staramy się zrozumieć oszacowanie gęstości, więc możemy zbudować tak skomplikowany klasyfikator.
Szkolenie: Mogliśmy zobaczyć wiele danych, zrozumieć różne typy i sekwencje genów kompresujących je do kształtu. Na tej podstawie staramy się stworzyć model.
Punktacja: Po utworzeniu modelu zastosuj model do nowego punktu danych, tak jak gdy zobaczysz nowy punkt danych, możemy powiedzieć, że jest to sekwencja genowa cukrzycy, czy nie. Możemy nawet powiedzieć, że jakie jest prawdopodobieństwo, że będzie on miał cukrzycę. Podczas gdy histogram jest funkcjonalnie odpowiedni do wyświetlania szerokiej gamy danych czesnych, tak może być frustrujące wizualnie, aby zbadać rozkład, ponieważ widz jest zmuszony do mentalnego połączenia kropek między pojemnikami. Ponadto wybrane rozmiary pojemników i punkty środkowe wydają się ukrywać trzy podgrupy w rozkładzie. Wykres można ulepszyć, dodając szacunkową gęstość jądra (KDE), ponieważ histogram może być frustrujący i wprowadzać w błąd, szczególnie gdy przedziały lub punkty środkowe nie mają odpowiedniego rozmiaru lub położenia. Szacunki gęstości jądra zapewniają płynną linię, podobną do "rozmiaru bin ", który może zniekształcić rozkład danych na histogramie. Wybór przepustowości jest ważną częścią oszacowania gęstości jądra. W większości technik szacowania gęstości jądra jądra mają ten sam kształt i szerokość pasma. Chociaż istnieje kilka opcji wyboru metody przepustowości , które automatycznie wybierają odpowiedni rozmiar jądra, najbardziej popularna jest metoda Sheather-Jones Plug-In (SJPI), która jest używana domyślnie w procedurze KDE. Inne metody wyboru przepustowości:

•  Simple Normal Reference (SNR),
•  SNR z zakresem międzykwartylowym (SNRQ),
•  Zasada kciuka Silvermana (SROT) i
•  Ponad wygładzony (OS).

Zrozumienie oceny gęstości jądra z analizą przypadku: Spójrzmy na dane Jewel, poszliśmy do sklepu jubilerskiego, gdzie obserwowaliśmy ozdoby z różnych metali i modeli. wymiar / cecha / zmienna / kolumna. Spójrzmy na zestaw danych Jewel, w powyższych danych chcemy pracować nad dwiema cechami / zmiennymi / wymiarami / kolumnami, tj. metalem i modelem. Metal może przyjmować trzy dyskretne (Nominalne) wartości, tj. Srebro, Złoto i Platynę, Model może nawet przyjmować trzy wartości Normalny, Fantazyjny, Antyczny. nazywamy to problemem klasyfikacyjnym. Chcemy tutaj znaleźć P (fantazyjne, złote) i tak dalej. gdybym mógł to zrobić dla wszystkich kombinacje, możemy powiedzieć, że zbudowaliśmy model. i wyrzucamy dane, ponieważ stworzyliśmy model, prawdopodobieństwo wszystkich kombinacji.

Zróbmy to:

P (fantazyjne, platynowe) = liczba (fantazyjne, platynowe) / całkowita liczba klientów = (15/150) = 0,10, więc możemy powiedzieć, że szacowanie gęstości naprawdę dotyczy liczenia i normalizacji. Jeśli mamy rzeczywiste wartości, dzielimy je na bin i wykonujemy histogramy, a następnie normalizujemy. Zastanówmy się nad stworzeniem modelu:

Co to jest P (zwykły, srebrny) i co to jest P (antyczny, złoty)? Jeśli obliczę wszystkie parametry, to skończę. Czy ma znaczenie, jak duży jest sklep z biżuterią i ilu klientów jest tam? jeśli zbudujemy model, możemy go użyć w małym sklepie lub bardzo dużym sklepie. Jeśli dane są ogromne, mój model będzie znacznie bardziej wytrzymały. W danych nie ma czegoś takiego jak złożoność, możemy mieć złożoność w modelu, ale nie w danych. Ilekroć myślimy o stworzeniu modelu dla KDE, musimy zadać sobie kilka pytań:

•  Ile tu jest parametrów?
•  Ile jest wolnych parametrów?
•  Czy mamy jakieś ograniczenia?

W tym przykładzie mamy 9 (3 * 3) parametrów, a ograniczenie polega na tym, że powinny się sumować do jednego. Zatem wolne parametry to 8 (liczba parametrów - liczba ograniczeń) (9-1).
Wolny parametr: Aby zrozumieć wolny parametr, pozwól mi wziąć przykład rzucania monetą. Jeśli chcę oszacować Prawdopodobieństwa, wystarczy znać prawdopodobieństwo Głowy. Nie muszę znać prawdopodobieństwa ogonów, ponieważ wiemy, że P (ogon) + P (głowa) równa 1. Więc gdy mamy ograniczenie, liczba wolnych parametrów zmniejsza się. Więc mogę obliczyć

P (tail) = 1- P (head).

Ograniczenie: Jeśli rzucisz sześciostronną kostką: Prawdopodobieństwo uzyskania 1: 1/6, Prawdopodobieństwo uzyskania 2: 1/6, ..., Prawdopodobieństwo uzyskania 6: 1/6. Oznacza to, że wszystkie sześć prawdopodobieństw powinno sumować się do 1. jest to ograniczenie. Zrozum prawdopodobieństwo obliczeń: jeśli jesteś osobą, która martwi się wszystkimi rzeczami, które dzieją się wokół ciebie, używasz wspólnego prawdopodobieństwa. (Niepokój) Jeśli jesteś osobą, która wcale nie martwi się o nic wokół ciebie, używasz prawdopodobieństwa. (Depresja). Wspólne prawdopodobieństwo (zakłada, że wszystko jest skorelowane): M = M1M2 ... Mn Przybliżone prawdopodobieństwo (zakłada, że wszystko jest niezależne): M = M1 + M2 + ... Mn. W pierwszym przypadku jest zbyt skomplikowany, a w drugim jest tak prosty, że nie można tego nawet użyć w uczeniu maszynowym. Sztuką uczenia maszynowego jest znalezienie odpowiedniego modelu złożoności. Wyobraź sobie, że ktoś został poproszony o sprawdzenie, które miasto jest preferowane dla osób starszych w Indiach, i zebrałeś następujące informacje, takie jak wiek, dochód, wykształcenie , poziom, ruch, zanieczyszczenie, temperatura itp. w różnych miastach. Teraz musimy odpowiedzieć na pytania : Jak Bangalore, jeśli chodzi o zanieczyszczenie, wypada w porównaniu z Delhi? A co z ruchem drogowym? Czy preferencje miasta zależą od wieku lub dochodów? Oszacowanie gęstości jądra w takich sytuacjach jest przydatne. Weźmy kolejny przykład: w wywiadzie menedżer chce wybrać tych, którzy są bardzo dobrzy w kodowaniu, dał zadanie ludziom i wyjaśnił metodologię, którą należy zastosować. Zebrał czas poświęcony na wykonanie tego zadania w minutach. Po utworzeniu histogramu i obserwacji wykresu możemy zrozumieć, jak wielu programistów zajmuje 15-20 minut wykonanie zadanie. Oznacza to, że jeśli komuś zajmuje więcej niż 40 minut (wartość odstająca), możemy powiedzieć, że nie nadają się do pracy programisty.

STUDIUM PRZYPADKU

Zrozummy przypadek cukrzycy, w którym niewielu kobietom w ciąży podano glukozę doustnie, a wartość glukozy w osoczu zebrano po godzinie, aby sprawdzić, czy kobieta ma problem z cukrzycą wywołaną ciążą, czy nie? Zebrano średnią i odchylenie standardowe "OGTT" i musimy utworzyć wykresy gęstości. Z tego wynika, że w tym zestawie danych przypadki cukrzycy są związane z wyższym poziomem "OGTT". Zostanie to wyjaśnione na podstawie wykresów funkcji szacowanej gęstości. Pokazuje szacunkowe gęstości p (OGTT | cukrzyca = 1), p(OGTT | cukrzyca = 0) i p (OGTT). Szacunki gęstości są szacunkami gęstości jądra z wykorzystaniem jądra Gaussa. Oznacza to, że umieszczona jest funkcja gęstości Gaussa w każdym punkcie danych, a suma funkcji gęstości jest obliczana w całym zakresie danych. Funkcja jądra określa kształt wypukłości, a szerokość okna h określa ich szerokość.

# Krok 1: Ustaw katalog roboczy i odczytaj dane
setwd('D:/R data')
Diabdata <- read.csv("Diab.csv", header=T)
# Krok 2: Utwórz wymagane obiekty z danych Diab
OGTT <- Diabdata[, 'OGTT']
d0 <- Diabdata[, 'Diabetic'] == 'No'
d1 <- Diabdata[, 'Diabetic'] == 'Yes'
# Krok 3: Utwórz wykres gęstości
plot(density(OGTT[d0]),bty="n",lwd=2, col='blue', xlim=c(10,250),
xlab="Oral Glucose Tolerance Test(OGTT)", ylab='estimate p(OGTT)',
main="Distribution of people by OGTT")
lines(density(OGTT[d1]),col="#FFCCCC")
#Krok 4: Upiększanie fabuły:
# Wybierz i dodaj kod koloru HTML, który wygląda na przezroczysty na wydruku
polygon(density(OGTT),col="#FFCCCC")
#Dodaj linię dla średniej
abline (v = mean(OGTT))
#Dodaj szerszą i ciemnoszarą przerywaną linię dla środkowej
abline (v = median(OGTT), lwd = 2, lty = 3, col = "# 999999")

KROK 11

Regresja

WPROWADZENIE

Analiza regresji jest techniką statystyczną stosowaną do wnioskowania o wielkości i kierunku możliwej zależności przyczynowo-skutkowej między obserwowanym wzorem a zmiennymi, które mają wpływ na obserwowany wzór. Regresja powie ci, czy związek istnieje? To analityk decyduje, czy istnieje związek przyczynowy, czy nie. Statystyka - jest to wnioskowanie statystyczne. To (regresja) jest podejściem matematycznym, a wszystkie zmienne wpływające na wzór są losowymi próbkami z populacji bazowej. Wielkość - Wielkość wpływu, Kierunek - Przyczyny dodatnie lub ujemne - Związek przyczynowo-skutkowy - np. wielkość opadów musi wpływać na uprawy , ale plon nie wpływa na opady deszczu.
Studium przypadku: Zacznijmy od problemu, pracujesz dla firmy ubezpieczeniowej i chcesz zrozumieć, co powoduje ofiary śmiertelne na autostradach, aby pomóc w odpowiednim ustalaniu premii. Zaczynamy od zastanowienia się nad możliwymi czynnikami wpływającymi na ofiary śmiertelne. Alkohol, miesiąc, kierowcy, zatory, co jeszcze?. Może być wiele innych przyczyn ofiar śmiertelnych na drogach. Bardzo trudno jest przeanalizować wszystkie możliwe ofiary śmiertelne w każdym kraju w populacji światowej. Załóżmy, że postanowiliśmy gromadzić dane, które są łatwo dostępne. Udało nam się uzyskać zestaw danych, który zawiera:

•  Liczba ofiar śmiertelnych miesięcznie
•  Czy dzień był weekendem czy dniem tygodnia?
•  Liczba licencjonowanych kierowców
•  Liczba wypadków pod względem miesiąca
•  Liczba mil przejechanych pojazdów na milę drogi (zatłoczenie)
•  Kierowcy pod wpływem alkoholu lub nie

Teraz, korzystając z tych danych, chcemy przeanalizować związek między dostępnymi zmiennymi a ofiarami śmiertelnymi, aby zaproponować sposoby ustalania premii uwzględniające czynniki, które potencjalnie wpływają na ofiary śmiertelne. Jakie są możliwe sposoby oceny relacji? Możemy użyć wizualizacji graficznych lub korelacji.

DLACZEGO REGRESJA?

Do tego problemu można zastosować techniki regresji, aby zrozumieć wpływ dostępnych zmiennych na zgony. Zaletą stosowania techniki regresji jest to, że dzięki technice regresji możemy ocenić wpływ każdego czynnika, biorąc pod uwagę wpływ innych czynników, również wziętych jednocześnie. Po pierwsze, jeśli uważamy, że na Śmierć ma wpływ kilka czynników, to zasadniczo postulujemy, że ofiary śmiertelne są funkcją zidentyfikowanych czynników:

Matematycznie jest reprezentowany w następujący sposób: - Zgony = f (kierowcy, zatory)

Gdy dowiemy się, że wiele czynników ma wpływ na liczbę ofiar śmiertelnych, musimy wiedzieć, w jaki sposób liczba kierowców i zatory mają wpływ na liczbę ofiar śmiertelnych. Rozwiązaniem naszego problemu jest regresja. Na razie ograniczmy się do przypadku, w którym jesteśmy martwiąc się tylko o jedną zmienną, która wpływa na ofiary śmiertelne w sposób liniowy. Mamy więc hipotezę, że liczba zgonów rośnie wraz ze wzrostem liczby licencjonowanych kierowców.

Zgony = f (kierowcy), gdzie f jest dodatnie

Prosta regresja liniowa: Prosty model regresji liniowej jest zwykle oznaczany przez:

Y = β0 + β1X + e Gdzieβ0 = punkt przecięcia, β1 = nachylenie, e = błąd. Musimy oszacować bety, abyśmy mogli zrozumieć związek między Y i X.

Zmienna zależna: Y: Zmienne prognozowane: Zmienna, której zachowanie hipotetycznie możemy wyjaśnić lub na które wpływ mają inne czynniki.
Niezależne zmienne: X: przewidywane predyktory wpływają na zmienną zależną.
Współczynnik (współczynniki) beta: oszacowanie wielkości wpływu zmian predyktora (ów) na przewidywaną zmienną.
Błąd: (e): Wpływ nieobserwowanych zmiennych na zmienną zależną zwykle obliczany jako różnica między przewidywaną wartością Y przy szacowanej funkcji regresji a rzeczywistą wartością Y.

•  Jeśli B = 0, wówczas Y jest stałą, więc nie ma związku między Y i X, ponieważ niezależnie od zmiany w X, Y się nie zmienia.
•  Co się stanie, gdy punkt przecięcia = 0 ?. Linia regresji przechodzi przez Początek. (X α Y)
•  Co się stanie, gdy Nachylenie = 0 . Linia regresji będzie równoległa do osi X (brak zależności między zmienną zależną i zmienną niezależną).

Wracając do przykładu ofiar śmiertelnych, jeśli założymy na chwilę, że mamy tylko dane dotyczące liczby kierowców, a wówczas naszym modelem regresji byłoby, Zgony = β0 + β1 * Liczba kierowców + e Jeśli oszacujemy wartość β, będziemy mogli zrozumieć, jak silny wpływ ma liczba kierowców na liczbę ofiar śmiertelnych, i przyjrzeć się, co można zrobić, aby zmniejszyć liczbę ofiar śmiertelnych. Istnieje wiele sposobów szacowania współczynników beta. Na razie skupimy się na jednym z najbardziej intuicyjnych: zwykłej metdoa najmniejszych kwadratów.

REGRESJA ZWYKŁEJ METODY NAJMNIEJSZYCH KWADRATÓW (OLS)

Technika regresji metodą najmniejszych kwadratów zwykłych szacuje współczynniki zmiennych, które mają wpływ na zmienną będącą przedmiotem zainteresowania, identyfikując linię, która minimalizuje sumę kwadratów różnic między punktami na linii szacowanej i rzeczywistymi wartościami zmiennej niezależnej
•  Współczynniki: Bety (β1 i β0)
•  Minimalizuje: najmniej (wartość)
•  Suma różnic kwadratowych: Kwadrat reszt
•  Szacowana linia: Linia regresji
•  Rzeczywiste wartości: wartości w zestawie danych

Oczywiście możemy dopasować wiele linii prostych, z których każda pokryje niektóre punkty. Ponieważ linia prosta nie może trafić we wszystkie punkty, jednym ze sposobów wyboru linii jest zidentyfikowanie linii, która wyjaśniłaby większość zmian w Y, lub innymi słowy, ma najmniejszy błąd. Zwykła regresja najmniejszych kwadratów znajduje tę linię, patrząc na reszty (lub różnicę między punktami na każdej linii a rzeczywistym Y) i minimalizując sumę ich kwadratów. Resztki wychwytują wychwytują błąd w szacowanej linii (różnica między szacowaną linią a rzeczywistymi wartościami). Po oszacowaniu linii ?0 jest przecięciem tej linii, podobnie ?1 jest nachyleniem tej linii. Jak w rzeczywistości oceniamy "najlepszą" linię? Możemy być pewni, że biorąc pod uwagę dane, linia szacowania zwykłego najmniejszego kwadratu minimalizuje błędy bardziej niż jakakolwiek inna linia, którą wybieramy. Czy jest jakaś linia prosta, która może trafić we wszystkie punkty?
Oszacowania OLS: regresja zwykłych najmniejszych kwadratów znajduje tę linię, patrząc na resztki (lub różnicę między punktami na każdej linii a rzeczywistym Y) minimalizując sumę ich kwadratów. Dlaczego suma kwadratów?: Aby przezwyciężyć, dodatnie i ujemne różnice matematyczne, minimalizujemy



za pomocą rachunku różniczkowego otrzymamy





Oszacowania te nazywane są zwykłymi oszacowaniami najmniejszych kwadratów. A linia prosta reprezentowana przez Y = ?0 + ?1X będzie tutaj linią najmniej kwadratową. Szacunki te nazywane są linią szacunkową zwykłych najmniejszych kwadratów, która minimalizuje błędy bardziej niż jakakolwiek inna linia, którą wybieramy. Po oszacowaniu współczynników otrzymujemy takie równanie: Śmierć = Szacunek przechwytywania + Współczynnik Beta * Liczba kierowców. Pamiętaj, że jest to najlepiej dopasowana linia, ale ta linia nie obejmie każdego punktu na wykresie punktowym. Jeśli obliczamy wartości ofiar śmiertelnych na podstawie rzeczywistych wartości liczby kierowców, które widzimy w danych, obliczamy liczbę "przewidywanych" zgonów. Różnica między przewidywaną wartością ofiar śmiertelnych a rzeczywistą wartością ofiar śmiertelnych w danych dla każdej wartości liczby kierowców to reszty. Korzystając z zestawu danych o ofiarach śmiertelnych, uruchom prostą regresję i znajdź punkt przecięcia (A) i nachylenie (B). Dlatego teraz szacowana linia regresji będzie, Zgony = A + B * Liczba współczynników beta kierowców: Dla każdego wzrostu liczby kierowców w jednostce spodziewamy się wzrostu liczby ofiar śmiertelnych o podaną liczbę. Oznacza to, że dla wzrostu liczby kierowców o 100 nie spodziewamy się wzrostu liczby ofiar śmiertelnych o tę liczbę. Znak dodatni na współczynniku wielu kierowców oznacza pozytywny związek między liczbą kierowców a ofiarami śmiertelnymi. P-Wartość: H0 - Brak wpływu nie. kierowców (oś X) w przypadkach śmiertelnych (oś Y) Wartość P-Wartość: Jeśli wartość p wynosi < 0,05, wówczas współczynnik jest znaczący na poziomie 5%. Niższa wartość p oznacza większe prawdopodobieństwo odrzucenia hipotezy H0. Jeśli wartość P jest znacznie mniejsza niż 0,05, odrzucamy H0. Wreszcie możemy stwierdzić, że żaden ze sterowników nie ma znaczenia statystycznego wpływ na ofiary śmiertelne. Chociaż równanie regresji jest najlepszym możliwym równaniem linii prostej, jak oceniamy skuteczność całego modelu? Jednym ze sposobów jest spojrzenie na miarę "Wyjaśnialności", czyli na ile zmiennej zależnej Y wyjaśnia X? Lub, lepiej to ująć, ile wariancji w Y wyjaśnione przez X? Matematycznym sposobem na obliczenie tego jest:



Gdzie



Oblicz na przykład wartość R-Square, jeśli R2 = 0,9399, oznacza to, że 93,99% zmiany zmiennej śmiertelności jest wyjaśnione zmianą liczby zmiennych kierowcy. Im wyższa wartość R2, tym większa zmienność zmiennej zależnej (Y) tłumaczy się zmiennością zmiennej niezależnej (X). Zbuduj model z najlepszą możliwą R2 z danymi, które masz, wypróbowując różne kombinacje zmiennych, które masz. R2 jest jedynym sposobem sprawdzania poprawności modelu, ale nie jedynym sposobem sprawdzania poprawności modelu. R2 również rośnie wraz z dodawaniem zmiennych, istotnych lub nie, więc lepiej użyć skorygowanego pomiaru R2. Skorygowany R2: Skorygowano R2 patrząc na wpływ znaczących zmiennych w modelu. Nawet jeśli masz nieistotne zmienne w modelu, R2 wzrośnie, ale skorygowany R2 pójdzie w górę tylko model zawiera znaczące zmienne.

REJESTRACJA WIELU REGRESJI

Przejdźmy teraz do przypadku, w którym spodziewamy się, że wiele zmiennych będzie miało wpływ na określoną zmienną zależną. Tak jest wyraźnie w prawdziwym życiu. Dopóki oczekujemy liniowej zależności między każdą zmienną niezależną a zmienną zależną, możemy używać technik najmniejszych kwadratów, która pozwala uzyskać estymatory współczynników beta. Ponownie oszacowalibyśmy linię w wielu wymiarach, która zminimalizowałaby sumę kwadratów reszt. Zastanówmy się nad trzema zmiennymi, które będą miały wpływ na zgony: zatłoczenie, kierowca i alkohol. Zatory: jak zatłoczone są drogi miejskie? Kierowcy: Liczba licencjonowanych kierowców w mieście. Alkohol: 0 oznacza, że kierowca nie pił alkoholu, a 1 oznacza, że kierowca spożywał alkohol. Równanie oszacowania OLS byłoby następujące:

Zgony = β0 + β1 * Zatory + β2 * Kierowcy + β3 * Alkohol + e

Teraz musimy oszacować 4 współczynniki Beta: ?0, ?1, ?2 i ?3. Zastosowalibyśmy to samo podejście OLS, aby zminimalizować sumę kwadratów reszt w wielu wymiarach. Współczynnik kierowcy zmieni się ze względu na to, że teraz kontrolujemy również wpływ zatorów i alkoholu. Jeśli celem jest przewidzenie wpływu sterowników, nie uwzględniamy zmiennej modelu przeciążenia w modelu. W takim przypadku możemy upuścić zmienną przeciążającą i ponownie uruchomić model z tylko istotnymi zmiennymi.

ZBUDUJ MODEL I WALIDUJ GO NA PODANYM PLIKU WYPADKÓW

Krok 1: Zainstaluj i załaduj wymagane pakiety:
library(ggplot2)
library(caret)
library(lattice)
Krok 2: Załaduj dane
Fataldata =read.csv(file="D:\\R data\\Fatalities.csv", header=TRUE, sep=",")
Krok 3: Przeglądaj dane
str (Fataldata)
fix (Fataldata)
Krok 4: Przygotuj dane
4.1 Konwersja zmiennych kategorialnych na czynniki
Fataldata $ Weekend = as.factor (Fataldata $ Weekend)
Fataldata $ Alcohol = as.factor (Fataldata $ Alcohol)
Fataldata $ Month = współczynnik as (Fataldata $ Month)
4.2 Usuń zmienną zależną
Fataldata_a = subset(Fataldata, select = -c(Deaths))
4.3 Zidentyfikuj zmienne numeryczne
numericdata <- Fataldata_a [sapply (Fataldata_a, is.numeric)]
4.4 Obliczanie korelacji
descrCor <- cor (numericdata)
highlyCorrelated <- findCorrelation(descrCor, cutoff=0.4)
4.5 Zidentyfikuj nazwy zmiennych wysoce skorelowanych zmiennych
highlyCorCol <- colnames(numericdata)[highlyCorrelated]
4.6 Wydrukuj wysoce skorelowane atrybuty
highlyCorCol
4.7 Usuń wysoce skorelowane zmienne i utwórz nowy zestaw danych
dat3 <- Fataldata[, -which(colnames(Fataldata) %in% highlyCorCol)]
dim(dat3)
str(dat3
Krok 5: Zbuduj model regresji liniowej
fit0 = lm(Deaths ~ Drivers, data=Fataldata)
fit2 = lm(Deaths ~ Weekend, data=Fataldata)
fit3 =lm(Deaths ~ Weekend+Drivers, data=Fataldata)
fit =lm(Deaths ~ ., data=Fataldata)
Krok 6: Sprawdź wydajność modelu
summary(fit)
summary(fit0)
6.1 Wydzielanie współczynników
summary(fit)$coeff
6.2 Wyodrębnianie wartości Rsquared
summary(fit)$r.squared
6.3 Wyodrębnianie Adj. Wartość Rsquared
summary(fit)$adj.r.squared
6.4 Krokowy wybór na podstawie AIC
library(MASS)
step <- stepAIC(fit, direction="both")
summary(step)
6.5 Selekcja wsteczna na podstawie AIC
step <- stepAIC(fit, direction="backward")
summary(step)
6.6 Wybór do przodu na podstawie AIC
step <- stepAIC(fit, direction="forward")
summary(step)
6.7 Krokowy wybór za pomocą BIC
n = dim(dat3)
stepBIC = stepAIC(fit,k=log(n))
summary(stepBIC)
Krok 7: Diagnostyka modelu

Musimy sprawdzić poprawność głównych założeń modelu regresji liniowej. Odnosi się to do rozkładu terminów błędów modelu, tj. Jednorodnej wariancji, normalności i niezależności. Analiza zaobserwowanych pozostałości może pomóc w ocenie prawdopodobieństwa tego założenia. Sprawdzanie nietypowych i wpływowych obserwacji to kolejna część diagnostyki regresji.
Sprawdzanie wartości odstających: Pakiet samochodowy zawiera test wartości odstających Bonferroni, który po prostu oblicza i ocenia wartości odstające.

library(car)
outlierTest(stepBIC) # Outliers - Bonferonni test

Sprawdzanie normalności: Histogramy i wykresy ramkowe są również odpowiednie do sprawdzania normalności, wraz ze statystykami opisowymi, takimi jak na przykład skośność i kurtoza.

hist(residuals(fit))
boxplot(residuals(fit))
# Normalność reszt: # wykres qq dla reszt studenckich
qqPlot (fit, main = "QQ Plot")

Test normalności Shapiro-Wilksa: #Normalność reszt (powinna wynosić> 0,05). Hipotezą zerową jest to, że reszty mają rozkład normalny. Wartość p statystyki testowej jest w tym przykładzie duża. Wynika z tego, że hipoteza zerowa nie została odrzucona.

res=residuals(stepBIC,type="pearson")
shapiro.test(res)
Autokorelacja: statystyka Durbina - Watsona jest statystyką testową stosowaną do wykrywania obecności autokorelacji (relacji między wartościami oddzielonymi od siebie określonym opóźnieniem czasowym) w resztach (błędach prognozowania) z analizy regresji. Wartość p wskazuje że nie ma dowodów na skorelowane błędy, ale wyniki należy postrzegać sceptycznie ze względu na pominięcie brakujących wartości.

# Test na błędy autokorelacji
durbinWatsonTest (stepBIC)

Wielokoliniowość: Sprawdzamy VIF wszystkich zmiennych w celu przetestowania wielokoliniowości. Współczynniki inflacji wariancji (VIF) mierzą, o ile zawyżona jest wariancja szacowanych współczynników regresji w porównaniu do tego, kiedy zmienne predykcyjne nie są liniowo powiązane. VIF jest użyteczny do opisania, jak wiele wielokoliniowości (korelacja między predyktorami) istnieje w analizie regresji. Wielokoliniowość jest problematyczna, ponieważ może zwiększać wariancję współczynników regresji, czyniąc je niestabilnymi i trudnymi do interpretacji. Możemy użyć następujących wytycznych do interpretacji VIF: Jeśli VIF jest mniejsza lub równa 1, możemy powiedzieć, że predyktory nie są skorelowane, Jeśli VIF wynosi od 1 do 5 predyktorów są umiarkowanie skorelowane, a jeśli VIF jest większy niż 5, możemy wyciągnąć wniosek, że predyktory są wysoce skorelowane.

# Oceń wielokoliniowość
vif (stepBIC) # zmienność czynników inflacyjnych

Homoscedastyczność (stała wariancja): Ważnym założeniem regresji liniowej jest brak heteroscedastyczności reszt. Oznacza to, że wariancja reszt nie powinna rosnąć wraz z dopasowanymi wartościami zmiennej odpowiedzi. utynowo sprawdza się heteroscedastyczność reszt po zbudowaniu modelu regresji liniowej. Ponieważ chcemy sprawdzić, czy w ten sposób zbudowany model nie jest w stanie wyjaśnić jakiegoś wzorca w zmiennej odpowiedzi (Y), która ostatecznie pojawia się w resztkach. Spowodowałoby to nieefektywny model regresji, który mógłby dawać dziwne prognozy później, kiedy faktycznie używamy tego modelu. Istnieje kilka testów, które możemy wykorzystać do sprawdzenia obecności lub braku heteroscedastyczności 1. Test Breusha-Pagana i 2. Test NCV.

Breush Pagan Test
HS_test1 <- bptest (fit) # Breusch-Pagan test
Test NCV
HS_test2 <- ncvTest (fit) # Niestały test wyniku wariancji

Zarówno HS_test1, jak i HS_test2 mają wartość p mniejszą niż poziom istotności 0,05, dlatego możemy odrzucić hipotezę zerową, że wariancja reszt jest stała i wnioskować, że heteroscedastyczność jest rzeczywiście obecna. Możemy rozwiązać ten problem za pomocą dwóch metod:

1. Przebuduj model za pomocą nowych predyktorów. 2. Wykonaj transformację zmienną, taką jak transformacja Box-Cox.
Transformacja Box-Cox: Transformacja Box-Cox jest matematyczną transformacją zmiennej, która przybliża ją do rozkładu normalnego. Przeprowadzenie przekształcenia skrzynkowego zmiennej Y często rozwiązuje problem heteroscedastyczności.

Death_Boxcox <- caret :: BoxCoxTrans (Fataldata $ Deaths)
print (Death_Boxcox)

Model tworzenia transformowanej zmiennej box-Cox jest gotowy. Zastosujmy go teraz na Fatalata $ Deaths i dołączmy do nowej ramki danych. Dołącz przekształconą zmienną do Fataldata.

Fataldata <- cbind(Fataldata, Deaths_new=predict(Death_Boxcox, Fataldata$ Deaths))

Przekształcone dane dla naszego nowego modelu regresji są gotowe. Zbudujmy model i sprawdźmy heteroscedastyczność.

Fatal_bc <- lm (Deaths_new ~., Data = Fataldata)

Ponownie wykonaj test Breuscha-Pagana, aby sprawdzić, czy rozwiązano problem heteroscedastyczności.

bptest (Fatal_bc)

Ponieważ uzyskana wartość P jest większa niż 0,05, możemy powiedzieć, że reszty są teraz homoscedastyczne.

Obserwacje wpływowe: Obserwacja wpływowa to obserwacja do obliczeń statystycznych, których usunięcie z zestawu danych znacząco zmieniłoby wynik obliczeń. Wpływową obserwację definiuje się jako obserwację zmieniającą nachylenie z linii. Punkty wpływające mają zatem duży wpływ na dopasowanie modelu. Musimy więc sprawdzić wpływowe obserwacje w naszym zestawie danych. Miara odległości Cooka to połączenie efektu resztkowego i dźwigni. celem pomiaru odległości Cooka jest wykrycie wpływowych obserwacji i wykrycie łącznego wpływu wartości odstających, zarówno w zmiennej odpowiedzi Y, jak i zmiennych wyjaśniających X.

# Wykres D Cooka: zidentyfikuj wartości D> 5 / (n-k-1)
cutoff <- 5/((nrow(Fataldata)-length(fit$coefficients)-2))
plot(fit, which=5, cook.levels=cutoff)
# Względne znaczenie
library(relaimpo)
calc.relimp(stepBIC)
# Patrz przewidywana wartość
pred = predict(stepBIC,Fataldata)
# Patrz Rzeczywista vs. Przewidywana wartość
finaldata = cbind (Fataldata, pred)
print(head(subset(finaldata, select = c(Deaths,pred)))
Krok 8: Obliczanie RMSE
rmse <- sqrt (mean ((Fataldata $ Deaths - pred) ^ 2))
print (rmse)
# Obliczanie Rsquared ręcznie
y = Fataldata[,c("Deaths")]
R.squared = 1 - sum((y-pred)^2)/sum((y-mean(y))^2)
print(R.squared)
#Calculating Adj. Rsquared ręcznie
n = dim(Fataldata)[1]
p = dim(summary(stepBIC)$coeff)[1] - 1
adj.r.squared = 1 - (1 - R.squared) * ((n - 1)/(n-p-1))
print(adj.r.squared)

KROK 12

Regresja logistyczna

WPROWADZENIE

Wiele problemów badawczych ma dychotomiczny wynik, niezależnie od tego, czy klient odejdzie, czy nie, czy pożyczka zostanie spłacona czy niespłacona, czy pacjent ma raka czy nie, i tak dalej. zwykle pytania te były rozwiązywane za pomocą zwykłej regresji metodą najmniejszych kwadratów (OLS) lub liniowej analizy funkcji dyskryminacyjnej. Jednak okazuje się, że nie są one idealne do radzenia sobie z dychotomicznymi wynikami ze względu na ich ścisłe założenia statystyczne, takie jak liniowość, normalność i ciągłość regresji OLS i normalność wielowymiarową z jednakowymi wariancjami i kowariancją dla analizy dyskryminacyjnej. Regresja logistyczna rozszerza idee regresji liniowej na sytuację, w której zmienna zależna Y jest kategoryczna. Możemy pomyśleć o zmiennej kategorycznej jako podział obserwacji na klasy. Na przykład, jeśli Y oznacza, czy dany klient prawdopodobnie kupi produkt (1), czy nie kupi (0), mamy zmienną kategoryczną z 2 kategoriami lub klasami (0 i 1). Hipoteza regresji liniowej może być znacznie większa niż 1 lub znacznie mniejsza niż zero, a zatem początki stają się trudne. W regresji logistycznej wykonujemy dwa kroki: 1. Znajdź szacunki prawdopodobieństwa przynależności do każdej klasy. Przypadek, gdy Y = 0 lub 1, prawdopodobieństwo przynależności do klasy 1, P (Y = 1) i 2. Użyj wartości odcięcia dla tych prawdopodobieństw, aby sklasyfikować każdy przypadek w jednej z klas. Na przykład w przypadku binarnym wartość graniczna wynosząca 0,5 oznacza, że przypadki o szacowanym prawdopodobieństwie P (Y = 1)> 0,5 są klasyfikowane jako należące do klasy 1, natomiast przypadki o P (Y = 0) <0,5 są klasyfikowane jako należące do klasy 0. Wartość graniczną nie trzeba ustawiać na 0,5. Kiedy wydarzenie w pytaniu jest zdarzeniem o niskim prawdopodobieństwie, wyższa niż średnia wartość odcięcia, chociaż poniżej 0,5 może wystarczyć do klasyfikacji. Decyzja o wartości granicznej to raczej "sztuka" niż nauka. Analiza regresji logistycznej stosowana do przewidywania zmiennych jakościowych (dwumianowa, porządkowa) przy użyciu kombinacji predyktorów ciągłych i dyskretnych. Regresja logistyczna jest stosowana, gdy zmienna zależna: zmienna kategoryczna i zmienna niezależna mają charakter ciągły lub kategoryczny. Regresję logistyczną stosuje się, gdy cel badawczy koncentruje się na tym, czy zdarzenie miało miejsce, czy nie, a nie wtedy, gdy wystąpiło, tj. Nie wykorzystano informacji o przebiegu czasu. Tutaj zamiast budować model predykcyjny dla "Y (Response)", podejście modeluje Log Odds (Y); stąd nazwa Logistic lub Logit.

Przykłady:

•  Domyślnie - karta kredytowa
•  Odpowiedź - Direct Mailer
•  Przejęcie - klient
•  Polecam - zakup

Wiele rodzajów regresji logistycznej

Log binarny:
•  Używany, gdy zmienna odpowiedzi jest binarna lub dychotomiczna
•  Ma tylko 2 wyniki, np. Dobry v/s Zły, Tak v/s Nie

Logizm wielomianowy:

•  Używane, gdy zmienna odpowiedzi ma więcej niż 2 wyniki, oraz
•  Rezultatów nie można zamówić w żaden sposób, np. wybór napoju, wybór miejsca turystycznego.

Logit zamówiony:

•  Używane, gdy zmienna odpowiedzi ma więcej niż 2 wyniki, oraz
•  Wyniki można uporządkować w znaczący sposób, np. Wysoka / średnia / niska, mocno Zgadzam się / Zgadzam się / Nie zgadzam się / Zdecydowanie się nie zgadzam

Studium przypadku: Rozważmy próbkę klientów, którzy zostali nagrodzeni przez bank kredytem mieszkaniowym. Chcemy stworzyć model, który ocenia wpływ wielu czynników na kwalifikowalność kredytu mieszkaniowego.

Dostępne są następujące dane:

•  ID
•  Wiek wnioskodawcy
•  Płeć
•  Doświadczenie w latach
•  Miesięczny dochód w tysiącach
•  Rozmiar rodziny
•  Poziom edukacji
•  Loan_Sanctioned lub nie

Jednym ze sposobów oceny wpływu czynników na kwalifikowalność osobistej pożyczki jest zbudowanie modelu regresji

•  Kwalifikowalność pożyczki = f (dochód, wiek, wykształcenie)
Jakie byłoby równanie OLS dla takiego modelu regresji?

Kwalifikowalność (Y) = β0 + β1 * Dochód + β2 * Wiek + β3 * Edukacja + e

DLACZEGO REGRESJA LOGISTYCZNA?

Prawdopodobieństwo Loan_Sanction nie jest liniowe. Widzimy, że prawie nikt nie jest ukarany pożyczką na niskim poziomie, a prawie wszyscy są sankcjonowani pożyczką na wysokim końcu dochodu. Zmiana prawdopodobieństwa sankcjonowania pożyczki na niskim i wysokim końcu dochodu jest minimalna, podczas gdy w połowie przedziału zmiana prawdopodobieństwa jest duża. Jakie mogą być wartości Y?. Jeśli użyjemy modelu regresji liniowej, przewidywane wartości są nieograniczone (-∞ do +∞). Ale tutaj, w tym przypadku, wartości prawdopodobieństwa są ograniczone do 0 do 1. Jednym wziąć dziennik.

•  p / (l-p) - może przyjmować wartości od 0 do,
•  log (p / 1-p) może przyjmować wartości od -? do +? •  Matematyczną koncepcją leżącą u podstaw regresji logistycznej jest logit, logarytm naturalny ilorazu szans.
Co to jest "iloraz szans"?: Jest to standardowy termin statystyczny oznaczający prawdopodobieństwo sukcesu do prawdopodobieństwa niepowodzenia. Jeśli prawdopodobieństwo sukcesu wynosi 0,75, to iloraz szans = (0,75 / 0,25) = 3. Innymi słowy, istnieje szansa na sukces 3:1. Przekształcenie od prawdopodobieństwa do szansy jest transformacją monotoniczną, co oznacza, że szanse rosną wraz ze wzrostem prawdopodobieństwa lub odwrotnie. Zakres prawdopodobieństwa wynosi od 0 do 1. Zakres prawdopodobieństwa wynosi od 0 do dodatniej nieskończoności. Transformacja z kursów do dziennika szans jest transformacją dziennika. Ponownie jest to monotoniczna transformacja. Oznacza to, że im większe szanse, tym większy dziennik szans i vice versa. Dlaczego podejmujemy tyle trudu, by przekształcić prawdopodobieństwo z logarytmu szans? Jednym z powodów jest to, że zazwyczaj trudno jest modelować zmienną o ograniczonym zakresie, na przykład prawdopodobieństwo. Ta transformacja jest próbą obejścia problemu ograniczonego zasięgu. Odwzorowuje prawdopodobieństwo w zakresie od 0 do 1, aby rejestrować szanse od ujemnej nieskończoności do dodatniej nieskończoności. Innym powodem jest to, że spośród wszystkich nieskończenie wielu możliwości transformacji, log szans jest jednym z najłatwiejszych do zrozumienia i interpretacji. Ta transformacja nazywa się transformacją logit.

Formularz modelu regresji logistycznej

Wzór formularza jest zatem:

•  Dodatek: log (p / 1-p) = Y = ?0 + ?1 * Dochód
•  Pojęcia mnożące: (p / 1-p) = e ?0 * e ?1 * Dochód
•  Wartości Y nie są ograniczone do 0 i 1.
•  Transformacja logu ma liniowy związek z predyktorami (zmiana jednostki w X doprowadzi do stałej zmiany% w logY)
•  Pod względem Y: zmiana jednostki w X doprowadzi do multiplikatywnej zmiany e? w Y (mnożnik szans)
• % zmiany w przybliżeniu Y = 100 * (e ? -1) (dla małych wartości współczynnika)

Gdybyśmy chcieli model pod względem p:



Gdzie:

P - Prawdopodobieństwo zdarzenia
β0 - parametr przechwytujący (wartość zmiennej zależnej, gdy zmienna niezależna (x) jest równa zero)
X - zbiór zmiennych niezależnych (predyktory)
βk jest parametrem nachylenia (zmienna niezależna od zmiany dla zmiany jednostkowej zmiennych predykcyjnych).

ZESTAW DANYCH POŻYCZEK KREDYTOWYCH

Bank chciał zrozumieć czynniki, które wpływają na kwalifikowalność do kredytu mieszkaniowego, na podstawie danych historycznych o jego obecnych klientach.

Przygotowanie danych: Przygotowanie danych dla regresji logistycznej obejmuje:

•  Kodowanie zmiennej odpowiedzi: Zmienna odpowiedzi (lub zmienna docelowa) będzie musiała zostać przekonwertowana na 1/0. Kod "Sankcjonowana pożyczka mieszkaniowa" jako "1" i "Odrzucona pożyczka mieszkaniowa" jako "0".
•  Brakujące traktowanie wartości - przy użyciu logicznych reguł.
•  Wykrywanie wartości odstających - aby upewnić się, że nie mamy mocno wypaczonych wartości.
•  Wielokoliniowość - dwie niezależne zmienne nie dostarczają podobnych informacji.
•  Transformacje zmienne - mamy znaczącą transformację zmiennych w zależności od zakresu badań i zakresu modelowania.
•  Statystyka opisowa - należy przedstawić podstawowe miary tendencji centralnej, aby sprawdzić, czy do modelowania wykorzystywane są prawidłowe dane
Partycjonowanie danych: Podziel próbkę na 2 podpróbki, 1. Próbkę rozwojową (szkolenie), 2. Próbkę walidacyjną. Próbka programistyczna to próbka użyta do zbudowania modelu regresji logistycznej. Próbka walidacyjna służy do oszacowania uzyskanego z próbki programistycznej, która zostanie tutaj przetestowana w celu porównania i sprawdzenia odporności modelu.
Zrównoważone próbki: idealnie: proporcja 1 do 0 nie powinna być mniejsza niż 2%. Jeżeli "odsetek rzadkich zdarzeń wynoszący 1: <2% - nadpróbka. Zachowaj rzadkie zdarzenia w próbce bez zmian. To sztuczne podejście nie zmienia nieodłącznej formy modelu. Ma wpływ w stałym terminie lub punkcie przecięcia i musi zostać poprawiony po sfinalizowaniu modelu.
Współczynnik korekcji zrównoważonej próbki: W tym przypadku mamy postać modelu regresji logistycznej jako

Log (pi / 1-pi) = a + blX1 + b2X2 + b3X3.

Oszacowanie parametru regresji logistycznej

Szacowanie dla logistyki: Współczynniki dla równania logistycznego są szacowane przy użyciu techniki znanej jako oszacowanie maksymalnego prawdopodobieństwa (MLE). MLE jest popularną metodą szacowania, ponieważ nie ma żadnych podstawowych założeń dotyczących dystrybucji. Gdy podstawowy rozkład terminów błędów jest normalny, oszacowania MLE są podobne do oszacowań OLS. OLS, podobnie jak wiele innych dystrybucji, jest szczególnym przypadkiem ML

WYKONANIE MODELU REJESTRACJI LOGISTYCZNEJ

Aby ocenić wydajność modelu regresji logistycznej, musimy wziąć pod uwagę kilka wskaźników.
1. Test współczynnika wiarygodności: model utworzony przez regresję logistyczną jest uważany za lepsze dopasowanie do danych, jeżeli wykazuje dobre dopasowanie przy mniejszej liczbie predyktorów. W teście współczynnika wiarygodności porównujemy prawdopodobieństwo danych w pełnym modelu z modelem z mniejszą liczbą predyktorów. Usunięcie zmiennych predykcyjnych z modelu prawie zawsze powoduje słabsze dopasowanie modelu, ale konieczne jest sprawdzenie, czy zaobserwowana różnica w dopasowaniu modelu jest statystycznie istotna. Uważamy, że hipoteza zerowa (H0) utrzymuje, że model zredukowany jest prawdziwy, a wartość p dla ogólnej statystyki dopasowania modelu, która jest mniejsza niż 0,05, odrzucamy hipotezę zerową. Test współczynnika prawdopodobieństwa można wykonać w R za pomocą funkcji lrtest () z pakietu lmtest lub za pomocą funkcji ANOVA () w bazie.

model <- glm (Loan_sanctioned ~ Wiek + Doświadczenie + Dochód + Rodzina,
dane = tren_pożyczkowy, rodzina = dwumianowy)
model2 <- glm (Loan_sanctioned ~ Income + Family,
dane = tren_pożyczkowy, rodzina = dwumianowy)
anova (model, model2, test = "Chisq")
biblioteka (lmtest)
lrtest (model, model2)

Uzyskaliśmy wartość znacznie większą niż 0,05, więc nie odrzucamy hipotezy zerowej i dochodzimy do wniosku, że usunięcie wieku i doświadczenia z modelu nie ma żadnego wpływu na wydajność modelu.

2. Zmienne znaczenie: Używamy funkcji varImp w pakiecie karetki, aby ocenić względne znaczenie poszczególnych predyktorów w modelu, możemy również spojrzeć na wartość bezwzględną statystyki t dla każdego parametru modelu.

biblioteka (karetka)
varImp (model)
varImp (model2)

Patrząc na wartości, możemy powiedzieć, że dochód i wielkość rodziny odgrywają ważną rolę w przewidywaniu, czy pożyczka będzie sankcjonowana, czy nie. Możemy więc usunąć Wiek i Doświadczenie z modelu.

3. Walidacja przewidywanych wartości (wskaźnik klasyfikacji): Obejmuje to wykorzystanie oszacowań modelu do przewidywania wartości w zestawie treningowym i porównywania przewidywanej zmiennej docelowej z wartościami obserwowanymi dla każdej obserwacji.

Macierz pomyłek: Macierz pomyłek jest tabelą, która jest często używana do opisywania wydajności modelu klasyfikacyjnego na zbiorze danych testowych, dla których znane są prawdziwe wartości.

Dokładność: odsetek całkowitej liczby poprawnych prognoz.

Dokładność = (A + D) / (A + B + C + D)

Pozytywna wartość predykcyjna lub precyzja: odsetek pozytywnych przypadków, które zostały poprawnie zidentyfikowane.

Precyzja = A / (A + B)

Negatywna wartość predykcyjna: odsetek prawidłowo zidentyfikowanych przypadków negatywnych.

NPV = D / (C + D)

Czułość lub Przywołanie lub Prawdziwie pozytywny wskaźnik: odsetek rzeczywistych przypadków pozytywnych, które zostały poprawnie zidentyfikowane.

TPR = A / (A + C)

Swoistość lub prawdziwie ujemny wskaźnik: odsetek rzeczywistych przypadków ujemnych, które są poprawnie zidentyfikowane.

TNR = D / (B + D)

4. Krzywa charakterystyki pracy odbiornika (Krzywa ROC): Charakterystyka pracy odbiornika jest miarą wydajności klasyfikatora. Korzystając z odsetka pozytywnych punktów danych, które są poprawnie uważane za dodatnie, i odsetka negatywnych punktów danych, które błędnie są uważane za dodatnie, generujemy grafikę, która pokazuje kompromis między szybkością, z jaką można poprawnie przewidzieć coś z częstotliwością niepoprawnie przewidywać coś. Ostatecznie niepokoi nas obszar pod krzywą ROC lub AUROC. Ta metryka mieści się w przedziale od 0,50 do 1,00, a wartości powyżej 0,80 wskazują, że model dobrze sobie radzi z rozróżnianiem dwóch kategorii, które składają się na naszą zmienną docelową.

# Oblicz AUC dla przewidywania Pożyczki z uwzględnieniem zmiennej Dochód
biblioteka (ROCR)
pred <- przewidywanie (przewidywanie, dane_ pociągu $ Pożyczka_sankcjonowana)
perf <- wydajność (pred, "tpr", "fpr")
wykres (perf, koloruj = PRAWDA, text.adj = c (-0,2; 1,7)) wykres (f1, col = "czerwony")
auc <- wydajność (pred, Measure = "auc")
auc <- auc@y.values [[1]]
auc

Uzyskaliśmy wartość auc (Area Under Curve), która jest większa niż 90%, dzięki czemu możemy stwierdzić, że nasz model działa bardzo dobrze, i nasz model został zatwierdzony. Krzywa ROC jest praktycznie niezależna od wskaźnika odpowiedzi. Jest tak, ponieważ ma dwie osie wystające z obliczeń kolumnowych macierzy pomieszania. Licznik i mianownik zarówno osi x, jak i y zmienią się na podobnej skali w przypadku przesunięcia wskaźnika odpowiedzi. Jest to zaleta stosowania krzywej ROC.

5. Błąd średniego kwadratu pierwiastkowego (RMSE): RMSE jest najpopularniejszym miernikiem oceny stosowanym w problemach z regresją. Wynika to z założenia, że błąd jest bezstronny i ma normalny rozkład. Charakter "kwadratowy" tej metryki pomaga uzyskać bardziej wiarygodne wyniki, które zapobiegają anulowaniu dodatnich i ujemnych wartości błędów. Unika stosowania bezwzględnych wartości błędów, co jest wysoce niepożądane w obliczeniach matematycznych. Na wartości RMSE duży wpływ mają wartości odstające. Dlatego musimy upewnić się, że usuwamy wartości odstające z naszego zestawu danych przed użyciem tej miary.

6. AIC (Akaike Information Criteria): AIC jest miarą dopasowania, która karze model za liczbę współczynników modelu. Dlatego zawsze preferujemy model o minimalnej wartości AIC.

7. Walidacja krzyżowa składania K: W tej metodzie dzielimy dane na k jednakowych rozmiarów segmentów (zwanych "fałdami"). Jeden fałd jest trzymany w celu walidacji, podczas gdy inne fałdy k-1 są wykorzystywane do trenowania modelu, a następnie wykorzystywane do przewidywania zmiennej docelowej w naszych danych testowych. Ten proces powtarza się k razy, przy czym wydajność każdego modelu w przewidywaniu zestawu wstrzymań jest śledzona przy użyciu metryki wydajności, takiej jak dokładność. Najczęstszą odmianą walidacji krzyżowej jest 10-krotna walidacja krzyżowa. Walidacja krzyżowa k-fold jest szeroko stosowana do sprawdzania, czy model jest pasujący czy nie. Dla małego k mamy większy błąd selekcji, ale niską wariancję występów. Dla dużego k mamy mały błąd selekcji, ale dużą zmienność występów.

Test Hosmera-Lemeshowa: Statystyka Homera-Lemeshowa, która jest obliczana na podstawie danych po podzieleniu obserwacji na grupy na podstawie porównywalnych przewidywanych prawdopodobieństw. Sprawdza, czy zaobserwowane proporcje zdarzeń są podobne do przewidywanych prawdopodobieństw wystąpienia w podgrupach zbioru danych za pomocą testu chi-kwadrat. Małe wartości z dużymi wartościami p wskazują na dobre dopasowanie do danych, natomiast duże wartości z wartościami p poniżej 0,05 wskazują na słabe dopasowanie.

BUDOWA REJESTRACJI LOGISTYCZNEJ

#Krok 1: Ładowanie danych do R:
setwd("D:/R data")
loandata=read.csv(file="Housing_loan.csv", header=TRUE)
# Krok 2: Przygotowanie danych:
# Usuń kolumny ID i płeć z danych
loandata2=subset(loandata, select=-c(ID, Gender))
fix(loandata2)
Krok 3: Utwórz zmienne Dummy:

# Zmienna "Edukacja" ma więcej niż dwie kategorie (1: licencjackie, 2: magisterskie, 3: zaawansowane / profesjonalne), więc musimy stworzyć fikcyjne zmienne dla każdej kategorii aby uwzględnić je w analizie

#Zainstaluj i załaduj pakiet "dummies", aby utworzyć zmienne zastępcze
install.packages("dummies")
library(dummies)
Edu_dum=dummy(loandata2$Education)
head(Edu_dum)
loandata3=subset(loandata2,select=-c(Education))
loandata4=cbind(loandata3,Edu_dum)
head(loandata4)
#Krok 4: Standaryzacja danych:
Standaryzuj dane, stosując metodę "Range"
install.packages("vegan")
library(vegan)
loandata5=decostand(loandata4,"range")
# Krok 5: Przygotuj zestawy danych Train & Test:
Pobierz losową próbkę 80% rekordów danych pociągu.
train = sample(1:1000,800)
train_data = loandata5[train,]
nrow(train_data)
# Weź losową próbkę 20% rekordów dla danych testowych
train = sample(1:1000,800)
train_data = loandata5[train,]
nrow(train_data)
#Krok 6: Podsumowanie danych dla zmiennej odpowiedzi "Loan_sanctioned":
table(loandata5$Loan_sanctioned) #Total Data
table(train_data $Loan_sanctioned) #Train Data
table(test_data$Loan_sanctioned) #Test Data
#Krok 7: Zbuduj model regresji logistycznej
model<- glm(Loan_sanctioned~ Age+Experience+
Income+Family+ Education1+Education2+ Education3,
data=train_data, family = binomial)
Krok 8: Sprawdź podsumowanie modelu i oceń model, uzyskując macierz nieporozumień summary(model)
predict <- predict(model, type = 'response')
table(train_data$Loan_sanctioned, predict > 0.5)
Krok 9: Utwórz krzywą ROC i sprawdź obszar pod krzywą
pred <- prediction(predict, train_data$Loan_sanctioned)
perf <- performance(pred, 'tpr','fpr')
plot(perf, colorize = TRUE, text.adj = c(-0.2,1.2))
#Krok 10: Wypróbuj różne kombinacje zmiennych i oceń wydajność modelu
model2<- glm(Loan_sanctioned~ Age+Experience+Income+Family,
data=loan_train, family = binomial)
summary(model2)
predict <- predict(model2, type = 'response')
# macierz konfuzji
table(loan_train$Loan_sanctioned, predict > 0.5)
model3<- glm(Loan_sanctioned~ Income+Family,
data=loan_train, family = binomial)
summary(model3)
predict <- predict(model3, type = 'response')
# macierz konfuzji
table(loan_train$Loan_sanctioned, predict > 0.5)

KROK 13

Drzewa Decyzyjne

WPROWADZENIE

Drzewo decyzyjne jest potężną metodą klasyfikacji i prognozowania oraz ułatwiającą podejmowanie decyzji w sekwencyjnych problemach decyzyjnych. Możemy użyć trzech rodzajów drzew decyzyjnych, tj. 1. Aby zareagować na działanie w oparciu o sekwencję węzłów informacyjnych 2. Drzewa klasyfikacji i regresji oraz 3. Drzewa przetrwania. Ale przez większość czasu używamy drzewa decyzyjnego do rozwiązywania problemów z klasyfikacją. Przyjrzyjmy się niektórym problemom i zrozummy, czy jest to problem klastrowania, czy problem klasyfikacji.

1. Rodzaje stron w sieci?
2. Czy zatwierdzić osobistą pożyczkę, czy nie?
3. Rodzaje klientów centrum handlowego?
4. Czy ten klient kupi produkt, czy nie?
5. Jakie jest następne miejsce, które turysta chciałby odwiedzić?
6. Czy sygnałem radiowym jest supernowa, biały karzeł czy czerwony gigant?
7. Rodzaje osób na Twoim koncie Facebook / LinkedIn?
8. Rodzaje wiadomości e-mail w skrzynce odbiorczej?
9. Ten artykuł dotyczy sportu, rozrywki, polityki czy nauki?
10. Rodzaje genów w ludzkim genomie?

Jaka jest różnica między grupowaniem a klasyfikacją? Ilekroć nie podajesz celu do przewidzenia, jeśli powiem, że jest tu kilka stron internetowych, podałem tylko te informacje, wtedy możemy pomyśleć o strukturze danych, na przykład o tym, jakie rodzaje stron tam są, pozwól mi zrobić grupowanie i rozwiązać. Kolejne pytanie brzmi: ilu jest klientów, nie jesteśmy tego pewni. Jeśli nie jesteśmy pewni co do celu, jeśli otrzymamy tylko dane wejściowe, X, a nie Y, wówczas spróbujemy zrobić coś takiego jak grupowanie, PCA lub dowolna inna technika uczenia bez nadzoru. Ale ilekroć otrzymasz dane wejściowe i wyjściowe do przewidzenia, powiem tutaj, że historia transakcji przewiduje oszustwo, a nie oszustwo. Oto wiadomość e-mail z informacją, czy jest to promocja spamu, czy główna. Kiedy zadam ci wskazane pytanie, zaklasyfikuj je do jednej z kategorii, to jest to problem z klasyfikacją. Jak to działa w prawdziwym świecie? pozwólcie, że wezmę przykład taksówki Uber. Kiedy założyli firmę, zaczynają otrzymywać informacje zwrotne od klientów, nie wiedzą, jaki rodzaj opinii otrzymują, więc zrobili grupowanie. Wyobraź sobie, że zebrali się w pięciu klastrach, a kiedy wymyślą pięć klastrów, skonfigurują proces określający, co zrobić dla każdego klastra. Teraz te klastry stają się etykietami klas. Teraz następna informacja zwrotna musi zostać przypisana do jednej z nich. Jeśli nie, to musi to być osobna klasa. Jeśli należy do jednego z już utworzonych grup, a następnie wiesz, co robić, w przeciwnym razie musisz utworzyć proces wokół tego. Musimy więc zrozumieć, czy struktura została odkryta, czy nie. Wyobraź sobie, że skargi klientów trafiają na jeden adres e-mail, a następnie musimy zacząć je klasyfikować. Możemy przyjąć wszystkie 100 tysięcy skarg, pogrupować je w 5-6 rodzajów skarg. Jak mapujesz surowe dane na typy, aby odkryć typy, potrzebujemy grupowania. kiedy znamy typy, dokonujemy klasyfikacji.? możemy uzyskać nowe skargi poza podanymi typami, a następnie utworzymy nową klasę.

Opisowe vs. Dyskryminujące klasyfikatory: kiedy ludzie patrzą na dane, połowa z was robi jedną rzecz, a druga połowa robi drugą rzecz. Niektórzy z was mogą zbudować model dla każdej klasy, na przykład jaka jest struktura i kształt klasy. model ten nazywa się modelem opisowym, co oznacza, że opisujesz, jak wyglądają dane. Druga połowa z was mówi: hej, jak mam rozróżnić tych dwóch. Nie dbam o kształt jednego kontra drugi, dbam o granicę jednego kontra drugiego. Dyskryminacyjne klasyfikatory nie polegają na kształcie klasy, ale na granicy. Myślcie, że klasyfikatorzy opisowi są ministerstwem kraju, dbają o kształt kraju w środku. jak w tych dwóch krajach każdy jest zainteresowany swoim krajem, ale dyskryminujący klasyfikatorzy są jak ministerstwo obrony. skupiają się bardziej na granicy. ci dwaj patrzą na te same dane, ale na różne sposoby. Pozwól, że wezmę mój zestaw danych, dokonałem inżynierii funkcji, teraz Jeśli wezmę jedną klasę, po prostu zajmę się jedną klasą, obliczę średnią i macierz kowariancji tej klasy, i to samo dla pozostałych dwóch, to mam te trzy parametry Kiedy obliczam średnią i kowariancję jednej klasy, po prostu rozważam tę klasę i nie przejmuję się drugą klasą. Macierz kowariancji będzie opisywać kształt, a średnia będzie opisywać lokalizację. Jeśli użyję innego rodzaju klasyfikatora, regresji logistycznej, spróbuje on oddzielić klasy. Tutaj obaj robią to samo, ale w inny sposób.

CO TO JEST KLASYFIKACJA?

W klasyfikacji chcemy sklasyfikować dane w taki sposób, aby jedna grupa zawierała punkty z jednej klasy, a inna grupa zawierała punkty z innej klasy. chcemy podzielić przestrzeń na regiony, które powinny być czyste w odniesieniu do wszelkich etykiet mojej klasy. Weźmy przykład Indii podzielonych na stany, co wykorzystali jako kryteria. Używali języka, ponieważ chcą wymyślić identyczność, aby punkty w jednej grupie były do siebie podobne, a punkty w innej grupie były do siebie podobne. Klasyfikacja dzieli przestrzeń (cechę) na czyste regiony przypisane do każdej klasy. Jeśli mamy przestrzeń podobną do grupy punktów, możemy ją przesuwać, ale możemy przenosić partycje. Mamy przestrzeń funkcji, która pochodzi z całej inżynierii funkcji, którą wykonałeś ,upewnij się, że są znormalizowane itp. W tym obszarze funkcji mamy kilka punktów danych i chcemy stworzyć granicę decyzji. ta granica podzieli przestrzeń na mniejsze regiony, a teraz ile granic decyzji mógłbym wybrać? Jakie są możliwe sposoby podziału przestrzeni na partycje? odpowiedź jest nieskończona. Mógłbym użyć nieskończonej liczby sposobów na podzielenie przestrzeni na dwa regiony. spośród wszystkich nieskończonych sposobów wielu partycji muszę znaleźć jedną partycję, która spełnia kryteria, która maksymalizuje kryteria. Jakie są te kryteria? Kryteria są takie, że każdy region powinien być tak czysty, jak to możliwe, w odniesieniu do etykiety klasy. ale nigdy nie uzyskamy idealnej partycji. Przyczyny mogą być następujące:

•  Przestrzeń funkcji może być niepełna, mogliśmy przeoczyć ważną funkcję.
•  Mogą występować wartości odstające,
•  Hałas w funkcjach,
•  Model może nie być idealny,
•  Hałas na etykiecie, przy tych wszystkich regionach możemy nie uzyskać idealnego modelu.

Dlatego nasza praca naukowca danych jest bardzo trudna. Mamy listę powodów, dla których nasz model nie działa. Kiedy klasyfikujemy przestrzeń do niektórych regionów, a każdy z nich ma swój własny zestaw czystości. niektóre klasy mają większą czystość w porównaniu do innych. Czy mogłem zrobić lepiej? Mógłbym podzielić się na mniejsze regiony, patrząc na więcej funkcji. Mógłbym stworzyć granice nieliniowe, zbudowałbym bardziej złożone modele, aby zrobić jeszcze lepiej. Mógłbym zrobić tak wiele rzeczy, aby ulepszyć ten klasyfikator. Wyobraź sobie, że ktoś przekazał ci ten zestaw danych do opracowania, jaki jest najprostszy model, jaki możesz wymyślić? taka jest granica decyzyjna prostej prostej, ale jaki jest problem z prostą granicą, nie jest ona tak czysta, jak byś chciał. więc ideą jest prostota nie oznacza czystości ani dokładności. Co mógłbyś teraz zrobić? Jeśli piszę matematycznie, jaki to model? Sigma (W0 + EWiXi) da to linię, z linią o tym poziomie złożoności modelu możesz zrobić tylko tyle. Będzie tylko jeden optymalny, jeśli ograniczę cię do modelu liniowego. Teraz mówimy nie, Linear nie jest wystarczająco dobry, potrzebujemy czegoś bardziej złożonego, co teraz robimy? Przyjmujemy regresję logistyczną i komplikujemy ją, dodając funkcje nieliniowe. Nie tylko więcej funkcji, jesteśmy ograniczeni funkcjami, ale czy możemy je połączyć razem. Teraz mogę powiedzieć coś takiego jak Sigma (W0 + EWiXi + EWijXiXJ) teraz otrzymujemy bardziej złożony model, ile parametrów mam teraz? W0 -> 1, EWiXi -> n, EWijXiXJ -> N wybierz 2, co oznacza, że kiedy zwiększę złożoność poprzez dodanie większej liczby parametrów, możemy zbudować bardziej złożoną granicę decyzji. Wyobraźmy sobie sytuację, w której zbudowaliśmy model z wielomianem stopnia 2 (kwadraty drugiego rzędu). I inny model z wielomianem stopnia 9, ponieważ istnieje wiele różnych 9 infekcji, więc jest to wielomian 9 stopnia, który wykonuje dobrą robotę, w porównaniu z wielomianem pierwszego stopnia, który jest klasyfikatorem liniowym. Czy mogę zrobić jeszcze lepiej? Wyobraź sobie, że jeśli wezmę wielomian 100 stopnia, istnieje tutaj bardzo ważna zasada, którą musimy zrozumieć, pomyśl teraz, który z tych trzech modeli jest rozsądnym modelem? Gdzie byś przestał oczywiście nikt nie chce przejść do wielomianu 100 stopnia, nawet jeśli daje to dokładniejsze wyniki. Pozwól, że porozmawiam o ogólnej zasadzie niezależnej od problemu. Nasza zasada mówi, czy mam pobić dane do przesłania? jeśli zrobimy trzeci, nie możemy wyjaśnić modelu, dlaczego to zrobiliśmy? Główny problem polega na tym, że kończymy szkolenie danych treningowych, tj. zapamiętujemy dane treningowe, które mogliśmy stracić możliwość uogólnienia, ponieważ zapamiętaliśmy. Mogę być dobrym mistrzem quizu GK, ale może nie sądzę, że to właściwie oznacza, że mam dobrą pamięć, ale nie uogólniłem modelu. Zazwyczaj wybieramy modele, które nie są ani zbyt proste, ani zbyt złożone, gdzieś pośrodku znajduje się prawidłowy model, a sztuką analizy danych jest ustalenie, jaki jest odpowiedni poziom złożoności w modelu. Mogę dać ci drzewo decyzyjne lub regresję logistyczną, nadal możesz stworzyć bardziej złożony lub mniej złożony model, w którym przestajesz być twoim wyborem. iedy patrzysz na modele, model powinien robić dobrze, nie powinien być ani zbyt prosty, ani zbyt skomplikowany. Musimy zrozumieć kompromis. To właśnie nazywamy sygnałem dla stosunku hałasu. Każde dane ma pewną strukturę (sygnał) i trochę hałasu. musimy sprawić, by model był wystarczająco złożony, aby uchwycić strukturę, ale nie hałas.

Uogólnienie: Zdolność przewidywania lub przypisywania etykiety do nowej obserwacji na podstawie modelu zbudowanego na podstawie wcześniejszych doświadczeń. Nazywamy to złożonością i dokładnością modelu. To, co robimy normalnie, pobieramy dane dotyczące danych szkoleniowych, jeśli ciągle zwiększamy model złożonoci, dokładność wzrasta do maksimum. Ale to nie jest nasz cel. Celem jest sprawdzenie zestawu sprawdzania poprawności lub zestawu testów, który jest niewidzialnym danymi, w pewnym momencie wyniki sprawdzania poprawności zaczną maleć. Jest to punkt, w którym powinieneś przestać zwiększać złożoność, ponieważ nie działa ona zbyt dobrze na zbiorze danych sprawdzania poprawności. Jeśli przeszkolimy coś, model zapamięta, ale się nie nauczy. Tak więc, nadmierny trening jest czymś, o co musimy się martwić. Wrócimy do tego za każdym razem, gdy studiujemy model. Kiedy tworzysz model, musimy zrozumieć, jakie były oczekiwania klienta. Jesteśmy zainteresowani stworzeniem uogólnionego modelu, który będzie dokładny. Dokładność to nie tylko kryteria, ale musimy przyjrzeć się interpretowalności modelu. Jeśli twój model jest zbyt skomplikowany, staje się niemożliwy do interpretacji, nawet wtedy jest to problem. Wtedy możesz mieć model bardzo dokładny, model uogólniony, ale nie model wysoce interpretowalny. To kolejne kryterium. Pozostałe kryteria to punktacja w czasie rzeczywistym. Jeśli masz bardzo złożony model, który zajmuje jedną sekundę, aby zdobyć jeden punkt danych, to znowu musisz przyciąć rogi. Dlatego mamy do czynienia z tymi wszystkimi ograniczeniami. Chcę dobrego uogólnienia, chcę interpretacji i wysokiej przepustowości. Teraz jaki model zbuduję? Dlatego nie jest oczywiste, jaka jest właściwa odpowiedź. To zależy od wszystkich tych ograniczeń. Jeśli weźmiemy tutaj dwie sytuacje, aby to zrozumieć, wyobraź sobie, że budujemy model wykrywania oszustw. Kryterium tego modelu jest dokładność. Jeśli zdecyduję się zatrzymać kartę lub pozwolić jej odejść, nie muszę nikomu wyjaśniać. Tutaj interpretacja nie jest ważna, dokładność jest ważna. Pozwólcie, że wezmę inną sytuację, w której budujemy model oceny zdolności kredytowej. Kiedy dokonuję oceny zdolności kredytowej, ilekroć odrzucamy pożyczkę, musimy podać trzy główne powody, dla których odrzucamy pożyczkę, tutaj interpretacja jest ważniejsza w modelu oceny wiarygodności kredytowej. Dlatego modele stosowane w modelu ratingu kredytowego są bardzo różne w porównaniu z modelem stosowanym w wykrywaniu oszustw związanych z kartami kredytowymi. Musimy zadać następujące pytania za każdym razem, gdy tworzymy Model. Jaki jest charakter granicy decyzyjnej klasyfikatora? Jaka jest złożoność granicy decyzyjnej klasyfikatora? Jak kontrolować złożoność klasyfikatora? Skąd mam wiedzieć, kiedy klasyfikator jest wystarczająco złożony / Jak wybrać odpowiedni klasyfikator do użycia? Modele oparte na drzewach: Partycjonowanie rekurencyjne jest podstawowym narzędziem w eksploracji danych. Pomaga nam badać strukturę zestawu danych, a jednocześnie opracowuje łatwe do wizualizacji reguły decyzyjne przewidywania wyniku kategorycznego (drzewo klasyfikacji) lub ciągłego (drzewo regresji). Drzewa klasyfikacji i regresji można generować za pomocą pakietu rpart.

KROKI W TWORZENIU DRZEWA DECYZJI.

Wyhoduj drzewo

rpart (formuła, dane =, metoda =, kontrola =) gdzie,
Formuła ma format wynik ~ predyktor 1 + predyktor 2 + predyktor 3 + ect.
Dane = określa ramkę danych
Metoda = "klasa" dla drzewa klasyfikacji, "anova" dla drzewa regresji
Kontrola = opcjonalne parametry do kontrolowania wzrostu drzewa.

Na przykład control = rpart.control (minsplit = 30, cp = 0,001) wymaga minimum liczby obserwacji w węźle , 30 przed próbą podziału, a podział musi się zmniejszyć przez ogólny brak dopasowania o współczynnik 0,001 (współczynnik złożoności kosztów) przed podjęciem próby.

Sprawdź wyniki

Poniższe funkcje pomagają nam zbadać wyniki.

printcp (fit) #wyświetl tablicę cp

plotcp (fit) #wykreśl wyniki krzyżowej weryfikacji

rsq.rpart (dopasowanie) # wykres przybliżony R-kwadrat i błąd względny dla różnych podziałów (2 wykresy). etykiety są odpowiednie tylko dla metody "anova".

print (fit) #wyświetla wyniki.

summary(fit) # szczegółowe wyniki, w tym podziały zastępcze

plot (fit) #plot drzewo decyzyjne

text(fit) # etykieta wykres drzewa decyzyjnego

post (fit, file =) # stwórz wykres postscriptowy drzewa decyzyjnego

Przycinanie drzewa

Przycinanie wspiera drzewo, aby uniknąć przepełnienia danych. Zazwyczaj będziesz chciał wybrać rozmiar drzewa, który minimalizuje błąd sprawdzany krzyżowo, kolumnę xerror drukowaną przez printcp (). Przycinaj drzewo do pożądanego rozmiaru za pomocą przycinania (fit, cp =). W szczególności użyj printcp (), aby sprawdzić wyniki błędu z potwierdzeniem krzyżowym, wybierz parametr złożoności związany z błędem minimalnym i umieść go w funkcji prune().

ZBUDUJ MODEL DRZEWA DECYZJI NA ZBIÓR DANYCH POŻYCZKI MIESZKANIOWEJ

# Wykorzystajmy dane pożyczki mieszkaniowej, aby przewidzieć, czy pożyczka zostanie objęta sankcjami, czy nie, na podstawie wieku, doświadczenia, dochodów, wielkości rodziny i poziomu wykształcenia.

Krok 1: Zainstaluj i załaduj wymagane pakiety
install.packages("rpart")
library(rpart)
library(dummies)
?rpart
Krok 2: Ładowanie danych do R:
loandata=read.csv(file="D:\\R data\\Housing_loan.csv", header=TRUE, sep=",")
fix(loandata)
Krok 3: usuń kolumny danych, kolumny Płeć z danych
loandata2=subset(loandata, select=-c(ID, Gender))
fix(loandata2
Krok 4: Utwórz zmienne Dummy
Edu_dum =dummy(loandata2$Education)
loandata3=subset(loandata2,select=-c(Education))
fix(loandata3)
loandata4=cbind(loandata3,Edu_dum)
fix(loandata4)
Krok 5: Standaryzuj dane, stosując metodę "Range"
install.packages("vegan")
library(vegan)
loandata_stan=decostand(loandata4,"range")
fix(loandata_stan)
Krok 6: Napraw ziarno, aby uzyskać te same dane za każdym razem
set.seed (123)
Krok 7: Pobierz losową próbkę 60% rekordów danych pociągu
train = sample(1:1000,600)
loan_train = loandata_stan[train,]
# Pobierz losową próbkę 40% rekordów dla danych testowych
test = (1:1000) [-train]
loan_test = loandata_stan[test,]
table(loandata_stan$Loan_sanctioned)
table(loan_train$Loan_sanctioned)
table(loan_test$Loan_sanctioned)
# Usuń niepotrzebne obiekty
rm(loandata2, loandata3, loandata4,loandata_stan, Edu_dum, test, train)
Krok 8: Zbuduj drzewo decyzyjne
fit <- rpart(Loan_sanctioned~ Age +Experience+ Income +Family+
Education1+Education2+Education3, data=loan_train, method="class",
control=rpart.control(minsplit=10, cp=0.001))
#formula ma format wynik ~ predyktor 1 + predyktor 2 + predyktor 3 + itd.
# data = Określa ramkę danych
# method = "class" dla drzewa klasyfikacji, "anova" dla drzewa regresji
# control = Opcjonalne parametry do kontrolowania wzrostu drzewa.
# control = rpart.control (minsplit = 10, cp = 0,001) wymaga, aby minimalna liczba obserwacji w węźle wynosiła 10 przed próbą # podziału, a podział musi zmniejszać ogólny brak dopasowania o współczynnik 0,001 (koszt współczynnik złożoności) przed próbą.
Krok 9: Wyświetl wyniki
printcp(fit) # wyświetl wyniki
plotcp (fit) # wizualizuj wyniki weryfikacji krzyżowej
summary(fit) # szczegółowe podsumowanie podziałów
Krok 10: Drzewo wydruku
plot(fit, uniform=TRUE, main="Classification Tree for Housing Loan")
text(fit, use.n=TRUE, all=TRUE, cex=.8)
Krok 11: Przycinaj drzewo
pfit<- prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])

# Odsuń drzewo, aby uniknąć dopasowania danych. możesz wybrać rozmiar drzewa, który minimalizuje błąd sprawdzany krzyżowo, kolumnę xerror drukowaną przez printcp (). Drzewa wnioskowania warunkowego można utworzyć za pomocą pakietu partyjnego, który zapewnia nieparametryczne drzewa regresji dla odpowiedzi nominalnych, porządkowych, numerycznych, ocenzurowanych i wielowymiarowych. Możesz utworzyć drzewo regresji lub klasyfikacji za pomocą funkcji ctree (formuła, dane =). Rodzaj utworzonego drzewa będzie zależeć od zmiennej wynikowej (współczynnik nominalny, współczynnik uporządkowany, numeryczny itp.). Wzrost drzewa opiera się na statystycznych zasadach zatrzymywania, więc przycinanie nie powinno być wymagane.

KROK 14

Klasa Najbliższego Sąsiada

WPROWADZENIE

Zanim omówimy KNN, zrozummy różnicę między pamięcią a uczeniem się. Pamięć to proces rejestrowania, przechowywania i wyszukiwania informacji. W pamięci przechowujemy dane i zawsze do nich wracamy, gdy jest to konieczne. Uczenie się to proces lub zachowanie związane z nabywaniem wiedzy. Nie chodzi tylko o pozyskiwanie i przechowywanie informacji, ale o zdolność do wdrażania informacji i korzystania z nich w praktycznych okolicznościach. Jeśli zbudujemy model, który jest znacznie bardziej skompresowaną wersją danych, wówczas zapominamy o danych, używamy jedynego modelu w przyszłości. tak działa nasz mózg. Możemy więc powiedzieć, że uczenie się jest procesem, który zmodyfikuje późniejsze zachowanie. Z drugiej strony pamięć to zdolność pamiętania wcześniejszego doświadczenia. Najbliższy sąsiad K to prosty algorytm, który przechowuje wszystkie dostępne przypadki i klasyfikuje nowe przypadki większością głosów swoich sąsiadów. Ten algorytm dzieli nieoznaczone punkty danych na dobrze zdefiniowane grupy. Klasyfikator KNN jest jednym z najprostszych i najpiękniejszych klasyfikatorów. Wyobraź sobie wykres rozproszenia z punktami danych klas różowych i niebieskich, w których różowe punkty danych są bardziej widoczne w lewym górnym rogu, a w prawym dolnym rogu niebieskie są bardziej widoczne, ale w danych jest dużo szumu. takie są prawdziwe dane. Teraz, jeśli dam wam nowy punkt danych i poproszę o sklasyfikowanie go. Co zrobisz? zaczynasz znajdować punkt najbliższy podanemu nowemu punktowi danych na podstawie odległości, Załóżmy, że najbliższy jest różowy. Co będziesz robić gdy ten nowy punkt danych zostanie przypisany do różowego. Nazywa się to 1 Najbliższym sąsiadem. To jest coś takiego: chcesz obejrzeć film, zadzwoniłeś do jednego ze znajomych i zapytałeś, czy to dobrze, czy źle. Cokolwiek powie, zrobisz. Czy to zrobisz? Nie, więc co zrobisz? Dzwonimy do większej liczby osób, łączymy się z internetem i czytamy recenzje. Oglądasz zwiastun, a potem decydujesz, prawda. Zatem proces decyzyjny zależy od danych zewnętrznych, im więcej danych wejściowych zdobędziesz, tym silniejsza będzie twoja decyzja. Co mogę zrobić zamiast korzystać z 1 najbliższego sąsiada? Mogę korzystać z 2 najbliższych sąsiadów, teraz zadzwoniłem do 2 przyjaciół, pierwszy facet powiedział, idź obejrzeć, a drugi mówi, żeby nie oglądać. Teraz jestem jeszcze bardziej zdezorientowany. Zatem w najbliższych sąsiadach K unikamy używania K jako liczby parzystej. Jeśli pójdę z 3 najbliższymi sąsiadami, znów się to zmienia w zależności od liczby punktów. Jeśli pójdę jeszcze wyżej, etykieta może się zmienić. i tak dalej i tak dalej. Jak kontrolujesz tutaj złożoność? Jaki jest model prosty i złożony w K najbliższych sąsiadów? Biorą surowe dane, które są różowe i niebieskie, zakładając, że to przykład testowy, użyli określonej wartości K i powiedzieli, że jeśli użyję trzech najbliższych sąsiadów, jaka byłaby moja etykieta? Różowy czy niebieski ?. To jest przestrzeń i podzieliliśmy ją na 2 regiony. Nikt nie mówi, że regiony muszą być ładne i piękne. Teraz niebieski region ma pewną czystość i każdy punkt należący do niebieskiego zostanie przypisany do niebieskiego regionu. Co się stanie, gdy K wzrośnie? Regiony zmieniły się w niektórych punktach, wraz ze wzrostem K, gładsze granice, a nasz model staje się coraz bardziej odporny na hałas. Wcześniej za bardzo reagowało na hałas. Czego się tutaj uczysz? Im wyższy K, tym bardziej solidny jest model i mniej złożony model. Model wygląda prawie jak regresja liniowa. Podczas budowania klasyfikatora musimy wziąć pod uwagę kilka pytań. Jakie są parametry? czy nauczyliśmy się jakichś parametrów? Czy w regresji logistycznej poznaliśmy jakieś parametry? Ciężary to moje parametry. Rzeczy, których się nauczyłem. W K-oznacza klastrowanie centra klastra to parametry, a K to hiperparametr. W K najbliżsi sąsiedzi K nazywani są hiperparametrami. To jest coś, co daje systemowi kontrolę nad złożonością. W przypadku KNN nie ma parametrów. Nie ma modelu. Dlatego w KNN czas szkolenia wynosi zero, ponieważ niczego się nie uczy. Dlatego nazywany jest modelem nieparametrycznym. Jakie są wady tego KNN ?. Jak długo musisz zdobyć punkt danych? Wyobraź sobie, że jeśli dam ci 100 tysięcy punktów danych w zestawie szkoleniowym, a powiesz, że nadchodzi nowy punkt danych, co musisz zrobić? Musisz zmierzyć odległość od wszystkich 100 tysięcy punktów, a następnie posortować ją i wybrać górną K, zobaczyć, jakie są ich etykiety, to ćwiczenie jest rzędu N, w czasie treningu. Czy użyłbyś takiego klasyfikatora do podejmowania decyzji w czasie rzeczywistym ?. Wybierając technikę modelowania, patrzymy nie tylko na jej dokładność, ale nawet na czas obliczeń. Jeśli muszę zbudować model, który trzeba bardzo szybko trenować, Moje dane zmieniają się bardzo szybko, to potrzebujesz modelu, który w ogóle nie ma czasu na szkolenie. Kluczem tutaj jest sposób zdefiniowania funkcji odległości. Zdefiniowanie funkcji odległości jest najtrudniejszym zadaniem. Wyobraź sobie dwie zmienne, takie jak wiek i dochód, w jaki sposób określasz odległość między nimi? Odległość między dwoma profilami LinkedIn, Odległość między dwiema sekwencjami genowymi itp., Dwa sygnały dźwiękowe, dwa dokumenty w Internecie, dwa tweety, dwa filmy i trwa. Weźmy prosty przykład sekwencji genów raka, mamy około 10 tysięcy sekwencji genów pacjentów z rakiem i 1 milion sekwencji genów pacjentów nienowotworowych. kiedy pojawia się nowy punkt danych, musimy zdecydować, czy musimy sprawdzić, czy wszystkie miliardy sekwencji genów pasują do wszystkich sekwencji genów i obliczyć odległości między nimi, znaleźć K i tak dalej, jest to dość trudne do zrobienia . Tak więc, wybierając technikę modelowania, musimy zastanowić się, co to jest K ?, co to jest funkcja odległości ?, czy będę w stanie teraz szybciej zdobywać punkty? wszystkie te rzeczy. Kolejnym problemem związanym z KNN jest faktyczna odległość, której nie wziąłbym pod uwagę. Mówię tylko o górze K. Nie mówię, jak daleko. jest to jeszcze jeden problem z KNN, ponieważ traci on informacje o odległości. Kolejnym problemem związanym z KNN jest to, że nie jest odporny na hałas. O ile nie zwiększysz zbyt mocno K, nie będzie to zbyt odporne na hałas.

JAK WYBRAĆ ODPOWIEDNĄ WARTOŚĆ K?

Wybór liczby najbliższych sąsiadów, tj. oOkreślenie wartości K, odgrywa istotną rolę w określeniu skuteczności modelu. Zatem wybór K określi, jak dobrze dane mogą być wykorzystane do uogólnienia wyników algorytmu kNN. Duża wartość k ma zalety, które obejmują zmniejszenie wariancji ze względu na zaszumione dane, efektem ubocznym jest rozwijanie uprzedzeń, w wyniku których uczący się ignoruje mniejsze wzorce, które mogą mieć użyteczny wgląd.

Algorytm kNN - zalety i wady

Plusy: Algorytm ma wysoce bezstronny charakter i nie zakłada wcześniej podstawowych danych. Ponieważ jest prosty i skuteczny z natury, jest łatwy do wdrożenia i zyskał dobrą popularność.
Wady: Rzeczywiście algorytm kNN nie tworzy modelu, ponieważ nie wymaga żadnego procesu abstrakcji. Tak, proces szkolenia jest naprawdę szybki, ponieważ dane są przechowywane dosłownie, ale czas przewidywania jest dość długi, a czasami brakuje przydatnych informacji. Dlatego zbudowanie tego algorytmu wymaga czasu na zainwestowanie w przygotowanie danych w celu uzyskania solidnego modelu.

BUDUJ MODEL KNN NA DIABETYCZNYM ZBIORZE DANYCH

Wykrywanie cukrzycy: Uczenie maszynowe znajduje szerokie zastosowanie w przemyśle farmaceutycznym, szczególnie w wykrywaniu cukrzycy i raka. Zobaczmy proces budowania tego modelu przy użyciu algorytmu kNN w Programowaniu R.

Krok 1: Zbieranie danych:

Wykorzystamy zestaw danych pacjentów z cukrzycą do wdrożenia algorytmu KNN, a tym samym interpretacji wyników. Zbiór danych składa się z 500 obserwacji i 7 zmiennych, które są następujące: W rzeczywistości istnieje dziesiątki ważnych parametrów potrzebnych do pomiaru prawdopodobieństwa cukrzycy, ale dla uproszczenia poradzimy sobie z 7 z nich.

•  Pat_Id
•  Płeć
•  OGTT
•  DBP
•  BMI
•  Wiek
•  Cukrzyca

Krok 2: Eksploracja danych
setwd ("D: / R data") # Zaimportujmy plik danych "Diab.csv". To polecenie służy do wskazywania folderu zawierającego wymagany plik.
Diabdata <- read.csv("Diab.csv", header = TRUE,stringsAsFactors = FALSE) # To polecenie importuje wymagany zestaw danych i zapisuje go w ramce danych Diabdata. stringsAsFactors = FALSE # To polecenie pomaga przekonwertować każdy wektor znaków na czynnik, tam gdzie ma to sens.
str(Diabdata) # Używamy tego polecenia, aby sprawdzić, czy dane mają strukturę, czy nie. Stwierdzamy, że dane mają strukturę 7 zmiennych i 500 obserwacji. Jeśli obserwujemy zestaw danych, pierwsza zmienna "Pat_Id" ma unikalny charakter i można ją usunąć, ponieważ nie dostarcza użytecznych informacji.
Krok 3: Przygotowanie danych
# Usuń pierwszą zmienną (Pat_Id) ze zbioru danych.
Diabdata <- Diabdata [-1]
Zestaw danych zawiera pacjentów, u których zdiagnozowano cukrzycę lub cukrzycę
# Szybkie spojrzenie na atrybut Diabetic poprzez pokazuje, że podział.
table(Diabdata$Diabetic)

Zmienna Diabetic jest naszą zmienną docelową, tj. Ta zmienna określa wyniki diagnozy na podstawie innych zmiennych liczbowych. # Jeśli chcesz sprawdzić procentowy podział atrybutu Cukrzyca, możesz poprosić o tabelę proporcji:

round(prop.table(table(Diabdata$Diab)) * 100, digits = 1)
# Dogłębne Zrozumienie Twoich Danych
summary(Diabdata)
# Możesz także zawęzić podsumowanie, dodając określone atrybuty
summary(Diabdata[c("OGTT", "BMI")])

Krok 4: Normalizacja:
Ta funkcja ma ogromne znaczenie, ponieważ skala zastosowana dla wartości każdej zmiennej może być inna. Najlepszą praktyką jest normalizacja danych i przekształcenie wszystkich wartości na wspólną skalę.

# Możemy wykonać normalizację funkcji, najpierw tworząc własną funkcję normalizacji:
normalize <- function(x) {
num <- x - min(x)
denom <- max(x) - min(x)
return (num/denom)
}
Diab_norm <- as.data.frame(lapply(Diabdata[3:6], normalize))
summary(Diab_norm)
fix(Diab_norm)
Sprawdźmy za pomocą zmiennej "BMI", czy dane zostały znormalizowane.
summary(Diab_norm$BMI)

Krok 5: Tworzenie zestawu danych treningowych i testowych:
Algorytm kNN jest stosowany do zestawu danych treningowych, a wyniki są weryfikowane w zestawie danych testowych. W tym celu podzielilibyśmy zestaw danych na 2 porcje w stosunku 60: 40 odpowiednio dla zestawu danych treningowych i testowych. Możesz użyć zupełnie innego współczynnika w zależności od wymagań biznesowych
# Zestawy szkoleniowe i testowe
set.seed (1234)
Indicator <- sample(2, nrow(Diab_norm), replace=TRUE, prob=c(0.6, 0.4))
# Możemy następnie użyć próbki zapisanej w zmiennej Indicator do zdefiniowania treningu i zestawy testowe:
Diab.training <- Diab_norm [Indicator == 1, 1: 4]
Diab.test <- Diab_norm [Indicator == 2, 1: 4]
Naszą zmienną docelową jest "Cukrzycowa", której nie uwzględniliśmy w zestawach danych szkoleniowych i testowych.
Diab.trainLabels <- Diabdata [Wskaźnik == 1, 7]
Diab.testLabels <- Diabdata [Wskaźnik == 2, 7]

Krok 6: Trening modelu na danych:
Funkcji knn () należy użyć do wyszkolenia modelu, dla którego musimy zainstalować pakiet "class". Funkcja knn () identyfikuje najbliższych sąsiadów za pomocą odległości euklidesowej, gdzie k jest liczbą określoną przez użytkownika.

install.packages ("class")
library (class)

Teraz jesteśmy gotowi do użycia funkcji knn () do klasyfikacji danych testowych. Pozwól nam zbudować nasz klasyfikator. Aby zbudować twój klasyfikator, musimy wziąć funkcję knn () i po prostu dodać do niej kilka argumentów.

Diab_pred <- knn (train = Diab.training, test = Diab.test, cl = Diab.trainLabels, k = 11)
Diab_pred
Wartość k jest na ogół wybierana jako pierwiastek kwadratowy z liczby obserwacji. knn () zwraca wartość współczynnika przewidywanych etykiet dla każdego z przykładów w zestawie danych testowych, który jest następnie przypisywany do ramki danych Diab_pred. Wynikiem tego polecenia jest wektor czynnikowy z przewidywanymi klasami dla każdego wiersza danych testowych.

Krok 7: Ocena twojego modelu:
Aby sprawdzić wydajność modeli, możemy zaimportować pakiet gmodels:

install.packages ("gmodels")
#Jeśli już zainstalowałeś ten pakiet, możesz po prostu wejść
library(gmodels)
# Następnie tworzymy tabelę krzyżową lub tabelę zdarzeń awaryjnych.
CrossTable (x = Diab.testLabels, y = Diab_pred, prop.chisq = FALSE)

Nie stwierdzono przypadków fałszywie ujemnych (FN), co oznacza, że nie odnotowano żadnych przypadków, które faktycznie mają charakter cukrzycowy, ale zostały przewidziane jako niecukrzycowe. FN stanowi potencjalne zagrożenie z tego samego powodu, a głównym celem jest zwiększenie dokładności modelu jest zmniejszenie FN. Całkowita dokładność modelu wynosi 60% ((TN + TP) / 35), co pokazuje, że mogą istnieć szanse na poprawę wydajności modelu Krok 8: Poprawa wydajności modelu

Można to wziąć pod uwagę, powtarzając kroki 3 i 4 oraz zmieniając wartość k. Zasadniczo jest to pierwiastek kwadratowy z obserwacji i w tym przypadku przyjęliśmy k = 10, który jest idealnym pierwiastkiem kwadratowym ze 100. Wartość k może się wahać wi wokół wartości 10, aby sprawdzić zwiększoną dokładność Model. Wypróbuj to z wybranymi wartościami, aby zwiększyć dokładność. Musimy pamiętać o tym, aby wartość FN była jak najniższa.

KROK 15

Klasyfikatory Bayesowakie

WPROWADZENIE

Twierdzenie Bayesa jest twierdzeniem matematycznym, za pomocą którego próbujemy znaleźć związek między danymi a klasą. Musimy pomyśleć, jeśli to są dane, to jaka powinna być klasa. Tutaj próbujemy dokonać mapowania między danymi a klasą.

1. Jakie jest prawdopodobieństwo, że klient odpowie na tę ofertę i kupon.
2. Jakie jest prawdopodobieństwo zachorowania na raka, czy nie, biorąc pod uwagę tę konkretną sekwencję genową?
Pozwól mi omówić zasadę Bayesa. Pozwól nam zrozumieć, dlaczego jest to tak ważna rzecz



P (Class) → Class Prior
P (Dane | Klasa) → Prawdopodobieństwo danych dla danej klasy
P (dane) → Dane przed (marginalne)
P (klasa | dane) → prawdopodobieństwo późniejsze (prawdopodobieństwo klasy po obejrzeniu danych)
Pozwólcie, że porozmawiam o bardzo prostej właściwości łącznego rozkładu prawdopodobieństwa: jeśli powiem, P (a, b) mogę zapisać go w dwóch typach, jako P(a) razy p(b biorąc pod uwagę a) lub P(b) razy p(b) a). Pozwól nam to zrozumieć na przykładzie: Wyobraź sobie, że jesteś lekarzem, czekasz na przyjście kolejnego pacjenta. Czy już wiesz, jaka będzie choroba? Czy potrafisz zgadnąć, jaka byłaby choroba? cokolwiek wiemy bez patrzenia na dane, nazywamy to wcześniej. Kiedy poprosiłem o rozmowę z kandydatem w organizacji zajmującej się oprogramowaniem, nie patrząc na kandydata, nie patrząc na jego CV, co mogę powiedzieć, czy kandydat zostanie zatrudniony, czy nie? Jak mam to zrobić? Patrzę na wszystkich ludzi, którzy brali udział w wywiadach i jaką część z nich zatrudnimy?. To się nazywa wcześniejsze prawdopodobieństwo. Ten sam lekarz widział wielu pacjentów w przeszłości i prawidłowo je zdiagnozował, a następnie oczekujemy od punktu danych, aby zaklasyfikować ich do tej klasy (dane, które prawdopodobnie dały klasę). Następnie muszę rozważyć nawet to, jakie jest prawdopodobieństwo, że taki pacjent kiedykolwiek do mnie przyjdzie (Data Prior Marginal). Na podstawie tych informacji muszę przewidzieć przyszłość. Biorąc pod uwagę ten nowy punkt danych, powiedz mi, jakie jest prawdopodobieństwo tej klasy. Właśnie to staramy się zrobić, więc twierdzenie Bayesa nie jest matematyczną żonglerką prawdopodobieństwa warunkowego. To naprawdę sposób na połączenie swoich przeszłych doświadczeń z prognozami na przyszłość. Istnieje cała masa technik modelowania opartych na twierdzeniu Bayesa. Większość uczenia maszynowego spędza czas na danych, które prawdopodobnie dały klasę. Maksymalne prawdopodobieństwo oznacza, jakie jest prawdopodobieństwo tych danych pochodzących z tej klasy, a my po prostu staramy się na nich maksymalnie wykorzystać. Są dwa sposoby myślenia o twierdzeniu bayesowskim. 1. Decyzja o maksymalnym prawdopodobieństwie 2. Maksymalna decyzja o prawdopodobieństwie późniejszym.

MYŚLENIE JAK PODOBNY BAYESJAN To tylko zastosowanie naszej teorii prawdopodobieństwa w podejmowaniu decyzji. Przedstawię wam scenariusz, przekonwertujemy zdania angielskie jako prawdopodobieństwa i prawdopodobieństwa warunkowe i przejdziemy przez obliczanie prawdopodobieństw późniejszych. Wyobraź sobie, że jesteś producentem maszyny. Weź setki osób, które znasz na raka, i przetestuj je, jeśli stwierdzenie mówi, że maszyna da 95% poprawnych wyników pozytywnych.

P (Test_positive | Has_Cancer) = .95, P (Test_Negative | Has_Cancer) = .05

Oznacza to, że nawet maszyna mówi negatywnie i masz raka, to nie znaczy, że nie masz raka. Co to są dane i klasa tutaj? Wynik testu to dane, Rak bez raka jest wynikiem. Wyobraź sobie, że jesteś producentem maszyny. Weź setki osób, które nie mają raka, i przetestuj je. Jeśli maszyna daje poprawny wynik ujemny 90% razy.

P (Test_Negative | No_Cancer) = .9, P (Test_Positive | No_Cancer) = .1

I tylko 0,8% całej populacji ma raka:

P (Has_Cancer) = 0,008, P (No_Cancer) = 0,992

Mamy tutaj do czynienia z dwiema zmiennymi: 1. Niezależnie od tego, czy pacjent ma raka, czy nie, 2. Test wyszedł pozytywnie lub negatywnie. Teraz pozwól mi zapytać, jakie jest prawdopodobieństwo, że test jest pozytywny? Aby odpowiedzieć na to pytanie, musimy obliczyć dwie rzeczy: 1. pacjent ma raka jest maszyną z wynikiem dodatnim lub nie., 2. pacjent nie ma raka jest maszyną z wynikiem dodatnim lub nie.

= [P (Test_positive | Has_Cancer) * P (Has_Cancer) +
P (Test_Positive | No_Cancer) * P (No_Cancer)]
= 0,95 * 0,008 + .1 * 0,992 = 0,1068

Jakie jest wcześniejsze prawdopodobieństwo, że test jest negatywny?

= [P (Test_Negative | Has_Cancer) * P (Has_Cancer) +
P (Test_Negative | No_Cancer) * P (No_Cancer)]
= 0,05 * 0,008 + .9 * 0,992 = 0,8932

Tak myślimy jak Bayesian. Nie mogę zmierzyć, ile razy będzie to pozytywne. To zależy od rodzaju pacjentów poddawanych testom. Nie możemy po prostu obserwować danych, ignorując etykietę klasy. Weźmy przykład, chciałbym przewidzieć, czy dzisiaj kichniesz? To zależy od tego, jakie są przyczyny kichania i czy zamierzasz je ujawnić, to możemy powiedzieć, czy kichasz, czy nie. Teraz pozwól mi zadać drugie pytanie. Jeśli nowy pacjent wejdzie i wynik testu będzie pozytywny, zastosujemy twierdzenie Bayesa. Jakie jest prawdopodobieństwo raka, jeśli wynik testu będzie pozytywny?

P (Has_Cancer | Test_Positive)
= [P (Test_positive | Has_cancer) * P (Has_Cancer) / P (Test_Positive)]
= [(0,95 * 0,008) / 0,1068] = 0,07116

Jakie jest prawdopodobieństwo raka, jeśli wynik testu jest ujemny?

P (Has_Cancer | Test_Negative)
= [P (Test_Negative | Has_cancer) * P (Has_Cancer) / P (Test_Negattive)]
= [(0,05 * 0,008) / 0,8932] = 0,00045

nawet dowody mówią, że pacjent ma raka, ale nie musimy się martwić, ponieważ wcześniejsza liczba jest bardzo niska. Aby obliczyć NaiveBayes, musimy wiedzieć, jak obliczyć średnią, kowariancję i obliczenie prawdopodobieństwa Bayesa.
Odległość Mahalanobisa: kiedy bierzesz dane, weź PCA danych, co robisz, gdy bierzesz PCA danych, zasadniczo usuwasz w nim kowariancję, a następnie obliczasz odległość, aby stała się odległością Mahalanobisa.
Bayesowski klasyfikator Granica decyzyjna: Pamiętaj, że omawialiśmy 2 typy klasyfikatorów w poprzednich częściach, 1. Kształt klasy 2. Granica decyzyjna. W granicy decyzji bayesowskiej klasyfikatora używamy obu. To, co robimy, to tworzymy jednego Gaussa na każdą klasę i gdziekolwiek dwa są równe, to jest granica naszej decyzji.

NAIWNY KLASYFIKATOR BAYESOWSKI

NaiveBayes jest bardzo ważną klasą klasyfikatorów bayesowskich. Warunkowa niezależność: znamy niezależność między dwiema zmiennymi. Jeśli powiem, że dzieją się dwa zdarzenia i są one całkowicie losowe, co możemy powiedzieć o wspólnym prawdopodobieństwie?

P (A, B) = P (A) * P (B).

Załóżmy, że weszliśmy do komnaty lekarzy i powiedzieliśmy, że mamy gorączkę i bóle ciała. myślisz, że te dwa objawy są niezależne? Nie, istnieje wspólna przyczyna obu powyższych objawów. lekarze próbują ustalić wspólną przyczynę wszystkich niezależnych objawów. Powiedzmy, że infekcja wirusowa powoduje te dwa objawy. Tak więc przyczyną jest infekcja wirusowa. Następnie możemy napisać to zdanie w następujący sposób: P (gorączka, ból ciała | wirusowy) = P (gorączka | wirusowy) * P (ból ciała | wirusowy) to właśnie nazywa się warunkową niezależnością.

Ponownie wracając do twierdzenia Bayesa, chcę dowiedzieć się prawdopodobieństwa infekcji wirusowej, biorąc pod uwagę, że pacjent ma gorączkę i ból ciała.

P (wirusowa | gorączka, ból ciała) = [P (gorączka, ból ciała | wirusowy) * P (wirusowa)] / P (gorączka, ból ciała).

ZBUDUJ NAIVEBAYES Z DIABETYCZNEGO ZBIORU DANYCH

Krok 1: Uzyskaj swoje dane:
# load w zestawie danych za pomocą następującego polecenia:
setwd("D:/R data")
Diabds <- read.csv("Diab.csv", header = TRUE)
fix(Diabds)
Krok 2: Poznaj swoje dane:
Lepszym pomysłem jest sprawdzenie zestawu danych poprzez wykonanie
head(Diabds)
str(Diabds)
names(Diabds)
summary(Diabds
Krok 3: Przygotuj swoje dane:
Usuń pierwszą zmienną (Pat_Id) ze zbioru danych.
Diabdata <- Diabds [-1]
Krok 4: Załaduj wymagane pakiety:
Zainstaluj i załaduj pakiet e1071
install.packages('e1071',dependencies=TRUE)
library(e1071)
Krok 5: Podziel zestaw danych
Diab_test = sample(1:nrow(Diabdata),200)
Diab_train = setdiff(1:nrow(Diabdata),Diab_test)
Krok 6: Zbuduj model
Diab_nb = naiveBayes(Diabdata[Diab_train,2:5],Diabdata[Diab_train,6])
Dia_res = predict(Diab_nb,Diabdata[Diab_test,2:5])
Krok 7: Wyświetl macierz nieporozumień
table(Dia_res,Diabdata[Diab_test,6])
Krok 8: Dokładność obliczeń
cm_Diab = table(Dia_res,Diabdata[Diab_test,6])
# oblicz sumę wartości przekątnych w macierzy
correct = sum(diag(cm_Diab))
accuracy = correct / sum(cm_Diab)

KROK 16

Sieci Neuroowe

WPROWADZENIE

Sieć neuronowa (NN) ma neurony i warstwy w swojej architekturze. 3 warstwy w sieci neuronowej to Warstwa wejściowa, Warstwa ukryta i Warstwa wyjściowa. Każda z tych warstw ma w sobie jednostki lub neurony.

Ludzka sieć neuronowa: Podstawową jednostką obliczeniową w układzie nerwowym jest komórka nerwowa lub neuron. Neuron ma 1. Dendryty (dane wejściowe) 2. Ciało komórki 3. Akson (dane wyjściowe). Neuron otrzymuje dane wejściowe z innych neuronów, dane wejściowe są sumowane, a gdy dane wejściowe przekraczają wartość krytyczną neuron wyładowuje impuls elektryczny, który przemieszcza się przez ciało w dół aksonu, do następnego neuronu. To zdarzenie szczytowe jest również nazywane depolaryzacją, a po nim następuje okres refrakcji, podczas którego neuron nie jest w stanie strzelać. Zakończenia aksonów prawie się stykają z dendrytami lub ciałem komórkowym następnego neuronu. Przekazywanie sygnału elektrycznego z jednego neuronu do drugiego odbywa się za pomocą neuroprzekaźników, substancji chemicznych uwalnianych z pierwszego neuronu i wiążących się z receptorami w drugim. To łącze nazywa się synapsą. Zakres, w jakim sygnał z jednego neuronu jest przekazywany do następnego, zależy od wielu czynników, np. ilość dostępnego neuroprzekaźnika, rozmieszczenie receptorów, ilość neuroprzekaźników wchłoniętych ponownie, itd. Przyjrzyjmy się algorytmowi EM. W klastrze K-oznacza ,że to co zrobiliśmy, przypisujemy klastry do punktów danych i obliczamy średnią, po obliczeniu średniej ponownie przypisujemy punkty danych. Ponieważ nie znamy modelu, zaczynamy gdzieś i stamtąd.

Zastosowania sieci neuronowej:

1. Robotyka - nawigacja, rozpoznawanie wzroku
2. Medycyna - Przechowywanie dokumentacji medycznej
3. Rozpoznawanie mowy
4. Prognozy giełdowe
5. Kompresja danych
6. Przetwarzanie obrazu
7. Rozpoznawanie twarzy
8. Śledzenie pozycji kabiny lub ciężarówki
9. Przetwarzanie sygnału
10. Rozpoznawanie znaków odręcznych.

DLACZEGO SIECI NEURONOWE?

Sieć neuronowa jest przełomowym algorytmem w uczeniu maszynowym. Po pierwsze, zrozummy, dlaczego regresja logistyczna nie wystarczy? Gdy istnieją więcej niż 2 klasy, dotychczas sugerowaliśmy wykonanie następujących czynności: Przypisz jeden węzeł wyjściowy do każdej klasy, ustaw wartość docelową każdego węzła na 1, jeśli jest to poprawna klasa, a 0 w przeciwnym razie. Użyj sieci liniowej z funkcja średniej kwadratowej błędu. Istnieją problemy z tą metodą. Po pierwsze, istnieje rozbieżność między definicją funkcji błędu a określeniem klasy. Błąd minimalny nie musi powodować, że sieć ma największą liczbę poprawnych prognoz. Nowa interpretacja: Wynik yi jest interpretowany jako prawdopodobieństwo, że i jest poprawną klasą. Oznacza to, że wyjście każdego węzła musi wynosić od 0 do 1. Suma wyników wszystkich węzłów musi być równa 1. Weźmy problem XOR, brama EXCLUSIVE-OR jest bramką z dwoma wejściami i jednym wyjściem , to klasyczny przykład, dlaczego potrzebujemy sieci neuronowej. XOR. Po prostu weźmy dwukierunkowy mechanizm przełączający w naszym domu, jeśli oboje byliśmy włączeni lub oboje byliśmy wyłączeni, przełącznik uważa się za wyłączony. Jeśli którykolwiek z nich jest włączony, uznaje się, że przełącznik jest włączony. Mówi, że jeśli oba są zerami lub oba są jedynymi, otrzymujemy wartość X, a każdy z nich jest równy zero / Jeden otrzymujemy wartość Y. Bramki XOR dają wartość 0, gdy oba wejścia są zgodne. Podczas wyszukiwania określonego wzorca bitowego lub sekwencji PRN w bardzo długiej sekwencji danych, można użyć szeregu bramek XOR do równoległego porównania ciągu bitów z sekwencji danych z sekwencją docelową. Następnie można policzyć liczbę 0 wyjść, aby określić, jak dobrze sekwencja danych pasuje do sekwencji docelowej. Ile linii musimy narysować, aby odróżnić takie punkty danych? Co najmniej dwa, ponieważ jednym nie mogę całkowicie rozróżnić danych. Tutaj musimy zrozumieć, że regresja logistyczna jest niewystarczająca, ponieważ złożoność danych jest większa niż złożoność modelu.



Jakie rodzaje linii mogę mieć? Czy mam unikalne rozwiązanie? Możemy uzyskać różne rozwiązania. istnieją cztery różne rozwiązania tego problemu. jeden z nich jest podany na obrazku, przynajmniej z tymi dwiema liniami mogę coś zrobić. cokolwiek robimy, ostatecznie to, co robię, to dzielę przestrzeń na wiele czystych regionów. Jednak robię to, niezależnie od tego, czy robię to poprzez ustalenie Gaussa, czy mieszanki Gaussów, z dwoma Gaussianami na klasę, Wyobraź sobie, że gdybym musiał rozwiązać ten sam problem z klasyfikatorem opisowym, co bym zrobił, to wystarczy jeden Gaussian na klasę? Nie, jeden Gauss nie wystarczy. W obu przypadkach, niezależnie od tego, czy wybierasz opis, czy dyskryminację, jest to niezależne, charakter danych mówi, że jeden gaussowski nie wystarczy, a jedna linia nie wystarczy. Dlatego potrzebuję dwóch Gaussów lub dwóch linii w dyskryminującym klasyfikatorze. Kiedy mówimy, że istnieje wiele lokalnych minimów, rozumiemy przez to, że dolna linia to jedno lokalne minima, co oznacza, że da mi dobrą odpowiedź, jeśli spojrzysz na inne, to jest inny zestaw parametrów, który również, dajcie mi bardzo czyste regiony, czyli kolejne lokalne minima. Możemy więc zrozumieć, że istnieje wiele rozwiązań tego problemu. Właśnie dlatego tego rodzaju algorytmy stanowią wyzwanie. Pozwól mi wziąć jedno równanie na linię. Teraz mam dwie linie, czy to wystarczy? Pierwsza linia mówi tylko, czy jesteś po tej czy po tej stronie. Nie mówi, jaka jest klasa. Powyższa linia mówi również, czy jesteś po tej czy po tej stronie. Nie mówi nawet, jaka jest klasa. Potrzebujemy kogoś, kto wysłucha obu linii i połączy wyjście, a następnie powie, jaka jest klasa ostateczna. Tak wygląda sieć neuronowa. To jest najprostsza sieć neuronowa, to jest jeden neuron równy jednej linii, to jest inny neuron, który jest inną linią, i spójrz na wagi, ta linia mówi 2 razy X1 plus 2 razy X2 minus 1, co daje jedną linię. drugą linię można wyjaśnić w ten sam sposób. Powyższy punkt przypomina kierownika zespołu, słucha wszystkich i bierze ich wyniki, odpowiednio je waży i popycha do przodu. To jest ostateczna decyzja, którą podejmuje. Pamiętaj, że omawialiśmy Hierarchie, tak jak każdy inżynier robi jedną rzecz, i potrzebujemy kogoś, kto połączy ich wyniki i podejmie ostateczną decyzję. Do tej pory zrozumieliśmy, dlaczego potrzebujemy sieci neuronowej. Nauczmy się je interpretować. Sieć neuronowa jest niczym więcej niż jedną regresją logistyczną i kombinatorem na nich. Nazywa się to również wielowarstwowym perceptronem. Pomyślmy w ten sposób, jakby nowy punkt danych znajdował się powyżej pierwszej linii i poniżej drugiej linii, to mówimy, że jest czerwony. w przeciwnym razie jesteś niebieski. Generalnie, kiedy podejmujemy zasady i decyzje, jest to zbiór Oświadczeń. Weźmy na przykład, jeśli jesteś po tej stronie linii i po tej stronie drugiej linii, jaka jest odpowiedź?. Spójrzmy na linię, która oznacza, że jesteś powyżej dolnej linii. A poniżej górnej linii, jeśli oba te warunki są spełnione, jesteś czerwony. W systemie opartym na regułach są one ci przekazywane, nie uczysz się ich, a my po prostu tworzymy regułę na podstawie tych stwierdzeń. Ale w sieciach neuronowych tworzymy regułę w ten sposób. W drzewie decyzyjnym regułą jest cała ścieżka. Pozwól mi połączyć to z sytuacją opieki zdrowotnej, że jeśli masz dreszcze i gorączkę, problemem może być gorączka malaryczna. Sieci neuronowe nazywane są również jako Perceptronami wielowarstwowymi. Jeśli mam surowe dane, w których jedna grupa punktów jest osadzona w innej grupie punktów, Teraz powiedz mi, ile linii potrzebuję? Teraz potrzebuję co najmniej trzech lub więcej. Co mówimy każda ukryta jednostka jest linią. Interpretacja przebiega za każdym razem, gdy dodajemy jednostkę, jest to jedna linia, druga ukryta jednostka to inna linia i tak dalej. w zależności od złożoności problemu mogę dodawać coraz więcej ukrytych jednostek i może to dawać mi coraz więcej linii. a następnie dodajemy stałą. Pamiętaj, co powiedzieliśmy wcześniej o neuronie, natura neuronu się nie zmienia, jego wkład może się zmienić. Neuron pośrodku pobiera informacje z dwóch lewych jednostek, a próg znajduje się na górze. Aktywacja i przełącznik tworzą neuron. Neuron najbardziej na prawo nie pobiera surowych danych wejściowych. Jest to uogólniony model liniowy, który przyjmuje punkty środkowe jako dane wejściowe. Nic nie wie o surowych danych, co oznacza, że role każdego neuronu są bardzo jasne, wiedzą, co powinien robić, a czego nie. Nasz podstawowy element obliczeniowy (model neuronu) jest często nazywany węzłem lub jednostką. Odbiera dane wejściowe z niektórych innych jednostek lub być może ze źródła zewnętrznego. Każde wejście ma przypisaną wagę w, którą można modyfikować, aby modelować uczenie synaptyczne. Jednostka oblicza funkcję f ważonej sumy swoich danych wejściowych:



•  Suma Σjwijyj ważona nazywana jest wkładem netto do jednostki i, często zapisywanym neti.
•  Należy pamiętać, że wij odnosi się do masy od jednostki j do jednostki i (nie na odwrót).
•  Funkcja f jest funkcją aktywacji urządzenia. W najprostszym przypadku f jest funkcją tożsamości, a wyjściem jednostki jest tylko jej wejście netto. Nazywa się to jednostką liniową.

Jeśli dam ci architekturę sieci neuronowej, powiedzmy, że mam wejścia D i zawsze mamy stałą X0 to zawsze 1. Zawsze istnieje stały termin na warstwę. a na końcu mamy ukryte jednostki H, a na końcu klasy C. Pozwólmy zrozumieć w przypadku Diabetic Data, gdzie dane wejściowe i wyjściowe są ustalone. Nic nie możemy na to poradzić. Co możemy zmienić liczbę ukrytych jednostek i liczbę ukrytych warstw? To daje ci złożoność. Jeśli złożoność osiągnie określony poziom, dokładność wzrośnie. Teraz powiedz mi, ile mam wag, których się uczę. dla jednej ukrytej jednostki mam W0 i liczbę wejść, co oznacza wagi D + 1. Ile mam ukrytych jednostek. H ukrytych jednostek. to jest liczba parametrów od teraz do tutaj, dla ukrytej jednostki w następnej warstwie, jest ona obliczana ponownie, w ten sam sposób, dla klasy końcowej, jest obliczana jak (H + 1) C. więc ostateczna odpowiedź to (D + 1) H + (H + 1) C. W ten sposób możemy obliczyć parametry dla dowolnej złożoności. Powiem jeszcze raz, prostym słowem: sieć neuronowa jest w pełni połączona, pomyśl o pierwszym neuronie, jest połączona ze wszystkimi wejściami D, każde wejście ma wagę, pomyśl o tym jak o g (W0 + W1X1 + .. . WdXd) jest to regresja logistyczna. daje mi to wyjście jednego neuronu. Ile tam jest parametrów? Jakie są stopnie swobody? Ile parametrów się uczy? Uczą się (D + 1) i jest to prawdą nawet w przypadku innych jednostek, ponieważ wszystkie uczą się wag D + 1, więc (D + 1) H. Teraz ta sama logika jest stosowana do następnej warstwy i tak dalej. Weźmy jednostki wyjściowe C, tutaj dane wejściowe będą ukrytymi jednostkami poprzedniej warstwy (H + 1), a ja mam C takich jednostek. więc C (H + 1). W ten sposób możemy obliczyć szereg parametrów dla dowolnej złożoności. Powiedzmy, że mamy w siatkówce 10000 pikseli, to jest twój wkład, powiedz mi, ile różnych nachyleń linii możesz mi powiedzieć. i wyobraźmy sobie, jak wiele wychyleń możemy wykryć wizualnie, jest to 60. możemy nawet zrobić dobrą ocenę, ale powiedzmy 60. To znaczy, że z 10000 wejść trafiłeś do 60 ukrytych jednostek. Teraz, jeśli powiem, nie tylko linie proste, co z krzywymi, możesz wykryć wszystkie rodzaje krzywych, możesz wykryć krzywe o innej orientacji, mogę kontynuować i kontynuować i mogę mieć więcej niż liczbę danych wejściowych, podobnie w następna warstwa, jeśli powiem koła, owal, trójkąty i inne, jeśli idziemy w górę w hierarchii, nie oznacza to, że zmniejszasz liczbę funkcji. to właściwie kombinatoryczna eksplozja. Przy niewielkiej liczbie rzeczy stopień kombinacji faktycznie rośnie i rośnie. Tak właśnie działa głęboka sieć. radzi sobie z taką złożonością. Tak mówi natura, jej natura jest tak złożona, jeśli zwierzę lub człowiek musi zrozumieć taką złożoność, Potrzebujemy bardzo złożonej sieci neuronowej, ale nie możemy tworzyć neuronów, które są różne, więc powiedzmy : Jak mogę stworzyć złożoną sieć z tym samym elementem konstrukcyjnym i tym, co musimy zrobić, zmienia elementy składowe. To jest piękno sieci neuronowej. Każdy neuron wciąż robi to samo. Wszystko, co robi, to liniowa kombinacja danych wejściowych, po której następuje funkcja logistyczna. Wszystkie miliardy neuronów robią dokładnie to samo. Przy takiej prostocie masz tyle złożoności. Ponieważ architektura jest inna. Możesz mnie zapytać, co z klasyfikacją gradientową. Jest to rodzaj regresji logistycznej, która ma gradient. Wyobraźmy sobie początkowo, że te linie są bardzo losowe, jeśli zobaczymy, jak to wygląda przed treningiem, jest bardzo chaotyczne. Nie wiemy nawet, która z tych linii stanie się tą konkretną linią. Potrzebujemy mechanizmu do wykonywania miękkich przejść linii. Wyobraź sobie teraz zespół nowych pracowników, przez który rozwiązywaliśmy 5 problemów, i powiedziałem, że potrzebuję kogoś do wykrycia linii pionowych, kogoś do wykrycia linii poziomej, a oni wszyscy walczą, aby to zrobić. W końcu jakiś facet mówi, pozwól mi znaleźć tę linię, a ty idź i znajdź inną linię, tak, że wszyscy zrobimy coś dobrego, nie możemy dokonać klasyfikacji. Takie zachowanie wyłania się z początkowo przypadkowych dzieci do geniuszu.

JAK DECYDUJESZ O LICZBIE UKRYTYCH WARSTW I JEDNOSTEK?

Ważne jest, w jaki sposób decydujesz o liczbie klastrów w klastrze K-średnich, jak decydujesz o głębokości drzewa decyzyjnego, jak decydujesz o K w najbliższych sąsiadach, jak decydujesz o szerokości okno parzana, wszystkie są hiperparametrami. Kontrolują one złożoność modelu. to jest coś, co musisz dać. Nie decydujemy o liczbie danych wejściowych i nie decydujemy o liczbie danych wyjściowych, a nawet nie decydujemy o wagach. Uczymy się ciężarów. Im bardziej złożony model jest wyższy, tym większa może być dokładność, ale należy zapewnić optymalną złożoność. Ludzie pytają mnie, jaki model powinien być odpowiedni? To nie jest właściwe pytanie, właściwe pytanie, czy zależy ci na interpretacji wyników, czy nie? Pozwólcie, że wezmę dwie sytuacje w pierwszej sytuacji, w której chcą wykryć oszustwo, i nie obchodzi ich, że należy to wyjaśnić konsumentowi, dlaczego nazywamy to oszustwem. Tutaj interpretacja modelu nie jest ważna, ważność modelu była ważna. W tym przypadku korzystamy z sieci neuronowej, ponieważ bardzo trudno ją interpretować. Jeśli zależy Ci na interpretacji, musimy skorzystać z drzewa decyzyjnego. Pozwól, że wezmę inny przykład, w innym przypadku, jeśli odrzucisz pożyczkę dla kogoś, musisz podać powody, nie możesz po prostu odrzucić pożyczki, musisz mieć ważny powód, dlatego tutaj interpretacja modelu jest bardzo ważna, nie można tutaj zbudować sieci neuronowej, nawet kosztem mniejszej dokładności używamy drzew decyzyjnych, ponieważ interpretowalność jest wysoka. Decydując między drzewami decyzyjnymi a sieciami neuronowymi, musisz zapytać, która z nich jest dla Ciebie ważniejsza - jej dokładność lub interpretowalność. Istnieją inne takie kryteria. Kryteria określają, jak szybko zmienia się twój model ?. Jeśli masz do czynienia z bardzo dynamicznym środowiskiem, jeden model, który zbudowałeś na lato, nie będzie działał na zimę, to musisz przebudować swój model, więc czy mogę szybko odbudować model? Ile czasu zajmuje zbudowanie modelu? Innym kryterium jest to, czy twoja decyzja jest podejmowana w czasie rzeczywistym czy w partii? Jeśli decyzja jest podejmowana w czasie rzeczywistym, musisz zbudować model, który może szybko przetwarzać dane i podejmować decyzję. podjęcie decyzji w sprawie oszustwa związanego z kartą kredytową musi być decyzją podejmowaną w czasie rzeczywistym. Ale jeśli budujesz model oceny kredytu , możesz użyć drzewa decyzyjnego. Więc możesz zadać mi jeszcze jedną wątpliwość, czy mogę użyć KNN? Może być bardzo dokładny, ale zajmie to dużo czasu, ponieważ w KNN oblicza odległość od wszystkich punktów, więc nie można go używać w czasie rzeczywistym. Właściwe pytanie nie brzmi, który model jest dobry? Właściwe pytanie brzmi: na jakich kryteriach Ci zależy? Pozwól, że powiem ci, jakie są cztery kryteria, na które musisz spojrzeć.

1. Podejmowanie decyzji w czasie rzeczywistym czy nie?
2. Dokładność, której potrzebujesz, czy nie?
3. jak szybko trzeba odbudować swój model?
4. Interpretowalność ma znaczenie czy nie?

pomyśl o tych czterech pytaniach, a następnie zdecydujesz, której techniki modelowania należy użyć. Idea złożoności jest taka: Wyobraź sobie, co się stanie, jeśli nałożą jeszcze jedną ukrytą warstwę na tę istniejącą warstwę. Jeśli chcesz bardziej złożoności, innym kierunkiem jest zwiększenie liczby warstw. Pozwól nam zrozumieć równanie: Wyjście z poprzedniej warstwy j-ta jednostka z poprzedniej warstwy, dając ci ważoną sumę, logistycznie na niej, daje wynik następnej warstwy. jest to równanie rekurencyjne, ponieważ g w warstwie n prowadzi do g w n + 1. Ciągle idzie naprzód, to jest to, co robi neuron, ale to, gdzie siedzi, robi różnicę. Rozmawialiśmy o uogólnionych modelach liniowych. Powiedzieliśmy, że jeśli chcemy wykonać regresję liniową, nie chcemy tego robić tylko na X, można to zrobić na dowolnej funkcji X, To właśnie robi ukryta jednostka w przeciwieństwie do jednostki wejściowej, a następnie, to jest nadal model liniowy, zaczynam J od 0, ponieważ W0 jest również częścią tego równania liniowego, nie chcę powiedzieć W0 plus coś, dlatego tutaj wstawiamy 1 i zaczynamy od W0 bezpośrednio. Następnie możemy powiedzieć, że jest to model liniowy, nie możemy poradzić sobie z liniami, musimy upewnić się, że nasze neurony są ograniczone, ponieważ wyobraź sobie, że jeśli twój neuron może naprawdę strzelać bardzo wysoko, twój mózg pęknie, więc zachowaliśmy funkcję logistyczną , wówczas górny koniec staje się pochlebny, więc funkcja logistyczna w kombinacji liniowej prowadzi do wyjścia neuronu. Możemy określić algorytm sieci neuronowej, taki jak poniższy



gdzie Zk(l + 1) → Aktywacja k-tego neuronu w następnej warstwie
f → Funkcja aktywacji
Z0jl → Aktywacja jth Neuronu w bieżącej warstwie
Wjkl → Wagi (parametry)

Pozwól, że podsumuję to samo, istnieją różne komponenty, możesz mapować to do struktury neuronu, więc dane wejściowe to ci faceci, dendryty pochodzące z poprzedniej warstwy, wszystkie są agregowane, wysyłają przez Axon do z drugiej strony, po funkcji aktywacji, jest to wyjście neuronu, który trafia do przyszłych neuronów. Neuron nie wie, co zrobić z wyjściem, po prostu mówi, że jeśli się ze mną połączycie, to właśnie otrzymacie. Zadaniem funkcji aktywacyjnych jest upewnienie się, że liniowa rzecz nie idzie w nieskończoność, w kierunku dodatnim lub ujemnym, więc po prostu ogranicza, że w systematyczny sposób istnieją różne rodzaje funkcji aktywacyjnych. Wystarczy spojrzeć na ich kształty, wszyscy robią to samo, niezależnie od tego, co się zbliża, dane wejściowe mogą być bardzo duże, chcę zawrzeć ten zakres wyjściowy w zakresie od 0 do 1. z tego powodu potrzebujemy czegoś powiązać dane wyjściowe. Właśnie dlatego wstawiliśmy regresję logistyczną w pierwszej kolejności. więc kształt się zmienia. Wszystkie te funkcje robią to samo z niewielkimi zmianami, koncepcja jest blisko granicy, musisz być w stanie zrobić coś gładkiego, aby nie wyglądała jak twardy Perceptron, i z dala od granicy muszą być w stanie zawierać wartości od 0 do 1. jeśli te dwie właściwości istnieją, możemy zdefiniować wszystkie rodzaje takich funkcji aktywacyjnych, wszystko to pochodzi z neuronauki, przeprowadzają wiele eksperymentów, aby dowiedzieć się, co to jest właściwa funkcja. Jednym z problemów z sieciami neuronowymi było to, że wiem, jak trenować ciężar tej warstwy, im bardziej wewnętrzna jest warstwa, tym trudniej jest ją poprawić, ponieważ zależy to od wielu rzeczy, które w końcu się wydarzyły,i które doprowadziło do dobra lub zła. Pomyśl o tym w ten sposób, jeśli poproszę dziecko, aby rozpoznało A w porównaniu z 4, neurony, które wykrywają linie, odgrywają rolę, neuron, który wykrywa postać A, odgrywa rolę, że neuron otrzyma bezpośredni wkład, dziecko powiedziało A i to nie jest A. Więc musi się naprawić, ale ta fiksacja cofnie się i powie, czy prawidłowo wykryłeś linię. Czy to może być powód, dla którego nie udało się prawidłowo wykryć A? Tak działa backpropagacja. Był to duży wynalazek w sieciach neuronowych, który sprawia, że sieci neuronowe nawet trenują wewnętrzne węzły.Jeśli jest to jedna warstwa, jest to łatwe. To, co robimy, kiedy budzimy się w ciągu dnia, pobieramy dane, które je przedstawiamy, i otrzymujemy informacje zwrotne, odbieramy informacje zwrotne, a następnie propagujemy i uczymy się itd. Spójrzmy na to samo na danych mieszkaniowych _loan, w danych mieszkaniowych _loan ile mamy danych wejściowych, to 4, i mamy stałą, potem buduję model i mam 3 wyjścia, nie wiem ile ukryte jednostki, których naprawdę potrzebuję, może być mniej lub bardziej niż klasa, bawimy się i szkolimy sieć neuronową dla zestawu danych Housing_loan. Później wezmę jeden przykład z tego rzędu, ma on pewne cechy, neurony już mają pewne ciężary, w oparciu o wagi, którym nadam trochę aktywacji tutaj, która powie mi, czy jestem po tej czy po drugiej stronie linii, i mamy trzy klasy, Wyobraź sobie, że zdecydowałem, że nowy punkt to klasa 3. Jak wygląda wyjście, oczekuję 1 w tym miejscu klasy i 0 w pozostałych dwóch klasach. w ten sposób zamieniasz problem klasyfikacji na problem sieci neuronowej. Ponieważ neuron nie jest jeszcze idealny, może dać ci 0,9, 0,4, 0,6 dla trzech klas, ponieważ nie jest jeszcze w pełni wyszkolony, wówczas znajdujemy błąd i musimy go propagować wstecz, dlatego nazywa się to propagacją wstecznego błędu. Tutaj, w tym przypadku, muszę z powrotem propagować błąd -0,9 błędu, ponieważ zawsze mówimy, że cel minus rzeczywisty (0-0,9) jest błędem. więc wagi powodujące błąd tak wysokie, że teraz spadną. w drugim przypadku nawet ciężary spadną, ale nie tak bardzo, jak w pierwszej sytuacji. w trzecim przypadku otrzymujemy 0,4, więc zwiększamy wagi, aby aktywacja była teraz wyższa. Tak więc błąd musi być propagowany z góry na dół, a dane wyjściowe muszą iść z dołu do góry. Weźmy przykład zastosowań Google do wykrywania zdjęć, które mogą mieć 100 warstw. Interpretacja staje się znacznie bardziej złożona, ale robi coś bardzo potężnego. Ilekroć korzystasz z sieci neuronowych, najpierw dowiedz się wystarczająco dużo o danych, zdecyduj, jak są one złożone, w ten sposób otrzymamy dobry punkt wyjścia i załóżmy, że trzy wyglądają wystarczająco dobrze, a następnie spróbuj z 2 i 4 parzystymi i zobacz jeśli to się poprawi. jeśli poprawi się na 4, pozwól mi spróbować nawet z 5 i tak dalej. To kwestia trafienia i próby. Z tego powodu praca naukowca danych jest nieco trudna. Może wrócić do analizy surowej, zbudować bardzo surowy model, a następnie spojrzeć wstecz, uczyć się i tworzyć model ponownie i tak dalej. Prawdziwym przełomem było to, jak uczysz się tej wagi? Ilość obciążenia idącego w ten sposób jest proporcjonalna do zaangażowania tej jednostki w podejmowanie decyzji. Chodzi o to, że im wyższa waga, tym więcej winy musisz wziąć. Pozwólcie, że wezmę scenariusz biznesowy: Ile błędu popełnił ten dyrektor jest proporcjonalne do kilku rzeczy, takich jak: Ile to był błąd całkowity i co popełnił w tej jednostce, a ile błąd popełnił inny i jaki był jego udział w tej decyzji razem ile korekcji musi wykonać to urządzenie? Wcześniejsza propagacja kumuluje błąd i wysyła go do moich poprzedników. Robię to samo dla moich juniorów, ponieważ w oparciu o ich zaangażowanie zobowiązałem się do mojej V.P. To tak, przekazywanie w przód gromadzi informacje i rozpowszechnia oraz wsteczną propagację w gromadzeniu błędów i rozpowszechniania. Spójrz na piękno sieci neuronowych, tych samych neuronów, które robią dokładnie to samo, ale sposób, w jakie są połączone, przekazują informacje i błędy i uczą się dalej. Więc wagi ciągle się uczą. To był przełom i dlatego wszyscy dzisiaj mamy karty kredytowe. Wyobraź sobie, że gdybyśmy nie zastosowali sieci neuronowych do problemu wykrywania oszustw, banki zostałyby zamknięte w systemie kart kredytowych. Sieć neuronowa jest bezstanowa, w zasadzie wymaga jednego wejścia i daje jedno wyjście, i bierze ten błąd i propaguje się z powrotem. Nic nie wie o następnym przykładzie. Pamiętaj, IID (niezależne i identycznie rozmieszczone), neurony są bezstanowe, robi to do tyłu i do przodu. W wielu innych sytuacjach potrzebujesz stanu, na przykład chcesz zdecydować, jak głośno chcesz porozmawiać z przyjacielem, to zależy od tego, gdzie jesteś. Tutaj jest stan, w którym przebywasz i jak daleko on jest lub w pobliżu. Zasadniczo pomyśl o stanie w środowisku, w którym poprzedni stan również przyczynia się do następnego wyniku. W sytuacji, gdy zwykłe sieci neuronowe nie działają, wymyślono coś nowego, zwanego rekurencyjnymi sieciami neuronowymi. W tym przypadku co robi? Pobiera bieżący sygnał wejściowy, generuje stan, ale potem zapamiętuje stan, który staje się ponownie sygnałem wejściowym, teraz mówimy, że tutaj jest twój aktualny sygnał wejściowy, tutaj jest twój stan, razem zdecydujemy, co powinno być następnym wyjściem. Ilekroć masz sekwencyjne problemy z uczeniem się, takie jak uczenie się przewidywania rynku akcji, musisz pamiętać poprzedni stan, a jeśli chcesz przewidzieć następne słowo w sekwencji słów, musisz pamiętać stan. Za każdym razem, gdy dzieje się coś, pojawia się wewnętrzna pętla sprzężenia zwrotnego. ponieważ jest to część pamięci w nauce. Jak nasz mózg ma pojęcie pamięci. w grę wchodziłaby rozkładająca się rzecz, ponieważ nie mogę przypisać takiej samej wagi wczorajszej nauce i jednemu miesiącowi nauki. To jest jak rozkład wykładniczy. Pomyśl o tym, wiesz, co zrobiłeś dziś rano, ale nie wiesz, co zrobiłeś 5 dni temu , więc twój stan jest zawsze aktualny. Innym rodzajem sieci neuronowej jest sieć kompresyjna. Jeśli zrobimy zdjęcie aparatem, dostanę zdjęcie w formacie png, jest ono bardzo duże, a następnie go kompresuję. kiedy kompresja nie jest wystarczająco dobra, powinieneś być w stanie ją rozpakować. Tylko wtedy otrzymasz obraz JPEG. W tej sytuacji nie uczy się niczego zwanego nadzorowanym, nie mówi X do Y, to znaczy, X do skompresowanej wersji X, a następnie rozpakowuje się, teraz wejście i wyjście powinny być podobne. Jeśli kompresja jest dobra, to co robią, przyjmują te same liczby, umieszczają te same liczby na wyjściu, a następnie uczą się sieci, jest to technika uczenia się bez nadzoru, ponieważ nie ma zmiennej Y. Możesz użyć tego wszędzie tam, gdzie używasz PCA, PCA jest projekcją liniową. Skompresowane sieci neuronowe są projekcjami nieliniowymi. To jest jak koder mowy, nasze telefony używają tego, twój głos najpierw jest kompresowany, a następnie przesyłany na kanale, a następnie inny facet go odbiera, ma ten sam dekoder-dekoder, używa dekodera do dekompresji i usłyszy niewielką odmianą tego, co oryginalne. Tutaj nie uczymy się mapowania między czymś a czymś innym. Tak jak mapujemy funkcje do etykiet klas. Ale ten problem kompresji oznacza, że musisz nauczyć się kompresji i dekompresji, aby ogólny błąd rekonstrukcji ogólnego efektu został zminimalizowany. Szybkość uczenia się jest kolejnym parametrem, który musimy określić, tak jak podaliśmy Ukryte jednostki. ogólnie rzecz biorąc, zaczynamy od małej szybkości uczenia się i jeśli uważamy, że jest to bardzo powolna, wówczas zwiększamy szybkość uczenia się, ale w pewnym momencie, jeśli zbyt mocno zwiększymy szybkość uczenia się, zostanie ona przetrenowana, więc musimy znaleźć optymalną szybkość uczenia się . Ważnym czynnikiem jest współczynnik uczenia ?, który określa, o ile zmieniamy wagi w na każdym kroku. Jeśli ? jest zbyt małe, algorytm zbiegnie się długo. I odwrotnie, jeśli ? jest zbyt duże, możemy w końcu odbić się od powierzchni błędu poza kontrolą, algorytm się rozbiera.

BUDOWANIE SIECI NEURONOWYCH W ZBIOREZ DANYCH HOUSING_LOAN

Krok 1: Zainstaluj i załaduj wymagane pakiety
install.packages('neuralnet')
library("neuralnet")
library(dummies)
library(vegan)
Krok 2: Ładowanie danych do R:
loandata=read.csv(file="D:\\R data\\Housing_loan.csv", header=TRUE, sep=",")
fix(loandata)
Krok 3: Usuń kolumnę Identyfikator kolumny z danych
loandata2=subset(loandata, select=-c(ID))
fix(loandata2)
Edu_dum =dummy(loandata2$Education)
loandata3=subset(loandata2,select=-c(Education))
fix(loandata3)
loandata4=cbind(loandata3,Edu_dum)
fix(loandata4)
Krok 4: Standaryzuj dane, stosując metodę "Range"
loandata_stan=decostand(loandata4,"range")
fix(loandata_stan)
# Ustaw ziarno, aby uzyskać te same dane za każdym razem
set.seed (123)
Krok 5: Pobierz losową próbkę 60% rekordów danych pociągu
train = sample(1:1000,600)
loan_train = loandata_stan[train,]
# Pobierz losową próbkę 40% rekordów dla danych testowych
test = (1:1000) [-train]
loan_test = loandata_stan[test,]
table(loandata_stan$Loan_sanctioned)
table(loan_train$Loan_sanctioned)
table(loan_test$Loan_sanctioned)
rm(loandata2, loandata3, loandata4,loandata_stan, Edu_dum, test, train)
Krok 6: Zbuduj sieć neuronową
nn <- neuralnet(Loan_sanctioned~ Age+Experience+
Income+Family+ Education1+Education2+ Education3,
data=loan_train, hidden=c(2,3))
out <- cbind(nn$covariate, nn$net.result[[1]])
fix(out)
dimnames(out) = list(NULL,c ("Age","Experience","Income","Family","Education1","
Education2", "Education3","nn-output"))
Krok 7: Wyświetl najlepsze rekordy w zestawie danych
head(out)
plot(nn)
Krok 8: Przygotowanie danych do matrycy klasyfikacji
p=as.data.frame(nn$net.result)
colnames(p)="pred"
pred_class <- factor(ifelse(p$pred > 0.5, 1, 0))
a <- table(pred_class, loan_train$Loan_sanctioned)
recall <- a[2,2]/(a[2,1]+a[2,2])*100
Krok 9: Pobieranie wymaganych kolumn z danych
test_data2=subset(loan_test, select=-c(Loan_sanctioned))
new.output <- compute(nn,covariate=test_data2)
p=as.data.frame(new.output$net.result)
colnames(p)="pred"
pred_class <- factor(ifelse(p$pred > 0.5, 1, 0))
a <- table(pred_class,loan_test$Loan_sanctioned)
recall <- a[2,2]/(a[2,1]+a[2,2])*100
recall
Krok 10: Zagraj z różnymi strukturami węzłów (3), (2,2), (4,3)

Możemy wziąć różne ukryte warstwy i różne ukryte dane wejściowe i stworzyć model, sprawdzić ich dokładność i przywołać procenty. Następnie sfinalizuj model na podstawie dokładności i przywołaj zestaw danych sprawdzania poprawności (testowania).

KROK 17

Obsługa Maszyn Wektorowych

WPROWADZENIE

Support Vector Machine (SVM) to narzędzie do klasyfikacji i regresji, które wykorzystuje teorię uczenia maszynowego, aby zmaksymalizować dokładność predykcyjną, jednocześnie automatycznie unikając nadmiernego dopasowania do danych. Ilekroć myślimy o stworzeniu modelu, myślimy o kilku rzeczach, takich jak złożoność, determinizm, próbkowanie, cechy itp. Złożoność: w dobrej technice modelowania powinniśmy być w stanie kontrolować jej złożoność, w przypadku mieszanki Gaussa złożoność jest liczbą komponentów o złożoności sieci neuronowej to liczba ukrytych jednostek i ukrytych warstw. Determinizm: chcę, aby algorytm wytwarzał ciągle to samo z tymi samymi danymi treningowymi. Wyobraź sobie inne algorytmy w zależności od punktu początkowego, który idzie gdzie indziej. nie jest to pożądana właściwość, ale dzieje się tak, gdy masz złożony model. Perceptron, sieci neuronowe, K-oznacza Klastry mają ten sam problem, za każdym razem nie dają tego samego wyniku.



Optimal Hyper Plane: Problem klasyfikacji można ograniczyć do kontemplacji problemu dwóch klas bez utraty ogólności. W tym problemie celem jest rozróżnienie dwóch klas za pomocą funkcji indukowanej na podstawie przedstawionych przykładów. Celem jest stworzenie klasyfikatora, który będzie działał dobrze na niewidzialnych przykładach, tj. dobrze się uogólni. Istnieje wiele potencjalnych klasyfikatorów liniowych, które mogą oddzielić dane, ale jest tylko jeden, który maksymalizuje margines (maksymalizuje odległość między nim a najbliższym punktem danych każdej klasy). Ten liniowy klasyfikator nazywa się optymalną hiperpłaszczyzną oddzielającą. Powiedzmy, że mam zestaw danych z problemem dwóch klas, chcę zbudować klasyfikator i używam Perceptron jako klasyfikatora. Perceptron, bez względu na to, gdzie się zaczyna, kontynuuje naukę i gdy tylko przestaje popełniać błąd, przestaje się uczyć. Możemy mieć wiele perceptronów (Infinite) dla zestawu danych, który ma problem z dwiema klasami. Wszystkie te perceptrony mają ten sam koszt błędnej klasyfikacji, co zero. więc wszystkie te mogą być prawidłowymi modelami. Ale co jest z nimi nie tak? Po pierwsze, nie są deterministyczne, co oznacza, że za każdym razem, gdy zaczynam gdzie indziej, daje to inny rezultat. Jest jeszcze jeden problem, są punkty, które są naprawdę blisko granicy. Więc jest to delikatny model. Jeśli otrzymam nieco inny punkt danych, może popełnić duży błąd. Nie tego chcemy. Chcieliśmy, aby model był bardziej solidny. Teraz, gdy mamy te problemy, powinniśmy spróbować czegoś lepszego niż istniejące modele, takie jak pojawił się SVM. Pomyśl teraz intuicyjnie, gdzie powinna być granica decyzyjna. Powinien znajdować się daleko od obu punktów danych, czyli w środku najbliższych punktów danych. Granica decyzji musi być solidna. niewielkie zmiany i hałas nie powinny wpływać na granicę decyzji.



Wyobraź sobie, że są to dwie wioski, a ty chcesz zrobić między nimi drogę. Droga musi być tak szeroka, jak to możliwe, ale istnieje ograniczenie, jeśli chcę zbudować szeroką drogę, ale nie chcę rozbijać domów. Próbujemy tutaj zbudować granicę tak solidną, jak to możliwe, bez niszczenia domów po obu stronach. Jaki byłby dobry klasyfikator? Chcę liniowego klasyfikatora takiego, że chcę narysować linię po obu stronach i zatrzymać się tam, gdzie jest pierwszy dom. a następnie spojrzeć na szerokość tej drogi. Jest to również nazywane klasyfikatorem maksymalnego marginesu. Tutaj nie wszystkie punkty danych są ważne, punkty danych znajdujące się w pobliżu granicy są ważne. Pytanie brzmi, czy możesz znaleźć domy, wzdłuż których mogę zrobić drogę. Pozwól nam zobaczyć jak matematyk rozwiązuje problem uczenia maszynowego. Jeśli mam hiperpłaszczyznę i chcę zmierzyć odległość prostopadłą między początkiem a linią, będzie to tyle (- B / | w |).



Więc chcę znaleźć W i B, próbujemy tutaj, jeśli moglibyśmy znaleźć środek drogi, jeśli pójdziesz +1 tutaj lub -1 tutaj nie powinno być nic (żadnych domów) pomiędzy nimi. Tak więc równanie wygląda mniej więcej tak: Xi (najbliższy punkt danych), dla wszystkich domów, które są po jednej stronie drogi, warunek ten powinien obowiązywać (W + B> = +1) dla wszystkich domów, które są na po drugiej stronie drogi, drugi stan powinien się utrzymać. (W + B <= -1). Teraz pamiętaj, co robią Perceptron, Perceptron mówi, że Xi W + W0 jest> 0 lub <0. W Perceptron, gdy tylko przekroczysz granicę, znajdziesz się po drugiej stronie. Nie ma pojęcia marginesu. To tylko linia. W SVM potrzebujemy marginesu błędów, więc zamiast powiedzieć 0, wstawimy tutaj 1 i -1. Jest to jedyna różnica między Perceptronem, który ma zerową marżę a SVM, która ma maksymalny margines, co oznacza, że zwiększamy grubość perceptronu. Jeśli umieścimy oba powyższe równania w jednym, otrzymamy Yi (Xi.W + B) -1> = 0. W uczeniu nadzorowanym zawsze definiujemy funkcję celu i rozwiązujemy ją. Funkcja celu składa się z dwóch części. (Maksymalizuj, ograniczenia). Tutaj staramy się zmaksymalizować margines pod warunkiem, że nie będzie szkód dla domów. Powiedz mi teraz, ile tu jest ograniczeń? Wróćmy do sytuacji programowania liniowego. W programowaniu liniowym rysujemy wiązkę linii, które są uważane za ograniczenia liniowe. Dlatego uważamy, że powinno to znajdować się po jednej stronie linii. Nie mogę narysować linii tak szerokiej, jak to możliwe, ponieważ mam ograniczenie, że nie mogę rozbić domów. Mam teraz N (łączną liczbę punktów danych), ponieważ nie mogę złamać żadnego z domów. Na wstępnym schemacie wszystkie linie są możliwe, ale musimy dalej dostroić moją funkcję celu, aby uzyskać unikalną linię lub optymalne rozwiązanie. Linia położona najdalej z obu stron jest najlepsza, ponieważ maksymalizuje margines. Kiedy formułujemy problem, oznacza to tylko, że gdyby to była linia, jaki byłby margines, jakie byłyby ograniczenia, a następnie rozwiązaliśmy dla tego, co byłoby linią. To tak, jakby X był rozwiązaniem i rozwiązał dla X. Jeśli spojrzymy na matematykę, Geometria mówi: Jeśli narysowałem prostopadłą linię od początku do dowolnej linii, wówczas długość wynosi (-b / w). wtedy, gdy spojrzymy na pozostałe dwie linie, jedna jest powyżej, a druga poniżej, ich długość wynosiłaby (1-b / w) i (-1-b / w), Margines byłby jednym równaniem minus inne równanie. B zostaje anulowane, a otrzymujemy 2 / W.



Tutaj mamy funkcję celu i zestaw ograniczeń. Ograniczenia to liczba punktów danych, ponieważ nie możemy rozbić żadnego domu W wiosce każdy punkt danych (Dom) jest moim ograniczeniem. Naszym celem jest optymalizacja funkcji celu przy danych ograniczeniach. W tej sytuacji Lagrange zaproponował Mnożnik, który mówi, że musimy zapłacić pewną karę za złamanie każdego ograniczenia. Załóżmy, że w przypadku naruszenia i-tego ograniczenia płacisz karę Alpha I Ci (x). Ta alfa nazywa się mnożnikiem Lagrange'a. Następnie sumujemy wszystkie kary. W algorytmie maszyny wektorowej Wsparcia możemy zastosować trzy triki:

1. Konwersja pierwotna na podwójną
2. Zmienne swobodne
3. Wybór jądra

Pomyśl tylko, że naszym celem jest maksymalizacja marginesu, więc naruszenie ograniczenia powinno zminimalizować wartość. Musimy więc odjąć ogólne sumowanie kar od funkcji celu, którą staramy się maksymalizować.

PODSTAWOWA PODWÓJNA KONWERSJA

Mnożnik Lagrange′a: Pozwólcie, że wezmę prosty przykład, abyście mogli zrozumieć całą teorię. Wyobraźmy sobie, że twoja żona dzwoniła do ciebie i powiedziała, że o 19.30 planuje wyjść na zakupy. Teraz Twoim celem jest wczesne dotarcie do domu. To jest twoja funkcja celu. Masz zestaw ograniczeń, takich jak wcześniejsze zakończenie pracy, nie jeźdź bardzo szybko, nie przeskakuj sygnału, nie uderzaj w żaden pojazd itp., Jeśli naruszysz którekolwiek z tych ograniczeń, zostaniesz ukarany, kara różni się od jedno ograniczenie do drugiego. Na koniec sumujemy wszystkie kary i odejmujemy je od funkcji celu, którą próbujesz zmaksymalizować. Musimy pomyśleć, czy naruszając jakiekolwiek ograniczenie, czy nie, osiągnęliśmy nasz cel. Gdybyśmy nie złamali żadnego ograniczenia, nasza kara wyniósłaby zero.



Pierwotny problem Lagrange′a wygląda tak jak powyżej i musimy zrozumieć, że chcemy przekształcić ten pierwotny problem w podwójny problem, abym mógł pozbyć się W i B. Ponieważ jeśli znam alfę, potrafię obliczyć w i b. tak jest, jeśli wiem, jakie są domy, których nie powinienem burzyć podczas układania drogi, mogę odpowiednio zaplanować swoją drogę. Podwójna postać równania wygląda tak, że nie mamy wi i b



Ważną rzeczą do zapamiętania jest to, że możemy zmaksymalizować margines, identyfikując te punkty danych (domy), które będą stanowić granicę, w zasadzie są to tak zwane wektory wsparcia. Są to wektory, ponieważ są to punkty w przestrzeni o dużych wymiarach i są to punkty (wektory) podtrzymujące płaszczyznę (granica decyzji). Mamy jedno ograniczenie dla jednego punktu danych, a po rozwiązaniu tego wygenerowaliśmy wiązkę wartości alfa dla każdego punktu danych. Te wartości alfa mówią, że punkt ten znajduje się w pobliżu granicy decyzji, czy nie. Ważne jest, aby zrozumieć, że większość wartości alfa wynosi zero, ponieważ większość punktów danych znajduje się w granicach (większość domów znajduje się w wiosce). Musimy tu zrozumieć, że im wyższa wartość alfa, tym wyższy punkt znajduje się na drodze.

ZMIENNE SWOBODNE

Do tej pory omawiamy dane, które można rozdzielić liniowo. Teraz zastanów się, co się stanie, jeśli punktów danych nie da się rozdzielić liniowo. Wyobraź sobie tylko dane ze świata rzeczywistego, których zwykle nie można oddzielić liniowo. Tutaj musimy zastosować jeszcze jedną sztuczkę zwaną zmiennymi swobodnymi. Jeśli zestawu treningowego nie da się rozdzielić liniowo, stosujemy standardowe podejście, aby pozwolić marginesowi decyzji dotyczącej tłuszczu popełnić kilka błędów dla niektórych punktów danych, takich jak wartości odstające lub hałaśliwe przykłady, które znajdują się wewnątrz lub po niewłaściwej stronie marginesu. Następnie ponosimy koszty za każdy błędnie sklasyfikowany przykład, który zależy od tego, jak daleko jest do spełnienia wymogu depozytu zabezpieczającego. Aby to zaimplementować, wprowadzamy zmienne luzu. Niezerowa wartość ?i pozwala xi nie spełniać wymogu marży przy koszcie proporcjonalnym do wartości ?i. Problemem związanym z optymalizacją jest zatem kompromis między tym, jak gruby może zrobić margines, a tym, ile punktów należy przesunąć, aby umożliwić ten margines. Margines może być mniejszy niż 1 dla punktu xi poprzez ustawienie >i> 0, ale następnie płaci się karę C?i w minimalizacji za zrobienie tego. Suma ?i daje górną granicę liczby błędów treningowych.Miękkie arginesy SVM minimalizują błąd szkolenia, który jest wymieniany z marginesem. Parametr C jest terminem regularyzacji, który zapewnia sposób kontrolowania nadmiernego dopasowania: ponieważ C staje się duży, nieatrakcyjne jest nieprzestrzeganie danych kosztem zmniejszenia marginesu geometrycznego; gdy jest mały, łatwo jest uwzględnić niektóre punkty danych za pomocą zmiennych swobodnych i ustawić gruby margines , aby modelował większość danych. Obserwuj powyższe punkty danych i podane ograniczenia. Z tymi punktami danych możliwa jest droga, ale



Co to za model?

•  Jaki jest model?
•  Jakie są parametry?
•  Czym jest złożoność?
ZADANIE KERNELA

Jeśli dane można rozdzielić nieliniowo, oznacza to, że jeśli danych nie można oddzielić linią prostą, to chcemy, aby SVM rzutował dane do przestrzeni o większych wymiarach, aby umożliwić to liniowo lub wykonać separację liniową. To się nazywa sztuczka jądra.

BUDOWANIE MASZYNY WEKTOROWEJ W OPARCIU O ZBIÓR DANYCH HOUSING_LOAN

setwd ("Dane D: / R")
# Ładowanie danych do R:
loandata=read.csv(file="Housing_loan.csv", header=TRUE)
# Przygotowanie danych: Usuń identyfikator kolumny z danych
loandata2=subset(loandata, select=-c(ID))
fix(loandata2)
# Zmienna "Edukacja" ma więcej niż dwie kategorie (1: licencjackie, 2: magisterskie, 3: zaawansowane / profesjonalne), # więc musimy utworzyć zmienne zastępcze dla każdej kategorii, aby uwzględnić je w analizie. Utwórz zmienne zastępcze dla zmiennej kategorialnej
# "Edukacja" i dodaj te zmienne obojętne do oryginalnych danych.
install.packages("dummies")
library(dummies)
#Zainstaluj i załaduj pakiet "manekinów", aby utworzyć zmienne zastępcze
Edu_dum=dummy(loandata2$Education)
head(Edu_dum)
loandata3=subset(loandata2,select=-c(Education))
loandata4=cbind(loandata3,Edu_dum)
head(loandata4)
# Standaryzacja danych: Standaryzuj dane, stosując metodę "Range"
install.packages("vegan")
library(vegan)
loandata5=decostand(loandata4,"range")
#Przygotuj zestawy danych o pociągach i testach. Weź losową próbkę 60% rekordów dotyczących pociągu
data
train = sample(1:1000,600)
train_data = loandata5[train,]
nrow(train_data)
# Weź losową próbkę 40% rekordów dla danych testowych
test = (1:1000) [-train]
test_data = loandata5[test,]
nrow(test_data)
# Podsumowanie danych dla zmiennej odpowiedzi "Loan_sanctioned":
table(loandata5$Loan_sanctioned)
#Train Data
table(train_data $Loan_sanctioned)
#Dane testowe
table(test_data$Loan_sanctioned)
# Klasyfikacja za pomocą SVM:
install.packages("e1071")
library(e1071)
# Zainstaluj i załaduj pakiet e1071, aby przeprowadzić analizę SVM.
x = subset(train_data, select = -Loan_sanctioned)
y = as.factor(train_data$Loan_sanctioned)
?svm
model = svm(x,y, method = "C-classification", kernel = "linear", cost = 10, gamma = 0.1)
# Jądro: Jądro używane podczas szkolenia i przewidywania. Możesz rozważyć zmianę niektórych następujących parametrów, w zależności od typu jądra.
# koszt naruszenia ograniczeń (domyślnie: 1) -jest to stała "C" terminu regularyzacji w sformułowaniu Lagrange′a.
# Gamma: parametr wymagany dla wszystkich jąder z wyjątkiem liniowego.
summary(model)
# Test z danymi pociągu
pred = predict(model, x)
table(pred, y)
# Test z danymi testowymi
a = subset(test_data, select = -Loan_sanctioned)
b = as.factor(test_data$Loan_sanctioned)
pred= predict(model, a)
table(pred, b)
model2 = svm(x,y, method = "C-classification", kernel = "radial", cost = 10, gamma = 0.1)
summary(model2)
#Test z danymi pociągu
pred = predict(model, x)
table(pred, y)
#Test z danymi testowymi
pred = predict(model, a)
table(pred, b)

KROK 18

Ensemble Learning

WPROWADZENIE

Przejdźmy do innego wymiaru technik modelowania, zwanego metodami zespolonymi. Do tej pory omawialiśmy poszczególne modele i widzimy, jak radzić sobie z rosnącą złożonością, ale zastanówmy się, co zrobić, jeśli te modele nie są wystarczająco dobre? Jeśli liniowy SVM nie wystarczy, idziemy do wielomianowej SVM stopnia 2, a następnie stopnia 3, jeśli to nie wystarczy, przechodzimy do nieliniowej SVM z jądrem RBF, istnieje sposób na zwiększenie złożoności, ale jak widzieliśmy, wzrost złożoności zwiększy dokładność do jednego określonego poziomu. W tej metodzie ciągle zwiększamy złożoność. Kolejnym dużym obszarem poprawy wydajności modelu jest opracowanie lepszych funkcji. Możesz powiedzieć, że wyodrębniłem wiele funkcji i zbudowałem model, zbudowałem najlepszy możliwy model z tym zestawem funkcji, nie mogę zrobić nic lepszego, pozwól mi wrócić do moich danych, pozwól mi ulepszyć moje funkcje , dodaj jeszcze kilka funkcji, ponownie zbuduj model złożony i ten cykl trwa. Z surowymi funkcjami możemy potrzebować złożonych modeli, ale przy lepszej inżynierii funkcji możemy potrzebować prostego modelu. Przyjmijmy inne podejście do poprawy wydajności naszego modelu, zwane uczeniem się w zespole. W ten sposób, zamiast uczyć się na złożonym modelu, uczymy się wielu prostych modeli i łączymy je. Takie jest podejście do zwiększenia ogólnej złożoności modelu. Zespół jest niczym innym jak grupą rzeczy jako pojedynczą kolekcją. Do tej pory zajmujemy się pobieraniem danych, wydobywaniem niektórych funkcji, szkoleniem modelu, zwiększaniem złożoności modelu i uzyskiwaniem danych wyjściowych. Zespół to technika łączenia wielu słabych uczniów w celu stworzenia silnego ucznia. W statystyce i uczeniu maszynowym metody zespolone wykorzystują wiele modeli, aby uzyskać lepszą wydajność predykcyjną niż można by uzyskać z dowolnego z głównych modeli. Termin zespół jest zwykle zarezerwowany dla metod generujących wiele hipotez przy użyciu tego samego podstawowego ucznia. Ocena predykcji zestawu zwykle wymaga więcej obliczeń niż ocena predykcji pojedynczego modelu, więc zespoły mogą być uważane za sposób na zrekompensowanie słabych algorytmów uczenia się poprzez wykonanie wielu dodatkowych obliczeń. Szybkie algorytmy, takie jak drzewa decyzyjne, są powszechnie stosowane w zestawach.

BAGGING

Bagging jest techniką stosowaną do zmniejszania wariancji naszych prognoz poprzez łączenie wyniku kilku klasyfikatorów modelowanych na różnych podpróbkach (próbkowanie danych) tego samego zestawu danych. Utwórz wiele zestawów danych: Próbkowanie jest wykonywane z zastąpieniem oryginalnych danych i tworzone są nowe zestawy danych. Nowe zestawy danych mogą zawierać ułamek kolumn, a także wierszy, które są ogólnie hiperparametrami w modelu workowania. Pomaga to w tworzeniu solidnych modeli, mniej podatnych na nadmierne dopasowanie. Budujemy wiele klasyfikatorów na każdym zestawie danych i prognozy są dokonywane. Połączone klasyfikatory: prognozy wszystkich klasyfikatorów są łączone przy użyciu wartości średniej lub trybu w zależności od problemu biznesowego. Połączone wartości są w większości bardziej niezawodne niż pojedynczy model. Większa liczba modeli ma zawsze lepszą wydajność niż niższe liczby. Można hipotetycznie wykazać, że wariancja połączonych prognoz jest zmniejszona do 1 / n (n: liczba klasyfikatorów) pierwotnej wariancji. Kroki w agregacji Bootstrap (Bagging):

•  Zaczynamy od wielkości próbki N.
•  Tworzymy dużą liczbę próbek o tym samym rozmiarze. Nowe próbki są generowane z zestawu danych szkoleniowych przy użyciu próbkowania metodą zastępczą. Nie są więc identyczne z oryginalną próbką.
•  Powtarzamy to wiele razy, może 1000 razy, i dla każdej z tych próbek ładowania początkowego obliczamy jego średnią, która nazywa się szacunkami ładowania początkowego.
•  Utwórz histogram z tymi szacunkami, jeśli zapewnia oszacowanie kształtu rozkładu średniej, z którego możemy dowiedzieć się, o ile średnia się zmienia.

Kluczową zasadą bootstrap jest zapewnienie sposobu symulowania powtarzających się obserwacji z nieznanej populacji na podstawie uzyskanej próbki jako podstawy. Pobieramy n *
LASY LOSOWE

Random Forest to metoda uczenia się przez zestaw do klasyfikacji i regresji, polegająca na tworzeniu wielu drzew decyzyjnych. Losowe lasy są dość szybkie i łatwe w użyciu. Potrafią poradzić sobie z rzadkimi danymi, a dzięki Random Forest możemy rozwiązać problem nadmiernego dopasowania. Random Forest może pobierać inny podzbiór (próbkę) danych z zamiennikiem, a nawet może próbkować cechy, co oznacza, że wykonuje próbkowanie danych (obserwacje), a także próbkowanie cech (zmienne). Ostatecznie decyzję podejmuje się większością głosów. W drzewie decyzyjnym budowane jest jedno drzewo decyzyjne, a w algorytmie losowego lasu wiele drzew decyzyjnych jest budowanych podczas procesu. Głosowanie z każdego drzewa decyzyjnego jest brane pod uwagę przy podejmowaniu decyzji o ostatecznej klasie sprawy lub obiektu, nazywa się to procesem zespołowym. Ponieważ wiele drzew decyzyjnych jest budowanych i wykorzystywanych w procesie algorytmu Losowego Lasu, nazywa się to Lasem. Wiemy, że ramka danych ma dwa wymiary: 1. Rzędy i 2. Kolumny. W przypadku budowy drzewa decyzyjnego wybiera się próbki ramki danych zastępując je wraz z wyborem podzestawu kolumn dla każdego drzewa decyzyjnego. Zarówno próbkowanie ramki danych (Próbkowanie danych), jak i wybór podzbioru zmiennych (Próbkowanie cech) odbywa się losowo. Dlatego nazywamy to Losowym Lasem. Losowe lasy poprawiają dokładność predykcyjną o generowanie dużej liczby drzew ładowanych na podstawie losowych próbek zmiennych, klasyfikowanie przypadku przy użyciu każdego drzewa w tym nowym "lesie" oraz podejmowanie ostatecznych przewidywanych wyników poprzez łączenie wyników we wszystkich drzewach.

BUDOWANIE MODELU PRZY UŻYCIU LASU LOSOWEGO

Krok 1: Zainstaluj i załaduj wymagane pakiety i bibliotekę
install.packages('randomForest')
library(randomForest)
Krok 2: Odczytaj dane i utwórz ramkę danych.
Diab<-read.csv(file="D:/R data/Diab.csv",header = T)
Krok 3: Przeglądaj ramkę danych
fix(Diab)
str(Diab)
Krok 4: Ustaw ziarno, aby uzyskać powtarzalne wyniki
set.seed (4848)
Krok 5: Utwórz pociąg i przetestuj zestawy danych Pociąg (70%), Test (30%).
# Weź losową próbkę 70% rekordów danych pociągu
train = sample(1:500,350)
train_data = Diab[train,]
nrow(train_data)
# Weź losową próbkę 30% rekordów dla danych testowych
test = (1:500) [-train]
test_data = Diab[test,]
nrow(test_data)
Krok 6: Zbuduj model za pomocą algorytmu losowego lasu
fit <- randomForest(as.factor(Diabetic) ~ Gender + Age + OGTT + DBP + BMI,
data=train_data, importance=TRUE, ntree=400)
Krok 7: Sprawdź, jakie zmienne były ważne:
varImpPlot(fit)
Krok 8: Sprawdź poprawność modelu, przewidując niewidoczne dane
Prediction <- predict(fit, test_data)
Final <- data.frame(Id = test_data$Pat_Id, Diabetic = Prediction)
fix(Final)
Krok 9: Jeśli nie jesteś zadowolony z wyników modelu, możesz spróbować wnioskowania warunkowego drzewa, które podejmują decyzje za pomocą testu statystycznego, a nie czystości pomiaru.
install.packages('party')
library(party)
fit <- cforest(as.factor(Diabetic) ~ Gender + Age + OGTT + DBP + BMI,
data=train_data, controls=cforest_unbiased(ntree=700, mtry=3))
Prediction <- predict(fit, test_data, OOB=TRUE, type = "response")

W losowym lesie zmuszamy model do przewidywania naszej klasyfikacji, tymczasowo zmieniając zmienną docelową na czynnik z tylko dwoma poziomami, używając as.factor(). Argument ważność = PRAWDA pozwala nam sprawdzać zmienne znaczenie, a argument ntree określa, ile drzew chcemy wyhodować. Jeśli pracujesz z większym zestawem danych, spróbuj użyć mniejszej liczby drzew lub ogranicz złożoność każdego drzewa, używając wielkości węzła, a także zmniejsz liczbę wierszy próbkowanych przy pomocy sampsize. Możesz również zastąpić domyślną liczbę zmiennych do wyboru za pomocą mtry, ale domyślnie jest to pierwiastek kwadratowy z ogólnej liczby, ogólnie działa dobrze. Możemy użyć zastępowania Takes True i False i wskazuje, czy pobrać próbkę z / bez zastępczej bliskości Czy obliczyć miary bliskości między wierszami opcji ramki danych. Oszacowanie błędu braku opakowania (OOB): W losowych lasach nie ma potrzeby weryfikacji krzyżowej lub oddzielnego zestawu testowego, aby uzyskać obiektywną ocenę błędu zestawu testowego. Każde drzewo jest konstruowane przy użyciu innej próbki bootstrap od danych. Około 1/3 przypadków nie została uwzględniona w próbce ładowania początkowego i nie została użyta w konstrukcji drzewa Kth. Umieść każdą skrzynkę pominiętą w konstrukcji k-tego drzewa w dół k-tego drzewa, aby uzyskać klasyfikację. W ten sposób uzyskuje się klasyfikację zestawu testowego dla każdego przypadku w około 1/3 drzew. Na koniec biegu bierz j, aby być klasą, która zdobyła większość głosów za każdym razem, gdy przypadek n był nieobliczalny. Proporcja razy, gdy j nie jest równa prawdziwej klasie n uśrednionej we wszystkich przypadkach, jest oszacowaniem błędu OOB, który okazał się być bezstronny w wielu testach. Niedociągnięcia w losowym lesie Zmienne znaczenie: Losowy las jest bardzo popularny jako technika selekcji zmiennych. Ma jednak również pewne wady. Jeśli zmienne niezależne innego rodzaju są losowe, zmienna ważności lasu może być myląca. Jeśli wszystkie zmienne niezależne są kategoryczne, ale mają różne kategorie, losowa miara ważności zmiennej lasu może być myląca. Aby rozwiązać oba powyższe problemy, powinniśmy zastosować warunkowy las wnioskowania, tj. Las. Jeśli zmienne niezależne są skorelowane, miara ważności losowej zmiennej lasu może być myląca. Nawet las warunkowy nie usuwa całkowicie problemu wielokoliniowości. W pewnym stopniu rozwiązuje problem kolinearności.

REZERWACJA

Zwiększenie wydajności jest bardziej systematycznym sposobem poprawy wydajności poprzez łączenie różnych klasyfikatorów. Rozważ utworzenie trójskładnikowych klasyfikatorów dla problemu dwóch kategorii poprzez wzmocnienie.

1. Losowo wybierz n1 2. Wybierz n2 3. Wybierz wszystkie pozostałe próbki z D, z którymi C1 i C2 się nie zgadzają, i trenuj słabego ucznia C3. Ostatecznym klasyfikatorem jest głos słabych uczniów.
4. Jeśli przybliżenia replikowane podczas ładowania początkowego były prawidłowe, wówczas pakowanie zmniejszyłoby wariancję bez zmiany obciążenia. W praktyce pakowanie może zmniejszyć zarówno stronniczość, jak i wariancję. W przypadku klasyfikatorów o dużym odchyleniu może zmniejszać odchylenie, a w przypadku klasyfikatorów o dużej zmienności może zmniejszać wariancję.

Adaboost: W Adaboost zamiast każdorazowego pobierania próbek do każdej próbki przypisywana jest waga. Waga to prawdopodobieństwo, że próbka zostanie wybrana w klasyfikatorze. Działa z klasyfikatorami binarnymi, które są lepsze niż losowe rzuty monetą (błąd mniejszy niż 0,5). Pomysł polega na takim dostosowaniu wagi, aby te rekordy, które zostały nieprawidłowo sklasyfikowane, zostały wybrane do drugiego poziomu klasyfikacji przez drugi klasyfikator. Tak więc, jeśli klasyfikator popełni błąd przy przewidywaniu zmiennej, jej waga wzrośnie. Następnie klasyfikator jest definiowany jako liniowa kombinacja wszystkich słabych klasyfikatorów. Wynikiem jest tryb przewidywania wszystkich klasyfikatorów. Powiedzmy, że mamy zestaw danych (x1, y1),… (xm, ym), gdzie x to wartość, a y to, czy został wybrany przez klasyfikator. Zatem y przyjmuje wartość -1 lub 1. Zaczynamy od początkowych wag, wybieramy klasyfikator tak, aby błąd w odniesieniu do rozkładu był minimalny i mniejszy niż 0,5. Słaby klasyfikator ma mniej niż 50% błędu, ale nadal jest niezadowalający (50% to przypadek rzutu monetą, a zatem błąd ponad 50% nie jest dopuszczalny nawet dla słabego klasyfikatora



Tutaj jest błąd pojedynczego klasyfikatora. Po sklasyfikowaniu za pomocą pierwszego słabego klasyfikatora aktualizujemy wagi tak, aby



Zt jest czynnikiem normalizacyjnym zapewniającym, że D jest zawsze rozkładem. Tak więc, jeśli dane pole jest poprawnie sklasyfikowane, wykładniczy składnik jest niski (ponieważ y jest dodatnie). Dlatego waga jest niska. Dla tych, którzy są źle sklasyfikowani, y jest ujemne, a zatem wykładnicze jest duże, a zatem wagi rosną. Kontynuujemy wszystkie słabe klasyfikatory i na każdym etapie wybieramy klasyfikator, który minimalizuje błąd. W ten sposób jest to chciwy algorytm. We wczesnych iteracjach wzmocnienie jest podstawową metodą zmniejszania uprzedzeń, aw późniejszych iteracjach wydaje się być przede wszystkim metodą zmniejszania wariancji. Błąd szkolenia jest definiowany w każdej rundzie stanowi ułamek błędnie sklasyfikowanych obserwacji.



Błąd treningu spada wykładniczo szybko. Wybierz ?t, które minimalizują Zt. Nie ma parametrów do dostrojenia (z wyjątkiem liczby rund). Jest szybki, prosty i łatwy w programowaniu. Zawiera zestaw teoretycznych gwarancji (np. Błąd szkolenia, błąd testu) Zamiast próbować zaprojektować algorytm uczenia, który będzie dokładny w całej przestrzeni, możemy skupić się na znalezieniu podstawowych algorytmów uczenia, które muszą być lepsze niż losowe. Może identyfikować wartości odstające: tzn. Przykłady, które są albo błędnie oznakowane, albo z natury niejednoznaczne i trudne do sklasyfikowania. Jednak faktyczna wydajność wzmocnienia zależy od danych i podstawowego ucznia. Wzmocnienie wydaje się być szczególnie podatne na hałas.

Bagging kontra Boosting: Bagging zawsze wykorzystuje resampling zamiast ponownego ważenia. Pakowanie nie modyfikuje rozkładu na przykładach lub błędnych etykietach, ale zamiast tego zawsze używa rozkładu jednolitego. Formułując ostateczną hipotezę, workowanie przypisuje jednakową wagę każdej ze słabych hipotez.

BUDOWANIE MODELU ZA POMOCĄ ADABOOST

# Krok 1: Ładowanie danych do R:
setwd("D:/R data")
loandata=read.csv(file="Housing_loan.csv", header=TRUE)
# Krok 2: Przygotowanie danych:
Usuń kolumny ID i płeć z danych
loandata2=subset(loandata, select=-c(ID, Gender))
fix(loandata2)
# Krok 3: Utwórz zmienne zastępcze dla zmiennej kategorialnej "Edukacja" i dodaj te zmienne zastępcze do pierwotnych danych
#Zainstaluj i załaduj pakiet "manekinów", aby utworzyć zmienne zastępcze
install.packages("dummies")
library(dummies)
Edu_dum=dummy(loandata2$Education)
head(Edu_dum)
loandata3=subset(loandata2,select=-c(Education))
loandata4=cbind(loandata3,Edu_dum)
fix(loandata4)
# Krok 4: Standaryzacja danych:
Standaryzuj dane, stosując metodę "Range"
install.packages("vegan")
library(vegan)
loandata5=decostand(loandata4,"range")
# Krok 5: Przygotuj zestawy danych dotyczące pociągów i testów
# Weź losową próbkę 60% rekordów danych pociągu
train = sample(1:1000,600)
train_data = loandata5[train,]
nrow(train_data)
# Weź losową próbkę 40% rekordów dla danych testowych
test = (1:1000) [-train]
test_data = loandata5[test,]
nrow(test_data)
# Krok 6: Podsumowanie danych dla zmiennej odpowiedzi "Loan_sanctioned":
# Dane ogółem
table(loandata5$Loan_sanctioned)
#Train Data
table(train_data $Loan_sanctioned)
#Dane testowe
table(test_data$Loan_sanctioned)
# Krok 7: Klasyfikacja za pomocą Adaboost:
#Install & Load pakiet - ada do wykonania analizy SVM.
install.packages("ada")
library(ada)
x = subset(train_data, select = -Loan_sanctioned)
y = as.factor(train_data$Loan_sanctioned)
Ada_20=ada(x,y,iter=20,nu=1,loss="logistic", type="discrete")
summary(Ada_20)
# Krok 8: Dodaj zestaw danych testowych
a = subset(test_data, select = -Loan_sanctioned)
b = as.factor(test_data$Loan_sanctioned)
Ada_t20=addtest(Ada_20,a,b)
pred = predict(Ada_t20, a)
table(pred, b)
# Krok 9: Rysuj Ada_t20
plot(Ada_t20,TRUE,TRUE)
# Krok 10: Spróbuj z 50 iteracjami
Ada_50=ada(x,y,iter=50,nu=1,loss="logistic", type="discrete")
summary(Ada_50)
Ada_t50=addtest(Ada_50,a,b)
pred = predict(Ada_t50, a)
table(pred, b)
#Plot Ada_50
plot(Ada_t50,TRUE,TRUE)
#Krok 11: Spróbuj użyć różnych iteracji, takich jak iter = 100.500.1000, aby sprawdzić dokładność i napraw model.frame ()



; •