Введение
Алгоритмы машинного обучения стали жизненно важной частью многих отраслей, от здравоохранения до финансов, от маркетинга до развлечений. В этой статье мы рассмотрим популярные алгоритмы машинного обучения, а именно линейную регрессию. Мы объясним математическую формулу алгоритма и приведем пример, иллюстрирующий работу каждого алгоритма. Наконец, мы сравним алгоритмы, используя матрицу путаницы, и предложим, какой алгоритм может быть наиболее подходящим для различных приложений.
Линейная регрессия
Линейная регрессия — это статистический метод, используемый для изучения взаимосвязи между двумя переменными. Он используется для прогнозирования числового значения (зависимая переменная) на основе заданного ввода (независимая переменная). Формула линейной регрессии: 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