一周多没有更新blog了。这段时间比较忙,抱歉。
前段时间比较轻松,故而去学习了一些有关爬虫的知识。也成功运行了一些爬虫作为实验。在后来,我建立了一个名为CatFight的项目,尝试去编写一个游戏程序。在接近一周的编写过程中,学习了json数据库的读写,def函数的各种特性,还学习了class程序结构,同时学习了pandas、progressbar等库,当然了,程序的主体也变成完成并可以编译成为exe进行使用。
同时,根据学习计划配置了zabbix,ansible,wirewshark等运维常用软件。
在近几天,随着学习计划的继续进行,开始学习机器学习的相关知识。上周五,和学习小组一同完成了几个机器学习常用算法的学习,例如朴素贝叶斯、logistic回归、SVM支持向量机、K-邻近,并实现了算法在python-sklear上的简单应用。这周,找到了stanford大学吴恩达教授的机器学习课程,目前在网易公开课上听完了前三节,获益匪浅,这门课让我对机器学习的理论的认识越来越深入和清晰。
还要特别感谢导师-chenhui.wu,他利用我们的历史数据,布置了一些简单有趣的机器学习问题。我们的学习小组在尝试对动静态模型建模的过程中,学习了python的建模方法,并实际将自己所学习的算法进行应用,同时,学习了如何评估模型,大致了解了一些评估参数。
最终,模型的正确率不尽如人意,但是这个过程是更加重要的,同时,也帮助我们对于机器学习的实际价值有了更清晰的认识。比如,我想到我之前毕设所做的图片识别算法,当时尝试使用准确识别并统计的思路进行统计,现在回过头来看,掌握了大量历史数据之后,其实我完全可以利用机器学习对整个识别系统进行建模,从而更轻松的对粒子数进行统计。
最后,贴一个自己对于经典机器学习算法:梯度下降算法的认识:
突然理解了梯度下降算法的意义。在得到训练数据的时候,我们初始化的预测模型都是y = 0。随着梯度下降算法在梯度上对函数的逼近(拟合),每一次下降都会越来越接近最小值,当然,随着越来越接近最小值,梯度越来越小,步长也越来越小。最终抵达最小值,也就意味着拟合函数的完成。
换成二维函数去理解的话,在一个正交的坐标系内内分布着一些点,在最初预测时候,拟合函数为y = 0。随着梯度下降算法对拟合函数的不断优化,拟合函数雨来越接近真实的线性函数,最终会得到一条最能代表散点分布的函数线。
这本质上是一个学习算法,通过不断的学习,去逼近最终的函数。