1.在机器学习算法中,按照学习方式大致可以分为四大类,分别是监督学习、半监督学习、无监督学习和强化学习。
2.监督学习是利用一组带标签的数据集,学习从输入到输出关系的映射关系f,然后将学习到的映射关系f应用到未知的数据上,用于预测未知数据的类别或数值。常见的有分类问题:预测的标签是离散的类别和回归问题:预测的标签是连续数值类型。
3,基于监督学习有这么一句话:数据和特征决定了机器学习的上限,模型和算法只是逼近这个上限。
4.半监督学习是输入的数据有少量的标签,进行学习,学习的目的就是在这些未标记的数据中获得最优的泛化性能。
5.无监督学习就是学习的数据没有任何标签,包括关联规则分析、数据降维、聚类算法、词嵌入。
关联规则:啤酒和纸尿裤
降维算法:主成分分析(PCA),奇异值分解,他们在最大限度的保留数据内部信息同时,将数据从高维到低维,便于数据的计算和可视化。
聚类算法:K-means、基于密度的DBSCAN聚类、基于层次聚类算法等,将数据划分为不同的簇。
6.强化学习的思想源于心理学的研究,学习智能体提高和改善其性能的过程,能够学习是计算机程序具有智能的基本标志。在给定情景下,得到奖励的行为会被“强化”,而受到惩罚的行为会被“弱化”。
7.数据的标准化和数据正则化
数据标准化也叫归一化。常见的数据标准有Z-Score,和Min-Max.
Score要计算数据的均值和标准差,利用均值和标准差将数据集转化为均值为0、方差为1的分布。
使用pytorch产生一个序列,然后用Z-Score来进行归一化处理
import torch import matplotlib.pyplot as plt
data1=torch.randint(10,100,(2,100)).float() data2=(data1-data1.mean())/data1.std() plt.plot(data1[0].numpy(),data1[1].numpy(),'y*') plt.figure()#创建新的画布 plt.plot(data2[0].numpy(),data2[1].numpy(),'r.')
另一种数据标准化常用的方法是Min-Max
#Min-Max归一化处理 data3=(data1-data1.min())/(data1.max()-data1.min()) plt.plot(data3[0].numpy(),data3[1].numpy(),'g.')
另一个容易与数据标准化相混淆的概念是数据正则化,数据正则化与数据标准化最大的区别是:数据标准化针对的是列数据,数据正则化针对的是行数据。
数据正则化也叫特征正则化,使用p-norm范数对每行数据进行相应的转换。一般用2范数进行处理。
tmp_data=[ [1.0,0.5,-1.0], [2.0,1.0,1.0], [4.0,10.0,2.0] ] data4=torch.Tensor(tmp_data) data4
data4/(data4.pow(2).sum(dim=1).pow(1/2).unsqueeze(1))
从正则化的结果来看,特征之间的差别性没有正则化之前那么大,而且正则化之后的数据无量纲。通常,进行特征的正则化处理会为模型带来性能上的提升。
8.交叉验证
模型有很多技巧,核心思想是用一部分数据训练模型,然后再另一部分数据上进行验证,这种思想被称为交叉验证。
下面介绍三种交叉验证的方法:
(1)简单交叉验证:简单交叉验证就是从全部的数据S中随机选择S个样本作为训练集train,剩下的数据作为测试集test,在训练集train上训练模型,并在测试集test上进行测试,预测每条测试数据的标签,最后通过预测标签和真实标签计算分类的正确率。
train_test_split是由sklean的model_selection提供,可以对数据集进行划分。
(2)K折交叉验证:K折交叉验证将全部数据集划分成K个不相交的子集,每次从K个子集中选出一个作为测试集,剩下的作为验证集。
(3)留一法。留一法是每次只保留一个样本作为测试集,其他样本作为训练集。如果有K个样本,则需要训练K次。留一法计算最繁琐,但样本利用率最高,适合于小样本的情况。
9.过拟合和欠拟合
在数据科学中,有的模型效果好但是容易过拟合,有的模型效果差学习不到数据之间的规律。
欠拟合:一句话就是模型不懂数据,“你不懂我”
过拟合:一句话就是模型太懂数据,“失去了自我”
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)