数模笔记day01(数据预处理、K-means聚类、遗传算法、概率密度分布)
一、0-1编码到整数编码转实整数(RI)编码
1.1、0-1 整数编码和实整数编码的用途
0-1 整数编码分类变量编码为0-1时使用,稀疏性好、适合无序分类,二进制优化问题(如背包问题)但无法体现 “顺序 / 量级”。线性回归、逻辑回归均不适合稀疏 0-1 特征的模型。
实整数编码用连续十进制整数(如 1,2,3)表示,可以用做有序分类变量编码(如 “低 = 1,中 = 2,高 = 3”),优化算法中的变量映射(如遗传算法、粒子群算法),能体现 “量级关系” 的特征。
1.2、0-1 编码转化为 RI 编码具体步骤(以 “多分类变量” 为例)
为了解决0-1 编码的维度灾难、稀疏性过高、计算效率低,在特征工程阶段遇到 “高基数类别特征”“模型对稀疏 0-1 特征不友好”“需提升训练效率” 这三类问题时, RI 编码适合一下情景如下:
类别特征 “高基数” 时(最核心场景):当类别特征的「类别数量极多」(如用户 ID、商品 、城市编码、历史行为标签等,类别数多)
- 此时用 RI 编码,可将「N 维 0-1 向量」压缩为「1 维实整数 / 连续值」(通过 “类别→索引映射”“频率编码”“目标编码” 等方式转化为实数值)
- 适合用 RI 编码的替代方案:将 0-1 编码的类别特征,通过 “有序映射”(如 “低→1、中→2、高→3”)、“统计编码”(如类别出现频率、与目标变量的相关性得分)转化为实整数,让模型更易捕捉特征规律。
- RI 编码的实际应用流程:以 “用户贷款违约预测模型” 为例,首先数据清洗后,然后识别高基数 / 需转化的特征(“职业”这种低基数的生成维度低的用 0-1 特征;“所在城市这种多个地级市的,且如果模型用 “逻辑回归”对稀疏特征不友好,需用 RI 编码),接着,RI 编码实施(将 “所在城市” 按 “该城市历史违约率” 映射为实数值如北京违约率 2.1%→2.1,转化为 1 维实整数特征),最后,将 RI 编码后的 “城市特征”,与独热编码的 “职业特征”、原始连续特征合并,输入模型训练。
二、K-means聚类
2.1 K-means聚类的建模过程
K-means 聚类是将数据集划分为 k 个到簇心距离最小的簇的聚类方法,属于无监督学习,遵循 “数据准备→参数确定→模型训练→迭代优化” 的逻辑。K-means 的目标是最小化簇内平方和 ,同一聚类内的样本尽可能相似(簇内误差小),不同聚类的样本尽可能不同(簇间误差大),对于每个样本 ,计算其到每个簇中心的欧几里德距离,将样本分配给距离最近的簇中心 。对于每个簇 ,计算簇内所有样本的平均值,并将其作为新的簇中心。接着不断迭代并检查模型的收敛性,若收敛效果好,则停止迭代更新簇中心,得到最终的聚类结果。
1.数据预处理
数据清洗
因为对数据质量敏感,需先解决 “噪声、维度、量纲” 等问题,所以处理异常值(避免簇中心偏移),避免影响聚类结果。处理缺失值对连续特征一般使用用均值 / 中位数填充,对类别特征众数填充;含类别特征如 “性别” “职业”,需先编码(K-means 基于欧氏距离计算,仅支持数值型数据;去除异常值用Z-score 法(|Z|>3)识别异常值。
特征降维
若数据维度极高,主成分分析,保留方差最大的主成分。通过 “方差解释率” 判断,如 PCA 保留 90% 以上方差的主成分。
2.确定最优聚类数 K:肘部法则
常规肘部图靠 “肉眼找拐点”,用 “二阶差分法” 量化拐点。(ps:一阶差分只能描述 “下降速率”,二阶差分直接描述 “下降速率的变化量,相当于簇内平方和 J “下降加速度”,精准定位最佳 k 值)。肘部图法最常用的 “聚类效果指标” 是簇内平方和,也叫 “组内平方误差”。WCSS 越小,说明簇内样本越集中、相似性越高,聚类效果越好。
步骤 1:确定 K 的候选范围
设定一个 K 值的探索区间(如K∈[1,10])
步骤 2:对每个候选 K 值运行 K-means,计算 WCSS
对每个 K独立运行 K-means 算法(注意:K-means 对初始质心敏感,建议多次运行取 WCSS 最小值,避免局部最优),并记录每次运行后的总 WCSS。
步骤 3:绘制肘部图(K-WCSS 曲线)
以K 值为横轴,以对应的WCSS 为纵轴,绘制折线图,即为 “肘部图”
步骤 4:识别 “肘部点”
曲线由 “快速陡峭下降” 转为 “平缓缓慢下降”,此点即为 “肘部点”。
3.模型训练与迭代
此步骤为K-means 核心算法逻辑。第一步,初始化簇中心:从数据集中随机选择 K 个样本作为初始簇中心;第二步,分配样本到簇:计算每个样本到 K 个簇中心的距离;第三步,更新簇中心:对每个簇,计算簇内所有样本的 “特征均值”,将该均值作为新的簇中心;第四部,判断收敛:重复步骤二、三,直到 “簇中心不再变化” 或 “变化幅度小于阈值”,或达到最大迭代次数,停止迭代。
4.聚类结果可视化
对于高维降维可视化,用 PCA 将数据降至 2 维,再绘制聚类散点图;Matplotlib、Seaborn绘制散点图,用不同颜色 / 形状表示不同簇,标注簇中心。
2.2 K-means++聚类算法
K-means 的最大缺陷是初始聚类中心完全随机选择,若初始中心落在数据稀疏区域或距离过近,会导致最终聚类结果陷入 “局部最优”,而K-means++ 的优势源于 “智能初始中心选择”。
首先,进行初始聚类中心选择,步骤如下:
第一步:随机选择第一个初始中心,从所有样本中随机挑选 1 个样本作为第一个聚类中心(仅这一步随机,后续均为 “有策略选择”)
第二步:选择其余聚类中心,按 “距离概率” 选择后续初始中心:计算每个未被选为中心的样本到已选所有中心的 “最短距离”,对所有 “最短距离”进行 “概率加权”,对 “概率加权”的结果的概率分布,随机挑选 1 个样本作为第i
个(2 ≤ i ≤ k
)初始中心
重复第二步,直到选满 k 个初始中心
然后,迭代优化聚类(与经典 K-means 一致):
将每个样本归入最近的聚类中心,然后进行中心更新计算每个簇的 “均值中心”,判断是否停止迭代,最终输出聚类结果
三、遗传算法
3.1 遗传算法的建模过程
遗传算法是一种受生物进化理论(自然选择、交叉、变异)启发的启发式优化算法,筛选出最优或近似最优解。适合解决复杂,多约束的优化问题。
步骤 1:问题编码
为了将 “候选解” 转化为 “染色体”,将十进制数转化为二进制串/实数编码(染色体),二进制编码适用于离散问题或低维的场景;实数编码直接用实数作为染色体,适用于连续问题或高维问题,无需解码。
步骤 2:初始化种群
为了生成第一代候选解集合,需随机生成一定数量的个体(种群规模N
通常设为 20~100,需根据问题复杂度调整)。
步骤 3:定义适应度函数
为了评价个体优劣的标准,需根据优化目标设计,最大化问题直接用目标函数,最小化问题需转化为最大化形式,如取倒数或加负号。适应度函数直接用目标函数(ps:适应度值越大,个体越优)
常见适应度函数设计技巧:
- 最小化问题(如
min g(x)
):转化为F(x) = 1/(g(x)+ε)
(ε
避免分母为 0)或F(x) = C - g(x)
(C
为足够大的常数)。 - 约束问题(如
f(x) max, s.t. h(x) ≤ 0
):加入惩罚项,F(x) = f(x) - k·max(0, h(x))
(k
为惩罚系数,违反约束时适应度降低)。
步骤 4:选择操作
为了筛选优秀个体,保留到下一代,常用选择方法为轮盘赌选择法,轮盘赌选择步骤(基于步骤 2 的第一代种群),其他选择方法,如锦标赛选择、精英保留策略
步骤 5:交叉操作
为了基因重组,生成子代个体,常用交叉方法为单点交叉;其他交叉方法有两点交叉、均匀交叉
步骤 6:变异操作
为了随机基因突变,避免局部最优,常用变异方法为位变异。
步骤 7:迭代终止与结果输出
用来判断是否找到最优解。
3.2 改进遗传算法
离散问题用专属编码,多目标问题用帕累托支配。高维优化问题,问题存在多峰 / 复杂非线性(非凸优化问题),动态优化(动态目标 / 约束)时候用。
四、概率分布
4.1 对数正态分布
对数变换将非负、右偏的非正态的不确定性转化为正态分布,进而实现对复杂不确定性的精准建模,可以构建对数正态分布模型并量化不确定性。
首先不确定性变量的取值范围必须是 (0, +∞)(如资产价格、零件寿命、降雨量、用户消费金额、化学反应速率等),不可能为负。变量的不确定性源于多个独立 “乘法因子” 的叠加,对数变换可将 “乘积效应” 转化为 “加法效应”,适配正态分布的假设。
- 正态性检验:验证 样本是否服从正态分布(这是对数正态建模的核心前提),常用方法包括:
- 图形法:绘制 样本的 “Q-Q 图”(若点近似落在直线上,则符合正态分布)、“直方图 + 核密度曲线”。
- 统计检验法:执行 S-W 检验(小样本,n<50)或 K-S检验(大样本),若检验的 p 值 > 0.05(显著性水平),则接受 “服从正态分布” 的假设。
4.2 各概率分布对不确定性的量化
1. 连续型均匀分布:波动范围绝对固定