首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

hbase数据同步工具—HashTable/SyncTable

HashTable/SyncTable是一个同步hbase表数据的工具,其通过过程分为两步,这两步都是mapreduce job。和CopyTable工具一样,他也可以用来在同一个或者不同的集群之间同步部分或者全部的表数据。只不过,相比CopyTable来说,本工具在同步不同集群之间的表数据时表现更好。它不是复制某个区间范围的表数据,而是首先在源集群执行HashTable基于源数据表生成哈希序列,然后在目标集群执行SyncTable基于源数据表、源数据表生成的哈希序列、目标表、目标表生成的哈希序列,对两个表生成的哈希序列进行对比,从而找出缺失的数据。那么在同步的时候就只需要同步缺失的数据就可以了,这可以极大减少带宽和数据传输。

01

20. 偏差和方差

假设你的训练集,开发集和测试集都来自同一分布。那么你会觉得获取更多的训练数据就可以提高性能,对吗? 尽管更多的数据是无害的,但它并不是总会像我们所期望的那样有用。获取更多的数据需要耗费很多时间。所以,你需要什么什么时候该增加数据量,什么时候不该增加。 机器学习中有两个主要的错误来源:偏差和方差。理解它们有助于你觉得是否添加数据,以及其它提高性能的策略,这将会很好的利用你的时间。 假设你正在构建一个错误率为5%的猫咪识别器。目前,你的训练集错误率为15%,并且你的开发集错误率为16%,在这种情况下,添加数据可能不会有太大的帮助。你应该关注其它的办法。实际上,在你的训练集上添加更多的样本只会让你的算法难以在训练集上做的更好。(后面的章节我会解释原因) 如果你在训练集上的错误率为15%(85%的准确率),但是你的目标是5%的错误率(95%的准确率),那么第一个要解决的问题是提高算法在训练集上的性能。你的开发/测试集上的性能通常比训练集差。所以,如果算法在见过的样本上得到了85%的准确率,那么是不可能在没见过的样本上得到95%的准确率的。 假设如上述你的算法在开发集上有16%的错误率(84%的准确率)。我们将这16%的错误分为两部分: • 首先,算法在训练集上的错误率。在本例中,它是15%。我们非正式的认为这是算法的偏差(bias)。 • 其次,算法在开发(或测试)集上比训练集差多少。在本例中,开发集比训练集差1%。我们非正式的认为这是算法的方差(Variance)[1]。 学习算法的一些改变能解决错误的第一个组成部分——偏差,并且提高算法在训练集上的性能;一些改变能解决第二个组成部分——方差,并帮助算法从训练集到开发/测试集上得到更好的泛化[2] 。 为了选择最有希望的改变,了解这两组错误中哪个更值得去解决是非常有用的。 培养你对于偏差和方差的感觉可以帮你在优化算法上有非常大的帮助。

09
领券