1. 机器学习的类别
机器学习分为四大块,如下图所示,分别是: classification (分类),regression (回归), clustering (聚类), dimensionality reduction (降维)。
区分方式:给定一个样本特征 , 我们希望预测其对应的属性值 , 如果 是离散的, 那么这就是一个分类问题,反之,如果 是连续的实数, 这就是一个回归问题。给定一组样本特征 , 我们没有对应的属性值 , 而是想发掘这组样本在多维空间的分布, 比如分析哪些样本靠的更近,哪些样本之间离得很远, 这就是属于聚类问题。如果我们想用维数更低的子空间来表示原来高维的特征空间, 那么这就是降维问题。
另外,PCA和线性回归的区别。线性回归是找x与y的关系,然后用于预测y;PCA是找一个投影面,最小化data到这个投影面的投影误差。PCA是保证投射的误差最小,而线性回归是保证沿方向的误差最小,如下图所示。
2. 利用PCA可以用于加速监督式学习
具体方法如下:
(1) 对于带标签的数据,去掉标签后进行PCA数据降维;
(2)使用降维后的数据进行模型训练;
(3) 对于新的数据点,先PCA降维得到降维后数据,带入模型获得预测值。
注:应仅用训练集数据进行PCA降维获取映射,然后将该映射(PCA选择的主元矩阵)应用到验证集和测试集。不要用PCA阻止过拟合,用regularization。在使用PCA之前,先用原始数据进行模型训练,如果不行,再考虑使用PCA;而不要上来直接使用PCA。
另外,可以依次改变k值的大小并观察KNN分类准确度的变化,选取合适的K值。例如,我们可以先利用PCA降维,再进行数据分类,k值的选取与分类准确度的关系如下图所示。
由上图可知,发现在K=8时,在测试集上分类准确度最高,为93.56%。k值选择过小,得到的近邻数过少,会降低分类精度,同时也会放大噪声数据的干扰;而如果k值选择过大,并且待分类样本属于训练集中包含数据数较少的类,那么在选择k个近邻的时候,实际上并不相似的数据亦被包含进来,造成噪声增加而导致分类效果的降低。如何选取恰当的K值也成为KNN的研究热点。k值通常是采用交叉检验来确定(以k=1为基准)。经验规则是k一般低于训练样本数的平方根。
3. 使用scikit-learn库中的PCA实现降维
3.1 导入需要的包
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import numpy as np
3.2 归一化数据
scaler = StandardScaler()
scaler.fit(X)
x_train = scaler.transform(X)
3.3 使用PCA模型拟合数据,并降维
model = PCA(n_components=K).fit(x_train) # 拟合数据,n_components定义要降的维度
Z = model.transform(x_train) # transform就会执行降维操作
3.4 数据恢复
Ureduce = model.components_ # 得到降维用的Ureduce
x_rec = np.dot(Z,Ureduce) # 数据恢复
3.5 利用U矩阵将测试数据降维
test_data = test_data * np.asmatrix(Ureduce).I # 利用U矩阵对测试集数据进行PCA降维
更多详情,请移步:分类、回归、聚类、降维的区别 和 paviaU光谱数据集降维与分类 和 机器学习(七):主成分分析PCA降维_Python