Введение

Алгоритмы машинного обучения стали жизненно важной частью многих отраслей, от здравоохранения до финансов, от маркетинга до развлечений. В этой статье мы рассмотрим популярные алгоритмы машинного обучения, а именно линейную регрессию. Мы объясним математическую формулу алгоритма и приведем пример, иллюстрирующий работу каждого алгоритма. Наконец, мы сравним алгоритмы, используя матрицу путаницы, и предложим, какой алгоритм может быть наиболее подходящим для различных приложений.

Линейная регрессия

Линейная регрессия — это статистический метод, используемый для изучения взаимосвязи между двумя переменными. Он используется для прогнозирования числового значения (зависимая переменная) на основе заданного ввода (независимая переменная). Формула линейной регрессии: y = mx + b, где y — зависимая переменная, x — независимая переменная, m — наклон линии, а b — точка пересечения с осью y.

Давайте возьмем пример, чтобы понять это лучше. Предположим, мы хотим предсказать вес человека на основе его роста. Здесь вес является зависимой переменной, а рост является независимой переменной. Имеем следующие данные:

Чтобы найти уравнение линии, которое лучше всего соответствует этим данным, мы используем формулу линейной регрессии. Сначала вычисляем наклон линии:

(x-x̄)/Sx — это zcore, то есть насколько далеко точка находится от среднего с точки зрения станд. отклонение. Например, для роста 65 лет: (65–64,5)/7,14 ~= 0,07 (это ближе к среднему); для роста 74: (74–64,5)/7,14 ~= 1,33 (выше среднего)

r (коэффициент) даст нам нормализованное значение, насколько далеко каждая точка данных находится от стандартного. dev, с этим значением мы можем рассчитать наклон, который будет иметь наименьшую ошибку (среднее значение общего квадрата красных линий), как показано ниже.

Подставляя значения, получаем:

Sx = Std deviation of x = 7.141428429
Sy = std deviation of y = 50.11569947
x̄ = 64.5
ȳ = 120.25
r = 0.6639467442
m = 4.659313725

Далее вычисляем точку пересечения по оси y: b = ȳ — mx̄

Plugging in the values, we get:
b = -180.2757353
Therefore, the equation of the line that best fits this data is:
Weight = 4.659313725 * Height - 180.2757353

Мы можем использовать это уравнение, чтобы предсказать вес человека на основе его роста.

For example, if a person is 70 inches tall, we can predict their weight as follows:
Weight = 4.659313725 * Height - 180.2757353
Weight = 145.8762255

Следовательно, прогнозируемый вес человека ростом 70 дюймов составляет 145,88 фунта.

Применение линейной регрессии для большого набора данных

Мы будем использовать данные о жилье в Калифорнии из библиотеки Python scikit-learn, чтобы предсказать среднюю стоимость дома:

from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# Load the California Housing dataset into a pandas DataFrame
housing = fetch_california_housing()
data = pd.DataFrame(housing.data, columns = housing.feature_names)
target = pd.DataFrame(housing.target)

# Split the selected data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.5, random_state=42)

# Train a linear regression model on the training data
model = LinearRegression()
model.fit(X_train, y_train)

# Make predictions on the test data
y_pred = model.predict(X_test)

# Print the mean squared error of the model on the test data
from sklearn.metrics import mean_squared_error
print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred))

Среднеквадратическая ошибка: 0,53 (среднее значение суммы (фактическое значение — прогнозируемое значение))²

Линия наименьших квадратов (или линия наклона) с использованием формулы наклона: y_pred=mx+b