首页 > 其他分享 >【机器学习】2.多参数的回归

【机器学习】2.多参数的回归

时间:2023-09-23 11:11:34浏览次数:41  
标签:机器 特征 梯度 回归 frac 参数 alpha theta 收敛

多维特征

对于一个线性回归来说,可能涉及的参数往往不止一个。
利用房价模型的例子,我们可能会用到房子的面积、房间数量、建造时间等多个特征来预测房价。

多维特征的表示

在多维特征的情况下,我们有以下表示方法
\(n\):特征的数量
\(x^{(i)}\):第\(i\)个训练样本,即特征矩阵的第\(i\)行,是一个向量
\(x^{(i)}_j\):第\(i\)个训练样本的第\(j\)个特征,即特征矩阵的第\(i\)行第\(j\)列,是一个实数

多维特征的假设函数

对于多维特征的情况,我们的假设函数可以表示为

\[h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2 + \cdots + \theta_nx_n \]

或写作

\[h_\theta(x) = \theta^Tx \]

其中,\(x_0 = 1\),\(\theta_0\)是偏置项。

多变量梯度下降

算法目标

对于多维特征的情况,我们的目标是找到一组参数\(\theta\),使得代价函数\(J(\theta)\)最小。

算法描述

多变量梯度下降算法描述如下:
原始形式:

\[\theta_j := \theta_j - \alpha\frac{\partial J(\theta_0, \theta_1, \cdots, \theta_n)}{\partial \theta_j} \]

带入代价函数:

\[\theta_j := \theta_j - \alpha\frac{1}{2m}\frac{\partial}{\partial \theta_j}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 \]

求导后:

\[\theta_j := \theta_j - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \]

梯度下降法的实践

特征缩放

在多维特征的情况下,我们需要对特征进行缩放,使得各个特征的取值范围相近,这样可以加快梯度下降的收敛速度。

在房屋价格的例子中,尺寸的取值范围可能是100-2000平方英尺,而卧室数量的取值范围可能是1-5间,绘制出的代价函数图像可能是一个很扁的碗状图,这样梯度下降的收敛速度会很慢。

img

特征缩放的方法

以特征值\(x_1\)为例,设\(x_1\)的取值范围为300-2000,可以使用的特征缩放方法有以下几种:

  1. 将特征值除以最大值,使得特征值的范围在0-1之间

\[x_1' = \frac{x_1}{2000} \]

  1. 均值归一化,将特征值减去均值,再除以最大值与最小值的差,使得特征值的范围在-1到1之间

\[x_1' = \frac{x_1 - \mu}{2000-300} \]

  1. Z-score归一化,将特征值减去均值,再除以标准差,使得特征值的范围在-1到1之间

标准差:\(\sigma = \sqrt{\frac{1}{m}\sum_{i=1}^m(x_i - \mu)^2}\)

\[x_1' = \frac{x_1 - \mu}{\sigma} \]

学习率

收敛的判断

根据迭代次数和代价函数的值,可以绘制学习曲线。

img

如果梯度下降正确工作,则代价函数应该随着迭代次数的增加而减小,如果代价函数随着迭代次数的增加而增大,则可能是学习率\(\alpha\)过大导致的,此时需要减小学习率。

当代价函数的值几乎不再变化时,可以认为梯度下降已经收敛,此时可以停止迭代。

自动收敛

如果学习率\(\alpha\)设置得合理,梯度下降算法可以自动收敛,此时不需要手动设置迭代次数。
设置自动收敛的阈值\(\epsilon\),当两次迭代的代价函数的差值小于\(\epsilon\)时,认为梯度下降已经收敛,此时可以停止迭代。

通常\(\epsilon\)的取值为\(10^{-3}\)、\(10^{-6}\)或\(10^{-10}\)

学习率的选择

梯度下降算法中每次迭代受到学习率\(\alpha\)的影响:

  • 如果\(\alpha\)过小,则梯度下降收敛速度很慢
  • 如果\(\alpha\)过大,则梯度下降可能不会收敛,甚至会发散

常用的学习率包括:
0.01、0.03、0.1、0.3、1、3、10

通过尝试不同的学习率,可以选择出合适的学习率。

特征工程和多项式回归

特征工程

特征工程是机器学习中非常重要的一部分,特征工程是利用相关知识来设计新特征,通过变化或者组合原有特征,使得特征更加适合机器学习算法。

以房价预测为例,我们可以通过房屋面积的长和宽来计算房屋面积,这样可以得到一个新的特征,即房屋面积。

设房屋面积为\(x_1\),房间数量为\(x_2\),则

\[f_1 = w_1 x_1 + w_2 x_2 + b\\ x_3 = x_1 x_2\\ f_2 = w_1 x_1 + w_2 x_2 + w_3 x_3 + b \]

多项式回归

在实际应用中,我们可能会遇到非线性的数据,此时可以使用多项式回归。

\[h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1^2 + \theta_4x_2^2 + \theta_5x_1x_2 + \cdots \]

需要注意的是,多项式回归中的特征缩放非常重要,如果不进行特征缩放,可能会导致梯度下降收敛速度很慢。

标签:机器,特征,梯度,回归,frac,参数,alpha,theta,收敛
From: https://www.cnblogs.com/agitm/p/17724019.html

相关文章

  • 电压放大器如何选型号和参数配置
    选择适合的电压放大器型号和配置参数是设计电子系统中至关重要的一步。电压放大器是一种关键的电子器件,用于将输入电压信号放大到所需的输出电压级别。下面西安安泰将详细介绍如何选择电压放大器的型号和配置参数。 确定应用需求:首先,需要明确你的应用需求。了解你想要放大......
  • python mimetext 参数
    Pythonmimetext参数详解在Python3中,使用mimetext模块可以轻松地创建电子邮件消息。在发送电子邮件时,我们需要设置邮件的主题、收件人、发件人、正文和附件等信息。而mimetext模块就是用来处理邮件中的文本和附件的。本文将详细介绍mimetext模块中的参数及其用法。安装步骤pip3......
  • 使用人工智能聊天机器人时要注意这些!(配提问技巧)
    这两年ChatGPT可谓是火遍了互联网,在微博等社交平台上能看到很多网友晒出了与ChatGPT对话的截图,精准、恰当的回答让网友们都倍感新鲜。但是有很多人把人工智能聊天机器人当成玩具,有很多经典犯错回答,不少网友戏称是“人工智障”。其实人工智能聊天机器人到底是人工智能还是“人工智障......
  • 企业微信机器人Javascript调用例子
    constkey=""constoWX_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='+key;constsent_msg={'msgtype':'text','text':{......
  • python中,如何优雅的解析和管理命令行参数
    背景我们在编写python程序时,程序中经常会提供多种功能或者模式,在实际使用时根据不同的参数使用不同的功能。那么如何获取命令行传入进来的参数呢?一般方法一般情况下,我们会使用sys模块,如......
  • 编写一个接受两个字符串参数的脚本。脚本应检查第一个字符串是否包含第二个参数的子串
    方法一:#!/bin/bash#检查是否提供了足够的参数if[$#-ne2];thenecho"用法:$0<主字符串><子串>"exit1fi#从命令行参数中获取主字符串和子串main_string="$1"substring="$2"#检查主字符串是否包含子串if[[$main_string==*$substring*]];then......
  • Echarts图表基本参数设置说明
    ECharts是一款强大的数据可视化库,可以通过JavaScript构建交互式和动态的图表。在使用ECharts进行图表绘制时,我们可以通过设置各种参数来达到我们想要的效果。下面是对ECharts中常用的图表参数的详细介绍说明。1.全局配置参数:-title:图表标题,可以设置主标题和副标题。......
  • cmake之解析宏或者函数参数
    本文将介绍cmake如何解析函数或者宏对应的参数列表语法查询打开cmake手册,查询cmake_parse_arguments关键字即可,如下图语法cmake_parse_arguments(<prefix><options><one_value_keywords><multi_value_keywords><args>...)cmake_parse_argum......
  • 机器学习初学与复习最佳教材—机器学习实战
    https://book.douban.com/subject/35218199/半年多几乎没碰机器学习,都快忘光了,虽然可能以后不做这方面研究,但作为实用小工具或者说基本技能来说还是很不错的!这本书的课后习题还可以用来复习概念。所以就有空整理一下里面的概念啦。《机器学习实战:基于Scikit-Learn、Keras和Tenso......
  • 【小睿的ML之路】Seaborn-回归分析绘图
    %matplotlibinline#这是一个魔术命令,用于在JupyterNotebook中显示matplotlib生成的图形。importseabornassns#导入seaborn库,用于绘制统计图形。importnumpyasnp#导入numpy库,用于处理数值计算。importpandasaspd#导入pandas库,用于处理数据。impo......