[PYTHON] Feature Engineering für maschinelles Lernen Beginnend mit Teil 2 Google Colaboratory-Logistic Conversion und Box-Cox Conversion

Einführung

In diesem Artikel Erklärt die logarithmische Konvertierung und die Box-Cox-Konvertierung. Dieser Artikel basiert hauptsächlich auf "Feature Quantity Engineering für maschinelles Lernen". Bitte probieren Sie es aus, wenn Sie werden.

Der Inhalt dieses Artikels wird auf YouTube ausführlicher erläutert. Wenn Sie also interessiert sind, lesen Sie ihn bitte durch.

Was ist logarithmische Umwandlung?

Die Protokollkonvertierung wird hauptsächlich für die folgenden Zwecke verwendet.

--Lassen Sie es einer Normalverteilung folgen

Die logarithmische Funktion ist eine Funktion wie in der folgenden Abbildung gezeigt, und der Wert von x ist klein, da der Bereich von [1,10] nach [0,1] und der Bereich von [10.100] nach [1,2] kopiert wird. Es ist ersichtlich, dass der Fall in einem weiten Bereich kopiert wird und der Fall in einem engen Bereich kopiert wird, wenn der Wert von x groß ist.

Durch Verwendung dieser logarithmischen Transformation ist es möglich, die Oberseite der Schwerschwanzverteilung wie unten gezeigt zu komprimieren und die Unterseite zu erweitern, um sie näher an die Normalverteilung zu bringen. Viele Methoden des maschinellen Lernens machen keine besonderen Annahmen über die Grundgesamtheit ** nichtparametrische Modelle **, so dass es nicht erforderlich ist, sich der Normalverteilung anzunähern, aber die Verteilung der statistischen Grundgesamtheit wird angenommen ** parametrisches Modell * Wenn Sie * verwenden, muss die Verteilung der Daten normal sein.

Ferner kann durch Verwendung einer logarithmischen Umwandlung für die folgenden Daten mit einer großen Dispersion die Dispersion verringert werden.

** Vor dem Anwenden der logarithmischen Konvertierung (Verteilung: 5.0e + 06) **

** Nach Anwendung der logarithmischen Konvertierung (Verteilung: 0.332007) **

** Beispielcode für die Anwendung der logarithmischen Konvertierung **

log.py


import numpy as np
import pandas as pd


##Feste Zufallszahl
np.random.seed(100)

data_array = []
for i in range(1, 10000):
  max_num = i if i > 3000 else 1000 
  s = np.random.randint(0, max_num, 10)
  data_array.extend(s)

data = pd.DataFrame({'Listen Count': data_array})

data_log = pd.DataFrame()
##Addiere 1, um zu verhindern, dass es 0 wird
data_log['Listen Count'] = np.log10(data['Listen Count'] + 1)

Was ist eine Box-Cox-Konvertierung?

Konvertierung, die durch die folgende Formel definiert werden kann

y=\begin{eqnarray}
\left\{
\begin{array}{l}
\frac{x^\lambda - 1}{\lambda}~~~~~(if ~~ \lambda\neq0) \\
\log(x)~~~~~(if ~~ \lambda=0)
\end{array}
\right.
\end{eqnarray}

Durch Verwendung der Box-Cox-Transformation, um die Daten bis zu einem gewissen Grad einer Normalverteilung zu folgen, können die Daten einer Normalverteilung folgen. (* Es kann jedoch nur verwendet werden, wenn die Daten positiv sind.)

Die folgende Grafik zeigt diese Konvertierung. image.png Sie müssen den Lambda-Wert bestimmen, bevor Sie die Box-Cox-Transformation verwenden. Unter Verwendung der wahrscheinlichsten Methode wird das Lambda so bestimmt, dass die konvertierten Daten der Normalverteilung am nächsten kommen.

Wenn Sie die Box-Cox-Transformation für die tatsächlich verteilten Daten verwenden, wie in der folgenden Abbildung gezeigt, können Sie sehen, dass sie in eine Verteilung konvertiert werden können, die als Normalverteilung erscheint.

** Vor dem Anwenden der Box-Cox-Konvertierung **

** Nach dem Anwenden der Box-Cox-Konvertierung **

** Beispielcode für die Anwendung der Box-Cox-Konvertierung **

from scipy import stats
import numpy as np
import pandas as pd

##Feste Zufallszahl
np.random.seed(100)

##Datengenerierung
data_array = []
for i in range(1, 1000):
  s = np.random.randint(1, i * 100, 10)
  data_array.extend(s)
data = pd.DataFrame({'Listen Count': data_array})

##Box-Cox-Konvertierung
rc_bc, bc_params = stats.boxcox(data['Listen Count'])
print(bc_params) ##0.3419237117680786

Q-Q-Plot

Das Q-Q-Diagramm ist ein Diagramm von gemessenen und idealen Werten. Mit anderen Worten, wenn es sich um eine gerade Linie handelt, kann gesagt werden, dass der gemessene Wert eine Normalverteilung ist. Unten sehen Sie eine grafische Darstellung der Originaldaten, der Daten nach der logarithmischen Konvertierung und der Daten nach der Box-Cox-Konvertierung.

Originale Daten

** Nach logarithmischer Umwandlung **

** Nach Box-Cox-Konvertierung **

Aus diesen Ergebnissen können wir erkennen, dass die Box-Cox-Transformation der normalsten Verteilung folgen konnte.

Schließlich

Ich plane, Rezensionen und Kommentarvideos von technischen Büchern auf YouTube zu veröffentlichen, wobei der Schwerpunkt auf maschinellem Lernen liegt. Wir stellen auch Unternehmen vor, die Sie kennen sollten, wenn Sie in die IT gehen. Bitte abonnieren Sie den Kanal und geben Sie uns eine hohe Bewertung, da dies Sie motivieren wird, Youtube und Qiita zu aktualisieren. YouTube: https://www.youtube.com/channel/UCywlrxt0nEdJGYtDBPW-peg Twitter: https://twitter.com/tatelabo

Referenz

https://yolo-kiyoshi.com/2018/12/26/post-1037/ https://toukei-lab.com/box-cox%E5%A4%89%E6%8F%9B%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83%E3%81%AB%E5%BE%93%E3%82%8F%E3%81%AA%E3%81%84%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%A7%A3%E6%9E%90 https://toukeier.hatenablog.com/entry/2019/09/08/224346 https://sigma-eye.com/2018/09/23/qq-plot/

Recommended Posts

Feature Engineering für maschinelles Lernen Beginnend mit Teil 2 Google Colaboratory-Logistic Conversion und Box-Cox Conversion
Feature Engineering für maschinelles Lernen ab Teil 3 Google Colaboratory-Scale
Feature Engineering für maschinelles Lernen Beginnend mit dem 4. Google Colaboratory - Interacting Features
Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
Beginnend mit maschinellem Python-Lernen
Maschinelles Lernen mit Nogisaka 46 und Keyakizaka 46 Teil 1 Einführung
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Einheit 5 Feature Engineering für die Auswahl maschineller Lernfunktionen
Maschinelles Lernen mit Pytorch in Google Colab
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 11 und 12 Einführung in Pandas Matplotlib
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
[Python] Sammeln Sie Bilder mit Icrawler für maschinelles Lernen [1000 Blatt]
Einfaches maschinelles Lernen mit AutoAI (Teil 4) Jupyter Notebook
Einfaches maschinelles Lernen mit Scikit-Learn und Flask ✕ Web App
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 1 und 2
Praktisches maschinelles Lernen mit Scikit-Learn und TensorFlow-TensorFlow gab auf-
[Maschinelles Lernen] Starten Sie Spark mit iPython Notebook und probieren Sie MLlib aus
Erstellen Sie mit VirtualBox und Ubuntu eine Scikit-Lernumgebung für maschinelles Lernen
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Für diejenigen, die mit TensorFlow2 maschinelles Lernen beginnen möchten
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
Deep Learning mit Shogi AI auf Mac und Google Colab