python3玩转机器学习
到底什么是机器学习?
让机器去学习
传统的算法课程中写的代码,是让机器去执行
mark最早的机器学习应用 - 垃圾邮件分辨
一封邮件是垃圾邮件还是不是垃圾邮件
传统的计算机解决问题思路:
- 编写规则: 定义"垃圾邮件",让计算机执行
有固定的输入输出。输入邮件信息,输出是否是垃圾邮件
mark-
对于很多如垃圾邮件这样的问题,规则很难定义,很难判断怎样是垃圾邮件
-
规则在不断的变化。
同一个时间点,不同的地点,不同的行业等针对这些人群的垃圾邮件也是不同的。
图像识别
mark图像识别最基本的问题就是这个图片表现的具体是什么?
我给你一张照片,不是猫就是狗。现在我给你一张照片让你分辨这张照片到底是猫还是狗
- 典型的二分类问题
使用什么样的特征才能分辨出一张图片是猫还是狗呢?
具体定义什么是一只狗的样子,什么是一只猫的样子。这很不容易实现
能找到很多的狗拥有猫科的斑纹。斑纹难以用计算机量化。
机器学习就是让机器去寻找这张图片的信息和它到底是猫还是狗之间的关系。
关系可能使用我们人类的语言都无法描述出来。
人脸识别
mark人和人之间整体的特征是基本完全一致的,都拥有五官,头发,皮肤等等。
但是与此同时: 人和人之间的样貌相差也是非常大的。
我们人类可以容易的分辨出这个人是谁,那个人是谁。但是让计算机来做就比较难实现
机器学习的方法来完成人脸识别,效果不错。
数字识别
markMNIST 数据集
给你一个手写的数字,让你判断其中是哪一个数字
机器学习在这个方面的准确率已经达到了99%以上。 邮政编码,快递包裹分类
交通摄像头来识别你的车牌号
课程主要内容
- 机器学习算法:
- KNN(k近邻算法)
- 线性回归
- 多项式回归
- 逻辑回归
- 模型正则化
- PCA 方法(进行降维)
- SVM
- 决策树
- 随机森林
- 集成学习
mark模型的选择和模型调整
其他的还有: 贝叶斯算法和LDA算法
- 成体系地系统介绍机器学习算法
讲解原则
-
深入理解算法基本原理: 不是简单的调包
-
实际使用算法解决真实场景的问题
-
手写识别 & 数据集
对不同算法进行对比试验
什么样的场景应该使用什么样的算法,不同算法的优缺点是怎样的。
调参;对同一算法的不同参数进行对比试验
理解不同的参数是怎样影响算法的最终结果的。
- 对部分的算法进行底层的编写
介绍如何使用算法
不能像传统算法学习一样: 理解并实现就可以了
mark- 一个非常重要的任务: 如何评价算法的好坏
对于同一个任务有很多算法可以进行解决,怎样评价。
看似某些算法得到了非常好的结果,但是当我们深入分析会发现你的算法在其中起到的作用很小。使用相对客观的方式来评价算法的好坏。
-
如何解决过拟合和欠拟合的问题
-
如何调节算法的参数
-
如何验证算法的正确性
不仅仅是调库
这个课程是不是在调库?
- 不反对调库
真正反对的是:
mark完成一个排序任务,基本上不会手写一个排序算法,都是调用系统的sort函数来完成的。
很多标准库都会提供一个稳定排序和一个非稳定排序。
在什么情况下使用哪种排序?
高效的组合api来完成业务。
前提是在调库的时候应该对概念原理有所了解
- 深入代码内部,可以帮助我们更好的理解算法
- 更好的理解算法,可以帮助我们更好的选择算法
选择算法是我们在机器学习领域很重要的一步
- 甚至在将来创建新的算法
当现有算法无法满足我们的需求时,前提是对于旧的算法深入理解的基础上来完成的。
这门课希望兼顾
- 算法原理的学习
- 部分算法底层的编写(方便的让我们在底层代码中添加一些绘制的代码,让我们更好的理解算法)
- scikit-learn 机器学习库的使用学习
算法的编写,也会使用模仿scikit对于算法的封装模式
算法原理 + scikit learn 使用
技术栈
语言: python3
框架: scikit-learn
其他: numpy(矩阵),matplotlib(绘图),..
第三章进行简单介绍numpy和Matplotlib
只需要掌握python3的基础语法
不断使用scikit-learn的方法
IDE: Jupyter Notebook,不需要一次一次的运行。探索的数据结果。
pycharm 来完成算法底层的探究
mark课程学习基础
- 语言: python3
数学:
- 基本高中数学水平
- 本科高等数学(求导),线性代数(矩阵的运算),概率论。(及格水平)
学习过这些课程
入门机器学习: 数学的要求并不高。
深入机器学习: 对于数学的要求越来越高
课程所使用的数据集
框架: scikit-learn 内置数据集或通过scikit-learn可以直接下载的数据集
喂给算法数据。
不会在互联网中寻找其他数据源。
markscikit-learn官方文档中datasets部分。
波斯顿的房价,糖尿病人医疗数据,手写数字,鸢尾花
非内置,但是可以由简单的函数调用实现下载
markMNIST数据集
这门课程不涵盖的内容
- 本课程专注于机器学习的算法学习
但根据使用场景不同,机器学习从数据准备到实际应用是一个庞大繁琐的过程
不会对整个过程进行介绍。
-
不包括专门领域的机器学习任务,但课程介绍的算法都是这些领域的基础
-
视觉领域 & 推荐系统 & 自然语言处理 & 时间序列分析
普适度非常高的基础算法的运行原理。
不包括对于真实世界的数据进行预处理的过程
TOy(玩具) datasets,简单,规整,特征也被整理的非常好。
mark主要关注于监督学习。
非监督学习的算法如k-means主要是做数据的预处理任务,PCA算法。
机器学习主要内容
机器学习相关的算法
mark人工智能是一个比机器学习更大的概念
机器学习只是人工智能领域解决问题的一部分方法
搜素为策略的人工智能方法,也能解决很多的问题
深蓝计算机所采取的算法就是以搜索为基础的算法
学习人工智能: 传统的搜索算法策略也要了解
这些搜索算法策略,也是可以解决很多交叉问题的。
梯度下降法来计算某个目标函数的最优解
- 梯度下降法本身就是一种搜索算法
传统的搜索策略和传统算法领域在实现机器学习的底层领域也起着重要的作用。
阿尔法狗升级为阿尔法zero机器: 可以从0开始训练自己,一点一点打败去年的阿尔法狗
阿尔法zero本身的原理就深度结合了传统的启发式搜索中的诸多思路
这里只是告诉同学们不要把机器学习孤立的看待
机器学习算法和很多不同领域可以碰撞出许多奇妙的火花。
人工智能领域除过以搜索为基础的传统策略以外,还有很多经典策略:
以符号为代表的,通过推导逻辑为基础的形成智能的方法
机器学习算法主要是对数据样本的学习,得到学习样本和学习目的之间的联系。
来完成智能的任务。
深度学习
mark mark神经网络也是机器学习领域非常重要的一个方法。
2017调查中,神经网络在业界的使用频率排在第四名
排名前三的: 逻辑回归,决策树,随机森林。
我们都会进行详细的介绍
- 深入理解算法基本原理
- 实际使用算法解决真实场景问题
- 对不同算法进行对比试验
- 调参: 对同一算法的不同参数进行对比试验
- 对部分算法底层编写
评价算法
mark不仅仅是调库。现有算法进行创新
网友评论