学了1个月机器学习的总结
书实在是厚,看不下去,还是看视频容易接受。
总结:
入门应该从如何把点拟合成一条线开始。
先从统计学里的方差开始,扩展最小二乘法,引出线性回归。然后是逻辑回归,引出机器学习核心——求代价函数最小值。进而引出正则、学习率、过拟合欠拟合、偏差方差、准确率召回率、训练集验证集测试集等机器学习基础。
进而扩展知识面,从线性到非线性,神经网络。引出深度学习,进而学到卷积神经网络、循环神经网络。
再次扩展知识面,之前都是有监督,现在扩展到无监督,SVM(K临近分类)、聚类、降维。
这样大体框架就定了,然后应该知道目前这个学科过去、现在(行业应用)、将来(发展方向,待解决问题)。最后在现在、将来两个方面选择自己的细分方向。
视频比书有意思。正确的学习路径应该是先看吴恩达2022版机器学习视频,再看吴恩达深度学习视频,最后看李沐视频实践pytorch,斯坦福的cs课不看也行,这些教学内容大同小异。机器学习理论细节繁多,很难做到每个细节都记住,应该在完整的流程实践过程中,遇到不确定的,再去查西瓜书和花书。
最后应该做3、4个不同领域的项目,总结项目流程
项目流程:
1、分析需求,属于哪种学习类型,还是都有
2、准备数据,分三个集
3、特征选择
4、建立不同模型,进行参数初始化,设置不同学习率,设置不同正则化参数,对比结果,对比准确率召回率,选出最合适的模型
5、模型调优
6、部署运行
笔记做了一小部分,不想做了。
Hands+on+Machine+Learning+with+Scikit+Learn+and+Tensorflow_笔记
第一部分 机器学习基础
第一章 机器学习概览
一、机器学习分类:
1、根据训练时是否有人类监督,分为有监督、无监督、半监督、强化学习
有监督:例如过滤垃圾邮件
经典算法:k-Nearest Neighbors、Linear Regression、Logistic Regression、Support Vector Machines (SVMs)、
Decision Trees and Random Forests、Neural networks
无监督:例如自动分类
经典算法:
Clustering:k-Means、Hierarchical Cluster Analysis (HCA)、Expectation Maximization
Visualization and dimensionality reduction:Principal Component Analysis (PCA)、Kernel PCA、Locally-Linear Embedding (LLE) 、
t-distributed Stochastic Neighbor Embedding (t-SNE)
Association rule learning:Apriori、Eclat
半监督:例如算法自己分类人物照片,等你给每类打标签。
大多数半监督都是组合了有监督和无监督。
强化学习:观察环境、选择行为、根据反馈惩罚或奖励自我调整
2、根据是否能不断学习,分为在线学习,批量学习
批量学习:训练集增加了新东西,得全部重新训练,不能只训练新内容
在线学习:能不断训练,每次只训练新东西,所以占用空间也小
3、对比新旧数据相似点的是基于实例,根据训练数据推断出模型的是基于模型
基于实例:跟以前的实例对比
基于模型:训练出模型,让模型判断新东西
二、机器学习面临的挑战:
不好的数据:训练集不足、训练集的数据不具有代表性(比如数据来源太小众)、训练集数据质量差(错误数据多、噪音数据多)、相关性不大的特征(应该多找有用的特征)
不好的算法:过度拟合(通过正则化、减少特征值等方式避免)、欠拟合
三、测试和验证
把数据分为训练集和测试集
选线性模型还是多项式模型?两个都训练,对比哪个泛化效果更好
第二章 端到端的机器学习项目
一、概览
1、提出问题:用监督、无监督、强化?这是分类问题,还是回归问题?用在线学习还是批量学习?
2、选择性能评估措施:Root Mean Square Error,就是我们说的标准差(方差的平方根)
3、跟团队确认他们想要的输出是我预想的那样吧
二、获取数据
怎么保证测试集数量只占总数20%:hash
三、发现并描绘数据以增加洞察力
通过属性组合做试验,比如取两个属性的商
四、为机器学习算法准备数据
数据清理、
不同特征的值都标准化为差不多大小,用Scikit-Learn的MinMaxScaler 或 StandardScaler
数据转换的步骤太多了,Scikit-Learn提供了Pipeline类
五、选择模型并训练
选择模型LinearRegression,直接调用fit函数,就训练好了。
调用predict函数,就能预测新数据了
如何评估预测的准确率呢?用mean_squared_error函数
更好的评估方案:交叉验证,调用cross_val_score函数
最后对比一下不同模型预测结果和实际答案的标准差,看哪个最小,哪个就拟合的最好
六、调整模型
1、表格方式组合参数。通过组合不同的参数(比如两个参数,一个参数有2个值,另一个参数有3个值,就有6种组合),给一个想要的结果值(比如标准差),
Scikit-Learn的GridSearchCV会自动算出最好的参数组合(6种组合的结果都算出来,最后函数的best_params_属性就存着最优的参数组合)。
2、当参数过多时,用表格就太慢了,可以用随机组合参数的方式,RandomizedSearchCV函数。
3、用模型混合用的方法,比如随机森林回归这个模型可以看出为了准确预测,属性之间的关联程度值是多少,把没用的特征删除
七、部署、监控、维护系统
监控系统性能,性能下降了就多喂点新数据
定期快照,如果有垃圾数据影响了模型,还能恢复到快照点。
第三章 Classification
模型分为两类, regression (predicting values) and classification (predicting classes)。本章讲分类系统。
1、用Scikit-Learn获取MNIST图片数据集,每个图片是28*28像素,所有有784个特征。
有些模型对顺序敏感,如果一行数据彼此相似,会导致模型训练效果不佳,所以要打乱训练集
2、训练二分法分类器, 用 Scikit-Learn’s SGDClassifier (随机梯度下降分类器),new一个对象,调fit训练模型,调predict预测
3、评估模型性能:
1、用交叉验证评估准确率。
2、用准确率、召回率
3、The receiver operating characteristic (ROC) curve ,类似准确率召回率曲线
4、多类别分类器
随机森林分类器、朴素贝叶斯分类器
svm分类器,线性分类器
5、错误分析
6、多标签分类
7、多输出分类
第四章 训练模型
1、线性回归
2、梯度下降
3、多项式回归
4、学习曲线
5、正则化线性模型
6、逻辑回归
第五章 SVM
1、线性 svm分类器
2、非线性 svm分类器
3、svm回归
第六章 决策树
第七章 集成学习与随机森林
第二部分 神经网络和深度学习
9 用TensorFlow
10 人工神经网络
11 训练深度神经网络
12 分布式部署TensorFlow
13 卷积神经网络
14 循环神经网络
15 自动编码器(人工神经网络的应用
16 增强学习