1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        筆記|李宏毅老師機(jī)器學(xué)習(xí)課程,視頻4回歸示例

        共 3987字,需瀏覽 8分鐘

         ·

        2021-03-27 05:51

         是新朋友嗎?記得先點(diǎn)數(shù)據(jù)科學(xué)與人工智能關(guān)注我哦~


        《學(xué)習(xí)筆記》專欄·第4篇

         | MLer

        1965字 | 6分鐘閱讀

        【數(shù)據(jù)科學(xué)與人工智能】開通了機(jī)器學(xué)習(xí),大家可以相互學(xué)習(xí)和交流。請(qǐng)掃描下方二維碼,備注:姓名-ML,添加我為好友,誠(chéng)邀你入群,一起進(jìn)步。

        感謝李宏毅老師的分享,他的課程幫助我更好地學(xué)習(xí)、理解和應(yīng)用機(jī)器學(xué)習(xí)。李老師的網(wǎng)站:http://speech.ee.ntu.edu.tw/~tlkagk/index.html。這個(gè)學(xué)習(xí)筆記是根據(jù)李老師2017年秋季機(jī)器學(xué)習(xí)課程的視頻和講義做的記錄和總結(jié)。因?yàn)檫@個(gè)視頻是在Youtube上面,有些朋友可能無(wú)法觀看,我把它搬運(yùn)下來(lái)放在云盤上面,大家點(diǎn)擊閱讀原文,就可以直接在手機(jī)隨時(shí)隨地觀看了。再次,感謝李老師的付出和貢獻(xiàn)。

        這門課,共有36個(gè)視頻,每個(gè)視頻播放的時(shí)間不一。我按著視頻播放的順序,觀看,聆聽和學(xué)習(xí),并結(jié)合講義,做學(xué)習(xí)筆記。我做學(xué)習(xí)筆記目的有三:

        1 幫助自己學(xué)習(xí)和理解機(jī)器學(xué)習(xí)

        2 記錄機(jī)器學(xué)習(xí)的重要知識(shí)、方法、原理和思想

        3 為傳播機(jī)器學(xué)習(xí)做點(diǎn)事情

        視頻4:回歸示例

        一、梯度下降法尋找best function

        一個(gè)簡(jiǎn)單的一元線性回歸為例,演示梯度下降算法尋找best function的過程。

        程式采用Python3和Jupyter notebook 來(lái)示范。你若是要運(yùn)行這些代碼,請(qǐng)先構(gòu)建好Python和數(shù)據(jù)科學(xué)的工作環(huán)境,推薦安裝Anaconda軟件。

        代碼如下:

        1 導(dǎo)入所需Python庫(kù)

        import numpy as npimport matplotlib.pyplot as plt
        %matplotlib inline

        2 模擬數(shù)據(jù)設(shè)計(jì)和生成

        x_data = [338., 333., 328., 207., 226., 25., 179., 60., 208., 606.]y_data = [640., 633., 619., 393., 428., 27., 193., 66., 226., 1591.]
        # ydata = b + w * xdata

        3 窮舉b和w在一定范圍里面所對(duì)應(yīng)的Loss的值

        x = np.arange(-200, -100, 1) # biasy = np.arange(-5, 5, 0.1) # weightZ = np.zeros((len(x), len(y)))
        for i in range(len(x)): for j in range(len(y)): b = x[i] w = y[j] Z[j][i] = 0 for n in range(len(x_data)): Z[j][i] = Z[j][i] + (y_data[n] - b - w * x_data[n]) ** 2 Z[j][i] = Z[j][i]/len(x_data)

        4 利用梯度下降算法尋找Best function所對(duì)應(yīng)的最佳的參數(shù)w和b

        # 利用梯度下降算法# ydata = b + w * xdatab = -120 # initial bw = -4 # initial wlr = 0.0000001 # learning rateiteration = 100000 # 迭代次數(shù)
        # 記錄初始值,用于可視化b_history = [b]w_history = [w]
        # Iterationsfor i in range(iteration): b_grad = 0.0 w_grad = 0.0 for n in range(len(x_data)): b_grad = b_grad - 2.0 * (y_data[n] - b - w * x_data[n]) * 1.0 w_grad = w_grad - 2.0 * (y_data[n] - b - w * x_data[n]) * x_data[n] # update parameters b = b - lr * b_grad w = w - lr * w_grad # 記錄用來(lái)畫圖的參數(shù)值 b_history.append(b) w_history.append(w) # 繪制可視化plt.contourf(x, y, Z, 50, alpha=0.5, cmap=plt.get_cmap('jet'))plt.plot([-188.4], [2.67], 'x', ms=12, markeredgewidth=3, color='orange')plt.plot(b_history, w_history, 'o-', ms=3, lw=1.5, color='black')plt.xlim(-200, -100)plt.ylim(-5, 5)plt.xlabel(r'$b$', fontsize=16)plt.ylabel(r'$w$', fontsize=16)
        plt.show()

        結(jié)果1:

        橫縱表示bias的取值,縱軸表示weight的取值,不同顏色用于區(qū)分在(b,w)下的Loss值差異,顏色越深,表示Loss值越大。黃色的叉表示最佳的(b,w)。我們當(dāng)前的學(xué)習(xí)速率,經(jīng)過10萬(wàn)次迭代后,沒有找到最佳的(b,w),修改學(xué)習(xí)速率的值,放大10倍后,見結(jié)果2:

        我們發(fā)現(xiàn)離黃色的叉還是有一定距離,我們繼續(xù)把學(xué)習(xí)速率放大10倍,見結(jié)果3:


        此時(shí),已經(jīng)無(wú)法收斂到黃色的叉位置。我們?nèi)绾谓鉀Q這個(gè)問題?這個(gè)時(shí)候要采用梯度下降算法的變體,對(duì)b和w采用不同的學(xué)習(xí)速率來(lái)更新參數(shù)的值,代碼如下:

        # 利用梯度下降算法# 給b,w 特質(zhì)化的學(xué)習(xí)率# ydata = b + w * xdatab = -120 # initial bw = -4 # initial wlr = 1 # learning rateiteration = 100000 # 迭代次數(shù)
        # 記錄初始值,用于可視化b_history = [b]w_history = [w]
        lr_b = 0lr_w = 0
        # Iterationsfor i in range(iteration): b_grad = 0.0 w_grad = 0.0 for n in range(len(x_data)): b_grad = b_grad - 2.0 * (y_data[n] - b - w * x_data[n]) * 1.0 w_grad = w_grad - 2.0 * (y_data[n] - b - w * x_data[n]) * x_data[n] lr_b = lr_b + b_grad ** 2 lr_w = lr_w + w_grad ** 2 # update parameters b = b - lr/np.sqrt(lr_b) * b_grad w = w - lr/np.sqrt(lr_w) * w_grad # 記錄用來(lái)畫圖的參數(shù)值 b_history.append(b) w_history.append(w) # 繪制可視化plt.contourf(x, y, Z, 50, alpha=0.5, cmap=plt.get_cmap('jet'))plt.plot([-188.4], [2.67], 'x', ms=12, markeredgewidth=3, color='orange')plt.plot(b_history, w_history, 'o-', ms=3, lw=1.5, color='black')plt.xlim(-200, -100)plt.ylim(-5, 5)plt.xlabel(r'$b$', fontsize=16)plt.ylabel(r'$w$', fontsize=16)
        plt.show()

        結(jié)果4:

        這時(shí)候,可以收斂到最佳的(b,w)位置了。


        思考題:

        1 梯度下降算法的權(quán)重更新,學(xué)習(xí)速率的設(shè)置會(huì)帶來(lái)什么影響?

        2 學(xué)習(xí)速率有哪些控制方法?


        代碼鏈接:

        https://github.com/wangluqing/MachineLearning/blob/master/ML_Course/regression_demo.ipynb


        朋友們,在學(xué)習(xí)中有什么問題或者想法,請(qǐng)加入機(jī)器學(xué)習(xí)群,大家一起討論,共同進(jìn)步。


        每周一書

        1利用Python進(jìn)行數(shù)據(jù)分析

        2深度學(xué)習(xí)

        3Head First Python 中文版

        4Hands on XGboost

        5數(shù)據(jù)科學(xué)導(dǎo)論:Python語(yǔ)言實(shí)現(xiàn)


        課程視頻點(diǎn)擊                                         

        ↓↓↓

        瀏覽 29
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            无码视频四区 | 无码三级片在线播放 | 九哥草逼视频 | 无码人妻一区二区一牛影视 | 深爱激情婷婷综合基地 | 在线看污视频网站 | 艹艹网站 | 黄色成人小说网站 | 日韩中文字幕有码 | 好爽好紧宝贝别夹h演戏小说 |