写在前面:对于机器学习和深度学习,明白原理是非常重要的,只知道怎样去用那么你只能成为一个调参侠,并且在面试的时候会被问到原理。而且,要建模,肯定要知道原理。总而言之,选择了机器学习和深度学习基本就是做研究的嘛,做研究怎么能不知道原理呢?
机器学习和深度学习能做什么
传统预测、图像识别、自然语言处理
什么是机器学习
数据→模型→预测
从历史数据中获得规律,这些历史数据是怎样的格式呢?
数据格式:数据集
数据集构成:特征值+目标值
机器学习算法分类
目标值是类别——分类问题
目标值是连续性数据——回归问题
没有目标值——无监督学习
机器学习开发流程
1、数据处理
2、特征工程(将数据处理成更能被机器学习算法使用的数据)
3、算法训练——得到模型
4、模型评估
学习框架和资料
1、算法是核心,数据和计算是基础
2、找准定位
3、怎么做?
1、书籍:
机器学习—周志华“西瓜书”
统计学习算法—李航
深度学习“花书”
2、库和框架
机器学习框架:scikit-learn
深度学习框架:pytorch tensorflow theano caffe2 chainer
数据集
学习阶段可用数据集
1、scikit-learn
2、kaggle
3、UCI
scikit-learn库介绍:
Python语言的机器学习工具
包括许多知名的机器学习算法的实现
文档完善、容易上手、丰富的API
目前稳定版本0.24.1
安装:pip3 install Scikit-learn==0.24.1
查看是否安装成功:import sklearn
注:安装需要numpy、scipy等库
sklearn包含的内容:分类、回归、聚类、降维、模型选择、特征工程
sklearn数据集使用
sklearn.datasets
load_* 获取小规模数据集
fetch_* 获取大规模数据集
查看数据集的代码如下:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
def datasets_demo():
"""
sklearn数据集使用
"""
#获取数据集
iris=load_iris()
print("鸢尾花数据集:\n",iris)
print("查看数据集描述:\n",iris["DESCR"])
print("查看特征值的名字:\n",iris.feature_names)
print("查看特征值:\n",iris.data,iris.data.shape)
#数据集划分
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.2,random_state=22)
#查看测试集的特征值
print("测试集的特征值:\n",x_test,x_test.shape)
return None
if __name__=="__main__":
datasets_demo()
特征工程
业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好作用的过程。会直接影响机器学习的效果。
怎么做特征工程
sklearn—— 特征工程
pandas ——数据清洗、数据处理
特征工程包含内容:
1、特征抽取/提取
机器学习算法——统计方法——数学公式
(数学公式无法识别字符串)
文本类型转换为→数值
类型转换为→数值
图像特征提取(深度学习)
特征提取API:
sklearn.feature_extraction
2、特征预处理
归一化、标准化
归一化缺点:计算公式主要依靠最大值和最小值,一旦出现异常值,将对整个数据有很大影响
标准化:通过对原始数据进行变换,将数据变换到均值为0,标准差为1范围内:
公式:
3、数据降维
ndarray
维数:嵌套的层数
0维:标量
1维:向量
2维:矩阵
3维:多个2维数组嵌套而成
n维......
降维:降低的对象是2维数组,此处的降维是降低特征的个数(列数)。得到一组不相关主变量的过程。
特征与特征之间不想关。
降维方法两种:
1、特征选择
2、主成分分析
API:sklearn.decomposition.PCA(n_components=None)
n_components 是小数:表示保留百分之多少的信息。整数:表示减少到多少特征
决策树
结构:if-else结构
思想:如何高效的进行决策。重点在特征的先后顺序。
(相比于KNN算法,决策树更适合用于数据量大的情况)
优点:可视化,可解释能力强
缺点:容易过拟合
随机森林
什么是集成学习方法:通过建立几个模型组合来解决单一预测问题。生成多个分类器,各自独立地学习和做出预测,最后结合成组合预测,因此优于任何一个单分类做出的预测。
随机森林:包含多个决策树的分类器。最终结果由多个决策树的众数决定。
随机:训练集随机和特征随机
训练集随机:bootstrap (随机有放回抽样)
线性回归
现象:欠拟合和过拟合
线性关系和线性模型要区分。
目标:求模型参数,能使得预测准确。
损失函数
优化损失:优化方法:
正规方程:天才,直接求解(适合数据量小的情况)
梯度下降:勤奋,试错,改进(通用性较强)
案例:波士顿房价预测:
1)获取数据集
2)划分数据集
3)特征工程:无量纲化(标准化)
4)预估器工程:fit()–模型
coef_intercept_
5)模型评估
欠拟合和过拟合
**欠拟合:**学习到的特征太少,导致区分标准太粗糙,不能正确识别。(在训练集和测试集都不能很好地拟合数据,数据量太少)
**过拟合:**学习的特征过多,导致筛掉了某些特征,使得结果不准确。(在训练集效果很好,但是在测试集效果不好)
解决办法:
左边的过于简单,容易欠拟合,右边的拟合效果很准确但是泛化能力差,容易过拟合,因此中间的效果是最好的。
过拟合解决方法:正则化:尽量减少高次项特征的影响。
L1正则化:损失函数+λ惩罚项(参数的绝对值)————LASSO
L2正则化:使得 某些参数接近于0,削弱某些特征的影响。损失函数+λ惩罚项(参数的平方)——————Ridge—岭回归
岭回归——带有L2正则化的线性回归
逻辑回归——进行分类(是一种分类算法,二分类)
线性回归的输出 就是 逻辑回归 的 输入。
原理图:
分类的评估方法:精确率与召回率