【机器学习】【Python】深入浅出Python机器学习-读书笔记整理

0 写在开头

趁着现在在家还没开学,把之前的笔记和记的一些东西整理一下。
资料:《深入浅出Python机器学习》
学习时间:2018.10


目录

  • 0 写在开头
  • 1 KNN
  • 2 广义线性模型
      • 线性回归
      • 岭回归
      • lasso回归(套索回归)
      • 弹性网模型
      • 其他线性模型
  • 3 朴素贝叶斯
      • 朴素贝叶斯算法的不同方法
  • 4 决策树和随机森林
      • 决策树
      • 随机森林
  • 5 支持向量机
  • 6 神经网络
      • 多层感知器,MLP算法(前馈神经网络)
  • 7 数据预处理、降维、特征提取及聚类
      • 数据预处理
      • 数据降维
        • PCA主成分分析
      • 特征提取
      • 聚类算法
  • 8 数据表达与特征工程
      • 数据表达
      • 数据升维
      • 自动特征选择
  • 9 模型评估与优化
  • 10 建立算法的管道模型
  • 11 文本数据处理
  • 12 数据获取与爬虫
  • 13 本书总结

1 KNN

  • 分类任务,多元分类任务,回归分析。
  • 实战:酒的分类
  • 核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。
  • 实际存在问题:高维数据集拟合欠佳,对稀疏数据集束手无策,对规模超大的数据集拟合时间较长

2 广义线性模型

线性回归

  • 也称为普通最小二乘法(OLS)。
  • 找到训练数据集中的预测值和其真实值的平方差最小的时候,所对应的w和b。训练集的得分和测试集的得分存在巨大差异:出现过拟合。
  • 数据量越大,线性回归模型越不容易产生过拟合现象。

岭回归

  • 使用L2正则化的线性模型。(实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。)
  • 保留所有的特征变量,但减小特征变量的系数值,让特征变量对预测结果的影响变小。——正则化
  • 复杂度越低的模型,在训练数据集上表现越差,泛化能力越好。
  • 提高alpha值,降低特征变量的系数,降低过拟合程度,模型限制更加严格,有助于泛化。alpha非常小时,和线性回归接近。

lasso回归(套索回归)

  • L1正则化
  • Lasso回归能够使得损失函数中的许多θ均变成0,这点要优于岭回归,因为岭回归是要所有的θ均存在的,这样计算量Lasso回归将远远小于岭回归。
  • alpha太低相当于去除了正则化效果

弹性网模型

  • 综合了套索回归和岭回归的惩罚因子
  • 选用原则:如果有很多特征,并不是每一个都对结果有重要的影响,则用L1正则化模型如lasso回归;特征不多且每一个都有重要的作用,用L2正则化,岭回归

其他线性模型

其他线性模型还有:逻辑斯谛回归,线性支持向量机(Linear SVM)等。

3 朴素贝叶斯

  • 贝叶斯公式:
    【机器学习】【Python】深入浅出Python机器学习-读书笔记整理_第1张图片
  • 用途:多用于文本分类,比如垃圾邮件过滤等。
  • 朴素的含义:特征之间是独立的,互相不影响。
  • 学习曲线:随着数据集样本数量的增加,模型得分变化情况

朴素贝叶斯算法的不同方法

  • 贝努利朴素贝叶斯:二项分布或者0-1分布
    高斯朴素贝叶斯:假设样本的特征符合高斯分布,正态分布,可应用于任何连续数值型的
  • 多项式朴素贝叶斯:用于拟合多项式分布的数据集,适合计数类型的即非负,离散类型的

4 决策树和随机森林

决策树

  • 决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。
  • 很容易将模型进行可视化
  • 过拟合问题:优化的方法主要有两种,一是剪枝,二是组合树

随机森林

  • 是一种集合学习算法(目前应用广泛的集合算法还有“梯度上升决策树”GBDT),利用多棵树对样本进行训练并预测的一种分类器
  • 不要求对数据进行预处理。支持并行处理,用多进程并行处理来解决超大数据集耗时问题
  • 参数设置:
    max_features:越高,每一颗决策树长得越像;
    bootstrap:类似放回抽样生成数据集;
    n_estimators决策树的数量

5 支持向量机

  • 核函数kernel trick
  • 多项式内核和径向式内核(RBF),有linear,RBF,poly
  • 数据点正好位于决定边界上——支持向量
  • 最大边界间隔超平面
  • 对数据预处理的要求比较高,如果数据特征量级差异较大,就需要预处理
  • RBF内核SVC的gamma参数调节:gramma越小,RBF内核的直径越大,更多的点被模型圈进决定边界中,决定边界越平滑,模型越简单,越倾向于欠拟合。

6 神经网络

感知器 反向传播算法(BP)

多层感知器,MLP算法(前馈神经网络)

  • 生成隐藏层后对结果进行非线性矫正(relu):小于0的用0代替;
  • 双曲正切处理(tanh):压缩进-1到1范围内
  • MLP仅限于处理小数据集,如果是超大数据集可以用keras,theano,tensorflow深度学习库
  • 隐藏层的数量和隐藏层中节点的数量,初学可以参考:隐藏层的节点数约等于训练数据集的特征数量,但一般不要超过500

7 数据预处理、降维、特征提取及聚类

数据预处理

  • StandardScaler:转化为均值为0,方差为1的状态 MinMaxScaler:都被转换到0到1 之间
  • RobustScaler:使用中位数和四分位数,剔除一些异常值,粗暴缩放
  • Normalizer:把特征向量转化为欧几里距离为1,把数据的分布变成一个半径为1的圆。在只想保留数据特征向量的方向,忽略其数值的时候使用。

数据降维

PCA主成分分析

  • 属于无监督学习算法
  • n_components如何设置?scikit-learn中,n_components不仅可以代表成分的个数,还可以设置为降维之后保留信息的百分比如0.9

特征提取

  • PCA主成分分析法用于特征提取
  • 数据白化功能(data whiten):降低冗余性,让样本之间的相关度降低
  • 非负矩阵分解NMF(也是一个无监督学习算法)

聚类算法

  • 聚类和分类区别,无监督和有监督
  • K均值聚类算法
  • 凝聚聚类
  • DBSCAN算法:基于密度的有噪声应用空间聚类

8 数据表达与特征工程

数据表达

  • 用哑变量(Dummy Variables)转化类型特征 get_dummies把是字符串转化成整型数值
  • 装箱处理,也称为离散化处理,可大幅度提高线性模型的预测准确率

数据升维

  • 交互式特征 hstack
  • 多项式特征polynomialFeatures

自动特征选择

  • 单一变量法SelectKBest 和SelectPercentile
  • 基于模型的特征选择,先用一个有监督学习模型对数据特征的重要性进行判断,然后把最重要的特征进行保留
  • 迭代式特征选择:递归特征剔除法RFE

9 模型评估与优化

  • 交叉验证:K折叠交叉验证法、随机拆分交叉验证、挨个儿试试方法。
  • 用网格搜索优化模型参数:遍历全部参数设置,找出最高分对应的参数,可与交叉验证结合,GridSearchCV
  • 分类模型的可信度评估:预测准确率predict_proba,,决定系数decision_function

10 建立算法的管道模型

Pipeline类,例如可以将数据预处理、特征提取、MLP打包

11 文本数据处理

  • 词袋模型:n_Gram参数
  • tf-idf
  • IMDB电影评论数据集
  • 删除文本中的停用词
  • 自然语言处理常用的Python工具包:NLTK
  • 话题建模和文档聚类,“潜狄利克雷分布”的模型LDA

12 数据获取与爬虫

requests库
user agent
【机器学习】【Python】深入浅出Python机器学习-读书笔记整理_第2张图片
【机器学习】【Python】深入浅出Python机器学习-读书笔记整理_第3张图片

  • Tips:\是转义字符,如果不要转义,可以
  •   1、再加一个斜杠\,如“\\n” 
      2、在前面加r   r'\d+'
    
  • 正则表达式语法
  • 安装BeautifulSoup或者lxml库用于HTML解析
  • Scrapy库常用的开发爬虫的工具之一

13 本书总结

  • 方向:数据挖掘、模式识别、自然语言处理等
  • 数据挖掘:核外学习;集群式并行计算:Spark计算引擎
  • 深度学习框架,tensorflow,caffe,keras
  • 概率模型推理
  • 平台:Kaggle ,OpenML
  • 对算法模型进行A/B测试,在线测试,离线测试

你可能感兴趣的:(读书笔记)