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

机器学习--概览

一、机器学习基础概念

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. 与编程的区别 传统编程机器学习输入:规…...

低代码系统-产品架构案例介绍、炎黄盈动-易鲸云(十二)

易鲸云作为炎黄盈动新推出的产品,在定位上为低零代码产品。 开发层 表单引擎 表单设计器,包括设计和渲染 流程引擎 流程设计,包括设计和渲染,需要说明的是:采用国际标准BPMN2.0,可以全球通用 视图引擎 视图…...

Electricity Market Optimization 探索系列(二)

​ 本文参考链接link 负荷持续时间曲线 (Load Duration Curve),是根据实际的符合数据进行降序排序之后得到的一个曲线 这个曲线能够发现负荷在某个区间时,将会持续多长时间,有助于发电容量的规划 净负荷(net load) 是指预期负荷和预期可再生…...

OpenAI 实战进阶教程 - 第一节:OpenAI API 架构与基础调用

目标 掌握 OpenAI API 的基础调用方法。理解如何通过 API 进行内容生成。使用实际应用场景帮助零基础读者理解 API 的基本用法。 一、什么是 OpenAI API? OpenAI API 是一种工具,允许开发者通过编程方式与 OpenAI 的强大语言模型(例如 gpt-…...

TensorFlow简单的线性回归任务

如何使用 TensorFlow 和 Keras 创建、训练并进行预测 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与预测 7. 保存与加载模型 8.完整代码 1. 数据准备与预处理 我们将使用一个简单的线性回归问题,其中输入特征 x 和标…...

【视频+图文详解】HTML基础4-html标签的基本使用

图文教程 html标签的基本使用 无序列表 作用&#xff1a;定义一个没有顺序的列表结构 由两个标签组成&#xff1a;<ul>以及<li>&#xff08;两个标签都属于容器级标签&#xff0c;其中ul只能嵌套li标签&#xff0c;但li标签能嵌套任何标签&#xff0c;甚至ul标…...

在Arm芯片苹果Mac系统上通过homebrew安装多版本mysql并解决各种报错,感谢deepseek帮助解决部分问题

背景&#xff1a; 1.苹果设备上安装mysql&#xff0c;随着苹果芯片的推出&#xff0c;很多地方都变得不一样了。 2.很多时候为了老项目能运行&#xff0c;我们需要能安装mysql5.7或者mysql8.0或者mysql8.2.虽然本文编写时最新的默认mysql已经是9.2版本。 安装步骤 1.执行hom…...

c++可变参数详解

目录 引言 库的基本功能 va_start 宏: va_arg 宏 va_end 宏 va_copy 宏 使用 处理可变参数代码 C11可变参数模板 基本概念 sizeof... 运算符 包扩展 引言 在C编程中&#xff0c;处理不确定数量的参数是一个常见的需求。为了支持这种需求&#xff0c;C标准库提供了 &…...

【深度分析】DeepSeek 遭暴力破解,攻击 IP 均来自美国,造成影响有多大?有哪些好的防御措施?

技术铁幕下的暗战&#xff1a;当算力博弈演变为代码战争 一场针对中国AI独角兽的全球首例国家级密码爆破&#xff0c;揭开了数字时代技术博弈的残酷真相。DeepSeek服务器日志中持续跳动的美国IP地址&#xff0c;不仅是网络攻击的地理坐标&#xff0c;更是技术霸权对新兴挑战者的…...

CMake项目编译与开源项目目录结构

Cmake 使用简单方便&#xff0c;可以跨平台构建项目编译环境&#xff0c;尤其比直接写makefile简单&#xff0c;可以通过简单的Cmake生成负责的Makefile文件。 如果没有使用cmake进行编译&#xff0c;需要如下命令&#xff1a;&#xff08;以muduo库echo服务器为例&#xff09;…...

完全卸载mysql server步骤

1. 在控制面板中卸载mysql 2. 打开注册表&#xff0c;运行regedit, 删除mysql信息 HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->EventLog->Application->Mysql HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->Mysql …...

C#方法(练习)

1.定义一个函数&#xff0c;输入三个值,找出三个数中的最小值 2.定义一个函数&#xff0c;输入三个值,找出三个数中的最大值 3.定义一个函数&#xff0c;输入三个值,找出三个数中的平均值 4.定义一个函数&#xff0c;计算一个数的 N 次方 Pow(2, 3)返回8 5.传入十一…...

Unity游戏(Assault空对地打击)开发(3) 摄像机的控制

详细步骤 打开My Assets或者Package Manager。 选择Unity Registry。 搜索Cinemachine&#xff0c;找到 Cinemachine包&#xff0c;点击 Install按钮进行安装。 关闭窗口&#xff0c;新建一个FreeLook Camera&#xff0c;如下。 接着新建一个对象Pos&#xff0c;拖到Player下面…...

ChatGPT-4o和ChatGPT-4o mini的差异点

在人工智能领域&#xff0c;OpenAI再次引领创新潮流&#xff0c;近日正式发布了其最新模型——ChatGPT-4o及其经济实惠的小型版本ChatGPT-4o Mini。这两款模型虽同属于ChatGPT系列&#xff0c;但在性能、应用场景及成本上展现出显著的差异。本文将通过图文并茂的方式&#xff0…...

SQL进阶实战技巧:某芯片工厂设备任务排产调度分析 | 间隙分析技术应用

目录 0 技术定义与核心原理 1 场景描述 2 数据准备 3 间隙分析法 步骤1:原始时间线可视化...

【力扣】438.找到字符串中所有字母异位词

AC截图 题目 思路 我一开始是打算将窗口内的s子字符串和p字符串都重新排序&#xff0c;然后判断是否相等&#xff0c;再之后进行窗口滑动。不过缺点是会超时。 class Solution { public:vector<int> findAnagrams(string s, string p) {vector<int> vec;if(s.siz…...

2024具身智能模型汇总:从训练数据、动作预测、训练方法到Robotics VLM、VLA

前言 本文一开始是属于此文《GRAPE——RLAIF微调VLA模型&#xff1a;通过偏好对齐提升机器人策略的泛化能力》的前言内容之一(该文发布于23年12月底)&#xff0c;但考虑到其重要性&#xff0c;加之那么大一张表格 看下来 阅读体验较差&#xff0c;故抽出取来独立成文且拆分之 …...

Day33【AI思考】-函数求导过程 的优质工具和网站

文章目录 **函数求导过程** 的优质工具和网站**一、动态图形工具**1. **Desmos&#xff08;网页端&#xff09;**2. **GeoGebra&#xff08;全平台&#xff09;** **二、分步推导工具**3. **Wolfram Alpha&#xff08;网页/App&#xff09;**4. **Symbolab&#xff08;网页/App…...

【URL】一个简单基于Gym的2D随机游走环境,用于无监督强化学习(URL)

import gym from gym import spaces import numpy as np import pygameclass RandomWalk2DEnv(gym.Env):def __init__(self):super(RandomWalk2DEnv, self).__init__()# 定义状态空间为2D坐标&#xff08;x, y&#xff09;self.x_min, self.x_max -10, 10 # 更新尺寸为 (-10,…...

【VM】VirtualBox安装ubuntu22.04虚拟机

阅读本文之前&#xff0c;请先根据 安装virtualbox 教程安装virtulbox虚拟机软件。 1.下载Ubuntu系统镜像 打开阿里云的镜像站点&#xff1a;https://developer.aliyun.com/mirror/ 找到如图所示位置&#xff0c;选择Ubuntu 22.04.3(destop-amd64)系统 Ubuntu 22.04.3(desto…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...