程序员的数学(十四)机器学习入门中的数学思维:从数据到模型的数学桥梁

举报
倔强的石头_ 发表于 2026/01/04 08:52:11 2026/01/04
【摘要】 很多程序员觉得机器学习 “难”,是因为把它当作全新的技术来学,却忽略了它的数学根基 —— 线性回归的本质是 “线性代数的超定方程组求解”,逻辑回归的核心是 “概率统计的分类概率建模”,模型评估用到 “排列组合的分类计数”。掌握这些数学思维,就能从 “调用 API” 升级为 “理解模型本质”。

image.png

@[toc]
欢迎回到 “程序员的数学” 系列第十四篇。在前十三篇内容中,我们从 0 的基础逻辑逐步构建了完整的数学思维体系 —— 从概率统计、线性代数到算法优化、数据处理。今天,我们聚焦程序员进阶的核心方向之一 ——机器学习入门,通过 “数据预处理、线性回归、逻辑回归、模型评估” 四个核心场景,展示如何用前面学过的数学知识(线性代数的矩阵运算、概率统计的分布与期望、逻辑判断、递归优化)搭建 “数据到模型” 的桥梁,让你明白 “机器学习不是黑盒,而是数学知识的综合应用”。

很多程序员觉得机器学习 “难”,是因为把它当作全新的技术来学,却忽略了它的数学根基 —— 线性回归的本质是 “线性代数的超定方程组求解”,逻辑回归的核心是 “概率统计的分类概率建模”,模型评估用到 “排列组合的分类计数”。掌握这些数学思维,就能从 “调用 API” 升级为 “理解模型本质”。

一、为什么机器学习需要数学思维?

先看一个真实场景:某程序员用sklearn调用线性回归模型预测房价,输入 “面积、卧室数” 等特征后,模型输出预测值,但当被问 “为什么这个面积的房价预测是这个值” 时,却答不上来 —— 这就是 “黑盒用法” 的问题,忽略了数学原理。

而用数学思维看机器学习,每个步骤都清晰可见:

  • 数据预处理:用线性代数的 “归一化” 将特征缩放到同一范围,避免 “面积(平方米)” 比 “卧室数(个)” 对模型影响过大;
  • 线性回归:用线性代数的 “最小二乘法” 求解超定方程组,找到拟合数据的最佳直线;
  • 逻辑回归:用概率统计的 “sigmoid 函数” 将线性输出转为 0-1 概率,实现二分类;
  • 模型评估:用概率统计的 “混淆矩阵” 计算准确率、召回率,判断模型好坏。

没有数学思维,机器学习就是 “碰运气调参”;有了数学思维,才能理解模型的 “为什么”,才能在遇到问题时(如模型过拟合)知道如何优化。

二、场景 1:数据预处理 —— 线性代数与概率统计的 “数据标准化”

数据预处理是机器学习的第一步,核心是 “让数据适合模型输入”,用到线性代数的向量变换和概率统计的异常值处理,比如归一化、标准化、缺失值填充。

1. 数学原理:标准化与异常值处理

  • 线性代数的标准化:将特征向量X转为均值为 0、标准差为 1 的向量,公式:(X_{norm} = \frac{X - \mu}{\sigma})

    其中μ是特征均值,σ是标准差,本质是 “线性变换”,让所有特征在同一量级;

  • 概率统计的异常值处理:用 “3σ 原则”(数值超出μ±3σ为异常值)或 “四分位距(IQR)”(超出Q1-1.5IQRQ3+1.5IQR为异常值)识别并处理异常值,避免影响模型拟合;

  • 逻辑判断的缺失值填充:缺失值占比 <5% 时,用均值 / 中位数填充(数值特征)或众数填充(类别特征),占比高时删除特征,用到 “是否缺失” 的逻辑判断。

2. 实战:房价预测数据的预处理

以 “波士顿房价预测” 数据集(经典线性回归案例)为例,展示数据预处理的完整流程,用到pandassklearn

python

import pandas as pd
import numpy as np
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer

# 1. 加载数据(波士顿房价数据集,特征包括面积、卧室数等)
boston = load_boston()
X = pd.DataFrame(boston.data, columns=boston.feature_names)  # 特征矩阵(n_samples × n_features)
y = pd.Series(boston.target, name="price")  # 目标值(房价)

print(f"原始特征矩阵形状:{X.shape}")  # 输出:(506, 13)(506个样本,13个特征)
print("原始特征前5行(部分列):")
print(X[["RM", "LSTAT", "PTRATIO"]].head())  # RM=平均房间数,LSTAT=低收入占比,PTRATIO=师生比

# 2. 处理缺失值(逻辑判断+均值填充)
# 模拟缺失值(实际数据可能存在)
X.loc[10:20, "RM"] = np.nan  # 第10-20行的RM特征设为缺失
# 用SimpleImputer填充缺失值(均值填充)
imputer = SimpleImputer(strategy="mean")  # strategy="mean"表示均值填充
X_imputed = imputer.fit_transform(X)  # 填充后的特征矩阵(线性代数的矩阵)
X_imputed = pd.DataFrame(X_imputed, columns=X.columns)

print(f"\n填充缺失值后,RM特征的缺失值数量:{X_imputed['RM'].isna().sum()}")  # 输出0

# 3. 处理异常值(概率统计的3σ原则)
def remove_outliers(X, feature):
    """根据3σ原则删除异常值"""
    mu = X[feature].mean()  # 均值
    sigma = X[feature].std()  # 标准差
    lower = mu - 3 * sigma
    upper = mu + 3 * sigma
    # 逻辑判断:保留在[lower, upper]范围内的样本
    X_clean = X[(X[feature] >= lower) & (X[feature] <= upper)]
    return X_clean

# 对RM(平均房间数)和LSTAT(低收入占比)删除异常值
X_clean = X_imputed.copy()
X_clean = remove_outliers(X_clean, "RM")
X_clean = remove_outliers(X_clean, "LSTAT")

print(f"\n删除异常值后样本数:{X_clean.shape[0]}")  # 示例:(490, 13)(删除了16个异常样本)

# 4. 特征标准化(线性代数的线性变换)
scaler = StandardScaler()  # 标准化:(X - 均值) / 标准差
X_scaled = scaler.fit_transform(X_clean)  # 标准化后的特征矩阵
X_scaled = pd.DataFrame(X_scaled, columns=X_clean.columns)

# 查看标准化后的特征均值和标准差(应接近0和1)
print("\n标准化后特征的均值(前3列):")
print(X_scaled[["RM", "LSTAT", "PTRATIO"]].mean().round(3))  # 输出:接近0
print("标准化后特征的标准差(前3列):")
print(X_scaled[["RM", "LSTAT", "PTRATIO"]].std().round(3))   # 输出:接近1

3. 关联知识点

  • 线性代数:X_scaled是标准化后的特征矩阵,每个特征是一列向量,符合线性代数的矩阵定义;标准化是 “向量数乘 + 平移” 的线性变换(X*1/σ - μ/σ);
  • 概率统计:3σ 原则基于正态分布,假设特征近似符合正态分布,异常值概率 < 0.1%;均值和标准差是描述数据集中趋势和离散程度的核心指标;
  • 逻辑判断:用&(与)判断样本是否在正常范围内,用isna().sum()判断缺失值数量,都是逻辑运算的应用。

三、场景 2:线性回归 —— 线性代数的 “拟合直线” 艺术

线性回归是机器学习中最基础的模型,用于预测连续值(如房价、销量),核心是 “找到一条拟合数据的最佳直线(或超平面)”,用到线性代数的 “超定方程组求解” 和 “最小二乘法”。

1. 数学原理:线性模型与最小二乘

  • 线性模型的数学表达:对于特征矩阵X(n×p)、参数向量θ(p×1)、目标向量y(n×1),线性回归的模型为:(y = Xθ + ε)

    其中ε是误差向量(n×1),我们需要找到θ,使误差ε最小;

  • 最小二乘法:误差最小化等价于 “误差平方和最小”,即min(||y - Xθ||²)。通过矩阵运算可求解参数θ:(θ = (X^T X)^{-1} X^T y)

    其中X^TX的转置,(X^T X)^{-1}X^T X的逆矩阵,这是线性代数中 “超定方程组的最优解”;

  • 直观理解:对于单特征(如面积),线性模型就是y = θ₀ + θ₁x(直线),最小二乘就是找 “所有点到直线的垂直距离平方和最小” 的直线。

2. 实战:房价预测的线性回归模型

用处理后的波士顿房价数据,实现线性回归模型,包括 “手动推导最小二乘” 和 “sklearn 调用”,理解模型本质:

python

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 基于场景1处理后的X_clean(特征)和y(房价)
# 为简化,选择单特征“RM(平均房间数)”做线性回归(便于可视化)
X_single = X_clean[["RM"]].values  # 单特征矩阵(n×1)
y = y[X_clean.index].values  # 对齐目标值(删除异常值后的y)

# 1. 划分训练集和测试集(概率统计的抽样)
X_train, X_test, y_train, y_test = train_test_split(
    X_single, y, test_size=0.2, random_state=42  # 20%数据作为测试集
)

print(f"训练集样本数:{X_train.shape[0]},测试集样本数:{X_test.shape[0]}")

# 2. 手动推导最小二乘解(线性代数)
def linear_regression_manual(X, y):
    """手动实现线性回归:计算参数θ = (X^T X)^{-1} X^T y"""
    # 添加偏置项(θ₀,对应常数项):X变为n×2矩阵(第一列全1)
    X_with_bias = np.hstack([np.ones((X.shape[0], 1)), X])  # 矩阵拼接
    # 计算X^T X
    X_T_X = np.dot(X_with_bias.T, X_with_bias)  # 矩阵乘法
    # 计算X^T y
    X_T_y = np.dot(X_with_bias.T, y.reshape(-1, 1))  # 转置y为列向量
    # 计算(X^T X)的逆矩阵
    X_T_X_inv = np.linalg.inv(X_T_X)
    # 计算参数θ(θ₀=偏置项,θ₁=特征系数)
    theta = np.dot(X_T_X_inv, X_T_y)
    return theta

# 手动训练模型
theta_manual = linear_regression_manual(X_train, y_train)
theta0, theta1 = theta_manual[0][0], theta_manual[1][0]
print(f"\n手动推导的参数:θ₀={theta0:.2f},θ₁={theta1:.2f}")
print(f"手动模型公式:y = {theta0:.2f} + {theta1:.2f} × RM")

# 3. 用sklearn实现线性回归(验证手动结果)
lr = LinearRegression()
lr.fit(X_train, y_train)  # 训练模型
theta0_sklearn = lr.intercept_  # 偏置项θ₀
theta1_sklearn = lr.coef_[0]    # 特征系数θ₁

print(f"\nsklearn的参数:θ₀={theta0_sklearn:.2f},θ₁={theta1_sklearn:.2f}")
print(f"sklearn模型公式:y = {theta0_sklearn:.2f} + {theta1_sklearn:.2f} × RM")

# 4. 模型预测与评估(概率统计的误差计算)
# 手动预测
X_test_with_bias = np.hstack([np.ones((X_test.shape[0], 1)), X_test])
y_pred_manual = np.dot(X_test_with_bias, theta_manual).flatten()
# sklearn预测
y_pred_sklearn = lr.predict(X_test)

# 计算均方误差(MSE,误差平方和的均值)
mse_manual = mean_squared_error(y_test, y_pred_manual)
mse_sklearn = mean_squared_error(y_test, y_pred_sklearn)

print(f"\n手动模型测试集MSE:{mse_manual:.2f}")
print(f"sklearn模型测试集MSE:{mse_sklearn:.2f}")  # 应与手动结果几乎一致

# 5. 可视化拟合直线(线性代数的直线方程)
plt.figure(figsize=(10, 6))
# 绘制训练集数据点
plt.scatter(X_train, y_train, alpha=0.6, label="训练集数据")
# 绘制拟合直线(x从最小到最大,计算对应的y)
x_line = np.linspace(X_single.min(), X_single.max(), 100).reshape(-1, 1)
x_line_with_bias = np.hstack([np.ones((100, 1)), x_line])
y_line = np.dot(x_line_with_bias, theta_manual).flatten()
plt.plot(x_line, y_line, color="red", linewidth=2, label=f"拟合直线:y={theta0:.2f}+{theta1:.2f}×RM")
plt.xlabel("平均房间数(RM)")
plt.ylabel("房价(千美元)")
plt.title("房价与平均房间数的线性回归拟合")
plt.legend()
plt.show()

3. 关联知识点

  • 线性代数:手动推导用到矩阵拼接(hstack)、矩阵乘法(dot)、逆矩阵(linalg.inv),都是线性代数的核心运算;模型公式y=θ₀+θ₁x是线性方程的向量表示;
  • 概率统计:训练集 / 测试集划分是 “随机抽样”,确保样本代表性;MSE 是 “误差平方的期望”,用于衡量模型预测的准确性;
  • 逻辑判断:train_test_splitrandom_state确保结果可复现,用到 “固定随机种子” 的逻辑控制。

四、场景 3:逻辑回归 —— 概率统计的 “二分类” 建模

逻辑回归用于二分类问题(如垃圾邮件识别、疾病诊断),核心是 “将线性输出转为 0-1 概率”,用到概率统计的 “sigmoid 函数” 和 “对数似然损失”,同时用到线性代数的特征矩阵运算。

1. 数学原理:从线性到概率的转换

  • 线性预测到概率的转换:逻辑回归先计算线性输出z = Xθ,再用 sigmoid 函数将z转为概率p(0≤p≤1):(p = \sigma(z) = \frac{1}{1+e^{-z}})

    p表示 “样本属于正类(如垃圾邮件)的概率”,当p≥0.5时预测为正类,否则为负类;

  • 损失函数:用 “对数似然损失” 衡量模型预测与真实标签的差距,目标是最小化损失:(Loss = -\frac{1}{n}\sum_{i=1}^n [y_i \log p_i + (1-y_i)\log(1-p_i)])

    其中y_i是真实标签(0 或 1),p_i是模型预测的概率;

  • 直观理解:sigmoid 函数将线性输出(-∞到 +∞)压缩到 0-1,对应 “分类概率”,损失函数惩罚 “预测概率与真实标签差距大” 的样本。

2. 实战:垃圾邮件分类的逻辑回归模型

用 “垃圾邮件数据集”(sklearn内置),实现逻辑回归,区分垃圾邮件(正类)和正常邮件(负类):

python

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, accuracy_score

# 1. 准备垃圾邮件数据(模拟数据,实际可从CSV加载)
# 样本:邮件文本 + 标签(1=垃圾邮件,0=正常邮件)
emails = [
    "免费领取奖品,点击链接",
    "会议通知:明天10点开会",
    "恭喜您中了大奖,请回复信息",
    "项目进度汇报,请查收附件",
    "限时优惠,买一送一",
    "下周团建活动安排",
    "您的账户存在异常,请点击验证",
    "请确认本周工作计划"
]
labels = [1, 0, 1, 0, 1, 0, 1, 0]  # 标签

# 2. 文本特征提取(线性代数的向量表示)
# CountVectorizer:将文本转为“词频矩阵”(n_samples × n_words)
vectorizer = CountVectorizer(stop_words="english")  # 简化:用英文停用词,实际可用中文停用词
X = vectorizer.fit_transform(emails)  # 文本特征矩阵(稀疏矩阵)
X = X.toarray()  # 转为密集矩阵(便于理解)
feature_names = vectorizer.get_feature_names_out()  # 特征名称(单词)

print(f"特征矩阵形状:{X.shape}")  # 输出:(8, 词汇数),如(8,20)
print("特征名称(部分):", feature_names[:10])

# 3. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
    X, labels, test_size=0.25, random_state=42  # 25%测试集
)

# 4. 训练逻辑回归模型(概率统计+线性代数)
lr = LogisticRegression(random_state=42)
lr.fit(X_train, y_train)  # 训练:最小化对数似然损失

# 查看模型参数(线性代数的参数向量)
theta0 = lr.intercept_[0]  # 偏置项θ₀
theta = lr.coef_[0]        # 特征系数θ(与每个单词对应)

# 打印Top5正向特征(单词对“垃圾邮件”的贡献)
top_positive = np.argsort(theta)[-5:]  # 系数最大的5个特征索引
print(f"\n对垃圾邮件贡献最大的5个单词:")
for idx in top_positive:
    print(f"单词:{feature_names[idx]},系数:{theta[idx]:.2f}")

# 5. 模型预测与概率输出(概率统计)
# 预测类别(0或1)
y_pred = lr.predict(X_test)
# 预测概率(每个样本属于正类的概率)
y_pred_proba = lr.predict_proba(X_test)[:, 1]  # 第2列是正类概率

print(f"\n测试集预测类别:{y_pred}")
print(f"测试集预测概率(正类):{y_pred_proba.round(3)}")
print(f"测试集真实类别:{y_test}")

# 6. 模型评估(概率统计的混淆矩阵)
# 混淆矩阵:TP(真阳性)、TN(真阴性)、FP(假阳性)、FN(假阴性)
cm = confusion_matrix(y_test, y_pred)
accuracy = accuracy_score(y_test, y_pred)  # 准确率:(TP+TN)/(TP+TN+FP+FN)

print(f"\n混淆矩阵:")
print(cm)
print(f"准确率:{accuracy:.2f}")

3. 关联知识点

  • 线性代数:文本特征矩阵X是 “单词 - 样本” 的矩阵表示,每个样本是一行向量,每个单词是一列;模型参数theta是与单词对应的系数向量;
  • 概率统计:sigmoid 函数将线性输出转为概率,符合 “二项分布” 的概率建模;混淆矩阵是 “分类结果的排列组合计数”,准确率是 “正确分类的样本数 / 总样本数”,用到概率统计的频率计算;
  • 逻辑判断:预测时用p≥0.5的逻辑判断划分类别,predict方法本质是对概率应用阈值判断。

五、场景 4:模型评估 —— 概率与排列组合的 “效果衡量”

模型评估是判断模型好坏的关键,核心用到概率统计的 “分类计数” 和排列组合的 “混淆矩阵”,常用指标有准确率、召回率、F1 分数、ROC 曲线。

1. 数学原理:评估指标的数学定义

  • 混淆矩阵:二分类问题的四种结果(排列组合的分类计数):

    预测正类 预测负类
    真实正类 TP(真阳) FN(假阴)
    真实负类 FP(假阳) TN(真阴)
  • 核心指标

    • 准确率(Accuracy):整体分类正确的比例,(TP+TN)/(TP+TN+FP+FN)
    • 召回率(Recall):真实正类被正确预测的比例(“不漏掉正类”),TP/(TP+FN)
    • 精确率(Precision):预测正类中真实正类的比例(“预测正类要准”),TP/(TP+FP)
    • F1 分数:精确率和召回率的调和平均,2×(Precision×Recall)/(Precision+Recall),平衡两者;
  • ROC 曲线:以 “假阳性率(FP/(FP+TN))” 为 x 轴,“真阳性率(Recall)” 为 y 轴,曲线下面积(AUC)越大,模型越好。

2. 实战:完整模型评估流程

基于场景 3 的垃圾邮件分类模型,补充完整的评估指标计算和 ROC 曲线绘制:

python

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import (
    confusion_matrix, accuracy_score,
    precision_score, recall_score, f1_score,
    roc_curve, auc
)

# 基于场景3的测试集结果:y_test(真实标签)、y_pred(预测类别)、y_pred_proba(正类概率)
# 1. 计算核心评估指标(概率统计+排列组合)
# 混淆矩阵
cm = confusion_matrix(y_test, y_pred)
TP, FN = cm[1, 1], cm[1, 0]
FP, TN = cm[0, 1], cm[0, 0]

# 手动计算指标(验证sklearn结果)
accuracy = (TP + TN) / (TP + TN + FP + FN)
precision = TP / (TP + FP) if (TP + FP) > 0 else 0
recall = TP / (TP + FN) if (TP + FN) > 0 else 0
f1 = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0

# sklearn计算指标
acc_sklearn = accuracy_score(y_test, y_pred)
prec_sklearn = precision_score(y_test, y_pred, zero_division=0)
rec_sklearn = recall_score(y_test, y_pred, zero_division=0)
f1_sklearn = f1_score(y_test, y_pred, zero_division=0)

print("手动计算的评估指标:")
print(f"准确率:{accuracy:.2f},精确率:{precision:.2f},召回率:{recall:.2f},F1:{f1:.2f}")
print("\nsklearn计算的评估指标:")
print(f"准确率:{acc_sklearn:.2f},精确率:{prec_sklearn:.2f},召回率:{rec_sklearn:.2f},F1:{f1_sklearn:.2f}")

# 2. 绘制ROC曲线(概率统计)
# 计算ROC曲线的x轴(假阳性率)和y轴(真阳性率)
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)
roc_auc = auc(fpr, tpr)  # AUC:ROC曲线下面积

# 绘制ROC曲线
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color="darkorange", lw=2, label=f"ROC曲线 (AUC = {roc_auc:.2f})")
plt.plot([0, 1], [0, 1], color="navy", lw=2, linestyle="--")  # 随机猜测的ROC曲线
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel("假阳性率(FPR)")
plt.ylabel("真阳性率(TPR,召回率)")
plt.title("垃圾邮件分类模型的ROC曲线")
plt.legend(loc="lower right")
plt.show()

# 3. 阈值选择的影响(概率统计的阈值优化)
print("\n不同阈值对应的精确率和召回率:")
thresholds = [0.2, 0.3, 0.5, 0.7, 0.8]
for thresh in thresholds:
    y_pred_thresh = (y_pred_proba >= thresh).astype(int)  # 按阈值划分类别
    prec = precision_score(y_test, y_pred_thresh, zero_division=0)
    rec = recall_score(y_test, y_pred_thresh, zero_division=0)
    print(f"阈值={thresh}:精确率={prec:.2f},召回率={rec:.2f}")

3. 关联知识点

  • 排列组合:混淆矩阵的四种结果是 “真实标签 × 预测标签” 的排列组合,总组合数 = 2×2=4,用到 “重复排列”;
  • 概率统计:准确率、精确率、召回率是 “频率的比例计算”,符合概率的定义;ROC 曲线是 “不同阈值下的概率权衡”,AUC 是 “模型区分能力的概率指标”;
  • 逻辑判断:不同阈值的预测是 “概率≥阈值” 的逻辑判断,展示了 “逻辑条件对模型结果的影响”。

六、机器学习的数学思维框架与后续学习

1. 思维框架:串联前面的所有章节

机器学习环节 核心数学知识点
数据预处理 线性代数(标准化、矩阵)、概率统计(异常值、抽样)
线性回归 线性代数(矩阵运算、最小二乘)、概率统计(误差计算)
逻辑回归 概率统计(sigmoid、对数似然)、线性代数(特征矩阵)
模型评估 排列组合(混淆矩阵)、概率统计(准确率、ROC)

2. 后续学习方向

  • 深度学习入门:神经网络是 “多层线性变换 + 激活函数”,卷积神经网络(CNN)用到线性代数的卷积运算,循环神经网络(RNN)用到递归思想;
  • 强化学习基础:马尔可夫决策过程用到概率转移,价值函数用到数学归纳法;
  • 模型优化:正则化(L1/L2)用到线性代数的向量范数,梯度下降用到微积分的导数(可作为后续系列主题)。

七、小结:数学是机器学习的 “地基”

今天的四个机器学习场景,展示了数学思维如何支撑机器学习的每个环节:

  • 数据预处理用线性代数和概率统计 “净化数据”;
  • 线性回归用线性代数 “拟合数据规律”;
  • 逻辑回归用概率统计 “建模分类概率”;
  • 模型评估用排列组合和概率 “衡量模型好坏”。

对程序员而言,机器学习不是 “调参黑盒”,而是 “数学知识的实战场”—— 当你能把线性回归的参数和矩阵运算关联,把逻辑回归的概率和 sigmoid 函数关联,就能真正理解模型的 “为什么”,在遇到过拟合、数据稀疏等问题时,能从数学角度找到解决方案(如正则化、特征工程)。

如果你在机器学习中用过类似的数学思维,或者有其他想深入的主题(如深度学习、强化学习),欢迎在评论区分享!

下篇预告

机器学习让我们领略了数学在智能模型中的威力,但数学思维的应用远不止于此。在实际的软件工程中,从代码编写到系统架构,数学思维无处不在。在下一篇《数学思维在工程实践中的综合落地:从代码到系统的全链路应用》中,我们将探讨如何将数学思维融入到日常开发的每一个环节,实现从“写代码”到“构建系统”的质的飞跃。敬请期待!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。