大数据笔记

分类:利用数据学习模型或得到规则,用于预测或者判定一个输入所属的类,或者计算属于某一类的概率;给定一个输入,所产生的输出是一个布尔值。

回归:    y = g (x | w )
    g ( ): 模型
    w:参数
关键:确定损失函数,以及最小化损失函数的过程(梯度下降、随机梯度下降)
(批量)梯度下降: 给出损失函数f(wx),目的是优化w使f(wx)的值最小, wt+1 = wt - a*{ [f(wx)对w求偏导] 带入每个样本,再除样本数}  a是学习率(步长)
    一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。

随机梯度下降: wt+1 = wt - a*{ [f(wx)对w求偏导] 带入1个样本}
    在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。

小批量梯度下降:折衷

步长:步子太大容易“左右横跳”-- 振荡,难以收敛;步子太小可能会收敛到局部最优,速度慢。



非监督学习:与监督学习不同,有时并不知道已有数据(输入)的输出是什么,即只有输入数据,目标是发现输入数据中的规律
学习的目标是发现哪些模式更经常发生(统计学中为密度估计)


KNN:k Nearest Neighbor(k近邻分类器)
对于一个未知类别的输入x,在训练数据中找出与此数据最近的k个数据,k个数据中类别出现次数最多的类别作为对输入数据类别的预测。
关键:距离的计算,可由二维平面扩展至n维特征空间。



二:k折交叉验证 k-fold cross validation  k一般取10,

1、 将全部训练集 S分成 k个不相交的子集,假设 S中的训练样例个数为 m,那么每一个子 集有 m/k 个训练样例,相应的子集称作 {s1,s2,…,sk}。
2、每次从分好的子集中里面,拿出一个作为测试集,其它k-1个作为训练集

3、根据训练训练出模型或者假设函数。
4、 把这个模型放到测试集上,得到分类率。

5、计算k次求得的分类率的平均值,作为该模型或者假设函数的真实分类率。

这个方法充分利用了所有样本。但计算比较繁琐,需要训练k次,测试k次


留一交叉验证,其折数就是样本的个数,
优点:
每次使用尽可能多的数据进行训练(只有一个1实例用于测试),从而能够得到更准确的分类器。
这个方法具有确定性,因为采样是确定的,因而最后的误差估计也是确定的。所以没有必要重复留一交叉验证。
缺点:
计算成本较高。需要m次训练和预测,对于大数据集来说,通常不可行(速度太慢了),反而可以在小数据集上得到尽可能正确的估计。
因为确定了采样方式(每次除去1个),因此不能进行分层(让数据呈现一定的比例),所以对数据集的某算法误差估计可能存在问题。这里举个例子:想象一个完全随机的数据集,含有数量相等的两个类,面对一个随机数据,所能给出的最好的预测方式是预测它属于多数类,其真实误差率为50%。但在留一法中,与测试数据相反的类才是多数类,因此每次预测都是错的,也就是误差率高达100%。


posted @ 2020-08-24 14:18  荒Picasso  阅读(122)  评论(0)    收藏  举报