机器学习、深度学习的理论与实战入门建议整理(一)


机器学习、深度学习的理论与实战入门建议整理

http://blog.csdn.net/zyj098765/article/details/52860183http://blog.youkuaiyun.com/zyj098765/article/details/52860183

muzhi作者:muzhi

目录

引言

.阶段一.机器学习入门

.阶段二.深度学习入门

.阶段三.实战入门

小结

引言

   拿到这份文档时想必你的脑海中一直萦绕着这么一个问题,“机器学习/深度学习要怎么学呢?(怎么入门,又怎么进一步掌握?)”。关于这个问题其实并没有一个标准答案,有的人可能适合自底向上的学,也就是先从理论和数学开始,然后是算法实现,最后再通过一些项目去解决生活中的实际问题;有的人则可能适合自顶向下的学,也就是在弄清楚什么是机器学习及为什么学机器学习后,先确定一个系统性的用机器学习来解决实际问题的程序,然后找到一个合适的工具,接着再在各种数据集上做练习以不断加强自己的实践能力与巩固对算法的理解。而这份文档是希望能从纷繁众多的学习资料里为你整理出一个头绪,但即使是这样一个出发点,从最终的结果来看,也还是繁杂了一些,也许之后还会再整理出一个精简版,不过其实一些很不错的入门指南的链接在这份文档里也已列出,仔细找找就会有好东西喔。最后想借用Quora上一份对“I’m very interested in deep learning. How can I get hired?”问题的回答来作为这份学习建议的开场白:
 “Deep learning (Neural nets)/Machine learning is an ART. ART can never be mastered unless it is practiced. So instead of just learning about them , start exploring them by implementing one. there are outnumbered tutorials on net. choose either lib based implementation such as convnet or torch7 or caffe etc. or try implementing fully from scratch( this way u understand internal structures and linkages of algo better) .
  Start off with small dataset instead of aiming on high .
  Start off by minimal architecture.
  U will learn a lot this way u gain confidence. then you can project yourself to the companies by posting link of ur github repository of machine /deep learning implementations. this will help u in the long run… “
                                                  —Good Luck

阶段一.机器学习入门


这里写图片描述

这是最基础也是最重要的一个阶段,借用台大的林轩田教授总结的几句话,在这个阶段我们要注重思考与理解这么几个问题:
1.什么是机器学习?
What is machine learning
2.什么时候机器可以学习(机器学习能为我们做什么)?
When can machines learn
3.为什么机器可以学习?
Why can machines learn
4.怎样让机器学习?
How can machines learn
5.怎样让机器学得更好?
How can machines learn better

推荐的课程

1.Coursera-Machine Learning
https://www.coursera.org/learn/machine-learning/
吴恩达教授在Coursera上开的机器学习的公开课,是一门非常好的机器学习入门课程,相信很多同学都知道,就不多说了。但值得一提的是,编程作业除了官网提供的matlab版,也有人用python实现了一遍,对于想要了解python的同学,这是个不错的实践机会:
https://github.com/icrtiou/coursera-ML

2.CS229-Machine Learning
http://open.163.com/movie/2008/1/M/C/M6SGF6VB4_M6SGHFBMC.html?recomend=2
同样是吴恩达教授开的公开课,相比Coursera上的课程难度会大一些,适合做一定程度的拔高。以下链接为课程讲义的下载:
http://cs229.stanford.edu/materials.html

3.Intro to Machine Learning
https://www.udacity.com/course/intro-to-machine-learning–ud120
Udacity有一个免费的,十周的机器学习课程,着重于理论与实际的应用。对深度学习感兴趣的人这会是一个全面的预备课程。

4.Coursera-Machine Learning Foundations
http://pan.baidu.com/s/1hsjtaWc
这就是一开始提到的林轩田教授在Coursera上开的课,不过现在网上已经下架了,因此给了个百度云盘的链接,可直接下载观看。个人觉得相比前两门课,在基础上讲得会更细致一些,而且全程中文讲课,听起来也相对轻松些,适合想把基础打扎实些的同学观看。

推荐的书籍

1.李航 -《统计学习方法》
2.周志华 -《机器学习》
这两本书就不用说了,相信大部分对这个领域感兴趣的人都已经人手一本了吧:)
个人觉得关键是如何使用这两本书了,先贴出一个周志华教授他自己的建议:
http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/MLbook2016.htm?url_type=39&object_type=webpage&pos=1&from=groupmessage&isappinstalled=1
然后我个人的看法是不要孤立地去看这两本书,最好能结合其他资源如公开课、博客等一起去看,还有最重要的一点,一定要注重边看边实践,比如当看到某个模型时,就去网上下载一些相关的数据集和代码来学习一下。这一点做起来可能不是那么容易,因为实践难度会更高一些,也往往意味着更多时间的投入,很多时候可能只是稍微试了一下,碰到些困难,就放弃了,我这一年来的学习也存在着很多这样的情况。但如果想更深入地理解模型、算法,想做出些自己的东西,实践上的练习是绝对必不可少的。

3.其他的入门及深入书籍可参看这个链接:
http://www.cnblogs.com/xmphoenix/p/3683870.html
其中的《Pattern Recognition And Machine Learning》一书据评“具有强烈的工程气息,可以配合stanford 大学 Andrew Ng 教授的 Machine Learning 视频教程一起来学,效果翻倍。”

推荐的综述论文

1.《The Discipline of Machine Learning》
http://www.cs.cmu.edu/~tom/pubs/MachineLearning.pdf
Tom Mitchell 当年为在CMU建立机器学习系给校长写的东西。

2.《A Few Useful Things to Know about Machine Learning》
http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf
Pedro Domingos教授的大道理,也许入门时很多概念还不明白,上完公开课后一定要再读一遍。

推荐的编程库

1.scikit-learn
http://scikit-learn.org/stable/
这是基于python来进行机器学习实战的一个很好的库,主要包含分类、回归、聚类、降维的常用算法及具体例程,以及模型选择、预处理这样的影响机器学习模型性能的关键处理。

2.DMLC
http://dmlc.ml/
这是一个开源的分布式机器学习项目,包含有MxNet、Minerva这样的灵活而又高效的深度学习库,以及Xgboost这样的大规模、分布式的通用Gradient Boosting库,值得一提的是,由于其性能和效率上的优势,Xgboost自问世起就一直是各类数据挖掘竞赛(如kaggle)的一大杀器。下图为Xgboost与另外两个boosting方法常用包的对比:

这里写图片描述

xgboost和另外两个常用包的性能对比

推荐的博客

1.掌握机器学习的5条必由之路
http://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2651987978&idx=3&sn=6c5e1ae866dd47105cb84417e59502ac&chksm=f12154fbc656dded6edc649fab530efc25f686f027db57f0dc76e24dfa1c6142f1f3bb5ba3e5&mpshare=1&scene=1&srcid=1018HDoQNrHdRpA5A8zyhF3Q#rd
传统的机器学习方法提倡从下往上学,先从理论和数学开始,然后是算法实现,最后让你去解决现实世界的问题。作者提倡的掌握机器学习的方法与传统方法相反,是从最有价值的成果部分开始。这一思路值得借鉴。

2.机器学习入门资源不完全汇总
http://ml.memect.com/article/machine-learning-guide.html#%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5
如题,你可以从这个链接中找到更多的入门资源

3.机器学习的最佳入门学习资源
http://blog.jobbole.com/56256/
这其实是“2”的中文翻译

4.Best Machine Learning Resources for Getting Started
http://machinelearningmastery.com/best-machine-learning-resources-for-getting-started/
这也是一份很不错的入门资源的整合

5.机器学习相关学习网址记录
http://blog.youkuaiyun.com/brightming/article/details/50420608
有很多东西,从中挑选自己感兴趣的吧

6.机器学习与人工智能学习资源导引
http://mindhacks.cn/2008/09/11/machine-learning-and-ai-resources/
除了这篇文章本身,大家也可以多关注下文章作者(刘未鹏)的其他博客,有很多方法论的东西写的很棒

7.从入门到精通是怎样一种体验
http://blog.youkuaiyun.com/kkk584520/article/details/51136439
如题,更多有趣的见解也可以直接知乎一下

8.zouxy09的专栏
http://blog.youkuaiyun.com/zouxy09/article/category/1333962
zouxy09也是个博客大牛了,写有很多有价值的文章

9.从机器学习谈起
http://www.cnblogs.com/subconscious/p/4107357.html
这篇文章“以漫谈的形式介绍跟机器学习相关的所有内容,包括学科(如数据挖掘、计算机视觉等),算法(神经网络,svm)等等”,是一篇写得不错的机器学习入门介绍

10.机器学习系列
https://www.52ml.net/20090.html
这是一系列的机器学习基础文章,最好可以在整个学习过程中一点点地跟着看

推荐的微信公众号

公众号上的文章几乎每天都会更新,而且浏览起来很便捷,主要推荐四个:
1.机器之心
2.新智元
3.机器学习研究会
4.深度学习大讲堂

下续

基于数据挖掘的音乐推荐系统设计实现 需要个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给个用户推荐其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给个用户推荐其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050Arduino交互的基础,它是种低引脚数的串行通信协议,允许多个设备共享对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值