机器学习基础篇_2/2
分类: 人工智能、学习笔记 2287 2
开发流程
算法分类
-
数据类型
-
离散型:由记录不同类别个题的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再分,也不能进一步提高他们的精确度
-
连续性:变量可以在某个范围内取任一数,即变量的取值可以是连续的,如,长度、时间、质量值等,这类整数通常是非整数,含小数部分。
-
-
算法分类
-
监督学习
-
分类:k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
-
回归:线性回归、岭回归
-
-
无监督学习
聚类:k-means
-
k-近邻算法
-
定义
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于摸一个类别,则该样本也属于这个类别。
-
距离公式
-
特点
需要做标准化处理。
k的取值越大,容易受k值数量(类别)的波动,k越小,容易受异常点影响。
优点:算法检点,易于理解,易于实现,无需估计参数,无需训练
缺点:懒惰算法,对测试样本分类是的计算量大,内存开销大。必须指定k值,k值选择不当则分类精度不能保证。
场景:数据量较小。
朴素贝叶斯
-
概率
是指一件事情发生的可能性。
-
联合概率
包含多个条件,且所有条件同时成立的概率。
P(A,B)
-
条件概率
事件A在另外一个事件B已经发生条件下的发生概率。
P(A|B)
P(A1, A2|B) = P(A1|B)P(A2|B)
-
-
朴素贝叶斯
-
公式
其中,w为给定文档的特征值(频数统计,预测文档提供),c为文档类别。
P(C) = 类别文档数 / 总文档数量
P(W|C) 是给定类别下特征的概率,P(F1|C) = Ni/N,Fi是文档中的各个词,Ni为该F1词在C类别所有文档中出现的次数。N为所属类别C下的文档所有此出现的次数和
公式等价于
-
概率为零的解决方案 拉普拉斯平滑系数
为指定的系数,一般为。为训练文档中统计出的特征词个数。 -
API
sklearn.naive_bayes.MultinomialNB(alpha=1.0) alpha为拉普拉斯平滑系数
-
特征
不需要传参,训练集误差大,结果则差。
场景:文本分类,神经网络
-
决策树
-
思想
决策树思想的来源非常朴素,程序设计中的条件分支结构是if-then结构,最早的决策树就是利用这类结构分割数据的一类分类学习方法。
-
信息度量和和作用
-
信息熵
H的专业术语是:信息熵,单位为比特
注:信息和消除不确定性是相联系的
-
划分依据
-
信息增益:当得知一个特征条件之后,减少的信息熵的大小。也就是在获取到一个特征值之后,信息熵减少的越多,说明该属性越重要,对于结果的不确定性影响越大,决策时排在最前面。
其中g为信息增益,H(D)为初始信息熵大小,H(D|A) 是特征A给定条件下D的信息条件熵。
-
ID3
-
C4.5
-
CART
回归树:平方误差最小
分类树:基尼系数,最小的准则,在sklearn中可以选择划分的原则
-
-
API
class sklearn.tree.DecisionTreeClassifier(criterion='gini', max_depth=None, random_state=None)
-
决策树分类器
-
criterion默认是'gini'系数,也可以选择信息增益的熵'entropy'
-
max_depth:数的深度大小
-
random_state:随机数种子
方法:
decision_path:返回决策树的路径
-
分类模型评估
-
API
sklearn.metrics.classification_report(y_true, y_pred, target_names=None)
-
y_true: 真是目标值
-
y_pred:估计器预测目标值
-
target_names:目标类别名称
-
return: 每个类别精确率与召回率
-
模型选择与调优
交叉验证
-
目的:让被评估的模型更加准确可信。
-
思想:
将训练数据分为训练集和验证集。将数据分为n份,其中一份为验证集。然后经过n次(组)的测试,每次都更换不同的验证集,轮流进行,直到每一份都数据都做过验证集为止,即可得到n组模型的结果,再取其平均值作为最终结果。又称为n折交叉验证。
网格搜索
调参数:k-近邻的超参数K
-
思想
通常情况下,很多参数需要手动指定(如k-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。
-
API
sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)
-
对估计器的指定参数值进行详尽搜索
-
estimator: 估计器对象
-
param_grid: 估计器参数(dict){'n_neighbors':[1,3,5]}
-
cv: 指定几折交叉验证
-
fit:输入训练数据
-
score:准确率
-
结果分析:
-
best_score_: 在交叉验证中验证的最好结果
-
best_estimator_: 最好的参数模型
-
cv_results: 每次交叉验证后的测试集准确率结果和训练集准确率结果
-
集成学习方法:随机森林
-
随机森林
集成学习方法:集成学习方法通过建立几个模型组合来解决单一预测问题。他的工作原理是生成多个分类器。各自独立地学习和作出预测。这些预测最后结合成单预测,因此由于任何一个但分类的作出预测。
随机森林: 在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别输出的类别的众数而定。
如:5个数,其中4个为True,1个为False,则结果为True
-
过程
对于N个样本,M个特征
单个数建立:1. 随机在N个样本中选择一个样本,重复N次(样本可能重复)
2.随机在M个特征中选择m个特征
建立10颗决策树,样本,特征大多不一样。且在抽取中是随机有放回的抽样(bootstrap抽样)
-
API
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, bootstrap=True, random_state=None)
-
n_estimators:随机森林分类器,integer,optional(default=10) 森林里的树木数量 120,200,300,500,800,1200
-
max_depth:integer或None,可选(默认=无) 树的最大深度,5,8,15,25,30
-
max_features='auto',每个决策树的最大特征数量
-
-
优点
-
在当前所有算法中,准确率最好
-
能够有效运行在大数据集上
-
能够处理具有高维持的输入样本,而且不需要降维
-
能够评估各个特征在分类问题上的重要性
回归算法
线性回归
通过一个或者多个自变量与因变量之间进行建模的回归分析。其中可以为一个或多个自变量之间的线性组合(线性回归的一种)
一元线性回归:涉及到的变量只有一个
多元线性回归:涉及到的变量两个或多个
通用公式:
线性关系模型
一个通过属性的线性组合来进行预测的函数:
w为权重,b为偏置项,可以理解为:w0 x 1
-
二维:直线关系 y=kx+b
-
三维:特征,目标值,平面关系
损失函数(误差大小)
-
定义:最小二乘法
-
方法
-
正规方程
,为特征值矩阵,为目标值矩阵 -
梯度下降
思想:沿着函数下降的方向找,最后就能找到山谷的最低点,然后更新w值。
使用:面对训练数据规模十分庞大的任务
-
API
特点:线性回归器是最为简单、易用的回归模型。从某种程度上限制了使用,尽管如此,在不知道特征之间关系的前提下,我们仍然使用线性回归器作为大多数系统的首要选择。
-
sklearn.linear_model.LinearRegression() 普通最小二乘线性回归,coef:回归系数
场景:小规模数据,不能解决拟合问题)
-
sklearn.linear_model.SGDRegressor() 通过使用SGD最小化线性模型,coef:回归系数
场景:大规模数据
-
回归性能评估
(均方误差MSE)评价机制:
为预测值,为真实值。API:mean_squred_error(y_true, y_pred) 均方差回归损失
-
y_true:真实值
-
y_pred: 预测值
-
return: 浮点数结果
注:真实值、预测值均为标准化之前的值。
-
-
解决模型复杂(或过拟合)的方法
L2正则化
作用:可以使得W的每个元素都很小,都接近于0
优点:越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象
Ridge:岭回归(带有正则化的回归)
-
API
sklearn.linear_model.Ridge(alpha=1.0)
-
alpha: 正则化力度
-
coef_:回归系数
-
共 2 条评论关于 “机器学习基础篇_2/2”