相关答案:https ://stats.stackexchange.com/a/66420/25433
如果我们选择使用这些工具包,除了方便之外,有时我们可能会失去对实际情况的控制。
这完全不是针对开源工具包的。事实上,在开源程序中,在必要的地方和时间进行更改更容易。此外,如果您添加基本功能,您可以成为包的贡献者以获得双赢局面。
如果学习系统完全由我们自己实现,就不会有那么多混乱,因为我们确切地知道会发生什么。
大概。另一方面,从头开始实施需要大量的知识、时间和精力,特别是如果您想做适当的单元测试以及不做的事情(大多数流行的开源软件解决方案确实提供)。另请注意,机器学习从业者通常不是软件工程师,这使得(重新)实现远非微不足道。
那么对于开源机器学习工具包的正确态度是什么? 只是在第一阶段使用它们,然后手动实现,不需要学习工具包的帮助,以便对算法有更多的控制权,或者我们可以仅仅依靠这种学习工具包?
在我看来,最重要的是了解存在的内容(例如here和here)。通常情况下,您可以在开源中找到您需要的东西(也许经过一些摆弄之后)。不要重新发明热水。
永远不要假设开源软件(或与此相关的任何软件)是没有错误的。如果您得到奇怪的结果,请质疑您使用的工具。给定软件包的用户群越大,您就越能远离软件中的严重错误。用户不可避免地是任何软件系统的最佳测试平台。您可以假设在 weka、shogun、opencv 等流行软件包中的重大问题是相当安全的...
这是另一个可能与机器学习特别相关的相关问题。许多学术开源软件作为概念验证发布。这样的实现——通常在用户很少的算法的前沿——应该小心对待。用户群越小,软件受到的审查就越少。