机器学习主要解决什么问题?
1 需要手动调整大量规则的问题
2 传统方法无法解决的问题,机器学习可以碰碰运气
3 波动性的环境
4 复杂问题和大量数据
机器学习的种类
分类机器学习算法主要依靠以下几个标准
1 是否需要人类监督(监督式学习,非监督式学习,半监督式学习,强化学习)
2 是否可以从不断增长中的数据中学习(批量学习和在线学习)
3 是否只是用旧的数据点去比较新的数据点,还是建立一个预测模型(基于实例学习和基于模型学习)
监督式学习中有这些,有些之前在吴恩达机器学习中看到过有些还没学
k-临近算法,只是简单的计算距离
线性回归
逻辑斯蒂回归
支持向量机
决策树和随机森林 (随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。)
神经网络
非监督式学习
聚集型
k-means
层次聚类分析
期望极大化算法
形象化和降维
PCA
Kernel PCA
Locally-Linear Embedding
t-SNE
关联规则学习
Apriopri
Eclat
非监督式学习可以很好的执行异常检测和特征提取等任务
半监督式学习可以处理有的有标签有的没标签的那些数据,许多半监督式学习算法是非监督式还有监督式的结合体,比如DBNs就是许多RBMs的结合强化学习则是让学习系统(也被叫做代理人agent)去观察环境,行动之后获得反馈,他必须靠自己学习去寻找一个好的策略。
批量学习和在线学习的区别在于,一个是一开始就把所有数据喂给学习系统,让它一次性学完然后去工作。另一个一点点把数据喂给系统,让它不断适应新的数据。
基于实例的学习和基于模型的学习
基于实例的学习记住那些样本,然后测量新样本和它们的相似度。比如K-邻近回归算法。
基于模型的的学习则是根据一个模型来进行预测,一般来说是这样的:
1.研究数据
2.选择模型
3.使用数据对模型进行训练
4.使用训练好的模型进行预测
机器学习中可能出现的问题
1.缺乏足够训练数据,2001年微软的研究者指出更多的数据可以有效的提高预测的准确度。这就表明我们必须重新考虑到底应该在算法研究上投入更多的钱和时间还是在收集数据建设语料库上投入更多的钱和时间。
2.非代表性的线性数据,比如在GDP和幸福感之间关联的研究之中,漏掉了很多富有却不幸福还有幸福但不富裕的国家,使得整个模型看上去就是一个线性模型。这种现象的原因可能是认为操作,也可能是取样方法出现了问题从而导致取样偏差。
3.低质量的数据
如果你的数据集到处都是错误和漏洞自然训练不出什么好结果。
4.不相干的特征
如果你选取的特征和你要预测的内容毫不相干自然也是没法预测的。解决这一问题的方法被称为特征设计(feature engineering),首先要选取最有用的特征,其次可以合并已有特征产生更有用的特征,或者获取新数据来增加特征。
5.过拟合
过拟合主要发生在模型过于复杂以及数据集的干扰噪点太多的时候,因此主要的解决方法大致是1.简化模型,使用更少的特征去训练。2.收集更多数据3.通过修复数据错误以及删除异常值的方法减少训练集的噪音。
6.欠拟合
与过拟合相反,解决方法大致为
1.选择更加强大的模型,使用更多参数
2.通过特征设计(feature engineering)给模型更好的特征去学习
3.减少模型的约束(比如减小正则化的超参数)