1. 机器学习基础概念快速回顾期末考试前最头疼的就是各种概念混在一起分不清。我当年复习时把机器学习定义为让计算机从数据中自动学习规律的科学这个定义虽然简单但抓住了本质。根据数据是否有标签机器学习分为三大类监督学习就像老师带着答案批改作业数据集中的每个样本都有明确标签。比如根据房屋面积预测房价这里的房价就是标签。无监督学习相当于让学生自己归纳知识点数据完全没有标签。典型的例子是客户分群我们不知道应该分成几类全靠算法发现规律。半监督学习结合了前两者的特点部分数据有标签部分没有就像老师只批改部分作业剩下的让学生互相批改。在实际项目中数据划分是门学问。我常用的比例是6:2:2from sklearn.model_selection import train_test_split X_train, X_temp, y_train, y_temp train_test_split(X, y, test_size0.4) X_val, X_test, y_val, y_test train_test_split(X_temp, y_temp, test_size0.5)这样得到的训练集、验证集、测试集比例就是6:2:2。验证集专门用于调参测试集则像期末考试卷必须等到最后才能用。2. 模型评估与选择的关键技巧评估模型时最容易混淆的就是各种误差指标。记得我刚开始总把训练误差和泛化误差搞混后来用考试成绩来类比就明白了训练误差就像平时做课后习题的正确率泛化误差相当于期末考试的真实水平验证误差类似于模拟考成绩过拟合和欠拟合是模型训练的永恒话题。有一次我做图像分类模型在训练集上准确率99%测试集却只有60%典型的过拟合。解决方法很实用增加L2正则化项权重衰减from sklearn.linear_model import Ridge ridge Ridge(alpha1.0) # alpha就是正则化强度采用早停法Early Stopping使用Dropout神经网络专用交叉验证是评估模型的金标准特别是数据量少的时候。k折交叉验证我一般用sklearn这样实现from sklearn.model_selection import cross_val_score scores cross_val_score(model, X, y, cv5) # 5折交叉验证3. 核心算法原理与实战要点3.1 线性模型从回归到分类线性回归的损失函数选择很有讲究。均方误差MSE对异常值敏感平均绝对误差MAE更鲁棒。实际项目中我经常要处理这种情况# 处理异常值后的线性回归 from sklearn.linear_model import HuberRegressor huber HuberRegressor(epsilon1.35).fit(X, y)逻辑回归虽然名字带回归实则是分类算法。它的输出可以理解为概率from sklearn.linear_model import LogisticRegression lr LogisticRegression() probs lr.predict_proba(X_test)[:, 1] # 获取正类概率3.2 决策树从构建到优化决策树最关键的环节是特征选择。信息增益容易偏向取值多的特征增益率又可能偏向取值少的实践中我常用基尼指数作为折中方案。剪枝是防止过拟合的有效手段后剪枝通常效果更好但计算量大。随机森林通过特征随机性提升多样性from sklearn.ensemble import RandomForestClassifier rf RandomForestClassifier( n_estimators100, max_featuressqrt # 每棵树随机选择部分特征 )4. 神经网络与支持向量机精要感知机只能解决线性可分问题这个限制在1969年被Minsky指出后直接导致了第一次AI寒冬。多层前馈网络配合BP算法可以解决这个问题但要注意学习率设置from sklearn.neural_network import MLPClassifier mlp MLPClassifier( hidden_layer_sizes(100,), learning_rate_init0.01 # 学习率太大容易震荡 )支持向量机SVM的核技巧是把数据映射到高维空间实现线性可分。RBF核是最常用的选择from sklearn.svm import SVC svm SVC(kernelrbf, gammascale) # gamma控制核函数宽度5. 贝叶斯与集成学习实战策略朴素贝叶斯的朴素体现在特征条件独立性假设。虽然现实中很少满足但在文本分类等场景表现意外地好from sklearn.naive_bayes import MultinomialNB nb MultinomialNB() nb.fit(X_train_counts, y_train) # 输入是词频或TF-IDF集成学习的核心是多样性。除了随机森林梯度提升树GBDT也很强大from sklearn.ensemble import GradientBoostingClassifier gbdt GradientBoostingClassifier( n_estimators100, learning_rate0.1, max_depth3 )6. 聚类分析与模型调优k-means聚类要注意初始中心点选择。k-means算法能显著改善这个问题from sklearn.cluster import KMeans kmeans KMeans( n_clusters3, initk-means, # 智能初始化 n_init10 # 多次运行取最优 )模型调参是门艺术。网格搜索虽然耗时但效果稳定from sklearn.model_selection import GridSearchCV param_grid {C: [0.1, 1, 10], gamma: [0.01, 0.1, 1]} grid GridSearchCV(SVC(), param_grid, cv5) grid.fit(X_train, y_train)
机器学习期末复习:从核心概念到实战应用的全面梳理
发布时间:2026/6/30 12:59:29
1. 机器学习基础概念快速回顾期末考试前最头疼的就是各种概念混在一起分不清。我当年复习时把机器学习定义为让计算机从数据中自动学习规律的科学这个定义虽然简单但抓住了本质。根据数据是否有标签机器学习分为三大类监督学习就像老师带着答案批改作业数据集中的每个样本都有明确标签。比如根据房屋面积预测房价这里的房价就是标签。无监督学习相当于让学生自己归纳知识点数据完全没有标签。典型的例子是客户分群我们不知道应该分成几类全靠算法发现规律。半监督学习结合了前两者的特点部分数据有标签部分没有就像老师只批改部分作业剩下的让学生互相批改。在实际项目中数据划分是门学问。我常用的比例是6:2:2from sklearn.model_selection import train_test_split X_train, X_temp, y_train, y_temp train_test_split(X, y, test_size0.4) X_val, X_test, y_val, y_test train_test_split(X_temp, y_temp, test_size0.5)这样得到的训练集、验证集、测试集比例就是6:2:2。验证集专门用于调参测试集则像期末考试卷必须等到最后才能用。2. 模型评估与选择的关键技巧评估模型时最容易混淆的就是各种误差指标。记得我刚开始总把训练误差和泛化误差搞混后来用考试成绩来类比就明白了训练误差就像平时做课后习题的正确率泛化误差相当于期末考试的真实水平验证误差类似于模拟考成绩过拟合和欠拟合是模型训练的永恒话题。有一次我做图像分类模型在训练集上准确率99%测试集却只有60%典型的过拟合。解决方法很实用增加L2正则化项权重衰减from sklearn.linear_model import Ridge ridge Ridge(alpha1.0) # alpha就是正则化强度采用早停法Early Stopping使用Dropout神经网络专用交叉验证是评估模型的金标准特别是数据量少的时候。k折交叉验证我一般用sklearn这样实现from sklearn.model_selection import cross_val_score scores cross_val_score(model, X, y, cv5) # 5折交叉验证3. 核心算法原理与实战要点3.1 线性模型从回归到分类线性回归的损失函数选择很有讲究。均方误差MSE对异常值敏感平均绝对误差MAE更鲁棒。实际项目中我经常要处理这种情况# 处理异常值后的线性回归 from sklearn.linear_model import HuberRegressor huber HuberRegressor(epsilon1.35).fit(X, y)逻辑回归虽然名字带回归实则是分类算法。它的输出可以理解为概率from sklearn.linear_model import LogisticRegression lr LogisticRegression() probs lr.predict_proba(X_test)[:, 1] # 获取正类概率3.2 决策树从构建到优化决策树最关键的环节是特征选择。信息增益容易偏向取值多的特征增益率又可能偏向取值少的实践中我常用基尼指数作为折中方案。剪枝是防止过拟合的有效手段后剪枝通常效果更好但计算量大。随机森林通过特征随机性提升多样性from sklearn.ensemble import RandomForestClassifier rf RandomForestClassifier( n_estimators100, max_featuressqrt # 每棵树随机选择部分特征 )4. 神经网络与支持向量机精要感知机只能解决线性可分问题这个限制在1969年被Minsky指出后直接导致了第一次AI寒冬。多层前馈网络配合BP算法可以解决这个问题但要注意学习率设置from sklearn.neural_network import MLPClassifier mlp MLPClassifier( hidden_layer_sizes(100,), learning_rate_init0.01 # 学习率太大容易震荡 )支持向量机SVM的核技巧是把数据映射到高维空间实现线性可分。RBF核是最常用的选择from sklearn.svm import SVC svm SVC(kernelrbf, gammascale) # gamma控制核函数宽度5. 贝叶斯与集成学习实战策略朴素贝叶斯的朴素体现在特征条件独立性假设。虽然现实中很少满足但在文本分类等场景表现意外地好from sklearn.naive_bayes import MultinomialNB nb MultinomialNB() nb.fit(X_train_counts, y_train) # 输入是词频或TF-IDF集成学习的核心是多样性。除了随机森林梯度提升树GBDT也很强大from sklearn.ensemble import GradientBoostingClassifier gbdt GradientBoostingClassifier( n_estimators100, learning_rate0.1, max_depth3 )6. 聚类分析与模型调优k-means聚类要注意初始中心点选择。k-means算法能显著改善这个问题from sklearn.cluster import KMeans kmeans KMeans( n_clusters3, initk-means, # 智能初始化 n_init10 # 多次运行取最优 )模型调参是门艺术。网格搜索虽然耗时但效果稳定from sklearn.model_selection import GridSearchCV param_grid {C: [0.1, 1, 10], gamma: [0.01, 0.1, 1]} grid GridSearchCV(SVC(), param_grid, cv5) grid.fit(X_train, y_train)