做网站做网站,wordpress建立博客,网站开发经验简历,九江濂溪区基本概念
给定输入有为#xff08;x,y#xff09;#xff0c;其中x表示学习特征#xff0c;y表示输出#xff0c;m表示输入总数#xff0c;有监督学习旨在根据输入建立能够预测可能输出的模型#xff0c;大致可以分为回归和分类两种#xff0c;代表可能输出是无限的或…基本概念
给定输入有为x,y其中x表示学习特征y表示输出m表示输入总数有监督学习旨在根据输入建立能够预测可能输出的模型大致可以分为回归和分类两种代表可能输出是无限的或是有限可能。
模型
线性回归模型 通过数据集建立回归模型表现形式为根据数据点建立曲线如y~wxb用于预测无限可能的数字。 分类模型 少量可能输出的预测比如图片内容识别音频字符识别等情况。
基本训练过程为 训练集—学习算法—预测方法
成本函数J
用于衡量建立曲线与数据点的差异大小即曲线的拟合程度通过平均误差成本函数实现— 除m是为了避免误差随着数据集增大而增大而除2是为了后续化简使程序整洁。
构建模型的目的是使成本函数J尽可能小为了简化暂时不考虑b。
梯度下降
找w和b使成本函数最小的方法也是逐步确定拟合曲线的方法将参数初始化为0每次尝试使J减小的方向可视化如下 本质是通过切线找到三维图像的最低点从任意点开始找w和b使成本函数最小的方法如式: 上述两个迭代公式需同步计算上述步骤不断重复直到收敛可以实现成本函数不断向局部最小值更新其中a又称学习率用于控制上下坡的步幅。
线性回归
用向量分别表示输入x和参数wf(x)w·xb特征多数据大时传统计算方法耗时很长故考虑采取其他技术解决。
矢量化
wnp.array([])xnp.array([])生成向量但计算时不使用循环乘法二十直接调用fnp.dot(w,x)b实现点积运算该方法快于for循环使用并行硬件执行快。
梯度下降
w由原有计算式带入可得 相应的b的新计算式为 这里求导平方的2就和成本函数J分母加的2抵消使式子简洁。 另外还有法方程法可用但该方法并不通用只在这种场景下可以无需迭代求解w和b但梯度下降是通用的方法。
特征缩放
单个特征对J的影响很大时会导致曲线变化太大梯度下降来回跳动无法找到极值点如下图 此时我们可以选择缩放特性使整体的特征值大致在同一范围内使用除法或平均归一化方法。
判断收敛
通过学习曲线检查梯度下降是否收敛如下图 可以看出随着迭代次数的上升成本函数不断下降并趋于一个固定值此时可以声明其收敛但该方法的难度在于确定一个阈值。
选择学习率
太小则计算步骤增多太大则可能跨过极值点导致计算永远达不到最小值需要尝试绘图找到合适的值在接近最小值后由于偏导变化步子会自动变小同样需要尝试根据学习曲线图像选择。 如果学习曲线上下摆动则可能是学习率的选择过于大了。
选择特征
可以根据需要创建新特性如果曲线不能线性拟合也可以使用特征多项式提高特征次数获得拟合曲线在该部分特征缩放显得尤其重要。
logistic回归
用于分类拟合一条横S曲线用于二进制的分类具体公式如下其中zw·xb0g(z)1 图像大致如下 该模型输出一个范围0-1的数字代表分类为1的概率多用于广告推荐算法输出概率需设置阈值判定常见的为0.5该阈值称为决策边界也就是z为0时的取值。
损失函数
单个点的损失L表示为
L(z,y) -log(z) y1-log(1-z) y0具体含义为当y1预测为真则无损预测为0则损失极大y0相同预测为1损失极大预测为0无损区间的损失用对数函数覆盖。 上述损失可以简化为 当y1或y0时带入都可化简为初始式子。
总的损失函数J是所有点损失集合的平均数表示为
梯度下降 二者同样需要同时计算与线性回归的区别只在f(x)上一个是fw·xb另一个是指数形式1/1e^(w·xb)。
其他
矢量化特征缩放判断收敛等都与线性回归相同。
正则化
拟合与数据不匹配称为偏差拟合符合数据但变化太多不能适应新数据称为方差或过拟合如下三图分别表示偏差合格拟合和方差。 解决过拟合的方法有 1收集更多数据更大的训练集可以限制函数拟合出摆动没那么大的图像 2减少特征数据不足但特征过多易过拟合 3减少参数大小惩罚所有特征可以使函数更平滑表示公式如图
其中lambda0,使用正则化成本函数的思想为使w尽可能小。
正则化线性回归梯度下降
原有成本函数梯度下降为:
正则化logistic回归梯度下降 总结
本章学习了监督学习的两种算法回归和分类分别用于处理预测无限可能的数字和有限输出的类型本质都是通过对已有的数据建立拟合模型来实现区别在于拟合曲线不同拟合模型内部通过成本函数来衡量预测结果每次模型调整又借助梯度下降实现三者统一完成模型的建立与调整最后通过正则化来解决过拟合。
总结的总结有监督学习的要点标签、拟合曲线、成本函数、梯度下降、正则化另外与无监督学习的区别就在于训练集有标签在特定领域和指定情况效果佳。
另外正则化之前的函数中分母m或2m应该提到最前并改为1/m修改工作量大偷个小懒。