导图社区 机器学习
"探索机器学习的核心算法与应用场景!本文涵盖聚类、贝叶斯、集成学习等经典算法,从理论到实践全面解析你将了解:Kmeans无监督聚类的流程与评价指标,朴素贝叶斯的概率分类原理,Bagging与Boosting的集成差异,决策树三种算法(ID3/C4.5/CART)对比,逻辑回归解决二分类问题的评估方法,线性回归的梯度下降与正规方程求解,以及KNN算法的特征预处理与网格搜索技巧适合想系统掌握机器学习基础算法的学习者"。
编辑于2025-12-21 14:28:19"探索机器学习的核心算法与应用场景!本文涵盖聚类、贝叶斯、集成学习等经典算法,从理论到实践全面解析你将了解:Kmeans无监督聚类的流程与评价指标,朴素贝叶斯的概率分类原理,Bagging与Boosting的集成差异,决策树三种算法(ID3/C4.5/CART)对比,逻辑回归解决二分类问题的评估方法,线性回归的梯度下降与正规方程求解,以及KNN算法的特征预处理与网格搜索技巧适合想系统掌握机器学习基础算法的学习者"。
【NLP入门指南】从文本处理到预训练模型实战,10天掌握自然语言处理核心技能! 内容涵盖:文本预处理、词向量训练(FastText)、RNN/LSTM/GRU时序模型,以及Transformer架构详解对比BERT(双向编码器)与GPT(单向解码器)的差异,实践微调与迁移学习技巧附带多标签分类、注意力机制等实战案例,助你快速构建NLP项目。
"揭秘互联网公司高效运转的核心密码!本文系统解析互联网公司的组织架构与工作流程,涵盖技术团队协作全场景:从典型架构类型(职能型/项目型/矩阵型)到核心部门协同,完整呈现需求分析、开发测试、发布运维的项目全生命周期重点拆解三大开发方法论(瀑布模型/敏捷开发/DevOps),详解工程师双轨发展路径(技术线从初级到架构师,管理线从TL到技术总监)更附实用工具链指南:代码管理(GitHub/GitLab)、CI/CD(Jenkins/GitLab CI)、监控(Prometheus/Grafana)、协作(JIRA/Confluence/飞书),助你掌握互联网企业高效协作的底层逻辑。"
社区模板帮助中心,点此进入>>
"探索机器学习的核心算法与应用场景!本文涵盖聚类、贝叶斯、集成学习等经典算法,从理论到实践全面解析你将了解:Kmeans无监督聚类的流程与评价指标,朴素贝叶斯的概率分类原理,Bagging与Boosting的集成差异,决策树三种算法(ID3/C4.5/CART)对比,逻辑回归解决二分类问题的评估方法,线性回归的梯度下降与正规方程求解,以及KNN算法的特征预处理与网格搜索技巧适合想系统掌握机器学习基础算法的学习者"。
【NLP入门指南】从文本处理到预训练模型实战,10天掌握自然语言处理核心技能! 内容涵盖:文本预处理、词向量训练(FastText)、RNN/LSTM/GRU时序模型,以及Transformer架构详解对比BERT(双向编码器)与GPT(单向解码器)的差异,实践微调与迁移学习技巧附带多标签分类、注意力机制等实战案例,助你快速构建NLP项目。
"揭秘互联网公司高效运转的核心密码!本文系统解析互联网公司的组织架构与工作流程,涵盖技术团队协作全场景:从典型架构类型(职能型/项目型/矩阵型)到核心部门协同,完整呈现需求分析、开发测试、发布运维的项目全生命周期重点拆解三大开发方法论(瀑布模型/敏捷开发/DevOps),详解工程师双轨发展路径(技术线从初级到架构师,管理线从TL到技术总监)更附实用工具链指南:代码管理(GitHub/GitLab)、CI/CD(Jenkins/GitLab CI)、监控(Prometheus/Grafana)、协作(JIRA/Confluence/飞书),助你掌握互联网企业高效协作的底层逻辑。"
机器学习
机器学习概述
AI三大要素
数据
算法
算力
常见术语
样本
就是一行行的数据
特征
一列一列的属性数据
标签
目标
特征工程
核心就是特征的处理
数据集
训练集
训练模型
测试集
测试模型,准确度
学习分类
有监督学习
有特征,有标签
无监督学习
有特征,无标签
半监督学习
部分有标注,大部分没有标注
强化学习
深度学习
建模流程
1.获取数据
2.数据处理
异常和空值处理
划分训练集和测试集
3.特征工程
概念:利用专业背景知识和技巧处理数据,让机器学习算法效果最好。这个过程就是特征工程
特征提取
特征预处理
归一化
标准化
特征筛选
特征组合
特征降维
4.模型选择
5.模型训练
6.模型预测
拟合
概念:就是找到一个数学函数/模型,来匹配已知的数据点
欠拟合
模型过于简单
在训练集上效果很差
过拟合
模型过于复杂,或者训练数据太少
在训练集上效果很好,在测试集上效果很差
KNN算法
KNN算法思想
如果一个样本在特征空间中的 k 个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别
K值
过大,模型太简单,容易欠拟合
K值过小,太容易受到异常值影响,容易过拟合
解决问题
分类问题
进行多数表决
sklearn.neighbors.KNeighborsClassifier
回归问题
计算K个样本的平均值
sklearn.neighbors.KNeighborsRegressor
距离
欧氏距离
勾股定理
曼哈顿距离
横平竖直
切比雪夫距离
闵可夫斯基距离
是对多个距离度量公式的概括性表达
特征预处理
归一化
sklearn.preprocessing.MinMaxScaler
适用于小数据的场景
标准化
sklearn.preprocessing. StandardScaler
适用于大数据的场景
交叉验证
网格搜索
特征标准化和归一化的时候,不要两次fit
评估方法
准确率
KNN算法API
KNN分类算法API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
KNN回归算法API
sklearn.neighbors.KNeighborsRegressor(n_neighbors=5)
数据归一化API
sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)...)
feature_range缩放区间
数据标准化API
sklearn.preprocessing.StandardScaler()
交叉验证网格搜索API
sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)
参数
estimator: 估计器对象(模型)
param_grid: 估计器参数(dict){'n_neighbors': [1,3,5]}
cv: 指定几折交叉验证
返回
返回一个estimator对象,拥有交叉验证和网格搜索功能
返回对象属性
bestscore_: 在交叉验证中验证最好的结果
bestestimator: 最好的参数模型
cvresults: 每次交叉验证后的验证集准确率结果和训练集准确率结果
模型保存
joblib.dump()
joblib.load()
线性回归
概念:描述的是1个或者多个自变量和因变量之间的关系,基于这种关系建立的模型,就叫做线性回归模型
分类
一元线性回归
k表示斜率,b表示截距
目标值只与一个自变量有关
多元线性回归
w表示权重,b表示截距/偏置
目标值只与多个自变量有关
线性回归的计算
损失函数
计算预测值和真实值之间的误差
公式
最小二乘法
均方误差
绝对值误差
导数
损失函数的求解
一元线性回归
求偏导
多元线性回归
正规方程法
梯度下降
正规方程法
梯度下降算法
沿着梯度下降的方向求解极小值
什么是梯度
在单变量函数中,梯度就是某一点的切线斜率
在多变量函数中,梯度就是某一点点的偏导数
梯度下降公式
循环迭代求当前点的梯度,更新当前的权重参数
学习率
不能太大,也不能太小0.001~0.01
太小下降速度太慢
太大容易错过最低点
梯度下降的优化过程
1.给定初始位置,步长(学习率)
2.计算该点当前的梯度的负方向
3.向该负方向移动步长
4.重复2-3 步,直到收敛
两次差距小于指定的阈值
达到指定的迭代次数
梯度下降的分类
全梯度下降算法FGD
每次迭代使用全部样本的梯度值
由于使用全部数据集,训练速度慢
随机梯度下降算法SGD
每次迭代,随机选择并使用一个样本梯度值
简单,高效,不稳定
小批量梯度下降算法mini-batch
每次迭代时,随机选择并使用小批量的样本梯度值
结合了SG的胆大和FG的心细,目前使用最多
随机平均梯度下降算法SAG
每次迭代时,随机选择一个样本的梯度值和以往样本的梯度值的均值
训练初期表现不佳
梯度下降法和正规方程对比
正规方程
一次运算得出
适用于小数据量场景
缺点:计算量大,容易收到噪声
注意
逆矩阵不存在的话,无法求解
矩阵非常耗时
梯度下降
需要选择学习率
需要迭代求解
适用场景:特征数量较大,适合于嘈杂,大数据应用场景
模型评估方法
MAE
平均绝对误差
MSE
均方误差
RMSE
均方根误差
拟合
欠拟合
过拟合
正则化
L1正则化
会使得权重趋向于0,甚至等于0,使得某些特征失效,达到特征筛选的目的
L2正则化
子主题
线性回归相关API
线性回归API(正规方程法)
sklearn.linear_model.LinearRegression
线性回归API(梯度下降法)
sklearn.linear_model.SGDRegression
max_iter=1000最大迭代次数,默认1000
eta0=0.001学习率,默认0.001
均方误差MSE
sklearn.metrics.mean_squared_error
均方根误差RMSE
sklearn.metrics.root_mean_squared_error
平均绝对误差MAE
sklearn.metrics.mean_absolute_error
L1正则化API
sklearn.linear_model.Lasso
L2正则化API
sklearn.linear_model.Ridge
逻辑回归
用于解决分类问题,主要是二分类问题
原理
把线性回归的输出作为逻辑回归的输入
激活函数sigmoid
通过极大似然估计,来估计最优参数
大致步骤
假设所有的样本都预测对,那么这个整体是一个联合概率事件
求这个联合概率最大的时候,的权重参数,这个就是最大似然估计
但联合概率是一个累乘,不好计算,那就引入log优化函数,将累乘转换成累加
同时在前面加一个-号,将取最大值转变为求最小值问题,
最后用梯度下降算法,可以迭代求解逻辑回归算法的权重参数
分类问题的评估
混淆矩阵
行代表真实结果,列代表预测结果,每行每列都有正例反例
精确率
查准率
以列为计算范围,求正例样本中,真实正例的占比
召回率
查全率
以行为计算范围,真实正例中,被预测准的占比是多少
F1-score
结合上面两项计算出来的,评估模型综合预测能力.
ROC曲线和AUC指标
以模型的真正率TPR为纵轴,假正率FPR为横轴,将模型不同阈值下的表现以曲线形式展示处理
图的左上角,代表正例反例都预测对,图的右下角,代表正例反例都预测错
所以曲线越接近左上角,说明模型分类性能越好,可以用曲线下面积表示,也就是AUC
逻辑回归相关API
逻辑回归API
sklearn.linear_model.LogisticRegression()
混淆矩阵API
sklearn.metrics.confusion_matrix(y_true, y_pred2, labels=labels)
精确率API
sklearn.metrics.precision_score
准确率API
sklearn.metrics.accuracy_score
召回率API
sklearn.metrics.recall_score
F1_score API
sklearn.metrics.f1_score
ROC_AUC API
sklearn.metrics.roc_auc_score
分类评估报告API
sklearn.matrics.classification_report(y_true,y_pred,labels=[], target_names=[])
labels=[], target_names=[]效果等价,给标签值命名
决策树
简介
决策树既能解决分类问题,也可以解决回归问题
决策树是一种树形结构,每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果
决策树的建立过程
1.特征选择:选取有较强分类能力的特征
2.决策树生成:根据选择的特征生成决策树
3.决策树容易过拟合,采用剪枝的方法缓解过拟合
熵相关
熵
代表随机变量的不确定性
熵越大,不确定性越高,熵越小,数据不确定性越低
信息熵
公式
类别出现的概率 x 以2为底数的概率的对数,再对结果加个-号,再对各个类别进行累加
条件熵
计算过程
1.对特征进行分类,计算每个类别的比例
2.计算当前特征每个类别中标签的信息熵,计算出每个类别的条件熵
3.将第一步计算出来的比例,依次乘以第二步算出来的条件熵,累计求和
信息增益
熵-条件熵=信息增益
信息增益越大,说明这个特征对结果的影响越大,所以优先选择这个特征作为判断条件
特征熵
特征熵就是针对特征列算出信息熵
信息增益率
信息增益/特征熵
信息增益率越大,说明这个特征对结果的影响越大,所以优先选择这个特征作为判断条件
ID3
构建流程
1.计算每个特征的信息增益
2.使用信息增益最大的特征,将数据集拆分为子集
3.使用该特征(信息增益最大的特征)作为决策树的一个节点
4.对于剩余特征对子集重复上述步骤
C4.5
ID3的不足
会偏向于选择特征中种类多的作为分裂依据
使得模型依赖少数特征,导致过拟合
信息增益率本质
相当于对信息增益做了一个修正,增加一个惩罚系数
如果特征熵越大,说明特征越混乱,特征的取值个数越多.那就会导致信息增益率降低
构建流程基本和ID3一致,只是信息增益换成了信息增益率
CART
特点
CART模型是一种决策树模型,它既可以用于分类,也可以用于回归
CART分类树采用基尼指数最小化策略
CART回归树使用平方误差最小化策略
CART分类树
基尼值
从数据集中随机抽取两个样本,其类别标记不一致的概率
公式
基尼系数
计算流程
1.计算出特征中每个类别的比例
2.将第一步算出的比例,乘以类别对应标签的基尼值,然后将所有类别累加
一个特征有不止2个类别时,将其划分为2类的所有情况都计算基尼系数,然后取最小的基尼系数的情况作为分裂依据
例如,如果有3个类别,那就1+2来划分
例如,如果是连续值的情况,将连续值升序排列,将相邻中间值作为待定分裂点,依次计算每个分裂点的基尼系数,取最小的情况
CART回归树
CART分类树是使用叶子节点多数类别作为预测类别,回归树是采用叶子结点的平均值作为预测输出
平方损失
(预测值-实际值)平方,再累加
构建过程
1.将特征值升序排列,取相邻两个值的中间值作为待定分割点,然后计算平方损失,
2.依次计算所用待定分割点的平方损失,选择平方损失最小的情况,作为划分点
3.然后以此计算所有的特征的最优划分点
4.选出所有特征划分点中,平方损失最小的,作为当前树的分裂点
三种分类树的对比
ID3
分支方式
信息增益
特点
1.只能对离散属性的数据集构成决策树
2.倾向于选择取值较多的属性
C4.5
分支方式
信息增益率
特点
1.缓解了ID3分支过程中偏向取值较多的属性的问题
2.可处理连续数值型属性,也增加了对缺失值的处理方法
3.只适合于能够驻留内存的数据集,大数据无能为力
CART
分支方法
基尼指数
特点
1.可以进行分类和回归,可以处理离散属性,也可以处理连续属性
2.采用基尼指数,计算量小
3.一定是二叉树
决策树剪枝
来由
优于决策树的拟合能力很强,所以需要防止其过拟合,提高其泛化能力
概念
剪枝是一种防止决策树过拟合的一种正则化方法
将子树的节点全部删掉,用叶子节点来替换
方法
预剪枝
在模型训练前,进行估计,如果该特征不能提升模型泛化性能,则删减部分特征
后剪枝
在模型训练完成后,进行评估,如果删除对应子树能提升模型泛化性能,则删减这部分特征
剪枝技术对比
预剪枝
优点
减少决策树训练和测试时间的开销
缺点
可能带来欠拟合的风险
原理:有些分支当前划分提升不明显,但后续划分可能提升显著
后剪枝
优点
保留更多的分支,欠拟合风险小,泛化性能往往优于预剪枝
缺点
训练时间大
决策树API
分类树API
sklearn.tree.DecisionTreeClassifier()
参数Criterion:特征选择标准
'gini'或者'entropy',前者代表基尼系数,后者代表信息增益.默认'gini',即CART算法
参数max_depth:决策树最大深度
回归树API
sklearn.tree.DecisionTreeRegressor()
参数max_depth:决策树最大深度
集成学习
概述
集成学习是一种机器学习的思路,是通过把多个模型组合在一起,构成一个强学习器,目的是获取更精准的数据
bagging
介绍
通过有放回的获取数据,从数据集里面,获取多个训练集数据,训练多个模型,然后通过平权投票的方式,获取最终的预期结果,每个模型之间是并行关系
随机森林
随机选样本,随机选特征,训练多个决策树,构成随机森林
boosting
介绍
通过逐步提高前一次分类错误样本的权重,来进行强化学习的一种强学习器,学习器重点是关注前一次分类错误的样本的数据,通过多轮强化学习后,可以最终获取精确度高的数据,前后学习器之间是串联关系
加权投票
Adaboost
计算过程
1.首先初始化样本权重
2.将特征排序,每相邻两个特征的中间值作为待定分裂点,计算每个分裂点的错误率,选错误率最小的分裂点
3,将错误率带入公式计算模型权重
4,再将权重带入公式,计算样本新的权重值,对的样本权重缩小,错误的样本权重放大
5.权重值再除以归一化值,就是样本的最终权重
6.按照新权重,重复上面的步骤构建新的弱学习器
最终将所有学习器的输出结果 乘以 模型权重,再累加,再加上sign符号函数,就是最终输出结果
一般用来做二分类
GBDT
提升树
思想
通过拟合残差来进行提升
残差= 真实值 - 预测值
梯度提升树
不再拟合残差,而是拟合损失函数的负梯度
计算过程
1.先是从目标值的均值出发,将均值作为预测值,计算每个样本的负梯度
2.以中间值作为预分割点,计算每个分割点的负梯度平方损失,选平方损失最小的分割点
3.将分割点两边的负梯度平均值,作为第一颗决策树的输出
4.根据上个决策树的输出,再次计算负梯度,再次拟合,依次类推
最终预测结果就是标签均值,+上每一个模型输出的梯度,就是预测值
XGBoost
XGBoost是一种基于梯度提升的高性能机器学习算法,在GBDT的基础上进行了大量优化,提升速度,精度和泛化能力
核心思想
通过迭代的训练多个弱学习器,逐步修正前序模型的预测误差,最终组合成一个强模型
在损失函数中加入了正则化项,正则化项用来降低模型的复杂度
GBDT和XGBoos的区别
GBDT较慢,适合数据量小的场景,XGBoost较快,适合大数据的场景
GBDT内存占用低,XGBoost内存占用高
bagging和boosting区别
数据采集
bagging:又放回的获取训练数据
boosting:首次训练是全量数据,后一次训练获取的是前一次训练调整之后的数据
投票方式
bagging:平权投票
boosting:加权投票
执行顺序
bagging:并行
boosting:串行
集成学习API
随机森林API
sklearn.ensemble.RandomForestClassifier()
Adaboost API
sklearn.ensemble.AdaBoostClassifier()
GBDT API
sklearn.ensemble.GradientBoostingClassifier()
XGBoost API
xgboost.XGBClassifier(n_estimators, max_depth, learning_rate, objective)
n_estimators: 弱学习器个数
max_depth:最大深度
learning_rate: 学习率
objective:
'multi:softmax'多分类
"binary:logistic"二分类
贝叶斯算法
利用概率值进行分类的一种机器学习算法
概率
条件概率: 表示事件A在另外一个事件B已经发生条件下的发生概率,P(A|B)
联合概率:表示多个条件同时成立的概率,P(AB) = P(A) * P(B|A) = P(B)* P(A|B)
联合概率 + 条件概率
贝叶斯
贝叶斯公式来源于联合概率的变形
朴素贝叶斯算法
朴素贝叶斯,就是在贝叶斯公式的基础上把条件概率简化成独立概率.
拉普拉斯平滑系数
目的:避免概率值为0
计算被测样本属于各个分类的概率,哪个概率高就把样本归为哪一类
朴素贝叶斯API
sklearn.naive_bayes.MultinomialNB(alpha=1.0)
词频矩阵API
sklearn.feature_extraction.text.CountVectorizer
stop_word: 停止词
聚类算法
一种典型的无监督学习算法,主要用于将相似的样本自动归类到一个类别中
fit(x_train)
应用场景
用户画像,广告推荐,Data Segmentation, 搜索引擎的流量推荐,恶意流量识别
基于位置信息的商业推送, 新闻聚类, 筛选排序
Kmeans算法流程
1.随机设置K个特征空间内的点作为初始聚类中心
2.计算每个样本,到这些聚类点的距离
3.选择最近的聚类点作为标记类别,计算同个类别的新的聚类中心点(计算各个轴上的平均值)
4.持续迭代上面的2个步骤,直到新的聚类中心和上一次一样,也就代表质心不再移动,就结束
评价指标
SSE误差平方和(肘方法)
SSE越小,表示数据点越接近他们的质心,聚类效果越好
肘方法,找到拐点,拐点处性能和准确率是个比较平衡的点
SC轮廓系数
考虑簇内的内聚程度,也考虑簇外的分离程度
越高越好,选最高值
CH轮廓系数
考虑簇内的内聚程度,也考虑簇外的分离程度,还考虑质心的数量,质心数量越少越好
越高越好,选最高值
聚类算法API
聚类算法API
sklearn.cluster.KMeans(n_clusters=8)
各类算法的主要适用场景
线性回归
1.房价预测,2.销量预测,3.股票趋势分析等连续数值预测
逻辑回归
1.垃圾邮件识别,2.疾病诊断,3.广告点击率预测等概率性二分类问题
决策树
1.客户分类,2.贷款风险评估,3.医疗诊断等可解释性要求高的场景
KNN
1.推荐系统,2.语义识别,3.简单模式识别等小规模,低维度数据
朴素贝叶斯
1.文本分类(如垃圾邮件过滤,情感分析),2.spam检测等高维文本场景
集成学习
广泛应用于分类和回归任务,准确率高,可解释性较差
聚类算法
无监督学习,1.客户分群,2.社交网络分析,3.异常检测,数据预处理等探索性数据分析