目录
-
- 一、监督学习
-
- 二、无监督学习
-
- 2.1 聚类
- 2.2 降维
- 2.3 Jupter notebooks
- 三、线性回归模型
-
- 3.1 线性回归流程
- 3.2 代价函数公式
- 3.3 理解代价函数
- 3.4 可视化代价函数
- 3.5 可视化举例
- 四、梯度下降
-
- 4.1 梯度下降的实现
- 4.2 理解梯度下降
- 4.3 学习率Alpha
- 4.4 用于线性回归的梯度下降
- 4.5 运用梯度下降
- 五、多维特征
-
- 5.1 向量化(矢量化)
- 5.2 向量化背后的实现
- 5.3 用于多元线性回归的梯度下降法
- 六、特征缩放
-
- 6.1 如何缩放特征
- 6.2 如何判断梯度下降是否正在收敛
- 6.3 如何设置学习率
- 6.4 特征工程
- 6.5 多项式回归
- 6.6 Scikit-learn
- 七、逻辑回归
-
- 八、逻辑回归中的代价函数
-
- 九、逻辑回归 实现梯度下降
- 十、过拟合问题
-
- 10.1 解决过拟合
- 10.2 正则化
- 10.3 用于线性回归的正则方法
- 10.3 用于逻辑回归的正则方法
机器学习 (ML) 是人工智能 (AI) 的一部分,属于计算科学领域,专门分析和解释数据的模式及结构,以实现无需人工交互即可完成学习、推理和决策等行为的目的。简单来说,机器学习即支持用户向计算机算法馈送大量数据,然后让计算机分析这些数据,并仅根据输入数据给出数据驱动型建议和决策。如果算法识别出任何更正,它会整合更正信息,改进未来决策。
一、监督学习
监督型学习(Supervised learning)就是有训练样本,带有属性标签,也可以理解成样本有输入有输出。
- 监督学习算法学习预测输入、输出或x到y的映射
- 监督学习解决的是已知的问题,即用模型预测已知的结果
- 算法从有标记数据中学习。在理解数据之后,该算法通过将模式与未标记的新数据关联来确定应该给新数据赋哪种标签。
1.1 回归算法
回归是一种监督学习方法,在这种方法中,对算法进行训练,以预测连续范围内可能值的输出,即通过回归可以预测出我们想要的结果
作用:用于房价预测、股价预测、身高-体重预测等。
下图是根据房子的大小进行预测房子的价格
1.2 分类算法
分类是一种基于一个或多个自变量确定因变量所属类别的技术。即通过多个变量的输入,去确定该示例输入什么类别。
分类问题出现在我们训练模型预测定性目标的时候。就是说,我们在训练模型进行定性预测之前,要先对其输出结果分类。比如人类的性别、水果的种类等、模型只需要输出或不在这一类中即可。
- 作用:包括垃圾邮件检测、客户流失预测、情感分析、犬种检测等。
下图是根据多种输入判断患者是否患有恶行肿瘤。
二、无监督学习
在数据集中,我们的工作是找到某种结构或者某种模式,或者只是在数据中找到一些有趣的东西,这就是无监督学习.
- 总结:获取没有有标签的数据并尝试将他们自动分组到集群中
2.1 聚类
无监督学习相关文章
聚类:事先不知道样本的类别,通过某种办法,把相似的样本放在一起归位一类。
2.2 降维
降维看上去很像压缩。这是为了在尽可能保存相关的结构的同时降低数据的复杂度。
2.3 Jupter notebooks
Coursera
三、线性回归模型
3.1 线性回归流程
- 训练集 (包括输入特征【features】和输出目标【targets】)(输出目标是从中学习的模型的正确的答案)
- 训练模型输入训练集,学习算法的输入特征和输出目标,即使用学习算法产生一个函数即模型
-
- 产生的函数写作f
- f曾经被称作假设【hypothesis】,
- f的任务是获取一个新的输入x和输出并估计或预测,输出结果成为 y-hat
- f即为模型,x称为输入或输入特征,模型的预测y-hat是y的估计值,y是指实际真实值。
- 因此模型f对x的输入,会产生一个对真实值的预测y-hat
- 上图f(x) = wx + b 即为一个线性回归模型
- 具有一个变量的线性模型称为单变量线性回归
3.2 代价函数公式
拟合训练集的模型是: f w , b ( x ) = w x + b f_{w,b}(x)=wx+b fw,b(x)=wx+b
- w、b称为模型的参数,通过改变参数用以训练改进模型
- w和b亦被称为系数或权重
- w、b不同的选择会得到不同的函数f
- 成本函数采用预测 y-hat 减去 y 得到误差
- 然后计算误差的平方
- 最后测量整个训练集的误差
- 对总误差取平均值,通常除以2m
- 最终得出的就是成本函数
- 成本函数的作用就是在模型的预测和y的实际真实值之间衡量差异,知道如何进行改善。
- 平方误差成本函数是目前最通常用于线性回归的函数
3.3 理解代价函数
- 通过找到w和b使代价函数J最小
- 先令参数b为0,即 f w ( x ) = w x ( b = 0 ) f_w(x) = wx(b=0) fw(x)=wx(b=0)
- 找到w的值,尽可能的令J最小
- f是x的一个函数,y的取值由x的输入决定
- J是w的一个函数,w是函数的斜率,w的改变会影响到J的最终结果
下图是w=1的情况下,并且真实值为(1,1),(2,2),(3,3),模型完全拟合的情况,在w=1时,J为0.
w为其他值时的图像如下
通过w的不断改变,我们就可以根据J的最低值找到最合适的w,这就是代价函数的作用
3.4 可视化代价函数
- 本次使用原始模型,即b不为0 f w , b ( x ) = w x + b f_{w,b}(x) = wx+b fw,b(x)=wx+b
- 通过不同的w、b会生成一个三维的曲面模型,如下图,最低点就是我们要找的w、b
- 也可以通过等高线图的最中心找到合适的w、b
3.5 可视化举例
- 通过在等高线上找出不同的点吗,从而绘制不同的模型,最终找到中心点是最合适的,贯穿了大多数真实值
四、梯度下降
- 梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最陡下降法,但是不该与近似积分的最陡下降法(英语:Method of steepest descent)混淆。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。
- 作用:可以用来尝试最小化任何函数
小人下山实验
- 随便选择一个w、b从而确定位置
- 然后小人旋转360度寻找一个位置下山
- 走出一步之后,再次旋转360度,走出第二步,以此类推
- 最终小人走到了山低
- 但是不同的选择会有不同的山低,是一个有趣的特性!容易陷入局部最小值!
4.1 梯度下降的实现
- 对w与b同时进行求偏导
- 然后更新w、b的值,依次传递下去,最好的方式就是同步更新!!!
- 梯度下降算法如下:
w = w − a α α w J ( w , b ) w = w - a \frac{\alpha }{\alpha_w}J(w,b) w=w−aαwαJ(w,b)
b = b − a α α b J ( w , b ) b = b - a \frac{\alpha }{\alpha_b}J(w,b) b=b−aαbαJ(w,b)
- a是Alpha,是学习率,用于控制更新模型参数w和b的步长
4.2 理解梯度下降
- 当w在最低点右侧时,此时导数大于0,而学习率大于0,因此相减之后,w会变小,逐渐接近最小J
- 当w在最低点左侧时,此时导数小于0,而学习率大于0,因此相减之后,w会变大,逐渐接近最小J
这就是使用偏导数的意义所在!
4.3 学习率Alpha
- 如果a特别小的情况下:
梯度下降速度会特别慢,将会需要特别长的时间
- 如果特别大
梯度下降会特别快,可能会直接移动到最低点的另外一侧,会反复震荡,冲过但是永远不会到达最小值。
4.4 用于线性回归的梯度下降
梯度计算公式如下图
通过反复对w、b执行更新,直到收敛
4.5 运用梯度下降
选择w、b之后,不断运行梯度下降,直到找出最合适的模型!
五、多维特征
多维:即有多个变量影响输出结果
多元线性回归模型
5.1 向量化(矢量化)
Numpy函数: .dot(w,x) 实现两个向量的点乘 可以使代码缩短
5.2 向量化背后的实现
dot 函数该功能是在计算机硬件中通过矢量化实现的
可以实现并行运算
5.3 用于多元线性回归的梯度下降法
- w为向量
- J为损失函数
- 将之前的数字w替换为了向量w用作梯度计算
多元回归的梯度下降:
- 对w向量中的每一个w进行单独偏导 然后同步更新新的向量w,进而实现梯度下降
六、特征缩放
该技术可以使梯度下降运行更快
就是将两个变量之间调整到合适的 彼此可以比较的值的范围
也可以理解为在坐标轴上的步长要合适,比例不要过大,如2000:1
尽量是1:1的比例大小
不同的特征,取值范围非常不同时,可能会导致梯度下降运行缓慢,但是重新缩放不同的特征时,使它们都具有可比较的值的范围,下降速度会非常快!
6.1 如何缩放特征
- 方法一:每个数除以区间的最大值范围,从而其区间属于[0,1]
- 方法二:(均值归一化)用每一个特征值减去平均值,然后除以区间大小,u为平均值
- 方法三:Z-score标准化:σ为标准差,u为平均值,计算为每一个特征值减去平均值除以标准差
6.2 如何判断梯度下降是否正在收敛
下图曲线为学习曲线,横轴为迭代次数,纵轴为代价值
- 如果梯度下降正常,那么每次迭代后J会减少
- 如果J在迭代之后增加,说明Alpha选择不正确,其值太大了,出现了之前讲述的震荡现象。
图右侧使用了一个阈值0.001,如果小于这个阈值,则说明开始收敛了
6.3 如何设置学习率
方法:尝试一系列的α值,从0.001,0.0,0.1,1,,,然后将学习率每次逐次提升到之前的三倍
6.4 特征工程
- 创建一个新的特性就是所谓的特征工程中的一个例子
- 通常通过变换或者组合原始特征以使算法更容易
- 如图中的增加了第三个特性,即占地面积x3 = (x1*x2)
6.5 多项式回归
通过使用特征工程和多项式函数,可以为数据提供更好的模型
- 特征值x可以取开根,也可以取幂次方(会需要使用特征缩放)
6.6 Scikit-learn
Scikit-learn是一个非常广泛使用的开源机器学习库,可以用来训练自己的模型。
七、逻辑回归
逻辑回归是一种分类算法
- 逻辑函数Sigmoid:
g ( Z ) = 1 1 + e − 1 , 0 < g ( Z ) < 1 g(_Z) = \frac{1}{1+e^{-1}} , 0g(Z)=1+e−11,0<g(Z)<1
7.1 构建逻辑回归算法
- 建立类似于线性回归的函数,并将其结果值存储在变量z中。
z = f w → , b ( X → ) = w → ⋅ x → + b z = f_{\overrightarrow{w},b}(\overrightarrow{X}) = \overrightarrow{w}\cdot \overrightarrow{x}+b z=fw ,b(X )=w ⋅x +b
- 将z代入到上面的逻辑函数里面即可得到: f w → , b ( X → ) = g ( w → ⋅ x → + b ) = 1 1 + e − ( w → ⋅ x → + b ) f_{\overrightarrow{w},b}(\overrightarrow{X}) = g(\overrightarrow{w}\cdot \overrightarrow{x}+b) = \frac{1}{1+e^{-(\overrightarrow{w}\cdot \overrightarrow{x}+b)}} fw ,b(X )=g(w ⋅x +b)=1+e−(w ⋅x +b)1
上面得到的就是逻辑回归模型,其作用是输入特征或者集合的特征X,并输出一个介于0和1之间的数字。
7.3 决策边界
逻辑回归得出的值就是发生的概率。 其值大于阈值,则会发生,小于阈值,则不会发生。
选择阈值0.5,即当z大于0的时候,其预测结果在坐标轴的右侧,则其预测值为1。当z小于d0的时候,其预测结果为0。
令z=0时可以方便得到决策边界
如图,由两个参数构成,根据线性回归函数的出 z = f = w 1 x 1 + b + w 2 x 2 z = f = w_1x_1 + b + w_2x_2 z=f=w1x1+b+w2x2
那么令z = 0,w1 = w2 = 1,b = -1 ,则 x1+x2 = -3,从而画出其决策边界。
八、逻辑回归中的代价函数
定义损失函数
分析:
纵轴上半部分:如果算法的预测的概率与真实接近为1,那么即表示其损失很小。
f是逻辑回归的输出,因此f始终介于0和1之间,所以log函数只取f=1左侧的图像
纵轴下半部分:损失为1减去x的f的负对数,其函数图像如下图。
当f为0或者非常接近0的时候,损失将会很小,意味着如果真正的标签为0,并且模型的预测非常接近于0,即预测越接近于1,则离真实的0越远。
8.1 简化逻辑回归代价函数
分析:
如果y = 1,则右侧为0,只保留了左侧的函数
如果y = 0,则左侧为0,只保留了右侧的函数
成本函数J如下
九、逻辑回归 实现梯度下降
同线性回归模型中的梯度下降,这个也需要同时更新参数
等偏导求完之后再去相减实现梯度下降。
该梯度下降公式与线性的梯度下降区别在于f的不同。
十、过拟合问题
模型非常适合于训练集,几乎完全重合,因此是过拟合。 亦称为高方差。太过于拟合训练集,导致添加新的数据的话,会出现很大的问题。
采用稍微不同的测试集,就会有完全不同的预测!
10.1 解决过拟合
- 收集更多的训练数据
- 查看是否可以使用更少的功能 ,减少多项式特征的使用,即减少变量
- 正则化(作用是鼓励算法缩小参数,缩小w,而不必将参数设置为恰好为0 )保留所用特征,并且令特征不会产生太大的影响
10.2 正则化
修改成本函数,令w接近于0。
正则化就算将特征参数设置得很小,消除影响。
当特征特别多的时候,成本函数转化为如下图
是:λ/2m
后面加上的部分称为正则化项
λ值指定了相对重要性或相对权衡或在两个目标之间取得平衡。
我们要让左右两个部分都尽可能的小!
lambda 的值如果太小,近乎为0,那么就会出现过拟合
如果特别大,那么w就要相对小,会出现欠拟合,f约等于b
因此λ要选择一个不大不小的值。
引用:机器学习中常常提到的正则化到底是什么意思?
10.3 用于线性回归的正则方法
对正则线性化回归的梯度下降
导数计算过程
10.3 用于逻辑回归的正则方法
成本函数如下图
梯度下降、同步更新