尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

机器学习3-4章核心算法与模型评估实战指南

机器学习3-4章核心算法与模型评估实战指南 1. 3-4章到底在讲什么先看懂这学期的内容地图先直说结论机器学习课程的3-4章几乎是整个学期最重要的一段。无论你用的是周志华的《机器学习》、李航的《统计学习方法》还是学校自编讲义这两章基本都会落在监督学习的核心算法和模型评估与选择这两个大块上。说白了前半学期你还在学机器学习是什么、需要哪些数学基础到了3-4章就开始真正接触机器到底怎么从数据里学东西了。我把热词里那些高频词摆在一起看——头歌、吴恩达、决策树、支持向量机、逻辑回归、线性回归、模型评估——这就是3-4章的完整轮廓。各校教学顺序略有差异但主线逃不出下面这张图第3章通常覆盖线性回归、逻辑回归对数几率回归、线性判别分析、类别不平衡问题部分教材会把决策树也放进来。第4章通常覆盖决策树ID3、C4.5、CART、支持向量机SVM部分教材会带一章模型评估与验证比如交叉验证、混淆矩阵、ROC曲线。如果你是自学或者正在跟网课比如吴恩达或者李宏毅的课程你会发现他们的章节划分不完全一样但知识内核是重叠的。吴恩达会把逻辑回归和正则化放在一起讲李宏毅会花大量篇幅讲梯度下降的细节。这些内容拼在一起就是3-4章要解决的问题给定一批带标签的数据怎么训练出一个能预测新数据的模型并且保证这个模型真的管用而不是死记硬背。这个阶段最容易出现的状况是上课听懂了每一个公式的推导但一做题、一上机就懵。尤其是头歌Educoder这类实训平台上机器学习-决策树进行收入预测支持向量机-python和sklearn混合版这种实训任务看着名字挺具体但卡起壳来一点不含糊。所以这篇文章我不打算复述教材而是站在一个学期熬过来的人的角度把3-4章里最值得花时间搞懂的东西拆开揉碎把我踩过的坑和后来才想明白的道理一并说清楚。2. 模型评估与选择这一章最容易被低估但期末和实战都靠它很多同学翻到第3章开头看到评估方法性能度量偏差与方差这些小标题会误以为这是纯理论、考前背背就行。我当初就是这么想的结果第一次做头歌的模型评估、选择与验证实训题直接做崩溃了。后来才发现这一节才是整个3-4章的地基——后面学的所有算法好不好用、该调什么参数、和别的模型比谁强全靠这一节给的尺子去量。2.1 训练集/验证集/测试集为什么要切分以及怎么切先问一个最基础的问题为什么不能拿全部数据训练再用同一批数据算准确率因为模型会作弊。如果你让模型看着答案做题它完全可以死记住所有题目的答案考试时遇上原题当然全对但换一道新题就露馅。机器学习管这叫过拟合overfitting模型在训练数据上表现得近乎完美但在没见过的数据上一塌糊涂。所以标准做法是把数据切成几份训练集用来喂给模型学习参数。验证集训练过程中用来挑超参数、做早停相当于模拟考。测试集全部训练结束后最后考一次评估真实水平。实际课程项目中很多人懒得切直接拿全部数据训练再拿全部数据评估得到的准确率虚高。这个问题在头歌实训里尤其隐蔽——实训测评脚本吃的是你的预测结果如果你的模型过拟合了训练集在测评数据上分数就会很难看。常见的切分方法就那么几种留出法hold-out、交叉验证法cross validation、自助法bootstrap。留出法最直接就是按比例随机切一般训练集:测试集 7:3 或 8:2。但它的缺点是结果对切分方式敏感运气好切出来的测试集简单分数虚高运气不好就偏低。交叉验证法更稳尤其是k折交叉验证k-fold cross validation。做法是把数据均分成k份每次拿其中k-1份训练、剩下1份验证轮流k次最后把k次结果平均。k通常取5或10。实训平台上的题目数据量通常不大用5折交叉验证非常合适。我个人的习惯是小数据集几千条以内优先用交叉验证大数据集几万条以上用留出法就够了因为训练成本摆在那里。2.2 准确率、精确率、召回率、F1光看准确率会吃大亏分类问题里最常用的评估指标是准确率Accuracy也就是预测正确的比例。但准确率高不代表模型好尤其在类别不平衡的场景下。举个例子一个数据集里99%是负样本、1%是正样本。你写一个永远预测负样本的傻瓜模型准确率是99%。看起来很强实际上一点用没有。所以还得看另外三个指标精确率Precision预测为正类的样本里真正是正类的比例。公式是 TP / (TP FP)。可以理解成你说是正类的到底有多可信。召回率Recall真实正类样本里被你成功找出来的比例。公式是 TP / (TP FN)。可以理解成正类样本有没有漏网。F1分数精确率和召回率的调和平均公式是 2 * P * R / (P R)。当你想在精确率和召回率之间取平衡时就看它。这三个指标之间的取舍非常微妙。把判断标准放宽召回率上去了但精确率会掉把标准收严精确率上去了但很多正样本会被漏掉。没有绝对正确的答案取决于业务需求——比如医疗诊断里漏诊的代价远大于误诊就优先保召回率垃圾邮件过滤里误杀正常邮件很烦人就优先保精确率。头歌的模型评估实训里经常会让你用sklearn的classification_report输出这些指标然后根据指标判断模型好坏。如果你只盯着准确率很容易在这个模型到底行不行的问题上给出错误判断。2.3 ROC曲线和AUC期末爱考、面试爱问、实战离不开ROC曲线和AUC也是高频考点。ROC曲线横轴是假正例率FPR纵轴是真正例率TPR把分类阈值从高到低扫一遍连成一条曲线。曲线越靠近左上角说明模型在不误伤负样本的情况下找出正样本的能力越强。AUC就是ROC曲线下方的面积取值范围0到1。AUC 0.5 说明模型和瞎猜一样AUC 1 是完美模型。实际项目中AUC能到0.8以上就算不错的模型了。我读书时一直没太懂ROC曲线为什么长这样后来跑了一遍sklearn的roc_curve函数把每个阈值下的FPR和TPR打印出来才彻底明白。建议你也这样操作一次取一个模型遍历阈值从1到0观察正负样本的预测分数怎么被分到两侧的。实操一遍比背十遍定义都管用。注意多分类问题里ROC曲线是一对多One-vs-Rest来画的每个类别画一条别搞混了。3. 线性回归与逻辑回归从拟合一条线到分类一把锁第3章的正餐基本就是从线性回归开始一路吃到逻辑回归。很多初学者觉得线性回归太简单、不值得花时间但实际上它是理解梯度下降、损失函数、正则化这些核心概念的绝佳入口。逻辑回归虽然名字里带回归干的却是分类的活而且是工业界用得最多的分类算法之一。3.1 线性回归的损失函数为什么是均方误差而不是绝对值误差线性回归的目标是找一条直线或超平面来拟合数据使得预测值和真实值之间的差距最小。衡量差距的函数叫损失函数。线性回归最常用的损失函数是均方误差MSEMSE (1/n) * Σ(y_i - ŷ_i)^2为什么用平方而不是绝对值两个原因第一平方误差是凸函数有唯一全局最小值方便用梯度下降求解。绝对值误差在0点不可导优化起来麻烦得多。第二平方误差对大误差的惩罚更大。如果某个样本预测偏得很离谱平方之后误差会被放大模型会更努力地去修正这个大偏差。这在大多数场景下是好事但也要注意副作用——如果数据里有极端离群点outlier模型会被带偏。所以现实中如果数据噪声大、离群点多也有人用Huber Loss这种中间态损失函数小误差用平方、大误差用线性兼顾两者优点。线性回归求解通常有两个路线一个是正规方程Normal Equation直接算解析解另一个是梯度下降Gradient Descent迭代逼近最优解。当特征数量不多比如几百个以内且矩阵可逆时正规方程一步到位效率很高。但当特征多、样本量大时正规方程要算矩阵的逆计算复杂度高达O(n^3)这时梯度下降更实用。3.2 梯度下降的直觉理解下山和调参梯度下降的思想可以用一个类比讲清楚你站在山腰上想走到山谷最低处但天太黑看不清路只能靠脚下踩到的坡度来判断方向——往最陡的下坡方向走一步再重新感觉坡度再走一步……直到走到平地。在数学上坡度就是损失函数对参数的偏导数梯度。每次更新参数的公式是θ_new θ_old - 学习率 * 梯度学习率learning rate这个超参数特别关键。设大了步子太大可能直接跨过最低点甚至越走越远损失越来越大设小了收敛速度慢得让人怀疑程序是不是死循环了。我在课程实验里试过学习率从0.1改成0.01收敛速度肉眼可见地变慢改成1.0损失直接爆炸。一个实用技巧是观察损失曲线loss curve来判断学习率是否合适如果损失一路下降然后趋于平稳说明学习率基本合适如果损失忽高忽低甚至越来越大说明学习率偏大了往小调。如果损失下降得太慢可以尝试调大一点。3.3 逻辑回归把线性输出压到0到1之间逻辑回归解决的是分类问题。它和线性回归的关系是先算出线性组合 z w·x b然后通过Sigmoid函数 σ(z) 1 / (1 e^(-z))把输出压缩到(0, 1)区间。这个输出可以理解成样本属于正类的概率。为什么需要Sigmoid函数因为线性回归的输出范围是整个实数轴你没法直接拿它当概率使。Sigmoid函数像一个压缩器把负无穷到正无穷的任意实数都映射到0和1之间而且它在z0附近变化最陡离0越远越平缓——这刚好符合直觉离分类边界越近的样本类别归属越模糊。逻辑回归的损失函数是交叉熵损失Cross-Entropy Loss也叫对数损失L -(1/n) * Σ [y_i * log(p_i) (1 - y_i) * log(1 - p_i)]为什么不用均方误差因为逻辑回归的输出是概率用均方误差会让损失函数变成非凸函数梯度下降容易陷入局部最小值而且收敛速度慢。交叉熵在概率框架下是最自然的选择而且它是凸函数优化起来有保障。逻辑回归在工业界地位很高因为模型简单、可解释性强训练和推理速度都快。你在头歌上做的逻辑回归实训核心就是用sklearn的LogisticRegression跑通一个分类任务然后调参优化。一个值得做的实验是把数据标准化后再跑一次对比不标准化的效果。逻辑回归对特征尺度敏感标准化往往能显著提升收敛速度和最终效果。3.4 正则化防止模型学过头的关键手段线性回归和逻辑回归都容易过拟合尤其在特征多、样本少的情况下。解决手段之一就是正则化给损失函数加一项惩罚项让模型参数不要太大。L2正则化Ridge惩罚项是参数平方和会让参数整体变小但不会变成0模型更平滑。L1正则化Lasso惩罚项是参数绝对值之和会让部分参数变成0相当于自动做特征选择。弹性网络ElasticNetL1和L2组合两者兼顾。正则化强度由超参数C在sklearn中或α在传统公式中控制。C越大正则化越弱模型越复杂C越小正则化越强模型越简单。调参思路很简单先用默认参数跑一遍然后用交叉验证在不同C值下评估选出最优C。我个人的实操经验是遇到高维稀疏特征优先试L1正则化看看能不能自动筛掉无关特征如果特征之间相关性很强用L2或者弹性网络更稳。课程作业里如果你发现训练集准确率远高于测试集优先考虑加大正则化强度。4. 决策树与支持向量机从规则组合到空间分割第4章通常是决策树和SVM的地盘。这两个算法风格差异很大决策树像是一连串if-else规则的组合通俗易懂SVM则是在高维空间里找分界线理论优美。但它们的核心思想都围绕一个共同问题——怎么把不同类别的样本分开。4.1 决策树的分裂依据信息增益、增益率、基尼指数决策树的核心问题是每一步该用哪个特征来划分数据教材里给了三个标准信息增益ID3算法用信息熵衡量数据集的纯度。划分之前算一次熵划分之后按比例加权算一次熵两者之差就是信息增益。增益越大说明这个特征带来的信息量越大越适合用来划分。缺点是偏好取值数目多的特征——一个特征如果每个样本取值都不同信息增益会虚高。增益率C4.5算法为了解决信息增益的偏好问题引入了固有值Intrinsic Value作为分母对取值多的特征做惩罚。但增益率又会反过来偏好取值少的特征所以C4.5实际做法是从信息增益高于平均水平的特征里挑增益率最高的。基尼指数CART算法不折腾信息熵直接用基尼值衡量纯度。基尼值越小纯度越高。CART决策树每一步选基尼指数最小的特征。头歌的决策树进行收入预测实训用的多半就是CARTsklearn的DecisionTreeClassifier默认就是CART。你不需要手写这三个算法——除非你的课程作业要求纯手写——但理解它们之间的区别非常重要因为期末简答题特别爱考ID3、C4.5、CART之间的区别。我在自己动手实现决策树之后有个体会决策树学到的本质是一堆特征取值 → 类别的规则。训练完成后你可以把树的规则打印出来sklearn的tree.export_text看看模型到底学到了什么。这一步特别有意思你会看到模型先拿什么特征做判断、阈值定在多少。模型的推理逻辑完全透明这一点是神经网络做不到的。4.2 决策树的过拟合与剪枝为什么你的树在头歌上分数飘忽决策树特别容易过拟合因为只要树足够深理论上可以让每个叶子节点都只包含一个样本训练集准确率100%。但这样的树毫无泛化能力换个数据集就彻底垮掉。解决办法有两个方向预剪枝Pre-pruning在构建树的过程中每打算分裂一个节点先验证一下分裂之后在验证集上的表现有没有提升没有就不分裂。优点是省时间缺点是短视——这一步没提升但接下来两步可能有提升预剪枝会错过后面更好的结构。后剪枝Post-pruning先把整棵树长完然后自底向上检查把不贡献泛化性能的子树替换成叶子节点。效果通常比预剪枝好但时间成本更高。sklearn的DecisionTreeClassifier里控制剪枝的参数主要有max_depth树的最大深度。min_samples_split内部节点再划分所需的最小样本数。min_samples_leaf叶子节点最少样本数。max_leaf_nodes最大叶子节点数。ccp_alpha最小成本复杂度剪枝参数值越大剪枝越狠。如果你在头歌上做的决策树实训分数不理想先别急着怀疑代码逻辑检查这些参数是不是让树长太深了。我当初做收入预测那道题默认参数下测试集准确率只有七成多把max_depth调到5之后成绩直接提了一截。4.3 SVM的核心思想最大间隔与支持向量SVM的思想可以这样理解假设两类样本在二维平面上是可以用一条直线分开的但能分开的直线有无数条。哪条最好SVM选的是离两类样本都尽可能远的那条——也就是间隔margin最大化的那条。为什么追求最大间隔因为间隔越大分类决策的容错能力越强。新来的样本就算稍微偏一点也不太容易被分错。这种思想叫结构化风险最小化比单纯追求训练集准确率要稳健。真正被这条最优点决定的样本叫支持向量Support Vector。这是SVM名字的由来也说明了一个关键特性SVM的决策边界只由少数几个支持向量决定其他样本离得再远也不影响边界位置。这是SVM和其他算法的本质区别——决策边界不靠所有样本投票决定而是靠最关键的少数派决定。SVM最精彩的部分是核函数Kernel Function。当数据在低维空间线性不可分时通过核函数把数据映射到高维空间在高维空间里找一个线性超平面。比如在二维平面上一堆红蓝点围成一个圈你没法画一条直线分开它们但映射到三维后用一个平面就能切开。常见的核函数就几种线性核Linear适合数据本来就近似线性可分的情况。多项式核Polynomial适用于有一定非线性关系的数据。径向基核RBF最常用适合大多数非线性问题但需要调gamma参数。Sigmoid核使用偏少。sklearn的SVC默认用的是RBF核。RBF里的gamma参数控制单个样本的影响半径gamma越大每个样本影响范围越小决策边界越复杂越容易过拟合gamma越小决策边界越平滑但太小了会欠拟合。C参数控制对误分类的惩罚力度C越大模型越不允许训练集出错越容易过拟合。4.4 头歌SVM实训的实战踩坑记录sklearn混合版头歌上支持向量机-python和sklearn混合版这类实训坑位特别固定我把最有代表性的几个列出来你提前有个心理准备。第一个坑数据没做标准化结果模型完全学不动。SVM对特征的尺度非常敏感。如果有个特征取值范围是0到1另一个是0到10000距离计算会被后者主导SVM的优化过程会变得极其不稳定。我第一次跑SVM实训时加载数据直接开训练测试集准确率不到五成。后来加了StandardScaler做标准化成绩直接拉升到九成以上。几乎可以说用SVM之前不做特征标准化等于白做。第二个坑不知道gamma和C怎么调全靠瞎试。SVM的两个核心参数C和gamma配合起来对结果影响很大。如果分数不高优先跑一遍网格搜索GridSearchCV参数范围可以设定C [0.1, 1, 10, 100]gamma [0.01, 0.1, 1, 10]。交叉验证网格搜索特别方便唯一的问题是数据量大了之后很耗时间但课程数据量通常不大可以放心用。第三个坑kernellinear和kernelrbf的选择。如果数据量不大、特征数中等linear核往往就够了而且训练快、可解释性强。RBF核更灵活但更容易过拟合。有个判断技巧先试试linear如果效果已经够好就别折腾了效果不够再上RBF配合调参。5. 头歌实训与期末复习把3-4章知识接到项目和考试上理论和实操之间永远有一道鸿沟。3-4章的内容就算全看懂了到了头歌实训、期末考试还是会有大量让人头疼的细节。这一节专治学完了不会用。5.1 头歌实训的正确打开方式先跑通、再理解、最后优化很多同学在头歌上做实验喜欢一上来逐行读代码、试图理解每一行在干什么结果卡在某个地方就很久。我的建议是反过来先不管细节把代码原样运行一遍确认能出结果再回头逐段分析每部分在干什么最后再动手调参优化。为什么这样效率更高因为机器学习的代码链路很长——数据加载、预处理、划分、训练、预测、评估——任何一环出问题都会导致整个流程跑不通。如果一开始就钻细节很容易见树不见林。先把整个流程跑通你对全局就有了把握输入是什么、中间经历了什么、输出是什么。有了这个框架感回头分析细节就轻松多了。头歌实训平台还有一个特点测试用例可能和你看到的训练数据不完全一样。你的代码要在未知数据上表现好这就意味着——尽量别对训练数据做过度的针对性处理比如硬编码某个阈值、死记某个特定样本的标签。5.2 期末复习的高频考点与答题思路根据热词里的机器学习期末山东大学机器学习期末西电机器学习期末以及各种期末复习需求我把3-4章的常见考点整理一下概念辨析类过拟合和欠拟合的区别、成因、解决方法加正则化、加数据、剪枝、早停等。生成式模型和判别式模型的区别。第3章里线性判别分析LDA就是典型的生成式或判别式——不同教材归类不一致但LDA本身和PCA的对比是高频考法PCA是无监督降维LDA是有监督降维。公式推导类线性回归的最小二乘解推导。逻辑回归的损失函数推导从极大似然出发。信息增益的计算、基尼指数的计算。SVM的对偶问题推导——这个难度大专业课老师通常不会要求完整手推但你要说清楚为什么要转对偶为了引入核函数、处理高维特征。计算题给定一个小数据集手算信息增益选特征。给定混淆矩阵算准确率、精确率、召回率、F1。给定AUC值判断模型水平。论述题如何解决类别不平衡问题过采样、欠采样、阈值移动。这是第3章末尾的重要话题。为什么说没有免费的午餐定理——没有哪个算法在所有问题上都最优。如何理解偏差-方差分解为什么模型复杂度升高时偏差下降但方差上升。这些考点直接对应3-4章的核心知识点期末复习时对着这份清单自查就行哪里不清楚翻教材补哪里。5.3 怎么把3-4章的知识接到完整项目流程上学到3-4章你应该已经具备独立完成一个小型机器学习项目的能力了。完整流程应该是明确问题分类还是回归评价指标选什么数据获取与理解数据集长什么样有没有缺失值、异常值、类别不平衡数据预处理处理缺失值、标准化/归一化、编码类别特征、划分训练/验证/测试集。模型选择与训练从逻辑回归、决策树、SVM等算法里选一个或几个做对比。模型评估与调参用交叉验证评估用网格搜索调参。结果分析与总结哪个模型表现最好为什么哪些特征最重要这个流程你现在就能跑通。不用等学完后面的神经网络再动手。很多同学有一个误区觉得我学完整个学期的课再开始做项目。但实际经验是项目是为了巩固已学知识不是为了展示全部知识。你现在拿着逻辑回归和决策树已经能解决不少真实问题了。5.4 一个真实的小案例用决策树预测收入水平的完整过程拿头歌上决策树进行收入预测这个实训来说完整思路应该是数据是典型的表格型数据包含年龄、职业、教育程度、工作时间等特征标签是收入是否超过5万美元。第一步加载数据检查有没有缺失值、类别特征有多少种取值。第二步处理类别特征用sklearn的LabelEncoder或OneHotEncoder编码。第三步划分训练集和测试集建议7:3。第四步创建DecisionTreeClassifier先用默认参数训练看测试集准确率。第五步调参。优先调max_depth和min_samples_leaf。从max_depth3开始逐步增大观察测试集准确率变化。测试集准确率上升后开始下降的那一点就是比较合理的深度。第六步输出决策树规则export_text看模型学到的最重要的几个特征是什么。这套流程放在其他分类任务里也完全通用。核心心法就一句话先有一个能跑的模型再一点点改进千万不要一上来就追求完美。6. 学习3-4章的常见误区与个人经验聊了这么多技术点最后再分享几个学习层面的经验。这些东西教材不写、老师不一定会讲但几乎每个过来人都是碰了壁才明白的。6.1 误区一过度纠结公式推导忽略了直觉理解第3章的数学推导确实多线性回归的最小二乘、逻辑回归的极大似然推导起来都很费劲。但你要想清楚课程考试考的是推导可实际工作几乎用不到手推公式——sklearn一行代码就把模型训练完了。怎么平衡我的做法是第一遍先建立直觉第二遍再啃推导。第一遍你要搞清楚的是这个算法解决什么问题、输入输出是什么、有哪些超参数、超参数调大调小各有什么影响。这些问题搞清楚了你就算会用这个算法了。第二遍再回到教材把公式一步一步步推一遍这时候你会发现推导其实没那么难因为每一步要做什么你已经有直觉了。6.2 误区二只调参不思考实训成绩上去了但什么都没学会头歌这类平台有个副作用题目评分是自动化的你只要调参调到分数高就算过关。有些同学会用一种玄学调参的方式——随机试参数哪个分数高用哪个。分数确实上去了但你问他一两个参数为什么这样设答不上来。这就本末倒置了。实训的意义不是拿高分而是通过实操理解模型的行为。我建议你在每个实训任务里至少做三件非应试的事情记录不同参数下的训练集和测试集准确率观察过拟合是怎么发生的。用matplotlib画出损失曲线或决策边界直观感受模型行为。用export_text输出决策树规则看看模型学到的规则是否合理。这三件事做完你的收获一定比单纯拿满分大得多。6.3 误区三每个算法都学但从不对比导致不会选型3-4章学完你手里至少有逻辑回归、决策树、SVM三个分类器。但很多人学完之后还是不知道什么时候该用哪个。我的选型经验你可以抄作业数据量不大、特征中等、需要快速出基线结果优先逻辑回归。数据表格型、特征含义明确、需要可解释性优先决策树或随机森林。数据量不大、特征维度高、有复杂的非线性关系SVM配合RBF核很能打。数据量巨大十万级以上SVM基本上不用考虑了训练太慢优先逻辑回归或树模型。如果你不确定选型对不对做法很简单把所有模型都跑一遍用交叉验证比一下哪个好就用哪个。机器学习项目里通过实验来决定方案是常态拍脑袋选型反而不靠谱。6.4 关于数据集、代码环境的一点建议热词里出现了机器学习免费公开数据集“机器学习 应用流程”机器学习课程环境搭建这些搜索词说明很多人在找数据练手、在配环境上卡住了。数据集方面入门阶段不需要找多大多全的数据几个经典的就够了Iris鸢尾花数据集分类入门必备。Boston房价数据集回归入门经典虽然已从sklearn移除但网上很容易找到备份。Titanic泰坦尼克号生存预测Kaggle入门赛题特征工程练手非常好。UCI Machine Learning Repository各种领域的数据集都有课程作业够用了。环境搭建方面我的建议只有两条别在装环境上死磕超过半天装不上的时候果断用云环境。Anaconda全家桶装好conda create -n ml python3.9然后pip install numpy pandas scikit-learn matplotlib jupyter这套组合能覆盖95%的课程需求。如果还是装不上Google Colab或者国内的各种云Notebook平台都能在线跑不丢人。我自己当年最崩溃的一次是在Windows上装了三个小时的scikit-learn最后发现是Python版本不兼容。后来的惨痛教训总结成一句话检查Python版本和包版本的兼容性一定要看官方文档支持的版本范围。这个问题在现在的版本里已经少多了但万一遇到还是得留个心眼。7. 最后想说几句心里话3-4章是整个机器学习课程的分水岭。前半学期你可能还在想机器学习到底是什么到了这里你会第一次真切感受到机器是怎么从数据里学习的。这个过程很神奇但也伴随着大量的公式、代码和莫名其妙的报错。很多人在这里放弃也很多人在这里开窍。差别不在智商而在方法。学公式的时候多问一句这到底在解决什么问题调参的时候多看一眼参数变了之后模型表现为什么会变做实训的时候多一步不调参直接跑一遍看看会发生什么。这三个习惯坚持下去你会发现机器学习没那么玄乎它只是一套用数据做决策的系统性方法你完全可以掌握它。如果你正在为了3-4章焦头烂额记住这不是你一个人难每个学机器学习的人都从这关走过。熬过去你手里就多了三件真正有用的武器——逻辑回归、决策树、SVM。它们看起来朴素但这么多年过去依然活跃在工业界的各个角落。把基础打扎实后面学神经网络、深度学习的时候你会感谢现在的自己。
返回列表