Język R, Studio R, R Gui

0

Dzień dobry,
Jestem osobą zieloną w temacie języka R i szukam pomocy/ wytłumaczenia/ poinstruowana mnie w zadaniach z zakresu analizy regresji, sieci neuronowej i drzewa klasyfikacyjnego. Bardzo proszę o pomoc.

0

Tyle tematów, ale to nie jest ściśle związane z R, chyba, że jeszcze pomoc jak to zaimplementować.

Regresja jest dość prosta i wymagana do zrozumienia optymalizacji sieci neuronowych dla najprostszego przypadku funkcji linowej, mamy różne metody wybierzemy tą bazującą na pochodnych.
Jak policzysz pochodną z funkcji y=ax+b i liczymy pochodną po A to otrzymamy same x.
Obliczyliśmy pochodną analitycznie.

Ale to nam nic nie daje jak umiesz z dwóch punktów wyliczyć funkcję liniową, to obliczyłeś pochodną numerycznie.
Takie coś się w podstawówce robi, a nikt nigdy nie powie, że to obliczanie pochodnej.

I teraz tak mamy jakąś funkcję liniową i jej wynik daje nam wysokość dla jakiegoś X, czyli wartość Y.
Mamy też punkty, które znamy, dla x = 1, mamy y =5 itp.

Tworzymy funkcję, która opisze nam jak bardzo nasza funkcja różni się od punktów, które zadaliśmy.
Taka najprostsza to błąd absolutny, błąd średnio kwadratowy, no dużo tego, błąd absolutny to Y który znamy odjąć Y jaki nasza funkcja przewidziała, a średnio kwadratowy to odejmujem tak jak błąd absolutny dajemy do kwadratu, czyli im większy dystans tym bardziej karamy większe odległości i sumujemy, dzielimy przez ilość.
Tutaj mówię o regresji liniowej.

y_true to dane, których chcemy, żeby sieć się nauczyła, y=ax+b to nasze neurony x - to są dane wejściowe, a i b parametr to zmienne do nauczenia.
Robimy błąd średnio kwadratowy, Mean square ERror, chyba że źle przetłumaczyłem, trochę wypiłem dzisiaj.

Dostajemy (y_true - (ax+b))^2 liczymy pochodną po a i po b, otrzymujemy 2*(y_true - (ax+b)) -a gradient dla parametru A zapisujemy a.grad i dla b.grad = 2*(y_true - (ax+b)) -1
teraz robimy gradient descent, czyli do parametru a dodajemy a = a - learning_rate * a.grad i do b = b- learning_rate * b.grad

A teraz ci powiem co to gradient descent, jak pochodna jest dodatnia to funkcja liniowa ma nachylenie do góry czyli się wspina, jak ujemny to w dół.
chcemy, żeby błąd był jak najmniejszy błąd średnio kwadratowy określa jak bardzo nasza funkcja nie pasuje do danych.
Czyli chcemy, żeby cały czas parametry szły w kierunku malenia tego błędu i jak pochodna jest ujemna, to znaczy, że w zwiększając x maleje błąd, to musimy odejmować dlatego jest a = a- learnig_rate * a.grad, jakbyśmy chcieli żeby błąd rósł to z minus na plus zmieniamy i to esencja gradient descentu.

No i ty było dla pojedynczego neuronu, jak połączymy tak kilka to mamy sieć neuronową, ale liniową jak dodanym po funkcji liniowej funkcję aktywacji np. relu, sigmoid to otrzymamy funkcję nieliniową, ale wtedy też trzeba policzyć gradient po całej funkcji, ale te relu i sigmoid to zawsze się stosuje w wewnętrznych warstwach, a zewnętrzne masz zwykle dwie liniowa lub softmax gdzie softmax to rozkład prawdopodobieństwa, równy 1.0 po zsumowaniu wszystkich parametrów.

Mam nadzieję, że ci trochę pomogłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1