Machine Learning Foundations 作业二 Question 4

本文介绍了使用Python实现机器学习中不同VC维界的误差界限计算方法。通过具体函数的实现和参数设置,对比了OriginalVCBound、RademacherPenaltyBound、VariantVCBound等五种不同的界限,并给出了每种界限的具体计算结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

台大在线课程的Machine Learning Foundations,作业二的Question 4



如何解这道题目?我们可以写一支python解这道题目。如,求Original VC Boundepsilon(error)的上限为多少,定义一个function

def errorForOriginalVcBound (N, sigma):
然后将数学式子写成代码,放进去就好了。但这时候,遇到一个问题,如何用程序表达mH还记得VC Dimension吗?:



我们可以将
mH(N)换成N^dvc,如此一来,式子就写成:


于是,我们的function,多了一个参数,叫dvc

def errorForOriginalVcBound (dvc, N, sigma):
也可以用Python定义一个functionmH,覆用之。

def mH (N, dvc):
    return math.pow (N, dvc)

Error for Original VC Bound的实作

def errorForOriginalVcBound (dvc, N, sigma):
    value = 4 * mH (2*N, dvc) / sigma
    value = 8 * np.log (value) / N
    value = math.sqrt (value)
    return value

接下来是
Error for Rademacher Penalty Bound的实作,

def errorForRademacherPenaltyBound (dvc, N, sigma):
    value1 = 2 * N * mH (N, dvc)
    value1 = 2 * np.log (value1) / N
    value1 = math.sqrt (value1)

    value2 = (2/N) * np.log (1/sigma)
    value2 = math.sqrt (value2)

    value3 = 1/N

    return value1 + value2 + value3
再来是Error for Parrondo and Van den Broek的实作。但我们发现一个问题,就是公式的左右边,都有一个epsilon。有两种解法,

1种解法,是用一元二次求x解的公式,x就是epsilon

ax^2 + bx + c = 0

这样,就可以推导出,只有左边有epsilon的式子出来。于是,我们就把式子的右边,写成代码即可。这是数学家的作法。

2种解法,将epsilon当成一个参数。至于要给什么样的值,我们可以先观察其它的式子算出来的结果,再做决定。我选择第2种解法,于是,Error for Parrondo and Van den Broek的实作如下:

def errorForParrondoAndVanDenBroek (dvc, N, sigma, epsilon):
    value = 6 * mH (2*N, dvc) / sigma
    value = 2 * epsilon + np.log (value)
    value = math.sqrt ((1/N) * value)
    return value

对于
Devroye而言,也是公式的左右两边,都有一个epsilon。实作的方法与刚才的Parrondo相同:

def errorForDevroye (dvc, N, sigma, epsilon):
    value = np.log (4) + dvc * np.log (N * N) - np.log (epsilon)
    value = 4 * epsilon * (1 + epsilon) + value
    value = (1/(2*N)) * value
    value = math.sqrt (value)
    return value
这里有一个问题是,为何function的第一行要这么写?那是因为当N=10000时,直接计算,数字太大,计算机无法处理。我们可用以用对数运算,将式子拆解成计算机可以处理的单元,如下:



最后是Variant VC Bound的实作:

def errorVariantVcBound (dvc, N, sigma):
    value = 2 * mH (N, dvc)
    value = value / math.sqrt (sigma)
    value = np.log (value)
    value = (16.0 / N) * value
    value = math.sqrt (value)
    return value
所以,我们现在有5functions,依据题目的顺序排列:
errorForOriginalVcBound
errorForRademacherPenaltyBound
errorForParrondoAndVanDenBroek
errorForDevroye
errorVariantVcBound

其中,errorForParrondoAndVanDenBroekerrorForDevroye因为都需要epsilon参数,而我们不知道该给那一个值,所以暂不管它。先求其它3个:

    dvc = 50
    sigma = 0.05
    N = 10000

    value1 = errorForOriginalVcBound (dvc, N, sigma)
    print ("Error for Original VC Bound          = ", value1)

    value2 = errorForRademacherPenaltyBound (dvc, N, sigma)
    print ("Error for Rademacher Penalty Bound   = ", value2)

    value3 = errorVariantVcBound (dvc, N, sigma)
    print ("Error for Variant VC Bound           = ", value3)

执行结果




发现最小的值是0.3313。我们可以用这个最小的值,当作是epsilon的参数,用在errorForParrondoAndVanDenBroekerrorForDevroye

    epsilon = min ([value1, value2, value3])
    print ("epsilon = ", epsilon)

    value4 = errorForParrondoAndVanDenBroek (dvc, N, sigma, epsilon)
    print ("Error for Parrondo and Van den Broek = ", value4)

    value5 = errorForDevroye (dvc, N, sigma, epsilon)
    print ("Error for Devroye                    = ", value5)
执行结果



所以,Devroye公式算出来的值,是最小的。



-Count

机器学习是计算机科学中的一个重要分支,旨在通过设计和分析算法,使计算机系统能够从数据中自动学习和提高,并对未见过的数据提出准确的预测。在机器学习中,数据是关键。该领域利用计算方法对大量数据进行处理和分析,以发现数据中的模式和趋势。通过对这些数据模式进行建模和预测,机器学习使计算机系统能够自动地改进自己的决策和表现。 “基础机器学习”(Foundations of Machine Learning)是机器学习领域中的一个重要概念。它涵盖了机器学习的基本原理和算法,包括如何构建、评估和优化机器学习模型。这些基础理论和方法对于开发和使用先进的机器学习系统至关重要。 在基础机器学习中,重要的概念包括监督学习、无监督学习、半监督学习和强化学习。监督学习是一种从已知的训练数据中构建模型的方法,用于对新数据进行预测。无监督学习是一种从未标记的数据中挖掘模式的方法,而半监督学习则是两者的结合。强化学习则是一种通过与环境交互来学习的方法,根据奖励信号调整模型。 此外,基础机器学习还包括模型评估和选择、特征选择和提取、优化方法等。这些技术和方法使机器学习更加健壮和可靠,并为开发新的机器学习算法提供基础。 总的来说,基础机器学习是机器学习领域的核心概念之一,对于发展高级机器学习和人工智能系统至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值