Naive Bayes(贝叶斯推断)
朴素贝叶斯为啥朴素
因为贝叶斯算法并没有考虑事情发生的顺序.
朴素贝叶斯的优势和劣势
- 优势
这种算法非常适合文本分类。在处理文本时,常见的做法是将每个单词看作一个特征,这样就会有大量的特征。此算法的相对简单性和朴素贝叶斯独立特征的这一假设,使其能够出色完成文本的分类
- 劣势
当事情的顺序很重要的时候,就不行.比如早起 google芝加哥公牛的时候.就会出现一些芝加哥的介绍或者公牛的照片.但是明显芝加哥公牛有其他的意思.这个时候贝叶斯就不是很管用的
- 总结
如何避免这些,我们采用的监督式学习.也就有试验和测试数据.通过测试就能够知道算法是否有效
SVM(支持向量机)
核心概念- 间隔(margin)
- 支持向量机的内部原理是最大程度提高结果稳健性
- 正确分类标签作为首要考虑,然后对间隔进行最大化.也就是说要在分类正确的前提下对间隔最大化
- SVM 可以忽略异常值,然后使间隔最大化
SVM 不适合处理海量数据,训练时间太慢了
噪声过多情况下,类严重重叠,边界不明显也不适合 SVM. 可以考虑用 Navie Bayes
Decision Trees (决策树)
- 非参数学习方法(类似KNN 容易过拟合)
- 可以解决分类/回归问题
- 天然可以解决多分类问题
- 具备非常好的解释性
信息熵
信息熵的定义
按照信息熵减小的方向去确定分类边界
基尼系数
类似信息熵
信息增益
优缺点
容易过拟合
可以通过剪枝来降低模型复杂度,解决过拟合
决策树理解,讲的不错
udacity 学习笔记
k-nearest neighbors
- 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这个元 .
异常值
原因
- 传感器故障
- 数据输入错误
去除异常值的算法
- 回归
- 根据误差值排序,去除前10%
- 重新回归
Clustering(聚类)
K-means
特征缩放
特征缩放的公式(x’-x_min)/(x_max-x_min)
受此影响的机器学习算法
- 使用 RBF 核函数的 SVM
- K-means
涉及的一些中英对照
1 | slope->斜率 |
文本
bag of words -词袋
stop words - 停止词
stemmer- 词干提取
TF-IDF
TF-Term Frequency
IDF-Inverse Document Frequency
特征选择
正则化
为了防止过拟合采用的一种手段,在最小化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
总结
总的流程
- 基本数据情况
- 检查数据无效值(NaN,NULL等)
- 绘图查看异常点
- 删除异常值
- 添加新特征
- 特征选择
- 特征缩放
- 应用算法+网格搜索
机器学习中的一些数学指标
上述的三个数学指标其实本质上都是一样的
基于已有的数学概念进行抽象,得出范数的概念.其实是很简单的.对于右边的没有开根号是不影响最终结果的,有时候也可以叫做L2范数,因为开不开根号变化方向都是一致的,不影响最终结果
模型选择
泰坦尼克存活预测
参考地址,重点学习一下流程以及模型融合
参考地址2,寒小阳逻辑回归建模
模型融合
udacity 总结挺好必看
HDFS
https://mp.weixin.qq.com/s/3QFQRL708Muxf_QzKmSMlw
牛人总结
分享一波关于做Kaggle比赛,Jdata,天池的经验,看完我这篇就够了
Kaggle 入门
好的视频资料
深度学习机器学习常见工具包 cheatsheet
https://github.com/kailashahirwar/cheatsheets-ai