Techniki klasyfikacyjne są ważną częścią aplikacji uczenia się maszyn i przetwarzania danych. Około 70% problemów w Data Science to problemy z klasyfikacją. Istnieje wiele problemów klasyfikacji, które są dostępne, ale regresja logistyczna jest powszechna i może być użyteczną metodą regresji dla rozwiązania problemu klasyfikacji binarnej. Inną kategorią klasyfikacji jest klasyfikacja wielomianowa, która zajmuje się problemami, w których w zmiennej docelowej występuje wiele klas. Na przykład, zbiór danych IRIS jest naprawdę znanym przykładem klasyfikacji wielozakresowej. Innym przykładem jest klasyfikacja artykułów/blogów/dokumentów.

Regresja logistyczna jest często stosowana w przypadku różnych problemów z klasyfikacją, takich jak wykrywanie spamu. Przewidywanie cukrzycy, jeśli dany klient zakupi określony produkt lub wyrzuci innego konkurenta, czy użytkownik kliknie na dany link reklamowy czy nie, a wiele innych przykładów znajduje się w wiadrze.

Regresja logistyczna jest jednym z najprostszych i najpowszechniej stosowanych algorytmów uczenia się maszyn dla klasyfikacji dwuklasowej. jest łatwa w implementacji i może być stosowana, ponieważ stanowi punkt odniesienia dla każdego problemu klasyfikacji binarnej. Jego podstawowe podstawowe pojęcia są również konstruktywne w głębokim uczeniu się. Regresja logistyczna opisuje i szacuje związek pomiędzy jedną zależną zmienną binarną a niezależnymi zmiennymi.

Regresja logistyczna

Regresja logistyczna może być procedurą statystyczną służącą do przewidywania klas binarnych. Zmienna wynikowa lub docelowa ma charakter dychotomiczny. Dychotomiczna oznacza, że istnieją tylko dwie możliwe klasy. na przykład, jest ona często wykorzystywana do wykrywania problemów z wykryciem raka. Oblicza ona prawdopodobieństwo wystąpienia danej okazji.

Jest to szczególny przypadek regresji prostoliniowej, w którym zmienna docelowa ma charakter kategoryczny. Używa ona logu kursowego, ponieważ zmienna . Regresja logiczna przewiduje prawdopodobieństwo wystąpienia zdarzenia binarnego przy użyciu funkcji logit.

Regresja liniowa Równanie:

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image1_ga8gze.png

Gdzie, y zależy od zmiennej, a x1, x2 … i Xn są zmiennymi objaśniającymi.

Sygmoid Funkcja:

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image2_kwxquj.png

Zastosuj funkcję Sigmoid na regresji liniowej:

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image3_qldafx.png

Właściwości Regresji Logistycznej:

Zmienna w regresji logistycznej podąża za rozkładem dwumianowym .

Oszacowanie jest zakończone poprzez maksymalne prawdopodobieństwo.

Nie ma kwadratu R, sprawność modelu jest obliczana przez Concordance, KS-Statistics.

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281070/linear_vs_logistic_regression_edxw03.png

Regresja liniowa Vs. Regresja logistyczna

Regresja liniowa daje niekończące się wyniki, ale regresja logistyczna daje wyniki ciągłe. Przykładem ciągłej produkcji jest cena domu i cena akcji. Regresja prostoliniowa jest szacowana przy użyciu zwykłej metody najmniejszych kwadratów (OLS), natomiast regresja logistyczna jest szacowana przy użyciu metody maksymalnego oszacowania prawdopodobieństwa (MLE).

Maksymalne oszacowanie prawdopodobieństwa Vs. Metoda najmniejszych kwadratów (Least Square Method)

MLE może być metodą maksymalizacji “prawdopodobieństwa”, podczas gdy OLS może być metodą przybliżenia minimalizującą odległość. Funkcja maksymalizacji prawdopodobieństwa określa parametry, które przypuszczalnie mają dostarczyć obserwowanych danych. Ze statystycznego punktu widzenia MLE ustala średnią i wariancję jako parametry przy określaniu dokładnych wartości parametrycznych dla danego modelu. Ten zestaw parametrów jest często używany do przewidywania informacji potrzebnych podczas dystrybucji gausowskiej.

Zwykła metoda estymacji najmniejszych kwadratów jest obliczana przez dopasowanie krzywej regresji do danych punktów danych, która ma minimalną sumę odchyleń kwadratowych (najmniejszy błąd kwadratowy). Obie metody nie pozwalają na oszacowanie parametrów modelu regresji prostoliniowej. MLE przyjmuje funkcję masy prawdopodobieństwa, natomiast OLS nie wymaga żadnych założeń stochastycznych do minimalizacji odległości.

Funkcja Sygmoida

Funkcja esicy, zwana również funkcją logistyczną, daje krzywą w kształcie litery “S”, która przyjmie dowolną liczbę rzeczywistą i zmapuje ją na wartość pomiędzy 0 a 1. Jeśli krzywa osiągnie nieskończoność dodatnią, y przewidywana stanie się 1, a jeśli krzywa osiągnie nieskończoność ujemną, y przewidywana stanie się 0. Jeśli wynik funkcji esicy wynosi dość 0.5, to wynik zakwalifikujemy jako 1 lub TAK, a jeśli jest tylko 0.5, to zakwalifikujemy go jako 0 lub NIE. Wyjście nie może na przykład: Jeśli wartość wyjściowa wynosi 0,75, to w kategoriach prawdopodobieństwa powiemy, że istnieje 75 procentowa szansa, że pacjent będzie cierpiał na raka.

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image4_gw5mmv.png

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281070/sigmoid2_lv4c7i.png

Rodzaje regresji logistycznej

Binarna Regresja Logistyczna: Zmienna docelowa ma tylko dwa możliwe wyniki jak Spam lub Nie Spam, Rak lub Brak Raka.

Wielomianowa regresja logistyczna: Zmienna docelowa ma trzy lub więcej kategorii nominalnych jak przewidywanie rodzaju Wina.

Regresja logistyczna zwykła: Zmienna docelowa ma trzy lub więcej kategorii zwykłych, takich jak ocena restauracji lub produktu od 1 do 5 .

Budowanie modelu w Scikit-learn

Zbudujmy model przewidywania cukrzycy.

Tutaj możesz przewidywać cukrzycę używając Klasyfikacji Regresji Logistycznej (Logistic Regression Classifier).

Najpierw załadujmy określony zbiór danych dotyczących cukrzycy w Indiach Pima przy użyciu funkcji pandas’ read CSV. Dane pobierzemy z kolejnego linku: https://www.kaggle.com/uciml/pima-indians-diabetes-database.

Załadunek #importowych pand

import pand jako pd

col_names = [“w ciąży”, “glukoza”, “bp”, “skóra”, “insulina”, “bmi”, “rodowód”, “wiek”, “etykieta”]

# load dataset

pima = pd.read_csv(“pima-indians-diabetes.csv”, header=Nie ma, names=col_names)

pima.head()Data

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281070/Screen_Shot_2018-08-14_at_5.06.08_PM_ykb1jt.png

Wybór funkcji

W tym miejscu chciałbyś podzielić podane kolumny na dwa rodzaje zmiennych zależnych (lub docelowych) i niezależnych (lub cechowych).

#rozdzielony zbiór danych w cechach i zmiennej docelowej

feature_cols = [“pregnant”, “insulin”, “bmi”, “age”, “glucose”, “bp”, “pedigree”]

X = pima[feature_cols] # Features

y = pima.label # Zmienna docelowa

Podział danych

Aby zrozumieć działanie modelu, dobrym rozwiązaniem może być podzielenie zbioru danych na zestaw szkoleniowy i zestaw testowy.

Podzielmy zbiór danych za pomocą funkcji train_test_split(). Chcesz przejść przez 3 cechy parametrów, cel i rozmiar zestawu test_set. Dodatkowo, będziesz używał random_state do losowego wybierania rekordów.

# podziel X i y na zestawy treningowe i testowe

z sklearn.cross_validation import train_test_split

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

/home/admin/.local/lib/python3.5/site-packages/sklearn/cross_validation.py:41: Deprecation Warning: Ten moduł został zdeprecjonowany w wersji 0.18 na rzecz modułu model_selection, do którego przenoszone są wszystkie zrefaktowane klasy i funkcje. Należy również zauważyć, że interfejs nowych iteratorów CV jest inny niż tego modułu. Ten moduł zostanie usunięty w wersji 0.20.

“Ten moduł zostanie usunięty w 0.20.”, Deprecation Warning).

Tutaj zestaw danych jest podzielony na dwie części w stosunku 75:25. Oznacza to, że 75 % danych zostanie wykorzystane do szkolenia modeli, a 25 % do testowania modeli.

Tworzenie i przewidywanie modeli

Najpierw należy zaimportować moduł Logistic Regression i za pomocą funkcji Logistic Regression() stworzyć obiekt klasyfikujący regresję logistyczną.

Następnie dopasuj model na zabawce za pomocą fit() i wykonaj predykcję na zestawie testowym za pomocą funkcji predict().

# zaimportuj kategorię

z sklearn.line_model import LogisticRegression

# zainicjować model (przy użyciu domyślnych parametrów)

logreg = LogisticRegression()

# dopasować model z danymi

logreg.fit(X_train,y_train)

#

y_pred=logreg.predict(X_test)

Ocena modelu przy użyciu macierzy dezorientacyjnej (Confusion Matrix)

Elementem macierzy dezorientacji może być tabela, która nie pozwala na ocenę wydajności modelu klasyfikacyjnego. elementarną cechą macierzy dezorientacji jest to, że liczba poprawnych i nieprawidłowych przewidywań jest sumowana klasowo.

# zaimportuj klasę metryki

z metryki importowej sklearn

cnf_matrix = metryka.confusion_matrix(y_test, y_pred)

cnf_matrix

array([[119, 11]],

[ 26, 36]])

Tutaj, zobaczysz matrycę pomyłek w rodzaju obiektu matrycy. Wymiar tej macierzy wynosi 2*2, ponieważ model ten jest klasyfikacją binarną. Masz dwie klasy 0 i 1. Wartości diagonalne reprezentują dokładne przewidywania, podczas gdy elementy inne niż diagonalne są niedokładnymi przewidywaniami. w ramach wyjścia, 119 i 36 są rzeczywistymi przewidywaniami, a 26 i 11 są nieprawidłowymi przewidywaniami.

Wizualizacja Macierzy Dezorientacji za pomocą mapy ciepła

Zwizualizujmy wyniki modelu w ramach pewnego rodzaju macierzy dezorientacji przy użyciu matplotlib i seaborn.

Tutaj zwizualizujmy macierze zamieszania za pomocą Heatmapy.

# zaimportuj wymagane moduły

importować zdrętwiały jak np.

import matplotlib.pyplot jako plt

importować poród morski jako synowie

%matplotlib inline

class_names=[0,1] # name of classes

fig, ax = plt.podpowierzchnie()

tick_marks = np.arange(len(class_names)))

plt.xticks(tick_marks, class_names)

plt.yticks(tick_marks, class_names)

# create heatmap

sns.heatmap(pd.DataFrame(cnf_matrix), annot=True, cmap=”YlGnBu” , fmt=”g”)

ax.xaxis.set_label_position(“top”)

plt.tight_layout()

plt.title(“Confusion matrix”, y=1.1)

plt.ylabel(“Właściwa etykieta”)

plt.xlabel(“Przewidywana etykieta”)

Tekst(0,5,257,44, “Przewidywana etykieta”)

Metryka oceny macierzy dezorientacyjnej

Oceńmy model za pomocą metryk oceny modelu, takich jak dokładność, precyzja i wycofanie.

print(“Accuracy:”,metrics.accuracy_score(y_test, y_pred))

print(“Precision:”,metrics.precision_score(y_test, y_pred))

print(“Recall:”,metrics.recall_score(y_test, y_pred))

Dokładność: 0,80729166666666

Dokładność: 0,7659574468085106

Przypomnij sobie: 0.5806451612903226

Cóż, kupiłeś wskaźnik klasyfikacyjny na poziomie 80%, uważany prawie za dobrą dokładność.

Dokładność: Precyzja to bycie precyzyjnym, to znaczy, jak dokładny jest twój model. Innymi słowy, powiesz, kiedy model dokonuje prognozy, jak często jest poprawny. W twoim przypadku przewidywania, kiedy model regresji logistycznej przewiduje, że pacjenci będą cierpieć na cukrzycę, to znaczy, że mają 76% czasu.

Przypomnij sobie: Jeśli w zestawie testów znajdują się pacjenci, którzy mają cukrzycę, a Twój model regresji logistycznej może ją zidentyfikować w 58% przypadków.

Krzywa ROC

Krzywa charakterystyki operacyjnej odbiornika (ROC) może być wykresem wskaźnika prawdziwie dodatniego w stosunku do wskaźnika fałszywie dodatniego. Pokazuje ona kompromis pomiędzy czułością a specyficznością.

y_pred_proba = logreg.predict_proba(X_test)[::,1]

fpr, tpr, _ = metryka.roc_curve(y_test, y_pred_proba)

auc = metryka.roc_auc_score(y_test, y_pred_proba)

plt.plot(fpr,tpr,label=”data 1, auc=”+str(auc)))

plt.legend(loc=4)

plt.show()

Wynik AUC dla tego przypadku wynosi 0,86. Wynik AUC 1 oznacza doskonały klasyfikator, a 0,5 oznacza bezwartościowy klasyfikator.

Zalety

Ze względu na swoją wydajną i łatwą naturę, nie wymaga dużej mocy obliczeniowej, jest łatwy do wdrożenia, łatwy do interpretacji, szeroko stosowany przez analityków danych i naukowców. Nie wymaga też skalowania funkcji. Regresja logistyczna zapewnia punktację prawdopodobieństwa dla obserwacji.

Wady

Regresja logistyczna nie jest gotowa na obsługę zbyt dużej liczby cech/zmiennych kategorycznych. Jest podatna na przerost. Ponadto, nie może rozwiązać nieliniowego problemu z regresją logistyczną, dlatego wymaga zmiany nieliniowych cech. Regresja logistyczna nie będzie działać dobrze w przypadku niezależnych zmiennych, które nie są skorelowane ze zmienną docelową i są bardzo podobne lub skorelowane ze sobą.