目录
[2.1. 线性回归原理](#2.1. 线性回归原理)
[2.2. 线性回归应用](#2.2. 线性回归应用)
[3.1. 逻辑回归原理](#3.1. 逻辑回归原理)
[3.2. 逻辑回归应用](#3.2. 逻辑回归应用)
[4.1. 决策树原理](#4.1. 决策树原理)
[4.2. 随机森林原理](#4.2. 随机森林原理)
[4.3. 应用场景](#4.3. 应用场景)
**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人工智能实战》栏目!