Seperti pada catatan sebelumnya, linear regression sangat mudah terpengaruh oleh data outlier.
Untuk visual testing, ada applet yang cukup bagus untuk menunjukan begitu mudahnya linear regression terpengaruh oleh data outlier.
Pada gambar pertama, kita buat data points acak. Linear regression melakukan fitting dengan cukup baik. Pada gambar kedua, hanya 4 data point kita geser secara ekstrim, fitting langsung bergeser banyak, dan nilai coeficient colleration langsung bergeser ke 0.5....
Jika ingin mencoba silakan ke alamat web ini http://digitalfirst.bfwpub.com/stats_applet/stats_applet_5_correg.html
Disini kita akan bahas robust regression menggunakan algoritma RANdom SAmple Consensus (RANSAC) Algorithm.
Ide dari Algoritma RANSAC adalah membuat model yang tidak terpengaruh outlier dengan melakukan otomatis testing dengan subset dari data training yang diberikan.
Sama seperti pada catatan sebelumnya, data training atau X yang digunakan kolom RM dan label atau y adalah kolom MEDV.
Untuk visual testing, ada applet yang cukup bagus untuk menunjukan begitu mudahnya linear regression terpengaruh oleh data outlier.
Pada gambar pertama, kita buat data points acak. Linear regression melakukan fitting dengan cukup baik. Pada gambar kedua, hanya 4 data point kita geser secara ekstrim, fitting langsung bergeser banyak, dan nilai coeficient colleration langsung bergeser ke 0.5....
Jika ingin mencoba silakan ke alamat web ini http://digitalfirst.bfwpub.com/stats_applet/stats_applet_5_correg.html
Disini kita akan bahas robust regression menggunakan algoritma RANdom SAmple Consensus (RANSAC) Algorithm.
Ide dari Algoritma RANSAC adalah membuat model yang tidak terpengaruh outlier dengan melakukan otomatis testing dengan subset dari data training yang diberikan.
Sama seperti pada catatan sebelumnya, data training atau X yang digunakan kolom RM dan label atau y adalah kolom MEDV.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import RANSACRegressor
df = pd.read_csv('housing.data', delim_whitespace=True, header=None)
df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
X = df['RM'].values.reshape(-1,1)
y = df['MEDV'].values
ransac = RANSACRegressor()
ransac.fit(X, y)
inlier_mask = ransac.inlier_mask_
outlier_mask = np.logical_not(inlier_mask)
line_X = np.arange(3, 10, 1)
line_y_ransac = ransac.predict(line_X.reshape(-1, 1))
sns.set(style='darkgrid', context='notebook')
plt.figure(figsize=(12,10));
plt.scatter(X[inlier_mask], y[inlier_mask],
c='blue', marker='o', label='Inliers')
plt.scatter(X[outlier_mask], y[outlier_mask],
c='brown', marker='s', label='Outliers')
plt.plot(line_X, line_y_ransac, color='red')
plt.xlabel('average number of rooms per dwelling')
plt.ylabel("Median value of owner-occupied homes in $1000's")
plt.legend(loc='upper left')
plt.show()
Python: Robust Regression Menggunakan RANSAC
Reviewed by noname needed
on
May 24, 2018
Rating:
No comments: