监督学习探秘:从线性回归到决策树

发布于:2024-03-29 ⋅ 阅读:(20) ⋅ 点赞:(0)

 目录

1.前言

2.线性回归原理与应用

2.1. 线性回归原理

2.2. 线性回归应用

2.3.代码实例

3.逻辑回归与分类任务

3.1. 逻辑回归原理

3.2. 逻辑回归应用

3.3.代码实例

4.决策树与随机森林模型详解

4.1. 决策树原理

4.2. 随机森林原理

4.3. 应用场景

4.4.代码实例

5.总结


1.前言

        在监督学习的世界里,算法通过学习带有标签的示例来建立模型,从而能够对新的无标签数据进行预测。线性回归、逻辑回归和决策树是监督学习中非常基础且重要的模型。接下来,我们将深入探讨这些模型的原理和应用,并通过代码实例来展示它们的使用。更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

2.线性回归原理与应用

2.1. 线性回归原理

        线性回归是一种简单且常用的监督学习模型,用于预测连续型目标变量与一个或多个特征变量之间的线性关系。其基本形式为:

        其中,y 是目标变量,xi​ 是特征变量,βi​ 是对应的权重系数(模型参数),β0​ 是截距项,ε 是误差项,通常假设其服从均值为0的正态分布。

        线性回归的目标是通过训练数据最小化残差平方和(RSS),即:

        其中,N 是样本数量,yi​ 是第 i 个样本的实际值,y^​i​ 是模型预测值。常用的方法有普通最小二乘法(OLS)和梯度下降法。

2.2. 线性回归应用

        线性回归广泛应用于经济学、金融、市场营销、社会科学等领域,用于预测销售额、房价、股票价格、广告点击率等连续型变量。

2.3.代码实例

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

# 生成模拟数据
X, y = make_regression(n_samples=100, n_features=1, noise=20, random_state=42)

# 创建并训练线性回归模型
model = LinearRegression()
model.fit(X, y)

# 预测
y_pred = model.predict(X)

# 输出模型参数(权重和截距)
print(f"Weights: {model.coef_}, Intercept: {model.intercept_}")

# 输出R²分数(模型解释力)
r2_score = model.score(X, y)
print(f"R² Score: {r2_score:.2f}")

        上述代码首先生成了一个模拟的一维线性回归数据集,然后利用 sklearn 中的 LinearRegression 创建并训练了一个线性回归模型。接着用模型对数据进行预测,并输出模型的权重、截距以及模型在训练数据上的R²分数(决定系数),用于衡量模型的拟合优度。

        输出结果:

Weights: [47.13323967], Intercept: 2.3302306410539453
R² Score: 0.85

3.逻辑回归与分类任务

3.1. 逻辑回归原理

        逻辑回归虽然名字中包含“回归”,但实际上是一种用于处理二分类问题的监督学习模型。它通过sigmoid函数将线性回归的输出映射到(0, 1)区间,得到样本属于正类的概率。决策边界为:

        其中,σ 是sigmoid函数,θ 是模型参数,x 是特征向量。预测时,通常设定一个阈值(如0.5),当概率大于阈值时预测为正类,否则预测为负类。

3.2. 逻辑回归应用

        逻辑回归常用于预测用户是否购买产品、邮件是否为垃圾邮件、病人是否有某种疾病等二分类问题。

3.3.代码实例

import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

# 生成模拟数据
X, y = make_classification(n_samples=100, n_features=10, n_classes=2, random_state=42)

# 创建并训练逻辑回归模型
model = LogisticRegression(random_state=42)
model.fit(X, y)

# 预测
y_pred = model.predict(X)

# 输出模型参数(权重和截距)
print(f"Weights: {model.coef_}, Intercept: {model.intercept_}")

# 输出准确率
accuracy = model.score(X, y)
print(f"Accuracy: {accuracy:.2f}")

        这段代码用于演示二分类问题的建模、训练、预测和评估过程,使用了scikit-learn库中的LogisticRegression模型和make_classification数据集生成模拟数据。

        输出结果:

Weights: [[-1.57929515 -0.67319302  2.2134683  -1.07588413  0.17662881  0.13095114
   0.25813356  0.06636873  0.19688602 -0.03893267]], Intercept: [0.10379515]
Accuracy: 1.00

        以下示例为逻辑回归模型在乳腺癌数据集上的应用示例,可以看出逻辑回归模型在乳腺癌数据集上取得了较高的准确率。 

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建逻辑回归模型
model = LogisticRegression(max_iter=10000)

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 输出 Accuracy: 0.9590643274853801

4.决策树与随机森林模型详解

4.1. 决策树原理

        决策树是一种基于树状结构进行决策的监督学习模型,通过递归地划分数据空间,形成一系列规则(if-then结构)。划分过程基于特征选择、分割点选择,目标是使划分后的子集尽可能“纯”(同类样本集中),通常使用信息熵、基尼指数等指标衡量。

4.2. 随机森林原理

        随机森林是一种集成学习方法,它由多个决策树构成,并引入随机性:在构建每棵树时,从原始数据集中抽取有放回的随机样本(bootstrap sample),并从所有特征中随机选取一部分特征用于节点划分。最终,通过多数投票(分类任务)或平均(回归任务)的方式整合所有决策树的结果。

4.3. 应用场景

        决策树和随机森林广泛应用于各种分类和回归任务,如客户流失预测、信用评分、疾病诊断、房价预测等。

4.4.代码实例

from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集(如果之前未划分,则重新划分)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建决策树分类器
dt_model = DecisionTreeClassifier()

# 训练决策树模型
dt_model.fit(X_train, y_train)

# 预测
dt_y_pred = dt_model.predict(X_test)

# 评估决策树模型
dt_accuracy = accuracy_score(y_test, dt_y_pred)
print(f"Decision Tree Accuracy: {dt_accuracy}")

# 创建随机森林分类器
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练随机森林模型
rf_model.fit(X_train, y_train)

# 预测
rf_y_pred = rf_model.predict(X_test)

# 评估随机森林模型
rf_accuracy = accuracy_score(y_test, rf_y_pred)
print(f"Random Forest Accuracy: {rf_accuracy}")

        输出结果:

Decision Tree Accuracy: 0.9298245614035088
Random Forest Accuracy: 0.9649122807017544

        在这个例子中,对比多次的运行结果,随机森林通常会比单棵决策树表现出更高的准确率,因为它通过集成多棵树的预测结果来减少过拟合的风险。 

5.总结

        综上,线性回归、逻辑回归和决策树/随机森林作为监督学习中的重要模型,分别适用于连续型预测、二分类任务和多元分类/回归任务。理解它们的原理、特点和应用,有助于在实际问题中选择合适的模型进行预测和分析。更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

本文含有隐藏内容,请 开通VIP 后查看