Maschinelles Lernen – Lineare Regression | von Daniellevin | Juni 2023

0
25


Motivation

Ich werde damit beginnen, ein häufig verwendetes Beispiel bei der Einführung des linearen Regressionsmodells durchzugehen, und zwar die Immobilienpreisvorhersage. Gehen Sie davon aus, dass der Preis eines Hauses nur von der Größe des Hauses (sagen wir in m²) abhängt. Darüber hinaus gehe ich, zumindest vorerst, auch davon aus, dass alle Häuser in einer bestimmten Gegend den exakt gleichen Preis professional m² haben. Dann wäre das mathematische Modell, das den Preis eines bestimmten Hauses bestimmt f(x) = θ₀ + θ₁ x, Wo F beträgt der Gesamtpreis des Hauses je nach Größe X in m², θ₀ ist ein Startwert und θ₁ ist der Preis von 1 m² (Preis professional Einheit). In der Sprache des maschinellen Lernens ist der Preis des Hauses die Bezeichnung (das, was bestimmt werden soll) und X ist eine Funktion, von der die Bezeichnung abhängt.

Wenn additionally in einer Gegend der m²-Preis eines Hauses 2000 beträgt und es keinen Startwert gibt, dann wäre der Preis für jedes Haus in dieser Gegend einfach so f(x) = 2000x, x>0. Wenn man den Preis gegen die Größe aufträgt, erhält man die folgende Grafik:

Wenn man die Größe des Hauses kennt, kann man den Preis des Hauses einfach durch einen einfachen Austausch ermitteln X mit der Größe oder durch Ablesen des Werts auf der y-Achse.

Aber in der realen Welt wird der Preis eines Hauses von mehreren Faktoren, nämlich den Merkmalen, bestimmt. Wenn wir jedoch im einfachsten Modell nur die Größe eines Hauses berücksichtigen würden, um seinen Preis zu bestimmen, würde dieser Preis von Haus zu Haus in derselben Gegend schwanken. Schauen wir uns die in der folgenden Tabelle angegebenen Immobilienpreise an [1]:

Da diese Daten aus den Vereinigten Staaten stammen, ist die Größe natürlich in Quadratfuß angegeben. Aber die Analyse ist immer noch dieselbe. Wir konzentrieren uns auf die Spalte sqft_living und ignorieren den Relaxation vorerst. Indem wir den Hauspreis durch sqft_living dividieren, erhalten wir den Quadratmeterpreis für jedes Haus. Darüber hinaus betrachten wir nur Daten in der Stadt Sammamish.

information['price_per_sqft'] = information['price'] / information['sqft_living']
filtered_data = information[data['city'] == 'Sammamish']
subset = filtered_data[['price', 'sqft_living', 'price_per_sqft']]
subset.head()

Es ist offensichtlich, dass der Preis professional Quadratfuß nicht konstant ist wie bei unserem ersten Modell. Aber wir können immer noch einen ungefähren Wert für ein bestimmtes Haus in dieser Stadt ermitteln, indem wir einfach den Mittelwert von „price_per_sqft“ ermitteln und diesen Wert mit der Größe dieses bestimmten Hauses multiplizieren, ohne uns mit einer linearen Regression herumzuschlagen.

price_mean = subset['price_per_sqft'].imply()

# price_mean = 251.25

Wenn man θ₁= 251,25 (den Mittelwert) einstellt, erhält man das folgende Diagramm:

Der Zweck dieses Artikels besteht jedoch darin, ein Regressionsmodell zu erstellen und damit den Preis eines beliebigen Hauses in dieser Gegend vorherzusagen. Schauen wir uns zunächst die Daten in einem Streudiagramm an.

plt.scatter(filtered_data['sqft_living'], filtered_data['price'], shade = 'purple', marker = 'x')
plt.xlabel('measurement/sqft')
plt.ylabel('Worth/$')
plt.title('Home costs in Sammamish')
plt.present()

In der Darstellung können wir deutlich erkennen, dass die meisten Werte um eine hypothetische Linie herum lokalisiert sind und dass einige weiter davon entfernt sind. Häuser mit so weit entfernten Preisen werden als Ausreißer bezeichnet.

Anhand dieser Daten geht es nun darum, das beste Modell zu finden f(x) = θ₀ + θ₁ x zur Vorhersage des Preises eines neuen Hauses, das nicht im Datensatz enthalten ist. Seit X ist die Funktion, die der Benutzer zur Bestimmung bereitstellt F Das ist das Etikett. Diese beiden Parameter können nicht das sein, was das Modell definiert. Stattdessen definieren θ₀ und θ₁ die Funktion und bestimmen somit die Type der Linie im folgenden Diagramm.

from sklearn.linear_model import LinearRegression
from scipy.stats import linregress
mannequin = LinearRegression()
plt.scatter(filtered_data['sqft_living'], filtered_data['price'], shade = 'purple', marker = 'x')
x = filtered_data['sqft_living']
y = filtered_data['price']
slope, intercept, r_value, p_value, std_err = linregress(x, y)
regression_line = slope * x + intercept
plt.plot(x, regression_line, shade='blue', label='Regression Line')
plt.xlabel('measurement/sqft')
plt.ylabel('Worth/$')
plt.title('Home costs in Sammamish')
plt.legend()
plt.present()

Wie bestimmen wir additionally, welche Funktion die beste Anpassung für die gegebenen Daten ermittelt? Mit anderen Worten, welche Werte sollten θ₀ und θ₁ haben, damit

f(x) = θ₀ + θ₁ x Würde es eine gute Vorhersage liefern, wenn es auf ein Haus angewendet würde, das nicht im Datensatz enthalten ist? Da die Datenpunkte nicht auf einer geraden Linie liegen, ist es unmöglich, eine gerade Linie zu finden, die durch alle diese Punkte geht. Und selbst wenn wir uns bemühen würden, eine verallgemeinerte mathematische Funktion zu erstellen, die tatsächlich alle gegebenen Datenpunkte durchläuft, wäre dieses Modell wirklich schlecht darin, die Preise für Häuser vorherzusagen, die nicht im Datensatz enthalten sind. Das Beste, auf das wir hoffen können, ist eine Linie, die die Abstände (die Fehler) zu den gegebenen Datenpunkten irgendwie minimiert. Schauen wir uns einmal genauer an, was das bedeutet.

Im bereitgestellten Datensatz beträgt der wahre Preis des Hauses mit einer Größe von 3690 Quadratfuß 865.000, das Modell sagt jedoch 823.970 voraus. Die Diskrepanz von 41.030 zwischen dem tatsächlichen Wert und dem vorhergesagten Wert ist ein Fehler für diesen Datenpunkt. Ebenso gibt es für jeden Datenpunkt einen Fehler, der die Differenz zwischen dem vom Vorhersagemodell erzeugten Wert und dem tatsächlichen Wert darstellt. Lassen

usw. bezeichnen die wahren Preise für die im Datensatz angegebenen Häuser. Die Fehler zwischen dem Modell und den realen Werten wären nun:

usw.

Wenn man nun alle Fehler addieren würde, ist es sehr wahrscheinlich, dass die Summe Null ergeben würde. Wir können das intuitiv erkennen, da einige Daten unterhalb der Vorhersagelinie liegen, während andere darüber liegen, was bedeutet, dass einige der Fehler negativ und andere positiv wären. Ein Trick besteht additionally darin, alle Fehler zu quadrieren, um das Minuszeichen zu entfernen …

Fortgesetzt werden …

[1] https://www.kaggle.com/datasets/lespin/house-prices-dataset?resource=download



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here