ML启程笔记:<零>开启我的机器学习生涯
2018-01-18 20:02
232 查看
机器学习是人工智能的未来
第一次知道机器学习是在一次学科竞赛中,我所在的团队做的项目其中有个最核心需求是根据Android设备的加速度、陀螺仪、地磁等传感器的数据判断携带设备的人是否发生了跌倒。当时对于只写过一般的业务逻辑代码的我来说,实在是一脸懵逼。好在后来指导老师明确告知需要使用机器学习技术。
这是一段痛苦不堪的时期,揪着“跌倒检测”这一关键词换来有用的信息是一大堆的Paper,面对论文中大段大段的数学公式推导,我曾一度以为这是应用数学的领域(事实上也确实可以这么划分),跟编程有几毛钱关系- -。但是项目还是要做,问题还是解决了,当然,用的是非常简单的一个算法:K-近邻算法。
当确定了要使用的算法之后,另一个问题又困扰了我好久,训练数据到哪找?百度无果后我跑去找指导老师,很简单,问她要数据。当然,她肯定也是没有的,最后还是自己写了一个andriod程序用及其不严谨的方式收集了“大量”的数据。为什么打引号呢?因为有6个类别,只有4志愿者(包括我自己 - -),每个人每个类别采集了15个样本,一共360个样本,其中还要分出20%作为测试集。后来真正开始入门学习的时候我才知道一个比较小的入门数据集:MNIST手写数字数据集都有6W个样本。
虽然现在看起来很好笑,但回到当时还是感觉很牛逼的,因为这是我以往所写的那种代码办不到的,这是我对机器学习技术的第一印象:强大!
我是一个对技术有着无限追求的人,喜欢探索的人,因此我决定正式踏入这个领域,开启我的机器学习生涯,这是这一系列博客的开篇,在以后的时间里我会陆续的将自己的学习感想,理解和成果整理成笔记。目的是:
其一,方便日后随时可以查阅、温习;
其二,以完成这一系列笔记为目标与学习过程齐头并进,起到以此督彼的作用;
其三,在自学的过程中对有些知识难免理解偏颇,希望发现的人能够及时指正,避免走了不必要弯路;
以下是我暂定的这一系列笔记的大纲,为笔记整理的大致路线:
直接安装
通过miniconda安装和基本命令
常用科学计算库
Numpy安装和常用函函数的使用
Matplotlib安装和常用函数的使用
Sklearn 安装和基本使用
Opencv-python 安装和基本图像处理
Etc.
神经网络框架安装
Tensorflow 安装和常用API参考
Caffe 安装和入门Demo
Etc.
开发工具
Pycharm 安装和配置
Jupyter notebook 安装和使用
Etc.
机器学习能做什么(生活中的机器学习)
机器学习怎么做(一般流程)
机器学习与数据挖掘的区别
机器学习相关的术语
机器学习算法的分类及选择算法的一般标准
…
knn算法
K-nn的基本思想
决策树算法
决策树的基本思想
决策树的构造算法
ID3算法
C4.5算法
CART算法
决策树的绘制
朴素贝叶斯算法
贝叶斯准则
基于贝努利模型实现
不考虑词汇出现的次数,所有词汇具有同等权重
基于多项式模型实现
考虑词汇的出现次数,出现次数多的词汇具有较大的权重
Logistic回归分类
…
最优化算法
梯度下降
随机梯度下降
SVM算法
基于SMO(序列最小化)的SVM实现
基于核函数的SVM扩展
LIBSVM库
3.1.2 回归
…
K-mean算法
…
密度估计算法
…
单隐层前馈网络
多隐层前馈网络
深度神经网络(DNN)
卷积神经网络(CNN)
LeNet-5
AlxNet
VGGNet-11 - VGGNet-19
Etc.
循环神经网络(RNN)
长短时记忆网络(LSTM)
集成学习
基于元学习器
DQN 及其变体
R-CNN及其迭代版本
Etc.
Spark
Etc.
第一次知道机器学习是在一次学科竞赛中,我所在的团队做的项目其中有个最核心需求是根据Android设备的加速度、陀螺仪、地磁等传感器的数据判断携带设备的人是否发生了跌倒。当时对于只写过一般的业务逻辑代码的我来说,实在是一脸懵逼。好在后来指导老师明确告知需要使用机器学习技术。
这是一段痛苦不堪的时期,揪着“跌倒检测”这一关键词换来有用的信息是一大堆的Paper,面对论文中大段大段的数学公式推导,我曾一度以为这是应用数学的领域(事实上也确实可以这么划分),跟编程有几毛钱关系- -。但是项目还是要做,问题还是解决了,当然,用的是非常简单的一个算法:K-近邻算法。
当确定了要使用的算法之后,另一个问题又困扰了我好久,训练数据到哪找?百度无果后我跑去找指导老师,很简单,问她要数据。当然,她肯定也是没有的,最后还是自己写了一个andriod程序用及其不严谨的方式收集了“大量”的数据。为什么打引号呢?因为有6个类别,只有4志愿者(包括我自己 - -),每个人每个类别采集了15个样本,一共360个样本,其中还要分出20%作为测试集。后来真正开始入门学习的时候我才知道一个比较小的入门数据集:MNIST手写数字数据集都有6W个样本。
虽然现在看起来很好笑,但回到当时还是感觉很牛逼的,因为这是我以往所写的那种代码办不到的,这是我对机器学习技术的第一印象:强大!
我是一个对技术有着无限追求的人,喜欢探索的人,因此我决定正式踏入这个领域,开启我的机器学习生涯,这是这一系列博客的开篇,在以后的时间里我会陆续的将自己的学习感想,理解和成果整理成笔记。目的是:
其一,方便日后随时可以查阅、温习;
其二,以完成这一系列笔记为目标与学习过程齐头并进,起到以此督彼的作用;
其三,在自学的过程中对有些知识难免理解偏颇,希望发现的人能够及时指正,避免走了不必要弯路;
以下是我暂定的这一系列笔记的大纲,为笔记整理的大致路线:
ML启程笔记大纲
一、开发环境搭建
Python环境搭建直接安装
通过miniconda安装和基本命令
常用科学计算库
Numpy安装和常用函函数的使用
Matplotlib安装和常用函数的使用
Sklearn 安装和基本使用
Opencv-python 安装和基本图像处理
Etc.
神经网络框架安装
Tensorflow 安装和常用API参考
Caffe 安装和入门Demo
Etc.
开发工具
Pycharm 安装和配置
Jupyter notebook 安装和使用
Etc.
二、机器学习基础
什么是机器学习机器学习能做什么(生活中的机器学习)
机器学习怎么做(一般流程)
机器学习与数据挖掘的区别
机器学习相关的术语
机器学习算法的分类及选择算法的一般标准
…
三、机器学习基本算法
3.1 有监督学习算法
3.1.1 分类knn算法
K-nn的基本思想
决策树算法
决策树的基本思想
决策树的构造算法
ID3算法
C4.5算法
CART算法
决策树的绘制
朴素贝叶斯算法
贝叶斯准则
基于贝努利模型实现
不考虑词汇出现的次数,所有词汇具有同等权重
基于多项式模型实现
考虑词汇的出现次数,出现次数多的词汇具有较大的权重
Logistic回归分类
…
最优化算法
梯度下降
随机梯度下降
SVM算法
基于SMO(序列最小化)的SVM实现
基于核函数的SVM扩展
LIBSVM库
3.1.2 回归
…
3.2 无监督学习算法
3.2.1 聚类算法K-mean算法
…
密度估计算法
…
四、神经网络算法
感知机单隐层前馈网络
多隐层前馈网络
深度神经网络(DNN)
卷积神经网络(CNN)
LeNet-5
AlxNet
VGGNet-11 - VGGNet-19
Etc.
循环神经网络(RNN)
长短时记忆网络(LSTM)
五、增强学习/迁移学习
Q-Learning集成学习
基于元学习器
DQN 及其变体
R-CNN及其迭代版本
Etc.
六、大数据与机器学习
HadoopSpark
Etc.
相关文章推荐
- RT-Thread 学习笔记(十三)--- 开启基于RTGUI的LCD显示功能(3)<触屏屏驱动移植和测试>
- <机器学习笔记-01><scikit-learn 01>机器学习基础
- <机器学习笔记-02> <scikit-learn -02>线性回归
- <转>斯坦福机器学习公开课精品笔记7
- <机器学习笔记-07 ><scikit-learn 07>PCA主成分分析
- RT-Thread 学习笔记(十一)--- 开启基于RTGUI的LCD显示功能(1)<LCD驱动接口移植>
- 4000 <机器学习笔记-05 ><scikit-learn 05>决策树 & 随机森林
- <机器学习>自用笔记
- <机器学习笔记-06 ><scikit-learn 06>K-Means 聚类
- <转>使用spark ml pipeline进行机器学习
- RT-Thread 学习笔记(十二)--- 开启基于RTGUI的LCD显示功能(2)<编译测试>
- <转>斯坦福机器学习公开课精品笔记9
- 【javascript笔记】js基本数据类型<零>
- <机器学习笔记-04 ><scikit-learn 04>逻辑回归
- Linux学习笔记之<Shell编程初入门>
- OpenCV 2 学习笔记(11): 算法的基本设计模式<2>:使用Controller
- SQL Server 重建索引|索引重组|索引的碎片检查 (MSSQL个人笔记之数据库优化之路 六<SQL2005以上>)
- <<推荐系统实战>>笔记1,基于用户的协同过滤算法
- 【js学习笔记-101】------借助<script>发送HTTP请求
- <<富爸爸成功创业的10堂必修课>>笔记