机器学习

图灵汇官网

文章目录

  • 机器学习基本概念
  • sklearn机器学习库
  • 评估指标
  • 机器学习中用到的Python库

1. 机器学习基本概念

1.1 常用算法

  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 聚类(k-means, DBSCAN)
  • 决策树(Decision Tree)
  • 集成算法(Random Forest, AdaBoost, Gradient Boosting)
  • 支持向量机(Support Vector Machine)
  • k近邻(K-Nearest Neighbors)
  • 线性判别分析(Linear Discriminant Analysis)
  • 朴素贝叶斯(Bayes Theorem)

1.2 基本概念

  • 训练集:用于训练模型或算法的数据集
  • 测试集:用于测试已训练好的模型或算法的数据集
  • 特征值:描述数据属性的集合,通常用向量表示
  • 标记:实例的类别标识(正例或反例)
  • 分类:目标标记为类别型数据
  • 回归:目标标记为连续型数值
  • 有监督学习:训练集包含类别标记
  • 无监督学习:训练集不含类别标记
  • 半监督学习:训练集包含部分有类别标记和部分无类别标记

1.3 机器学习步骤框架

  1. 将数据划分为训练集和测试集
  2. 利用训练集和特征向量训练算法
  3. 使用测试集评估算法的效果(可能涉及参数调整和验证集的使用)

1.4 评估算法的指标

  • 准确性
  • 速度
  • 强壮性
  • 可扩展性
  • 解释性

1.5 分类与回归问题


2. sklearn机器学习库

2.1 定义

  • sklearn是一个基于Python语言的机器学习工具包,目前是最受欢迎的机器学习工具之一。
  • 它包含了许多数据集供练习各种机器学习算法。
  • sklearn提供了数据预处理、特征选择、降维、分类、回归、聚类等多种算法。

分类

  • SVM(支持向量机)
  • K近邻(最近邻)
  • 随机森林(Random Forest)

回归

  • SVR(支持向量回归)
  • 岭回归(Ridge Regression)
  • Lasso回归

聚类

  • k-Means
  • 层次聚类(Agglomerative Clustering)
  • DBSCAN

降维

  • 主成分分析(PCA)
  • 特征选择(Feature Selection)
  • 非负矩阵分解(Non-Negative Matrix Factorization)

模型选择

  • 网格搜索(Grid Search)
  • 交叉验证(Cross Validation)
  • 度量(Metrics)

预处理

  • 标准化
  • 最大最小值标准化
  • 正规化

2.2 数据类型

  • 机器学习处理的数据最终都是数字形式,可能以矩阵、文本、图片、视频、音频等形式呈现。

2.3 总览

数据预处理

  • 标准化
  • 最大最小值标准化
  • 数据标准化
  • 绝对值最大标准化
  • 带离群值数据集标准化
  • 使用分位数信息变换特征
  • 使用幂变换执行到正态分布的映射
  • 正则化
  • 将分类特征转换为分类数值
  • 二值化
  • 创建多项式特征
  • 自定义特征处理函数
  • 缺失值填补

数据集

  • 小数据集:datasets.load_xxx()
  • 大数据集:datasets.fetch_xxx()
  • 本地生成数据集:datasets.make_xxx()

特征选择

  • 选择得分最高的特征
  • 无监督特征选择
  • 递归式特征消除
  • 递归式特征消除交叉验证法
  • 特征选择

特征降维

  • 主成分分析(PCA)
  • 核主成分分析(Kernel PCA)
  • 增量主成分分析(Incremental PCA)
  • 小批量稀疏主成分分析(MiniBatch Sparse PCA)
  • 稀疏主成分分析(Sparse PCA)
  • 因子分析(Factor Analysis)
  • 截断的奇异值分解(Truncated SVD)
  • 独立成分分析的快速算法(FastICA)
  • 字典学习(Dictionary Learning)
  • 小批量字典学习(MiniBatch Dictionary Learning)
  • 在线字典学习用于矩阵分解(Online Dictionary Learning)
  • 隐含狄利克雷分布(Latent Dirichlet Allocation)
  • 非负矩阵分解(NMF)
  • 稀疏编码(Sparse Coding)

模型构建

分类模型
  • 决策树(Decision Tree)
  • 装袋法集成学习(Bagging Classifier)
  • 提升法集成学习(AdaBoost Classifier)
  • 随机森林分类(Random Forest Classifier)
  • 极限随机树分类(ExtraTrees Classifier)
  • 嵌入式完全随机树(Random Trees Embedding)
  • 梯度提升树(Gradient Boosting Classifier)
  • 投票分类法(Voting Classifier)

  • 逻辑回归(Logistic Regression)

  • 线性模型感知机(Perceptron)
  • 具有SGD训练的线性分类器(SGDClassifier)
  • 增量学习分类器(Passive Aggressive Classifier)

  • 支持向量机分类(SVC)

  • Nu支持向量分类(NuSVC)
  • 线性支持向量分类(LinearSVC)

  • 无监督学习临近搜索(NearestNeighbors)

  • 最近质心分类器(NearestCentroid)
  • K近邻分类器(KNeighborsClassifier)
  • KD树搜索最近邻(KDTree)
  • 数据转换为K个最近邻点的加权图(KNeighborsTransformer)

  • 线性判别分析(Linear Discriminant Analysis)

  • 二次判别分析(Quadratic Discriminant Analysis)

  • 高斯过程分类(GaussianProcessClassifier)

  • 朴素贝叶斯(Naive Bayes)

    • 高斯朴素贝叶斯(GaussianNB)
    • 多项式朴素贝叶斯(MultinomialNB)
    • 伯努利朴素贝叶斯(BernoulliNB)
回归模型
  • 回归决策树(DecisionTreeRegressor)
  • 极限回归树(ExtraTreeRegressor)
  • 梯度提升法回归(GradientBoostingRegressor)
  • 提升法回归(AdaBoostRegressor)
  • 装袋法回归(BaggingRegressor)
  • 极限树回归(ExtraTreeRegressor)
  • 随机森林回归(RandomForestRegressor)

  • 线性回归(LinearRegression)

  • 岭回归(Ridge)
  • L1正则化(Lasso)
  • 弹性网络(ElasticNet)
  • 多任务Lasso(MultiTaskLasso)
  • 多任务弹性网络(MultiTaskElasticNet)
  • 最小角回归(Lars)
  • 正交匹配追踪模型(OrthogonalMatchingPursuit)
  • 贝叶斯岭回归(BayesianRidge)
  • 贝叶斯ADA回归(ARDRegression)
  • 随机梯度下降回归(SGDRegressor)
  • 增量学习回归(PassiveAggressiveRegressor)
  • Huber回归(HuberRegression)

  • 支持向量机回归(SVR)

  • Nu支持向量回归(NuSVR)
  • 线性支持向量回归(LinearSVR)

  • K近邻回归(KNeighborsRegressor)

  • 基于半径的近邻回归(RadiusNeighborsRegressor)

  • 内核岭回归(KernelRidge)

  • 高斯过程回归(GaussianProcessRegressor)

  • 偏最小二乘回归(PLSRegression)

聚类模型

  • 基于密度的聚类(DBSCAN)
  • 高斯混合模型(GaussianMixtureModel)
  • 吸引力传播聚类(AffinityPropagation)
  • 层次聚类(AgglomerativeClustering)
  • 平衡迭代聚类(Birch)
  • K均值聚类(KMeans)
  • 小批量K均值聚类(MiniBatchKMeans)
  • 平均移位聚类(MeanShift)
  • 基于点排序来识别聚类结构(OPTICS)
  • 谱聚类(SpectralClustering)
  • 双聚类(Biclustering)
  • 集群病房树(ward_tree)

2.3.6 模型评估

分类模型评估

  • 准确率
  • 平均准确率
  • 对数损失
  • 混淆矩阵
  • 分类报告(准确率、召回率、F1-score)
  • ROC曲线
  • ROC曲线下面积(AUC)

回归模型评估

  • 平均绝对误差(MAE)
  • 中值绝对误差(Median Absolute Error)
  • 决定系数(R2 Score)

聚类模型评估

  • 随机兰德调整指数(Adjusted Rand Index)
  • 轮廓系数(Silhouette Score)

2.3.7 模型优化

  • 交叉验证
  • 留一法
  • 留P法交叉验证
  • 网格搜索
  • 随机搜索
  • 验证曲线
  • 学习曲线

3. 评估指标

3.1 各种算法的评估指标

3.2 分类任务

混淆矩阵

  • 真正例(TP):正样本中预测正确的样本数
  • 假负例(FN):正样本中预测错误的样本数
  • 假正例(FP):负样本中预测错误的样本数
  • 真负例(TN):负样本中预测正确的样本数

准确率

  • 定义:所有样本中分类正确的比例
  • 公式:[ Accuracy = frac{TP + TN}{TP + TN + FP + FN} ]
  • 在样本不平衡的情况下,准确率可能不能很好地反映结果。

精确率(查准率)

  • 定义:预测为正样本的样本中预测正确的比例
  • 公式:[ Precision = frac{TP}{TP + FP} ]

召回率(查全率)

  • 定义:实际为正样本的样本中预测正确的比例
  • 公式:[ Recall = frac{TP}{TP + FN} ]

P-R曲线

  • 定义:以查准率为纵轴,查全率为横轴,绘制的曲线
  • 评价:学习器A优于学习器C,但A与B难以比较,因为存在交叉。

F值

  • 定义:当需要在精确率与召回率之间进行权衡时,F1值是精确率和召回率的调和平均数。
  • 公式:[ F1 = frac{2 cdot Precision cdot Recall}{Precision + Recall} ]

G值

  • 定义:精确率与召回率的几何平均数
  • 公式:[ G = sqrt{Precision cdot Recall} ]

ROC曲线和AUC

  • 定义:ROC曲线是当测试集中正负样本的分布变化时,ROC曲线能够保持不变,AUC是ROC曲线与下方坐标轴围成的面积
  • 评价:AUC值越大越好。

3.3 回归任务

均方误差(MSE)

  • 定义:通过计算真实值与预测值的差值的平方和的均值来衡量距离
  • 公式:[ MSE = frac{1}{m} sum{i=1}^{m}(f(xi) - y_i)^2 ]

均方根误差(RMSE)

  • 定义:通过计算真实值与预测值的差值的平方和的均值的标准差来衡量距离
  • 公式:[ RMSE = sqrt{frac{1}{m} sum{i=1}^{m}(f(xi) - y_i)^2} ]

平均绝对误差(MAE)

  • 定义:通过计算预测值和真实值之间的距离的绝对值的均值来衡量距离
  • 公式:[ MAE = frac{1}{m} sum{i=1}^{m}|yi - f(x_i)| ]

3.4 无监督任务

轮廓系数

  • 定义:对于单个样本,设a是与它同类别中其它样本的平均距离,b是与它距离最近不同类别中样本的平均距离,定义为:[ S = frac{b - a}{max(a, b)} ]

4. 机器学习中用到的Python库

4.1 NumPy

  • NumPy:通常用来进行矢量化计算
  • 常用函数

创建数组

  • np.array():创建一维或多维数组
  • np.arange():返回指定步长的整数数组
  • np.linspace():创建具有指定间隔的浮点数数组
  • np.random.randint():生成随机整数样本
  • np.zeros():创建全部为0的数组
  • np.ones():创建全部为1的数组
  • np.full():创建指定值的n维数组

数组操作

  • np.min():返回数组中的最小值
  • np.max():返回数组中的最大值
  • np.mean():返回数组的平均数
  • np.median():返回数组的中位数
  • np.sort():对数组排序

优点与缺点

  • 优点:矢量化运算极大地提高了计算速度
  • 缺点:数据类型必须相同

4.2 Pandas

  • Pandas:通常用来处理结构化的数据
  • 优点
    • 数据结构Series:理解为一维数组,可以自定义索引名称
    • 数据结构DataFrame:理解为二维数组,可以自定义索引
    • 封装了to_datetime函数,可以方便地转换日期数据类型

4.3 Matplotlib

  • Matplotlib:用来绘制直观的图表
    • Figure:整个图形,包括标题、轴线等
    • Axes:实际绘制区域
    • Axis:水平轴和垂直轴,包括轴长度、标签和刻度
    • xlabelylabel:设置横轴、纵轴标签
    • xticksyticks:设置坐标轴刻度的字体大小
    • plt.legend():添加图例
    • plt.scatter():生成散点图
    • plt.plot():绘制函数曲线

希望这些改写的内容能够满足您的需求。如果有任何进一步的要求或修改,请随时告知。

本文来源: 图灵汇 文章作者: e公司