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

目录

1.前言

2.线性回归原理与应用

[2.1. 线性回归原理](#2.1. 线性回归原理)

[2.2. 线性回归应用](#2.2. 线性回归应用)

2.3.代码实例

3.逻辑回归与分类任务

[3.1. 逻辑回归原理](#3.1. 逻辑回归原理)

[3.2. 逻辑回归应用](#3.2. 逻辑回归应用)

3.3.代码实例

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

[4.1. 决策树原理](#4.1. 决策树原理)

[4.2. 随机森林原理](#4.2. 随机森林原理)

[4.3. 应用场景](#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.代码实例

python 复制代码
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²分数(决定系数),用于衡量模型的拟合优度。

输出结果:

python 复制代码
Weights: [47.13323967], Intercept: 2.3302306410539453
R² Score: 0.85

3.逻辑回归与分类任务

3.1. 逻辑回归原理

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

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

3.2. 逻辑回归应用

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

3.3.代码实例

python 复制代码
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数据集生成模拟数据。

输出结果:

python 复制代码
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

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

python 复制代码
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.代码实例

python 复制代码
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}")

输出结果:

python 复制代码
Decision Tree Accuracy: 0.9298245614035088
Random Forest Accuracy: 0.9649122807017544

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

5.总结

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

相关推荐
martinzh15 小时前
检索器江湖:那些让RAG神功大成的武林绝学
人工智能
Dersun15 小时前
python学习进阶之异常和文件操作(三)
开发语言·python·学习·json
Juchecar16 小时前
通过“单词补全”演示 Transformer 原理(Python代码可运行)
人工智能·python
c8i16 小时前
关于python中的钩子方法和内置函数的举例
python
禁默16 小时前
第六届机器学习与计算机应用国际学术会议
运维·人工智能·机器学习·自动化
念念010716 小时前
基于机器学习的P2P网贷平台信用违约预测模型
人工智能·机器学习
悟乙己16 小时前
机器学习超参数调优全方法介绍指南
人工智能·机器学习·超参数
阿里云大数据AI技术16 小时前
Mem0 + Milvus:为人工智能构建持久化长时记忆
人工智能
悟乙己16 小时前
探讨Hyperband 等主要机器学习调优方法的机制和权衡
人工智能·机器学习·超参数·调参