Введение

Одной из самых увлекательных областей технологий сегодня является машинное обучение. Это меняет то, как мы работаем, живем и подходим к решению проблем. Теперь мы можем легко и эффективно подходить к сложным реальным задачам благодаря методам машинного обучения.
В этом блоге мы рассмотрим 4 самых популярных алгоритма машинного обучения с линейными моделями, а также некоторые примеры их кода. и практических приложений. Независимо от вашего уровня опыта, этот блог предоставит вам полное представление об этих алгоритмах и поможет вам выбрать лучший из них для вашего будущего проекта. Давайте посмотрим, как эти алгоритмы меняют мир сейчас.

Методы

  • Линейная регрессия
  • Логистическая регрессия
  • Ридж-регрессия
  • Лассо-регрессия

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

Одним из самых популярных алгоритмов машинного обучения для решения проблем регрессии является линейная регрессия. С помощью этого статистического метода моделируется связь зависимой переменной с одной или несколькими независимыми переменными. Поиск наиболее подходящей линии для изображения взаимосвязи между переменными является целью линейной регрессии.

Вот пример кода, который использует библиотеку обучения sci-kit для построения алгоритма линейной регрессии:

В нашей модели линейной регрессии я использовал этот набор данных от Kaggle.

# Import libraries
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

# Import data using pandas libraries
train =  pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

# There is a null value inside the train.csv.
# Uses fillna method for fill null variables with median of all train.
train.fillna(train.y.mean,inplace = True)

# Define X_train, X_test, y_train, y_test values for model building.
X_train = np.array(train.iloc[:, :-1].values)
X_test = np.array(test.iloc[:, :-1].values)
y_train = np.array(train.iloc[:, :1].values)
y_test = np.array(test.iloc[:, :1].values)

# Train model with X_train and y_train datas.
linear_model = LinearRegression()
linear_model.fit(X_train,y_train)

# Predict the dependent variable using the test data
y_pred = linear_model.predict(X_test)

# Calculate R2 score from y_test and y_pred 
r2 = r2_score(y_test,y_pred)
print("R-Square score: {:.2f}".format(r2))

# Visualizing results with seaborn and matplotlib.
plt.figure(figsize=(10,6))
sns.regplot(x = y_test,y=y_pred)
plt.title('Linear Regression Analysis')
plt.xlabel('Y test values')
plt.ylabel('Y Prediction Values')
plt.grid()
plt.show()

Логистическая регрессия

Логистическая регрессия — это тип регрессионного анализа, который используется для решения задач классификации. Когда результат, который мы пытаемся предсказать, является категориальным и имеет два класса (бинарные), обычно обозначаемые как 0 или 1, выполняется такой вид регрессионного анализа. Поиск корреляции между независимыми переменными (признаками) и вероятностью бинарного результата является целью логистической регрессии.

Вероятность принадлежности экземпляра к определенному классу прогнозируется с помощью логистической регрессии, а не линейной регрессии, которая предсказывает непрерывные числовые значения. Логистическая функция, которая преобразует любое число с действительным знаком в число от 0 до 1, является результатом логистической регрессии. Мы можем интерпретировать выходные данные логистической функции как вероятности благодаря ее S-образной кривой.

В нашей модели логистической регрессии я использовал этот набор данных от Kaggle.

# Import libraries
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# Import dataset into the model
df = pd.read_csv('Social_Network_Ads.csv')

# Use encoder model in order to convert Male, Female to 0 and 1.
encoder = LabelEncoder()
df['Gender'] = encoder.fit_transform(df['Gender'])

# There are 4 columns in dataset.
# Label is Purchased and rest of them are features.
X = df[['Gender', 'Age', 'EstimatedSalary']]
y = df['Purchased']

# Define X_train, X_test, y_train, y_test values for model building.
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.25, 
                                                    random_state=42)

# Train model with X_train and y_train datas.
model = LogisticRegression()
model.fit(X_train, y_train)

# Check the score of the model
model.score(X_test, y_test)

Регрессия хребта

Ридж-регрессия — это подход линейной регрессии, используемый для обработки мультиколлинеарности (высокая корреляция между несвязанными функциями) и предотвращения переобучения в модели. Его часто называют L2-регуляризацией или тихоновской регуляризацией. Это развитие метода линейной регрессии, известного как метод наименьших квадратов (OLS).

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

В нашей модели гребневой регрессии я использовал этот набор данных от Kaggle.

# Import libraries
import numpy as np
import pandas as pd
from sklearn.linear_model import Ridge
from sklearn.metrics import r2_score
import seaborn as sns
import matplotlib.pyplot as plt

# Import data using pandas libraries
train =  pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

# There is a null value inside the train.csv, 
# Uses fillna method for fill null variables with median of all train.
train.fillna(train.y.mean,inplace = True)

# Define X_train, X_test, y_train, y_test values for model building.
X_train = np.array(train.iloc[:, :-1].values)
X_test = np.array(test.iloc[:, :-1].values)
y_train = np.array(train.iloc[:, :1].values)
y_test = np.array(test.iloc[:, :1].values)

# Train model with X_train and y_train datas.
ridge_model = Ridge()
ridge_model.fit(X_train,y_train)

# Predict the dependent variable using the test data
y_pred = ridge_model.predict(X_test)

# Calculate R2 score from y_test and y_pred 
r2 = r2_score(y_test,y_pred)
print("R-Square score: {:.2f}".format(r2))

# Visualizing results with seaborn and matplotlib.
plt.figure(figsize=(10,6))
sns.regplot(x = y_test,y=y_pred)
plt.title('Ridge Regression Analysis')
plt.xlabel('Y test values')
plt.ylabel('Y Prediction Values')
plt.grid()
plt.show()

Лассо-регрессия

Лассо-регрессия, сокращение от «Оператор наименьшего абсолютного сокращения и выбора», представляет собой еще один тип метода линейной регрессии, используемый для выбора признаков и регуляризации. Как и регрессия гребня, регрессия Лассо используется для предотвращения переобучения и улучшения обобщения модели. Однако регрессия Лассо вводит другой термин регуляризации, который имеет дополнительное преимущество, заключающееся в выполнении выбора признаков путем доведения коэффициентов некоторых признаков точно до нуля.

В нашей модели регрессии лассо я использовал этот набор данных от Kaggle.

# Import libraries
import numpy as np
import pandas as pd
from sklearn.linear_model import Lasso
from sklearn.metrics import r2_score
import seaborn as sns
import matplotlib.pyplot as plt

# Import data using pandas libraries
train =  pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

# There is a null value inside the train.csv.
# Use fillna method for fill null variables with median of all train.
train.fillna(train.y.mean,inplace = True)

# Define X_train, X_test, y_train, y_test values for model building.
X_train = np.array(train.iloc[:, :-1].values)
X_test = np.array(test.iloc[:, :-1].values)
y_train = np.array(train.iloc[:, :1].values)
y_test = np.array(test.iloc[:, :1].values)

# Train model with X_train and y_train datas.
lasso_model = Lasso()
lasso_model.fit(X_train,y_train)

# Predict the dependent variable using the test data
y_pred = lasso_model.predict(X_test)

# Calculate R2 score from y_test and y_pred 
r2 = r2_score(y_test,y_pred)
print("R-Square score: {:.2f}".format(r2))

# Visualizing results with seaborn and matplotlib.
plt.figure(figsize=(10,6))
sns.regplot(x = y_test,y=y_pred,color='r')
plt.title('Lasso Regression Analysis')
plt.xlabel('Y test values')
plt.ylabel('Y Prediction Values')
plt.grid()
plt.show()

Заключение

В этом исследовании мы рассмотрели четыре различных метода регрессии: линейную регрессию, логистическую регрессию, гребенчатую регрессию и регрессию Лассо. Линейная регрессия используется для прогнозирования непрерывных числовых значений, а логистическая регрессия применяется к задачам классификации двух классов. Ридж-регрессия использует регуляризацию L2 для повышения производительности между сильно коррелированными независимыми переменными и снижения риска переобучения. С другой стороны, регрессия Лассо использует регуляризацию L1 для упрощения модели и устранения нерелевантных переменных. Экспериментируя с каждой моделью, используя разные наборы данных и настраивая гиперпараметры, мы можем оценить их производительность и выбрать наиболее подходящий метод регрессии.

Спасибо за прочтение, надеюсь, вам понравилась эта статья :)