Python机器学习
一、机器学习的三种不同方法
监督学习:用有类标(label)的训练数据构建模型。
所谓类标即已知输出项,也就是我们知道该训练样本的输出是什么,而我们所做的是用已知的样本去训练机器,最终让机器获得预测未知数据的能力。
分类:将离散化的样本按其特征划分到不同类别中,先训练找到分界线后机器在输入新样本时即可实现新样本的分类
回归:针对连续性输入变量进行预测,先训练找到输入和输出的关系,然后机器可实现对新输入变量所对应的输出变量进行预测。
强化学习:构建一个系统,在与环境交互的过程中提高系统的性能。
将系统应用到环境中,通过与环境的交互通过自定义的反馈函数产生反馈来提高系统性能,循环训练方法。
无监督学习:无类标数据或总体分布不明朗的数据。在没有已知输出变量和反馈函数指导的情况下提取有效信息来探索数据的整体结构。
聚类:通过数据之间的相似性来划分组
数据降维:最大程度保留相关信息的情况下将数据压缩到一个维度较小的空间。可应用于数据可视化来对数据进行可视化显示。
二、基本术语
样本:也就是输入样例,实际观察到的数据。矩阵中的行数代表样本数量
特征:样本的属性、度量等。矩阵中的列数代表特征数量
类标:目标数据,也就是输出。
三、机器学习的分类算法
感知器算法:通过输出大于某一阙值来进行分类,这一过程类似于单个神经元被激活。而输出通过特定的输入值x与相应的权值向量w的向量点积来体现。
训练方法:1.设置随机权值
2.迭代训练样本
1)计算输出值
2)更新权重
该训练方法难点就在于如何更新权值,通过感知器学习规则计算获得,主要思想就是预测正确不更新,预测错误向趋于正确的方向更新。
总结:将样本不同特征输入进行加权计算后得到净输入,通过激励函数进行分类,得到+1或-1的输出后以此作样本的预测类标,并计算预测的误差,进行权值的更新,最终实现误差最低的分类。这也是一种迭代算法。
自适应线性神经元:此法是感知器算法的改进,其权重更新是通过一个连续的线性激励函数来完成的,且在更新权重的同时采用单位阶跃函数进行预测。
批量梯度下降最小化代价函数:定义一个代价函数为输出和实际类标之间的误差平方和,因此找到代价函数的最小值即可实现输出与实际类标最接近的目标。
采用梯度下降,用迭代的方法不断下降梯度,通过梯度下降进行权重更新,最终得到一个局部或全局最小值。
随机梯度下降:处理巨大数据集是采用随机梯度下降:每次使用一个训练样本渐进地更新权重,虽然权重更新更频繁,但每次更新只需使用一个数据。但每次迭代是要打乱训练集。
四、用scikit-learn库实现机器学习分类算法
逻辑斯谛回归:该算法是分类算法,与Adaline区别有更换代价函数,采用最大似然估计,目标是求能够使对数似然函数最大化的权重值,但其本质是一样的采用梯度下降。
过拟合:模型训练的太好,以至于分析未知数据时性能不佳。通过正则化系数来解决此问题,权重越分散则拟合度越高
支持向量机:看作对感知器的扩展,优化目标是最大化分类间隔。此处间隔是指两个分离的超平面(决策边界)间的距离,而最靠近超平面的训练样本就是支持向量。分类间隔越小证明拟合度越高,可解决过拟合问题。
决策树:特点:模型可解释
熵:衡量不纯度的参数,若某一结点的所有样本都属于同一类别则熵为0,当样本以相同比例分属于不同的类时,熵的值最大。
随机森林: 多颗决策树的集成
k-近邻算法:仅仅对训练数据集有记忆功能,而不会从训练集中通过学习得到一个判别函数。
五、数据预处理
缺失数据的处理:对于样本缺少某个或多个值的情况进行处理。
1.将存在缺失值的特征或样本删除
2.缺失数据填充,计算出各特征列的均值进行替换
类别数据:标称特征:不具备排序特性,采用编码的方式。独热编码:创建一个新的虚拟特征,虚拟特征的每一列各代表标称数据的一个值。
有序特征 :类别的值是有序的,可采用映射的方法,将字符串转换为整数。
特征缩放:将不同特征缩放到相同的区间有两个常用的方法:归一化和标准化。其中归一化就是将特征的值缩放到区间[ 0 , 1 ];标准化使特征列的值呈现标准正态分布。
L1正则化:降低泛化误差,解决过拟合问题。可将正则化看作是在代价函数中增加一个罚项,对小的权重做出激励,对大的权重做出惩罚,降低模型对训练数据的依赖程度。
序列特征选择算法:以最小的代价来删除某些不相关特征
通过随机森林判断特征重要性:通过森林中所有决策树得到的平均不纯度衰减来度量特征的重要性。
六、数据压缩
无监督数据压缩——主成分分析(PAC):数据降维,保留贡献方差较大的特征
具体步骤:
1.对原始d维数据划分为训练集和测试集,并使用单位方差将其标准化
2.构造样本的协方差矩阵,使用NumPy来计算
3.计算协方差矩阵的特征值和相应的特征向量
4.选择前k个最大特征值对应的特征向量,构成新k维映射矩阵W
5.通过映射矩阵W将d维的输入矩阵X转换到新的k维特征子空间
监督数据压缩——线性判别分析(LDA):
具体步骤:
1.对d维数据集进行标准化处理
2.对于每一类别计算d维的均值向量
3.构造类间散布矩阵和类内散布矩阵
4.计算矩阵特征值及对应的特征向量
5.选择前k个最大特征值对应的特征向量,构成新k维映射矩阵W
6.通过映射矩阵W将d维的输入矩阵X转换到新的k维特征子空间
这两种方法不同之处就在于构建矩阵不同
核主成分分析:进行非线性映射,太复杂先不看了~~~
总结:以上介绍了三种数据降维方法,分别应用在不同场合