python在机器学习中的实践

1. 监督学习

监督学习流程

使用方法:首先准备训练数据,并从中抽取特征形成特征向量。把这些特征向量连同对应的标记送入学习算法中得到一个预测模型。而后对测试数据进行同样的特征抽取形成特征向量,利用已生产的预测模型对其进行预测并得到结果。

分类学习

1.1
  • 分类学习是监督学习的基础。其中二分类问题最常见,其他还有多分类问题与多标签分类问题(判断一个样本是否同属多个类型)
  • 线性分类器:假设样本的特征与分类结果存在线性关系的模型。通过各维度特征以及对应权重的乘积来帮助得到分类结果。
  • logistic函数:帮助将函数值映射到(0,1)范围内。公式展示: g ( z ) = 1 1 + e z g(z) = \frac {1}{1+e^{-z}}
  • 为了学习到模型对应参数,使用随机梯度上升算法
  • 通常25%数据做为测试集,75%做为训练集
  • A c c u r a c y = ( t r u e p o s i t i v e ) + ( t r u e n e g a t i v e ) ( t r u e p o s i t i v e ) + ( t r u e n e g a t i v e ) + ( f a l s e p o s i t i v e ) + ( f a l s e n e g a t i v e ) Accuracy = \frac {(true positive)+(true negative)}{(true positive)+(true negative)+(false positive)+(false negative)}
  • P r e c i s i o n = ( t r u e p o s i t i v e ) t r u e p o s i t i v e + f a l s e n e g a t i v e Precision = \frac {(true positive)}{true positive+false negative}
  • R e c a l l = ( t r u e p o s i t i v e ) ( t r u e p o s i t i v e + f a l s e n e g a t i v e ) Recall = \frac {(truepositive)}{(truepositive+falsenegative)}
  • F 1 m e a s u r e = 2 1 P r e c i s i o n + 1 R e c a l l F1 measure = \frac {2}{\frac {1}{Precision}+\frac {1}{Recall}}
  • F1 measure旨在将精确率与召回率差距过大的模型筛除。而每个指标的重要性视问题描述各有不同
  • logisticregression模型的计算时间较长但结果更准确。SGDClassifier模型计算时间较短但结果不够准确(如果数据规模在10万以上推荐使用)
1.2
  • 对于支持向量机分类来说,所划分的分类线需要有一定的容忍度来防止偏离。而决定其分类线的主要是两个不同类别间隔最近的点(称为支持向量),所以划分类别相比于Logistic模型的考虑全局的思路来说更为准确
  • 对于经典模型来说,通过将二维的像素矩阵会进行首尾拼接划为一维。
  • 支持向量机模型作用:在海量高维数据筛选出最有效的部分数据,降低数据存储难度并提高了精度,但是会有较大CPU运算代价
1.3
  • 朴素贝叶斯并非以线性假设为基础,而是以贝叶斯原理为基础
  • 朴素贝叶斯在文本分类中应用较多
  • 朴素贝叶斯模型作用:可以对数据的规模进行大范围缩减,提升计算效率,减低内存消耗。但是对于关联性较强的数据难以考量特征之间的关联
1.4
  • 通俗来说,K近邻算法,就是对特征空间未标记的一类测试点根据与已分类后的测试点中距离最近的K点来划分未标记点的类型
  • 训练与测试集的划分需要随机。若出现错误划分,会出现偏置,可信度低的情况
  • K近邻算法:属于无参数模型,但因为每分析一个数据就需要对之前已分析的多个数据进行遍历,排序等,所以对内存消耗大,计算代价高。
1.5
  • 决策树模型适用于非线性关系。决策树节点代表数据特征,其节点下带有对应特征值的分类。而叶子结点下则是模型的决策结果。(针对多种特征组合的多层决策,需要考虑特征节点的选择。常用方法:信息熵,基尼不纯性)
  • 决策树作用:直观,逻辑清晰。乃至不需要对数据进行标准化。而且因为是有参数模型,所以在训练数据上花费时间较多
1.6
  • 集成分类器:综合考量多个模型的预测结果后得出分类。有两种:
  1. 随机森林分类器:依据不同排序算法,通过多个决策树模型进行结果比对得出最优解。
  2. 梯度上升决策树:每增加一个决策树,决策树的结果便会更加精准。且后一个决策树是建立在前一个决策树的结果上的。
  • 以表现性能来说,梯度上升决策树优于随机森林决策树优于单一决策树。虽然集成分类器模型需要大量的训练时间,但是得到的结果往往是综合性最强的
回归预测
2.1
  • 为获取模型的参数w,b则需要随机梯度下降估计算法
  • 标准化处理的前提是预测结果之间差异很大。
  • 使用平均绝对误差,均方误差和R平方误差进行模型的评估。
  • 由结果可知:LinearRegression模型优于SGDRegressor,但是当数据规模大于10W时还是推荐使用SGDRegressor
2.2
  • 类似于支持向量机分类,也是从训练数据中进行筛选找出更为有效的支持向量,而回归中则是预测数值。
  • 其中有三种核函数配置:线性核函数配置,多项式核函数配置,径向基核函数配置。 其中对于波士顿房价数据来说,径向基核函数配置后的支持向量机对特征进行非线性映射后,具有最佳的回归性能。
2.3
  • K近邻回归与K近邻分类都是无参数模型。对于波士顿房价来说,distance-weighted KNeighborsRegression更为高效
2.4
  • 回归树的思路类似于决策树,但是回归树节点的数据类型不是离散型而是连续型。回归树的叶节点返回的是训练数据的均值,不是具体的,连续的值。
  • 树模型总结:
    • 优点:1.可以解决非线性特征问题 2.不需要对特征进行标准化和统一量化处理(则无论数值型还是类别型特征都可以直接用) 3.树模型可直观输出决策结果,很直观
    • 缺点: 1.由于非线性拟合的构建,对新数据的精度求解较差 2.树模型从上至下的构建方式使得小改动会造成结果的较大转变 3.难以找到最优解,还是需要借助集成模型寻找最优解。
2.5
  • 极端随机森林相比于普通的随机森林不同:每当构建一棵树的分裂节点不会随意选取特征,而是先随机选取一些,然后依据信息熵和基尼不纯性来选择最佳节点特征。

2. 无监督学习

数据聚类

1.1
  • K均值算法:先设定聚类个数,然后通过不断跌打,更新聚类中心,直到各类数据点与其聚类中心距离的平方和趋于稳定。
  • 评估模型:
    • 如果数据本身带有类别信息:使用ARI(adjusted rand index)指标,考虑到了类簇无法与分类标记各个对应
    • 如果数据本身没有类型信息:使用轮廓系数(silhouette coefficient)兼顾了凝聚度和分离度。取值范围为[-1,1],系数越大聚类效果越好。可以通过关系图直观看出类簇数量为几时聚类效果最好
  • KMeans:迭代式算法,直观实用。 缺点:1.容易收敛到局部最优解 2.需要预先设定簇的数量

特征降维

2.1
  • 特征降维目的:1.面对过高维数据,且存在非擅长领域知识。2.对低维数据有效重构,同时使肉眼无法观察的3维数据得以展现
  • 技术:主成分分析

猜你喜欢

转载自blog.csdn.net/m0_46215846/article/details/107684935