资讯动态

数学建模实战:从食品风味预测看LASSO与随机森林的特征选择与建模

发布时间:2026/8/23 17:06:57 来源:尧图企业网站定制
1. 项目概述从一道赛题看食品风味的量化建模刚拿到2022年认证杯SPSSPRO杯数学建模D题第一阶段的题目时我第一反应是这题有意思它把抽象的“好吃”变成了一个可以计算的数学问题。题目核心是研究食品风味与风味物质之间的关系简单说就是给你一批食品样本的数据里面测定了各种风味物质的含量比如醛类、醇类、酯类这些具体化学成分以及专家或消费者对这些食品的整体风味评分。我们的任务就是建立一个数学模型搞清楚这些物质如何影响、以及在多大程度上决定了最终的风味。这不仅仅是解一道题它背后对应的是食品工业里一个非常现实且价值巨大的需求——风味预测与调控。在实验室里研发人员合成了一种新配方难道要每次都组织大规模感官评审来知道它好不好吃吗成本太高了。如果能通过检测有限的几种关键物质含量就相对准确地预测其风味得分那就能极大加速新品开发、进行质量控制甚至实现风味的数字化设计和逆向工程。这道题把我们从纯理论的数学空间拉到了充满烟火气的食品工业现场。对于参赛者尤其是初次接触数学建模的同学这道题是个绝佳的练手材料。它不像一些纯优化或预测题那样天马行空其数据来源于或模拟自真实的食品分析实验问题定义清晰目标明确。你需要运用数据处理、统计分析、机器学习建模等一系列技能最终交付一个可靠的、可解释的模型。整个过程就是一个完整的、微缩版的工业数据分析项目流程。接下来我将结合我多次指导建模竞赛的经验为你拆解这道题的解题全过程从思路梳理到代码实现并分享那些在标准答案里不会写的“踩坑”心得。2. 解题核心思路与模型选型逻辑面对“风味物质 vs. 风味评分”这类问题我们的核心目标是建立一个映射函数F(物质1含量, 物质2含量, ...) 风味综合评分。这里的挑战在于风味物质往往有数十种甚至更多高维且它们之间可能存在复杂的相互作用非线性而样本量通常有限。我们的建模思路必须围绕降维、解耦非线性关系、防止过拟合这几个关键点展开。2.1 问题分析与数据预处理要点首先我们必须吃透题目给出的数据。通常数据会是一个n x m的矩阵n是食品样本数m是风味物质的数量特征外加一列“风味评分”作为目标变量。第一步永远是数据观察与清洗。关键操作1缺失值与异常值处理。实验数据难免有缺失或明显错误。对于少量缺失可以采用均值、中位数或同样本其他物质的相关性进行填充。对于异常值需要谨慎判断是检测误差还是某种特殊风味的极端表现我常用的方法是计算每个特征的Z-score标准分数将绝对值大于3的数值视为候选异常点结合业务知识如该物质是否可能在此类食品中异常高决定是修正、剔除还是保留。直接剔除要小心可能会损失重要信息。关键操作2特征风味物质的初步筛选。不是所有测出来的物质都对风味有显著贡献。有些物质含量极低且波动小属于背景噪声。我们可以先进行一轮基于方差或相关系数的过滤。例如计算每种物质含量的方差剔除方差近乎为零的物质它们不提供区分信息。更有效的是计算每个物质与风味评分的皮尔逊相关系数虽然线性相关不能代表全部但那些相关系数极低如绝对值0.1且p值不显著的物质可以暂时放到待定区在后续建模中重点关注其是否被选中。关键操作3数据标准化/归一化。这是至关重要的一步不同风味物质的含量单位可能不同ppm, ppb数量级差异巨大。如果不进行标准化那些数值大的物质会在基于距离的模型如KNN、SVM、神经网络或基于正则化的模型如岭回归、Lasso中占据绝对主导地位掩盖小含量但高影响力物质的作用。最常用的方法是Z-score标准化减去均值除以标准差使得每个特征均值为0标准差为1。这一步能保证模型公平地对待每一个特征。2.2 主流模型选型与对比完成预处理后就要选择建模武器。这道题没有唯一解但有几个主流方向各有优劣。方案一多元线性回归及其进阶版这是最直观的想法风味评分是各物质含量的加权和。建立模型Y β0 β1*X1 β2*X2 ... βm*Xm ε。优点模型简单可解释性极强。每个系数βi直接代表了该物质对风味评分的贡献度假设其他物质不变。缺点强烈假设风味物质与评分是线性关系且物质之间相互独立。这在实际中几乎不成立。风味物质常有协同112或拮抗112效应。进阶选择——正则化回归当物质数量m较多容易导致过拟合时使用岭回归Ridge或LASSO回归。岭回归通过L2正则化压缩系数防止其过大但不会将任何系数完全设为0。**LASSOL1正则化**则可以将不重要的特征的系数压缩至0实现特征自动选择。这对于找出“关键风味物质”特别有用。**弹性网络Elastic Net**结合了L1和L2在处理特征间高度相关时表现更稳定。实操建议可以先用线性回归作为基线模型再用LASSO做特征选择观察哪些物质被保留。方案二支持向量机回归SVR在处理中小规模、非线性问题上表现优异。其核心思想是找到一个“管道”让尽可能多的样本落在管道内管道宽度由参数ε控制。通过使用核函数如径向基核RBF可以将线性不可分的数据映射到高维空间从而捕捉非线性关系。优点对于复杂的非线性关系拟合能力强泛化性能好尤其适合样本量不是特别大的情况。缺点模型可解释性差像一个黑盒。我们无法直接知道每个物质的具体贡献。调参如惩罚系数C、核函数参数γ需要经验或网格搜索。适用场景当你怀疑风味物质与评分的关系非常复杂线性模型表现很差时SVR是一个强有力的候选。方案三随机森林回归这是一种集成学习方法通过构建大量决策树并综合它们的预测结果。每棵树使用不同的数据子集和特征子集进行训练。优点1) 能自动处理非线性关系和特征交互无需手动构造交互项。2) 提供特征重要性排序这是其巨大优势。我们可以清楚地知道哪些风味物质在模型做决策时最常用、最重要。3) 对缺失值和异常值不敏感且不易过拟合在树的数量足够多时。缺点模型本身的可解释性依然不如线性模型。训练好的随机森林是一大片树难以用一条简洁的公式表达。实操心得随机森林的特征重要性输出是回答“哪些是关键风味物质”的利器。在比赛中这个结果可以单独拿出来作为一个重要的分析结论。方案四梯度提升树代表算法如XGBoost、LightGBM。这也是集成树模型但采用串行方式每一棵树都致力于纠正前一棵树的残差。优点预测精度通常比随机森林更高是很多数据科学竞赛的“夺冠法宝”。同样能输出特征重要性并处理非线性关系。缺点参数更多、更复杂调参难度大训练时间通常比随机森林长。更容易过拟合需要仔细调整学习率、树深度等参数。选型建议如果追求极致的预测精度且有时间进行精细调参可以尝试GBDT系列。对于初次参赛或时间紧迫的情况随机森林是更稳妥、更容易出结果的选择。方案五人工神经网络理论上足够深、足够宽的神经网络可以拟合任意复杂的函数关系。优点表达能力最强能刻画极其复杂的非线性映射和交互效应。缺点1) 需要大量数据。对于风味分析这种通常样本量在几十到几百的数据集神经网络极易过拟合。2) 可解释性最差。3) 训练不稳定对参数初始化、学习率等非常敏感。个人建议在此类赛题中除非数据量非常大成千上万样本否则不推荐首选神经网络。它更像“牛刀”而我们的问题可能只是“鸡”。最终策略建议混合建模 在实际解题中我推荐采用“LASSO特征选择 核心模型如随机森林/SVR”的混合策略。第一阶段特征筛选。使用LASSO回归通过交叉验证调整正则化强度λ筛选出系数不为零的关键风味物质子集。这步大幅降低了特征维度也增强了模型的可解释性。第二阶段非线性建模。将筛选出的关键物质作为输入使用随机森林或SVR进行建模。这样可以避免将噪声或冗余特征喂给复杂模型提升其性能和稳定性。第三阶段模型融合与对比。可以同时训练线性模型在筛选后的特征上、随机森林、SVR甚至一个简单的梯度提升树。在独立的验证集上比较它们的性能如R², RMSE。最终提交时可以选择性能最好的一个或者将几个模型的预测结果进行加权平均集成这往往能进一步提升鲁棒性。3. 基于SPSSPRO的快速实现与关键步骤解析SPSSPRO作为一款在线数据分析平台对数学建模新手非常友好它封装了很多算法提供了图形化操作界面。但要想用好必须理解其每一步背后的统计含义。3.1 数据导入与探索性分析在SPSSPRO中通常以Excel或CSV格式上传数据。数据应为数值型分类变量如果有需要妥善处理。描述性统计首先对每个风味物质变量和风味评分变量进行描述性统计均值、标准差、最小值、最大值、中位数。这能让你对数据的分布有一个整体感觉快速发现异常值比如某个物质的最大值比其他值高出几个数量级。可视化探索箱线图查看每个风味物质含量的分布、中位数位置以及异常值点。这是发现异常值最直观的工具。相关矩阵热力图这是风味物质分析中极其重要的一步。绘制所有风味物质之间、以及它们与风味评分之间的相关系数热力图。你可以立刻看到1) 哪些物质与风味评分强相关正/负2) 哪些物质之间高度共线性相关系数接近1或-1。高度共线性的物质会干扰线性回归系数的稳定性需要考虑剔除其中一个或使用主成分分析PCA进行降维。3.2 执行特征选择与降维使用LASSO回归进行特征选择在SPSSPRO的“回归分析”模块中找到“LASSO回归”。将风味评分设为因变量所有物质设为自变量。关键操作是设置“正则化参数λ”的寻优方式选择“交叉验证”通常是10折交叉验证。SPSSPRO会自动运行并输出一个最优的λ值以及在该λ值下系数不为零的特征列表。这就是你的第一版“关键风味物质”名单。务必记录下这些物质的名称和它们的系数即使很小。主成分分析作为备选方案如果物质数量非常多比如50且存在明显的分组共线性可以考虑PCA。PCA将原始特征线性组合成新的、互不相关的“主成分”用少数几个主成分就能解释大部分数据变异。在SPSSPRO的“降维”模块中进行PCA查看方差解释率表格。通常选择累计方差解释率超过80%或85%的前k个主成分作为新特征。注意PCA的缺点是生成的新特征是原始特征的线性组合失去了直接的物理意义你无法说“主成分1”是哪种物质。因此如果后续需要解释“哪种物质重要”PCA可能不是最佳选择它更适用于纯粹的预测任务。3.3 构建并评估预测模型假设我们选择了LASSO筛选后的特征现在用随机森林建模。数据分割在SPSSPRO的“机器学习”模块中使用“随机森林回归”。首先需要分割数据集通常按7:3或8:2的比例划分为训练集和测试集。务必勾选“随机种子”并固定一个值这能保证你的结果可复现这是建模的黄金准则。参数设置决策树数量一般设置在100-500之间。数量越多模型越稳定但计算量越大。可以从100开始尝试。最大深度控制树的复杂程度。深度太大容易过拟合太小则欠拟合。可以先不限制max_depthNone让树自由生长观察效果如果过拟合再尝试限制深度如5, 10。特征子集大小随机森林每棵树随机选择的特征数。常用经验值是总特征数的平方根。例如你筛选后剩下15个特征那么每棵树可以考虑sqrt(15)≈4个特征。最小叶子节点样本数防止树过于细分。可以设为5或10。模型训练与预测设置好参数后运行模型。SPSSPRO会自动在训练集上训练并在测试集上给出预测结果。性能评估重点关注以下几个指标R²决定系数在训练集和测试集上都要看。训练集R²很高如0.95而测试集R²很低如0.6是典型的过拟合。我们希望两个R²都较高且接近。RMSE均方根误差预测误差的绝对值度量。单位与风味评分相同更直观。例如风味评分范围是0-10RMSE0.5意味着平均预测误差在0.5分左右这通常是可以接受的。预测 vs. 实际散点图将测试集的预测值和真实值画成散点图。理想情况下点应紧密分布在一条斜率为1的直线附近。如果出现明显的弯曲或分群说明模型在某些区间预测不准可能存在未捕捉到的非线性模式。解读特征重要性随机森林会输出每个特征的重要性得分通常是基于基尼不纯度减少或袋外误差的平均值。将这个结果排序就得到了基于非线性模型的“关键风味物质”排名。将这个排名与之前LASSO给出的结果进行对比。如果两者高度一致例如前5种物质相同那么你对关键物质的结论就非常稳健。如果差异较大需要深入分析原因可能是非线性效应导致LASSO线性假设漏掉了重要变量。3.4 模型优化与调参如果初次建立的模型在测试集上表现不佳R²低或RMSE高需要进行调参。网格搜索SPSSPRO可能提供自动调参或网格搜索功能。你可以为关键参数如树的数量、最大深度、最小叶子节点样本数设定一个范围让系统自动尝试所有组合通过交叉验证选择在验证集上表现最好的一组参数。学习曲线这是一个诊断工具用于判断模型是欠拟合还是过拟合。绘制模型在训练集和验证集上的性能如R²随训练样本数量增加的变化曲线。如果两条曲线在顶端彼此接近但性能都较低是欠拟合模型太简单如果训练集曲线性能很高而验证集曲线很低且中间有巨大间隙是过拟合模型太复杂。SPSSPRO可能不直接提供但你可以通过手动改变训练集大小来近似绘制。4. 完整解题流程与代码实现参考虽然SPSSPRO提供了便捷的操作但理解底层的代码实现能让你对模型有更深的掌控力并且在论文中展示代码也是一种加分项。这里以Python的scikit-learn库为例展示一个完整的解题流程。4.1 环境准备与数据加载import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LassoCV from sklearn.ensemble import RandomForestRegressor from sklearn.svm import SVR from sklearn.metrics import r2_score, mean_squared_error # 1. 加载数据 data pd.read_csv(food_flavor_data.csv) # 假设数据文件 print(data.head()) print(data.info()) print(data.describe()) # 假设最后一列是风味评分‘Flavor_Score’其余列是风味物质 X data.iloc[:, :-1] # 风味物质特征 y data.iloc[:, -1] # 风味评分标签 feature_names X.columns.tolist()4.2 数据预处理与特征选择# 2. 处理缺失值简单用中位数填充 X.fillna(X.median(), inplaceTrue) # 3. 数据标准化 (非常重要) scaler StandardScaler() X_scaled scaler.fit_transform(X) X_scaled pd.DataFrame(X_scaled, columnsfeature_names) # 4. 划分训练集和测试集 (7:3) X_train, X_test, y_train, y_test train_test_split(X_scaled, y, test_size0.3, random_state42) # 5. 使用LASSO进行特征选择 # LassoCV 通过交叉验证自动选择最佳的正则化强度 alpha lasso_cv LassoCV(cv10, random_state42, max_iter10000) lasso_cv.fit(X_train, y_train) # 获取最佳alpha和对应的系数 optimal_alpha lasso_cv.alpha_ print(fOptimal alpha from LassoCV: {optimal_alpha}) # 查看哪些特征的系数不为零 lasso_coef pd.Series(lasso_cv.coef_, indexfeature_names) selected_features lasso_coef[lasso_coef ! 0].index.tolist() print(fNumber of selected features by Lasso: {len(selected_features)}) print(fSelected features: {selected_features}) # 可视化Lasso系数 plt.figure(figsize(10,6)) lasso_coef.plot(kindbar) plt.title(Lasso Regression Coefficients) plt.ylabel(Coefficient Value) plt.axhline(y0, colorr, linestyle-, linewidth0.5) plt.tight_layout() plt.show() # 使用筛选后的特征 X_train_selected X_train[selected_features] X_test_selected X_test[selected_features]4.3 构建与比较多个模型# 6. 训练多个模型进行比较 models { Random Forest: RandomForestRegressor(n_estimators200, random_state42), SVR (RBF Kernel): SVR(kernelrbf, C100, gamma0.1), # 初始参数后续可调 # 也可以在筛选后的特征上训练一个线性回归作为基准 Linear Regression (on selected features): LinearRegression() } results {} for name, model in models.items(): model.fit(X_train_selected, y_train) y_pred_train model.predict(X_train_selected) y_pred_test model.predict(X_test_selected) r2_train r2_score(y_train, y_pred_train) r2_test r2_score(y_test, y_pred_test) rmse_test np.sqrt(mean_squared_error(y_test, y_pred_test)) results[name] { R2_Train: r2_train, R2_Test: r2_test, RMSE_Test: rmse_test, model: model } print(f{name}: Train R2{r2_train:.4f}, Test R2{r2_test:.4f}, Test RMSE{rmse_test:.4f}) # 将结果转为DataFrame方便查看 results_df pd.DataFrame(results).T print(results_df[[R2_Train, R2_Test, RMSE_Test]])4.4 随机森林模型优化与深度分析# 7. 以表现较好的随机森林为例进行优化和深入分析 rf_model RandomForestRegressor(random_state42) # 设置参数网格进行网格搜索 param_grid { n_estimators: [100, 200, 300], max_depth: [10, 20, None], min_samples_split: [2, 5, 10], min_samples_leaf: [1, 2, 4] } grid_search GridSearchCV(estimatorrf_model, param_gridparam_grid, cv5, scoringr2, n_jobs-1, verbose1) grid_search.fit(X_train_selected, y_train) print(fBest parameters: {grid_search.best_params_}) print(fBest cross-validation R2: {grid_search.best_score_:.4f}) # 使用最佳参数重新训练最终模型 best_rf grid_search.best_estimator_ y_pred_final best_rf.predict(X_test_selected) final_r2 r2_score(y_test, y_pred_final) final_rmse np.sqrt(mean_squared_error(y_test, y_pred_final)) print(fFinal Model - Test R2: {final_r2:.4f}, Test RMSE: {final_rmse:.4f}) # 8. 获取并可视化特征重要性 importances best_rf.feature_importances_ indices np.argsort(importances)[::-1] # 从大到小排序 plt.figure(figsize(12,6)) plt.title(Random Forest Feature Importances (on Selected Features)) plt.bar(range(len(selected_features)), importances[indices], aligncenter) plt.xticks(range(len(selected_features)), [selected_features[i] for i in indices], rotation90) plt.xlabel(Flavor Substance) plt.ylabel(Importance Score) plt.tight_layout() plt.show() # 将重要性排序与Lasso系数排序对比 importance_series pd.Series(importances, indexselected_features).sort_values(ascendingFalse) print(Top 10 important features from Random Forest:) print(importance_series.head(10))4.5 结果可视化与报告生成# 9. 可视化预测结果 vs. 真实值 plt.figure(figsize(8,8)) plt.scatter(y_test, y_pred_final, alpha0.6) plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], r--, lw2) # 理想对角线 plt.xlabel(Actual Flavor Score) plt.ylabel(Predicted Flavor Score) plt.title(fActual vs. Predicted (RF Model)\nTest R² {final_r2:.3f}, RMSE {final_rmse:.3f}) plt.grid(True, alpha0.3) plt.tight_layout() plt.show() # 10. 残差分析 (检查模型是否系统性地高估或低估某些区间的值) residuals y_test - y_pred_final plt.figure(figsize(10,4)) plt.subplot(1,2,1) plt.scatter(y_pred_final, residuals, alpha0.6) plt.axhline(y0, colorr, linestyle--) plt.xlabel(Predicted Value) plt.ylabel(Residuals) plt.title(Residuals vs. Predicted) plt.grid(True, alpha0.3) plt.subplot(1,2,2) plt.hist(residuals, bins20, edgecolorblack) plt.xlabel(Residuals) plt.ylabel(Frequency) plt.title(Distribution of Residuals) plt.grid(True, alpha0.3) plt.tight_layout() plt.show()5. 论文写作要点与常见问题排查完成建模和代码只是工作的一半将你的工作清晰、有说服力地呈现在论文中是获奖的关键。5.1 论文核心结构搭建一篇完整的数模论文在解决此类问题时建议包含以下部分问题重述与分析用你自己的话简述问题并分析其特点多变量、潜在非线性、小样本等。模型假设与符号说明列出合理的假设如“风味物质含量测定无误差”、“风味评分是连续变量”等并定义文中用到的主要数学符号。数据预处理详细描述你对缺失值、异常值、数据标准化的处理方法和理由。此处可以展示处理前后的数据对比图如箱线图这是体现你工作细致的地方。特征选择与降维阐述你选择LASSO或其它方法的理由展示特征选择的结果如列出被选中的物质或展示LASSO路径图。解释为什么这样做能提升模型性能。模型的建立与求解模型原理简介对你采用的最终模型如随机森林的核心思想做简要说明无需大段推导但要点明其优势如处理非线性、输出特征重要性。模型实现说明你使用的工具SPSSPRO/Python、关键参数设置如树的数量、深度及其选取依据如网格搜索。模型评估展示模型在训练集和测试集上的R²、RMSE等指标。务必使用测试集或交叉验证的结果来评价模型的泛化能力只提训练集高分是严重错误。结果分析与讨论预测效果展示提供“预测值-真实值”散点图并附上拟合直线和R²。关键风味物质识别这是本题的亮点。结合LASSO系数和随机森林特征重要性给出一个综合的“关键风味物质”排序并尝试从食品化学角度进行解释例如排名第一的物质是己醛它通常具有青草味可能在该类食品的风味中贡献了清新的基调。即使你不熟悉化学也可以进行数据驱动的描述。模型局限性诚实指出模型的不足例如“模型未考虑风味物质之间的交互项”、“样本量有限可能影响模型稳定性”、“风味评分的主观性未在模型中体现”等。这体现了批判性思维。结论简洁总结你的工作、主要发现如识别出的前5种关键物质和模型性能。参考文献与附录附录中可以放置核心代码片段不宜过长或大型图表。5.2 实战中高频问题与解决方案在解题和写作过程中你几乎一定会遇到以下问题这是我的“避坑指南”问题1模型在训练集上表现完美在测试集上一塌糊涂过拟合。排查这是最经典的问题。首先检查数据分割是否随机是否发生了数据泄露例如在标准化时用了全数据集而非仅训练集。然后检查模型复杂度。解决增加数据如果可能使用数据增强但风味数据较难。简化模型降低随机森林的max_depth增加min_samples_split和min_samples_leaf。对于SVR增大正则化参数C允许更多误差或调整核参数gamma。加强正则化使用LASSO本身就是一种正则化。对于集成树可以尝试增加min_impurity_decrease。使用交叉验证调参务必使用交叉验证分数而非训练集分数来指导参数选择。问题2特征重要性排名和LASSO选出的特征不一致。排查这很正常因为两者原理不同。LASSO基于线性假设和稀疏性随机森林基于非线性不纯度减少。解决这不是错误而是一个深入分析的机会。在论文中你应该对比两者结果。对于同时被两者选为重要的物质可以高度确信是关键物质。对于只被随机森林选中的重要物质可能意味着该物质通过复杂的非线性交互影响风味。你可以尝试绘制该物质含量与风味的散点图或者绘制其与另一重要物质的交互效应图如果样本量够来验证非线性关系。问题3R²出现负值。排查R²负值意味着你的模型预测效果比直接用目标变量的均值来预测还要差。这通常发生在1) 模型完全错误2) 在计算R²时公式用错sklearn的r2_score是正确的3) 测试集和训练集分布差异极大。解决首先确保你调用的是正确的评估函数。然后检查数据预处理步骤是否一致地应用到了训练集和测试集必须用训练集的scaler去变换测试集。最后重新审视模型是否真的不适合这个数据尝试更简单的模型如线性回归作为基准。问题4如何解释“交互效应”需求题目或论文中可能需要你讨论物质间的协同作用。解决在随机森林中交互效应已被自动包含在树的分裂过程中但不易直接提取。你可以使用部分依赖图或SHAP值进行高级解释。例如用sklearn的plot_partial_dependence函数可以画出当物质A和物质B同时变化时对预测风味的联合影响。这能直观展示“112”的效应。在论文中展示这样的图会极大提升深度。问题5SPSSPRO结果与自编代码结果有细微差异。排查随机种子是否设置一致数据分割比例和顺序是否完全一致算法实现版本或默认参数是否有微小差别解决在科学计算中只要差异不大如R²相差小于0.02通常可以接受。在论文中应统一使用一套工具的结果以确保自洽。如果使用SPSSPRO分析论文中就主要展示其输出图表如果使用Python代码就附上核心代码和结果。切忌混用导致矛盾。最后记住数学建模竞赛评价的是“模型假设的合理性、建模的创造性、结果的正确性和表述的清晰性”。你的模型不需要完美无缺但整个思考过程必须逻辑严密像一份严谨的科研报告。从这道食品风味建模题入手掌握的是“从现实问题到数学模型再到分析解释”的全套方法论这套方法能迁移到无数其他领域这才是比赛和学习的真正价值所在。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价