机器学习是人工智能的未来
第一次知道机器学习是在一次学科竞赛中,我所在的团队做的项目其中有个最核心需求是根据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.
六、大数据与机器学习
-
Hadoop
Spark
Etc.