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