2026/4/16 22:37:45
网站建设
项目流程
网站设计兼容模式,建设电影播放网站,网站导航栏原型图怎么做,广州网站建设服务一、Logistic Regression#xff08;离线训练版#xff09;
1#xff09;算法定位
离线逻辑回归主要用于#xff1a;
训练数据是有限集#xff08;批数据/有界流#xff09;训练过程跑若干轮迭代直到收敛#xff08;或达到 maxIter#xff09;输出一个稳定模型#xf…一、Logistic Regression离线训练版1算法定位离线逻辑回归主要用于训练数据是有限集批数据/有界流训练过程跑若干轮迭代直到收敛或达到 maxIter输出一个稳定模型用于批预测或在线推理2输入列Input Columns参数名类型默认值说明featuresColVectorfeatures特征向量labelColIntegerlabel标签要预测的类别weightColDoubleweight样本权重可选3输出列Output Columns参数名类型默认值说明predictionColIntegerprediction预测标签最大概率对应的类别rawPredictionColVectorrawPrediction各类别的概率/得分向量实现里通常可视为概率向量工程理解建议rawPrediction用于你想做阈值/排序/AB 实验对比的场景prediction用于直接落库打标签、下游业务消费4核心参数ParametersLogisticRegressionModel预测侧Key默认值类型说明featuresColfeaturesString特征列名predictionColpredictionString输出预测列名rawPredictionColrawPredictionString输出原始预测列名LogisticRegression训练侧Key默认值类型说明labelCollabelString标签列名weightColnullString权重列名maxIter20Integer最大迭代次数reg0.0Double正则化强度elasticNet0.0DoubleElasticNet0L21L1介于其中混合learningRate0.1Double学习率globalBatchSize32Integer全局 batch sizetol1e-6Double收敛阈值multiClassautoString分类类型auto/binomial/multinomial5Java 示例代码解读离线 LR你贴的示例核心流程造数据features label weightlr.fit(inputTable)得到lrModellrModel.transform(inputTable)得到prediction/rawPredictioncollect 打印结果小坑提醒label 类型文档写labelCol是Integer但示例里 label 用0./1.Double并且 prediction 也按 Double 取。工程建议统一 label 为 Integer0/1更稳避免 schema 与类型转换踩坑。二、OnlineLogisticRegression在线增量训练FTRL-Proximal1为什么需要 Online Logistic Regression离线 LR 的问题是模型训练一次就固定了。如果你的数据是持续到来的比如广告点击、风控交易、推荐曝光你希望模型能“边来数据边更新”这就需要在线学习能力。OnlineLogisticRegression 的特点训练数据是无界流按 mini-batch 策略聚合训练样本持续更新内部模型参数同一份预测数据在不同时间点预测结果可能会变化因为模型在变官方说明里提到在线优化器使用FTRL-Proximal常用于广告 CTR 预估等大规模稀疏特征场景。2输入列Input Columns参数名类型默认值说明featuresColVectorfeatures特征向量labelColIntegerlabel标签weightColDoubleweight样本权重可选3输出列Output Columns参数名类型默认值说明predictionColIntegerprediction预测标签rawPredictionColVectorrawPrediction原始预测向量modelVersionColLongmodelVersion本次预测使用的模型版本号modelVersionCol是在线模型非常关键的字段它能让你追溯“这条预测结果是用哪个版本的模型算出来的”对排障和效果分析很重要。4核心参数ParametersOnlineLogisticRegressionModel预测侧| Key | 默认值 | 类型 | 说明 ||—|—|—||featuresCol|features| String | 特征列名 ||predictionCol|prediction| String | 预测列名 ||rawPredictionCol|rawPrediction| String | 原始预测列名 ||modelVersionCol|modelVersion| String | 模型版本列名 |OnlineLogisticRegression训练侧Key默认值类型说明labelCollabelString标签列名weightColnullString权重列名batchStrategyCOUNT_STRATEGYStringmini-batch 策略globalBatchSize32Integer全局 batch sizereg0.0Double正则elasticNet0.0DoubleElasticNet 参数在线版参数相对离线版少一些核心是 batch 策略 正则化。5Java 示例代码解读在线 OLR你贴的在线示例非常典型关键点有三个1训练流与预测流都是“周期性无限流”示例用PeriodicSourceFunction每隔一段时间吐一批数据目的是持续触发训练数据 → 模型更新预测数据 → 输出预测结果这在本地 demo 中非常方便观察效果变化。2训练表和预测表都只用 features 列代码里TabletrainTabletEnv.fromDataStream(trainStream).as(features);TablepredictTabletEnv.fromDataStream(predictStream).as(features);但注意OnlineLogisticRegression又设置了.setLabelCol(label)。这意味着真实训练时你通常需要把 label 列也放进表里示例中可能依赖内部实现/或是简化展示。工程实践里建议你显式包含 label 字段避免歧义训练表features label ( weight)预测表features ( label 作为对照可选)3初始模型数据 initialModelData在线模型需要一个初始参数否则一开始没法预测/更新。示例里RowinitModelDataRow.of(Vectors.dense(...),0L);TableinitModelDataTable...olr.setInitialModelData(initModelDataTable);这就相当于给在线 LR 一个初始权重向量 初始版本号。三、离线 LR vs 在线 OLR怎么选选离线 LogisticRegression 的典型场景训练数据每天/每小时批量汇总一次你希望模型相对稳定便于发布与回滚线上推理只做 transform不希望训练逻辑影响业务延迟选 OnlineLogisticRegression 的典型场景数据持续流入分布变化快概念漂移你希望模型持续学习最新数据你需要模型版本字段做线上分析/回溯modelVersion四、实战建议非常重要1特征缩放与稀疏特征如果特征尺度差异大离线 LR 建议加 StandardScaler在线 OLRFTRL更适合稀疏特征但也要注意特征工程一致性2样本不均衡优先用 weightCol尤其是点击率、欺诈等任务正负样本极不均衡时权重往往比盲目调参更有效。3关注 rawPrediction 与阈值策略离线/在线都会输出 rawPrediction。生产里很多业务不是直接用prediction而是按概率阈值做策略如 p0.7 才算命中或把 rawPrediction 作为排序分用于推荐/广告排序4在线模型一定要保留 modelVersion这对排障、回溯、效果分析非常关键。建议把modelVersion一起落库或写 Kafka/ES。五、小结Flink ML 的 Logistic Regression 体系可以覆盖两类最常见的工业场景LogisticRegression离线可控、稳定、适合定期训练发布OnlineLogisticRegression在线FTRL持续学习、适合数据流实时变化的业务掌握输入输出列、参数含义、以及模型版本与 rawPrediction 的用法你就能把 LR 很自然地接进 Flink 的实时/离线链路中。