机器学习


机器学习备注

Naive Bayes(贝叶斯推断)

讲解贝叶斯基本算法原理

朴素贝叶斯为啥朴素

因为贝叶斯算法并没有考虑事情发生的顺序.

朴素贝叶斯的优势和劣势

  • 优势

这种算法非常适合文本分类。在处理文本时,常见的做法是将每个单词看作一个特征,这样就会有大量的特征。此算法的相对简单性和朴素贝叶斯独立特征的这一假设,使其能够出色完成文本的分类

  • 劣势

当事情的顺序很重要的时候,就不行.比如早起 google芝加哥公牛的时候.就会出现一些芝加哥的介绍或者公牛的照片.但是明显芝加哥公牛有其他的意思.这个时候贝叶斯就不是很管用的

  • 总结

如何避免这些,我们采用的监督式学习.也就有试验和测试数据.通过测试就能够知道算法是否有效

SVM(支持向量机)

核心概念- 间隔(margin)

  • 支持向量机的内部原理是最大程度提高结果稳健性
  • 正确分类标签作为首要考虑,然后对间隔进行最大化.也就是说要在分类正确的前提下对间隔最大化
  • SVM 可以忽略异常值,然后使间隔最大化

SVM 不适合处理海量数据,训练时间太慢了
噪声过多情况下,类严重重叠,边界不明显也不适合 SVM. 可以考虑用 Navie Bayes

参考 udacity 学习笔记

Decision Trees (决策树)

  • 非参数学习方法(类似KNN 容易过拟合)
  • 可以解决分类/回归问题
  • 天然可以解决多分类问题
  • 具备非常好的解释性

信息熵

信息熵的定义
按照信息熵减小的方向去确定分类边界

基尼系数

类似信息熵

信息增益

优缺点

容易过拟合
可以通过剪枝来降低模型复杂度,解决过拟合
决策树理解,讲的不错
udacity 学习笔记

k-nearest neighbors

查考

udacity学习笔记

  • K近邻算法比较特殊,可以认为是没有模型的算法,为了和其他算法统一,也可以认为训练数据集就是模型本身

集成学习

参考

  • hard
  • soft 带权重的hard模式

Bagging and 随机深林

## 如何构建不同的子模型
对样本和特征进行随机选择

通俗来说就是对行级别和列级别抽样,都抽样就是Patches.

  • Bagging(样本有放回随机抽样),统计学上叫Bootstrap.不放回抽样叫Pasting
  • Random Subspace(特征随机抽样) 图像识别领域用的比较多,特征比较多
  • Random Patches (即针对样本又针对特征) ,代表就是随机深林

Ada Boosting

给上一个模型没有匹配到的数据更大的权值,然后重新拟合.最初的模型所有样本数据的权值是一样的

Gradient Boosting

对上一个模型没有匹配的样本建立一个新的模型,最后把所有模型叠加起来

准确度与训练集大小的关系

更大的数据量要比经过精密调整的算法提供更好的结果,更大的数据能够取得更好的效果,这是
机器学习领域至理名言

数据类型

  • numberical 数值
  • categorical 分类
  • time series 时序
  • text 文字

判断离散还是连续

关注顺序

有些不好判断的类型,可以关注数据之间的顺序,如果之间有强烈的关联性,则用连续性的分类器,否则就用离散性的分类器.比如,公司100个人, 工号从1-100,如果需要给他们分类,最好就用离散性的分类器,因为不同工号之前没有关联性

回归(regression)

最小二乘法

也叫最小平方法

线性回归

y=m*x+b 寻找系数和截距,通过最小化误差平方和

线性回归误差

误差=真实值-误差值 (注意存在正负值)

通过上图,可以看出为啥不用误差绝对值的和而是用平方和的原因.用误差绝对值的和会存在多条线,
而用平方和就只会有一条

误差平法和

判断拟合质量的标准

最小化误差平方和的算法

  • 普通最小二乘法 ordinary least squares(sklearn LinearRegression中使用就是这种)
  • 梯度下降 gradient descent

问题


当对不同数量的两个数据进行用最小误差平方和来评判算法好坏时会出现问题.拟合效果可能差不多,由于数量多的那个数据集天然误差平方和会大

决定系数 R suqre

定义

决定系数的出现是为了解决上面误差平方和的缺陷.介于0-1之间,1最好,0最差.

监督分类和回归的区别

多元线性回归(多变量回归,元理解成变量即可)

多元回归和简单线性回归类似,只是变量增加而已.
y=x1+x2

多项式回归

多项式回归处理方法和多元回归本质是也是一样的,只是把一元的多次作为一个特征来处理.对应sklearn.preprocessing.PolynomialFeatures.
y=x^2+x.这里把x^2 理解成一个特征即可,只是这个特征还是x这个元 .


异常值

原因

  • 传感器故障
  • 数据输入错误

去除异常值的算法

  1. 回归
  2. 根据误差值排序,去除前10%
  3. 重新回归

Clustering(聚类)

K-means

  1. 将各个点分配到矩心
  2. 移动矩心,使各个点到矩心的距离最短
    反复执行上面两个步骤

    K-means的局限

    依赖最初矩心所在的位置,不同的位置最终的结果可能会不同.
    局部最小解

特征缩放

特征缩放的公式(x’-x_min)/(x_max-x_min)

受此影响的机器学习算法

  • 使用 RBF 核函数的 SVM
  • K-means

涉及的一些中英对照

1
2
3
slope->斜率
intercept->截距
coefficient->系数

文本

bag of words -词袋
stop words - 停止词
stemmer- 词干提取
TF-IDF
TF-Term Frequency
IDF-Inverse Document Frequency

TF-IDF解释

特征选择

正则化

为了防止过拟合采用的一种手段,在最小化sse(误差平方和) 的同时增加惩罚措施.
避免采用过多的特征维度.采用维度过少会导致高偏差(high bias,误差平方和较大).采用维度过度
会导致高方差(high varaiance,对测试数据集拟合不佳,不具有普遍性)

  • 岭回归 在LinearRegression的基础上添加了L2正则项.可以理解为内置了线性模型

[参考Sklearn Generaized Linear Models 这一章的前三节,具体公式也在其中.]
(http://scikit-learn.org/stable/modules/linear_model.html#ridge-regression)

一些其他的点

  • 过拟合就是在训练集上准确率非常高,而在测试集上准确率低

PCA

  • 一种用来降维的手段.是一种将输入特征转换为其主要特征的系统化方法
  • 主成分的定义是数据中使方差最大话的方向(数据在上投影,使数据丢失的可能性降到最低)
  • 主成分的上限是输入特征数量,当等于输入特征数量时就没有意义了,通常只会使用前面几个主成分
  • PCA最好在特征选择之前做.

帮助理解PCA

https://coding.imooc.com/learn/questiondetail/43110.html

PCA的功能

PCA可以起到降维的作用,这样主要是为了加快运行速度,另外也可以做可视化,讲数据在人类可以理解的二维或者三维上展示
另外一个主要的作用是降噪,在降维的同时将数据中包含的噪声减少.
这里需要注意的是,如果对于你的应用来说,保持特征语意很重要,又要减少特征量,是不建议使用PCA,可以试试LASSO.

交叉验证

GridSearchCV这个CV就是Cross Validation.
本质上为了更好的避免过拟合,如果没有验证数据集,训练出来的模型可能会对测试数据集过拟合.
所以通常将训练数据集分成训练数据集和验证数据集并配合K-Fold来对此验证取平均.这样来调模型的最佳参数.最后在用没有参与训练的测试基来检验模型的好坏

方差偏差均衡


通俗来说:偏差就是不准;方差就是不稳
参考

如何解决过拟合问题

  • 降低模型复杂度,比如多项式回归降低degree

  • 正则化

  • 增大样本数据

  • 尝试化简,选择,提取更好的特征,所谓特征工程(特征不是越多越好!)

  • 降噪,比如PCA

  • 使用验证集避免针对测试数据集过拟合

  • 尝试使用ensemble的方法(集成学习,见课程第十三章)

Q&A

Q:LASSO减少特征的作用和PCA的降维作用类似吗?

A:不一样。LASSO的方法是直接减少特征数,做的是特征选择;PCA是通过空间转换将特征空间从高维空间转换到低维空间,是降维。

当你的特征有很强的语意的时候,PCA的缺点是丢失语意,此时用LASSO更好,如房产数据,这样做后续的分析会更高的保持可解释性;反之,对于你的数据,如果语意性不强,如图像数据,PCA更好。

Q:使用逻辑回归时怎么利用网格搜索来查找degree,c等超参数
A:https://coding.imooc.com/learn/questiondetail/61679.html

总结

总的流程

  1. 基本数据情况
  2. 检查数据无效值(NaN,NULL等)
  3. 绘图查看异常点
  4. 删除异常值
  5. 添加新特征
  6. 特征选择
  7. 特征缩放
  8. 应用算法+网格搜索

机器学习中的一些数学指标

上述的三个数学指标其实本质上都是一样的

基于已有的数学概念进行抽象,得出范数的概念.其实是很简单的.对于右边的没有开根号是不影响最终结果的,有时候也可以叫做L2范数,因为开不开根号变化方向都是一致的,不影响最终结果

模型选择

sklearn 官方模型选择指导

Microsoft Azure 官网模型推荐

泰坦尼克存活预测

Kaggle地址]

参考地址,重点学习一下流程以及模型融合
参考地址2,寒小阳逻辑回归建模

模型融合

Kaggle机器学习之模型融合(stacking)心得

模型融合方法概述

Bagging与随机森林,对西瓜书的一个总结

udacity 总结挺好必看

偶像

HDFS

https://mp.weixin.qq.com/s/3QFQRL708Muxf_QzKmSMlw

牛人总结

分享一波关于做Kaggle比赛,Jdata,天池的经验,看完我这篇就够了

如何建立自己的应用型机器学习流程

Kaggle 入门

初学者应该参加哪些 Kaggle 比赛

Kaggle 六大比赛最全面解析

好的视频资料

2017年度好视频

深度学习机器学习常见工具包 cheatsheet

https://github.com/kailashahirwar/cheatsheets-ai

机器学习所需要的数学知识

一文读懂机器学习需要哪些数学知识

机器学习数学知识

Google 发布关于机器学习工程的最佳实践

点我查看 google 的最佳实践

如何通过网格搜索来寻找自定义的Pipeline模型(比如自定义的多项式线性模型)

https://coding.imooc.com/learn/questiondetail/61679.html