当前位置: 首页 > article >正文

机器学习--概览

一、机器学习基础概念

1. 定义

机器学习(Machine Learning, ML):通过算法让计算机从数据中自动学习规律,并利用学习到的模型进行预测或决策,而无需显式编程。

2. 与编程的区别

传统编程机器学习
输入:规则+数据 → 输出:结果输入:数据+结果 → 输出:规则
需要人工编写逻辑自动发现数据中的模式

3. 核心要素

  • 数据:模型学习的原材料(结构化/非结构化)
  • 特征(Feature):数据的可量化属性(如房价预测中的面积、地段)
  • 标签(Label):监督学习中的目标变量(如房价数值)
  • 模型:从数据中学习到的数学函数(如 y = w 1 x 1 + w 2 x 2 + b y = w_1x_1 + w_2x_2 + b y=w1x1+w2x2+b
  • 损失函数:衡量预测值与真实值的差距(如均方误差 MSE)
  • 优化算法:调整模型参数以最小化损失(如梯度下降)

二、机器学习分类

1. 按学习方式分类

(1) 监督学习(Supervised Learning)
  • 特点:数据包含输入特征和对应标签
  • 典型任务
    • 分类(预测离散类别):垃圾邮件识别(二分类)、手写数字识别(多分类)
    • 回归(预测连续数值):房价预测、股票走势预测
  • 常用算法
    • 线性回归(Linear Regression)
    • 支持向量机(SVM)
    • 随机森林(Random Forest)
    • 神经网络(Neural Networks)
(2) 无监督学习(Unsupervised Learning)
  • 特点:数据只有输入特征,无标签
  • 典型任务
    • 聚类:客户分群、新闻主题发现
    • 降维:可视化高维数据(t-SNE)
    • 异常检测:信用卡欺诈识别
  • 常用算法
    • K-Means聚类
    • 主成分分析(PCA)
    • 自编码器(Autoencoder)
(3) 强化学习(Reinforcement Learning, RL)
  • 特点:智能体通过与环境交互获得奖励信号学习策略
  • 典型应用:AlphaGo、自动驾驶决策
  • 核心要素
    • 状态(State)
    • 动作(Action)
    • 奖励(Reward)
    • 策略(Policy)

2. 按模型类型分类

类型特点算法示例
参数模型参数数量固定(如线性模型)线性回归、逻辑回归
非参数模型参数数量随数据增长KNN、决策树
判别模型直接学习决策边界SVM、神经网络
生成模型学习数据分布朴素贝叶斯、GAN

三、机器学习流程

1. 标准工作流

数据收集
数据预处理
特征工程
模型选择
模型训练
模型评估
是否达标?
部署

2. 关键步骤详解

(1) 数据预处理
  • 缺失值处理:删除/填充(均值、中位数)
  • 异常值检测:Z-Score、IQR方法
  • 数据标准化:Min-Max缩放、Z-Score标准化
  • 类别编码:One-Hot编码、标签编码
(2) 特征工程
  • 特征选择:方差阈值、卡方检验
  • 特征构造:组合特征(如面积=长×宽)
  • 时间序列特征:滑动窗口统计
  • 文本特征:TF-IDF、词嵌入
(3) 模型训练
  • 数据集划分:训练集(60-80%)、验证集(10-20%)、测试集(10-20%)
  • 超参数调优:网格搜索、随机搜索、贝叶斯优化
  • 防止过拟合:交叉验证、早停(Early Stopping)
(4) 模型评估
任务类型评估指标
分类准确率、精确率、召回率、F1 Score、ROC-AUC
回归MAE、MSE、R²
聚类轮廓系数、Calinski-Harabasz指数

四、经典算法原理

1. 线性回归(Linear Regression)

  • 核心思想:找到最佳拟合直线 y = w T x + b y = w^Tx + b y=wTx+b
  • 损失函数 M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n}\sum_{i=1}^n(y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2
  • 求解方法
    • 解析解: w = ( X T X ) − 1 X T y w = (X^TX)^{-1}X^Ty w=(XTX)1XTy (适用于小数据)
    • 数值解:梯度下降(大数据场景)

2. 决策树(Decision Tree)

  • 分裂准则
    • 信息增益(ID3算法)
    • 基尼不纯度(CART算法)
  • 剪枝策略:预剪枝(最大深度限制)、后剪枝(代价复杂度剪枝)

3. 随机森林(Random Forest)

  • 核心机制
    • Bagging:通过自助采样(Bootstrap)生成多个子数据集
    • 特征随机性:每个节点分裂时随机选择部分特征
  • 预测方式:分类任务投票,回归任务平均

4. 支持向量机(SVM)

  • 最大间隔分类器:寻找使间隔最大的超平面
  • 核技巧:通过核函数将数据映射到高维空间(常用RBF核)
  • 数学形式: f ( x ) = s i g n ( ∑ i = 1 n α i y i K ( x i , x ) + b ) f(x) = sign(\sum_{i=1}^n \alpha_i y_i K(x_i, x) + b) f(x)=sign(i=1nαiyiK(xi,x)+b)

五、实战案例解析

案例1:鸢尾花分类(监督学习)

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier# 加载数据
iris = load_iris()
X, y = iris.data, iris.target# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 训练模型
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)# 评估
print("准确率:", model.score(X_test, y_test))

案例2:客户分群(无监督学习)

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs# 生成模拟数据
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.6)# 聚类分析
kmeans = KMeans(n_clusters=4)
clusters = kmeans.fit_predict(X)# 可视化
plt.scatter(X[:,0], X[:,1], c=clusters, cmap='viridis')
plt.show()

在这里插入图片描述


六、挑战与解决方案

常见问题解决方法
数据不平衡SMOTE过采样、类别权重调整
维度灾难特征选择、降维技术(PCA)
过拟合L1/L2正则化、Dropout(神经网络)
计算效率低特征哈希、模型量化

线性回归算法

以下是线性回归的全面详解,包含基础概念、数学原理、实战应用及进阶技巧,适合零基础学习者系统掌握:


线性回归终极指南

一、核心概念全景图

线性回归
简单线性回归
多元线性回归
正则化回归
单特征预测
多特征组合
Lasso/Ridge/ElasticNet

二、算法深度解析

1. 数学表达形式
  • 简单线性回归
    y = w 1 x + b y = w_1x + b y=w1x+b

    • w₁:斜率(特征权重)
    • b:截距(偏置项)
  • 多元线性回归
    y = w 1 x 1 + w 2 x 2 + . . . + w n x n + b y = w_1x_1 + w_2x_2 + ... + w_nx_n + b y=w1x1+w2x2+...+wnxn+b

    • 示例:房价 = 3.5×面积 + 1.2×卧室数 + 20
2. 损失函数可视化

均方误差(MSE)
M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2
在这里插入图片描述

3. 参数求解

更新规则
w = w − α ∂ M S E ∂ w w = w - \alpha \frac{\partial MSE}{\partial w} w=wαwMSE
b = b − α ∂ M S E ∂ b b = b - \alpha \frac{\partial MSE}{\partial b} b=bαbMSE

学习率(α)的影响

  • 太小:收敛慢
  • 太大:可能无法收敛

三、实战全流程演练

案例:预测汽车油耗(MPG)

数据集

气缸数排量马力重量油耗
42.5120150028
63.0180200022
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split# 加载数据
data = pd.read_csv('auto-mpg.csv')
X = data[['cylinders', 'displacement', 'horsepower', 'weight']]
y = data['mpg']# 数据预处理
X.fillna(X.mean(), inplace=True)  # 处理缺失值
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 评估模型
print("训练集R²:", model.score(X_train, y_train))
print("测试集R²:", model.score(X_test, y_test))# 预测新数据
new_car = [[4, 2.0, 110, 1400]]
predicted_mpg = model.predict(new_car)
print("预测油耗:", predicted_mpg[0])
关键输出解读:
  • 系数权重model.coef_ 显示每个特征的影响程度
  • 截距model.intercept_ 表示基础油耗值
  • R²分数:0.8表示模型能解释80%的数据变化

四、算法变种与改进

1. 多项式回归

处理非线性关系
y = w 1 x + w 2 x 2 + b y = w_1x + w_2x^2 + b y=w1x+w2x2+b

from sklearn.preprocessing import PolynomialFeaturespoly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
model.fit(X_poly, y)
2. 正则化回归
类型公式特点
Ridge回归添加L2正则项: λ ∑ w i 2 \lambda\sum w_i^2 λwi2防止过拟合,保留所有特征
Lasso回归添加L1正则项:$\lambda\sumw_i
ElasticNetL1+L2组合平衡特征选择与稳定性
from sklearn.linear_model import Lassolasso = Lasso(alpha=0.1)  # 正则化强度
lasso.fit(X_train, y_train)

五、模型诊断与优化

1. 常见问题诊断表
现象可能原因解决方案
训练集R²高,测试集低过拟合增加正则化、减少特征
所有系数接近零特征尺度差异大数据标准化
残差不随机分布非线性关系添加多项式特征
2. 特征工程技巧
  • 分箱处理:将连续年龄分段为青年/中年/老年
  • 交互特征:创建面积=长×宽等组合特征
  • 离散化:将温度分为低温/常温/高温
3. 超参数调优
from sklearn.model_selection import GridSearchCVparams = {'alpha': [0.001, 0.01, 0.1, 1]}
grid = GridSearchCV(Lasso(), params, cv=5)
grid.fit(X, y)
print("最佳参数:", grid.best_params_)

六、数学推导(简化版)

1. 最小二乘法推导

目标:找到使 ∑ ( y i − w x i − b ) 2 \sum(y_i - wx_i - b)^2 (yiwxib)2最小的w和b

求导过程

  1. 对w求导:
    ∂ ∂ w = − 2 ∑ x i ( y i − w x i − b ) = 0 \frac{\partial}{\partial w} = -2\sum x_i(y_i - wx_i - b) = 0 w=2xi(yiwxib)=0

  2. 对b求导:
    ∂ ∂ b = − 2 ∑ ( y i − w x i − b ) = 0 \frac{\partial}{\partial b} = -2\sum(y_i - wx_i - b) = 0 b=2(yiwxib)=0

解得
w = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 w = \frac{n\sum x_iy_i - \sum x_i \sum y_i}{n\sum x_i^2 - (\sum x_i)^2} w=nxi2(xi)2nxiyixiyi
b = ∑ y i − w ∑ x i n b = \frac{\sum y_i - w\sum x_i}{n} b=nyiwxi


愿得一心人,白头不相离。 —卓文君

相关文章:

机器学习--概览

一、机器学习基础概念 1. 定义 机器学习(Machine Learning, ML):通过算法让计算机从数据中自动学习规律,并利用学习到的模型进行预测或决策,而无需显式编程。 2. 与编程的区别 传统编程机器学习输入:规…...

Python算法详解:贪心算法

贪心算法(Greedy Algorithm)是一种通过选择当前最优解以期望达到全局最优解的算法思想。它在每一步选择时只考虑当前状态下的局部最优,而不关心全局问题的复杂性。这种算法简单高效,适用于某些特定问题,尤其是存在贪心…...

gesp(C++六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树

gesp(C六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树 题目描述 小杨有⼀棵包含 n n n 个节点的二叉树,且根节点的编号为 1 1 1。这棵二叉树任意⼀个节点要么是白色,要么是黑色。之后小杨会对这棵二叉树…...

7.DP算法

DP 在C中,动态规划(Dynamic Programming,DP)是一种通过将复杂问题分解为重叠子问题来高效求解的算法设计范式。以下是DP算法的核心要点和实现方法: 一、动态规划的核心思想 重叠子问题:问题可分解为多个重…...

2025年2月2日(tcp3次握手4次挥手)

TCP(三次握手和四次挥手)是建立和关闭网络连接的标准过程,确保数据在传输过程中可靠无误。下面是详细解释: 1. 三次握手(TCP连接建立过程) 三次握手是为了在客户端和服务器之间建立一个可靠的连接&#x…...

w186格障碍诊断系统spring boot设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年

Android Studio 1.0 宣发于 2014 年 12 月,而现在时间来到 2025 ,不知不觉间 Android Studio 已经陪伴 Androider 走过十年历程。 Android Studio 10 周年,也代表着了我的职业生涯也超十年,现在回想起来依然觉得「唏嘘」&#xff…...

【PyQt】lambda函数,实现动态传递参数

为什么需要 lambda? 在 PyQt5 中,clicked 信号默认会传递一个布尔值(表示按钮是否被选中)。如果我们希望将按钮的文本内容传递给槽函数,需要通过 lambda 函数显式传递参数。 这样可以实现将按钮内容传递给槽函数&…...

4 Hadoop 面试真题

4 Hadoop 面试真题 1. Apache Hadoop 3.0.02. HDFS 3.x 数据存储新特性-纠删码Hadoop面试真题 1. Apache Hadoop 3.0.0 Apache Hadoop 3.0.0在以前的主要发行版本(hadoop-2.x)上进行了许多重大改进。 最低要求的Java版本从Java 7增加到Java 8 现在&…...

25寒假算法刷题 | Day1 | LeetCode 240. 搜索二维矩阵 II,148. 排序链表

目录 240. 搜索二维矩阵 II题目描述题解 148. 排序链表题目描述题解 240. 搜索二维矩阵 II 点此跳转题目链接 题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到…...

[paddle] 矩阵相关的指标

行列式 det 行列式定义参考 d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1​,i2​,⋯,in​…...

何谓共赢?

A和B是人或组织,他们怎样的合作才是共赢呢? 形态1:A提供自己的身份证等个人信息,B用来作贷款等一些事务,A每月得到一笔钱。 A的风险远大于收益,或者B从事的是非法行为; 形态2:A单方面提前终止了与B的合作…...

Kanass基础教程-创建项目

Kanass是一款国产开源免费的项目管理工具,工具简洁易用,开源免费,之前介绍过kanass的一些产品简介及安装配置方法,本文就从如何创建第一个项目来开始kanass上手之旅吧。 1. 创建项目 点击项目->项目添加 按钮进入项目添加页面…...

实验9 JSP访问数据库(二)

实验9 JSP访问数据库(二) 目的: 1、熟悉JDBC的数据库访问模式。 2、掌握预处理语句的使用 实验要求: 1、使用Tomcat作为Web服务器 2、通过JDBC访问数据库,实现增删改查功能的实现 3、要求提交实验报告,将代…...

DeepSeek 核心技术全景解析

DeepSeek 核心技术全景解析:突破性创新背后的设计哲学 DeepSeek的创新不仅仅是对AI基础架构的改进,更是一场范式革命。本文将深入剖析其核心技术,探讨 如何突破 Transformer 计算瓶颈、如何在 MoE(Mixture of Experts&#xff09…...

单片机基础模块学习——DS1302时钟芯片

一、DS1302时钟简介 1.与定时器对比 DS1302时钟也称为RTC时钟(Real Time Clock,实时时钟),说到时钟,可能会想到定时器,下表来简单说明一下两者的区别。 定时器(Timer)实时时钟(RTC)精度高,可达微秒级精度较低,多为秒级计时范围短计时范围长2.开发板所在位置 下面方框里…...

Vue+Echarts 实现青岛自定义样式地图

一、效果 二、代码 <template><div class"chart-box"><chart ref"chartQingdao" style"width: 100%; height: 100%;" :options"options" autoresize></chart></div> </template> <script> …...

FIR滤波器:窗函数法

一、FIR滤波器基础 FIR&#xff08;有限脉冲响应&#xff09;滤波器的三大特点&#xff1a; 绝对稳定&#xff1a;没有反馈回路&#xff0c;不会出现失控振荡 线性相位&#xff1a;信号通过后波形不失真 直观设计&#xff1a;通过窗函数法、频率采样法等方法实现 二、窗函…...

【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践

Hi &#xff01; 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心&#xff0c;然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理&#xff08;NLP&#xff09;&#xff1f; 2. NLP的基础技术 2.1 词袋模型&#xff08;Bag-of-Words&#xff0c;BoW&#xff…...

M|哪吒之魔童闹海

rating: 8.5 豆瓣: 8.5 上映时间: “2025” 类型: M动画 导演: 饺子 主演: 国家/地区: 中国大陆 片长/分钟: 144分钟 M&#xff5c;哪吒之魔童闹海 制作精良&#xff0c;除了剧情逻辑有一点瑕疵&#xff0c;各方面都很到位。总体瑕不掩瑜。 上映时间&#xff1a; &…...

DeepSeek 介绍及对外国的影响

DeepSeek 简介 DeepSeek&#xff08;深度求索&#xff09;是一家专注实现 AGI&#xff08;人工通用智能&#xff09;的中国科技公司&#xff0c;2023 年成立&#xff0c;总部位于杭州&#xff0c;在北京设有研发中心。与多数聚焦具体应用&#xff08;如人脸识别、语音助手&…...

力扣动态规划-18【算法学习day.112】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&#xff01;&#xff01;&#xff01; 习题 1.下降路径最小和 题目链接:931. …...

DBASE DBF数据库文件解析

基于Java实现DBase DBF文件的解析和显示 JDK19编译运行&#xff0c;实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...

【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程

1. 简介 UDP协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;全称用户数据报协议&#xff0c;它是一种面向非连接的协议&#xff0c;面向非连接指的是在正式通信前不必与对方先建立连接&#xff0c; 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…...

【Qt】常用的容器

Qt提供了多个基于模板的容器类&#xff0c;这些容器类可用于存储指定类型的数据项。例如常用的字符串列表类 QStringList 可用来操作一个 QList<QString>列表。 Qt的容器类比标准模板库(standard template library&#xff0c;STL)中的容器类更轻巧、使用更安全且更易于使…...

tiktok 国际版抖抖♬♬ X-Bogus参数算法逆向分析

加密请求参数得到乱码&#xff0c;最终得到X-Bogus...

【AI】人工智能没那么神秘!

AI是什么&#xff1f; 人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;英文缩写为AI。 AI人工智能不是简单的应用程序&#xff0c;而是一类技术&#xff0c;包含机器学习、自然语言处理、计算机视觉等多个领域。AI系统通常由算法、数据、模型和代码组成…...

C#面试常考随笔9:什么是闭包?

最简单的例子&#xff1a; Lambda可以访问Lambda表达式块外部的变量&#xff0c;叫闭包。 定义 闭包是指有权访问另一个函数作用域中的变量的函数。即使该函数已经执行完毕&#xff0c;其作用域内的变量也不会被销毁&#xff0c;而是会被闭包所捕获并保留&#xff0c;供闭包…...

记录 | 基于MaxKB的仿小红书旅游文章AI制作(含图文、视频)

目录 前言一、创建应用Step1 表单Step2 AI对话生成旅游攻略提炼场景Step3 图片生成Step4 视频生成Step5 指定回复二、检验效果三、整体结构视图更新时间前言 参考文章: 自己的感想 想复现文章的内容你需要先学习下我之前的三篇文章中的记录。 1、记录 | Docker的windows版安装…...

C++ Primer 命名空间的using声明

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...