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í)基礎(chǔ)】Python機(jī)器學(xué)習(xí)入門指南(全)

        共 4978字,需瀏覽 10分鐘

         ·

        2021-02-06 16:36

        前言

        機(jī)器學(xué)習(xí) 作為人工智能領(lǐng)域的核心組成,是計(jì)算機(jī)程序?qū)W習(xí)數(shù)據(jù)經(jīng)驗(yàn)以優(yōu)化自身算法,并產(chǎn)生相應(yīng)的“智能化的”建議與決策的過程。

        一個(gè)經(jīng)典的機(jī)器學(xué)習(xí)的定義是:

        A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

        1 機(jī)器學(xué)習(xí)概論

        機(jī)器學(xué)習(xí)是關(guān)于計(jì)算機(jī)基于數(shù)據(jù)分布,學(xué)習(xí)構(gòu)建出概率統(tǒng)計(jì)模型,并運(yùn)用模型對(duì)數(shù)據(jù)進(jìn)行分析與預(yù)測的方法。按照學(xué)習(xí)數(shù)據(jù)分布的方式的不同,主要可以分為監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)

        1.1 監(jiān)督學(xué)習(xí)

        從有標(biāo)注的數(shù)據(jù)(x為變量特征空間, y為標(biāo)簽)中,通過選擇的模型及確定的學(xué)習(xí)策略,再用合適算法計(jì)算后學(xué)習(xí)到最優(yōu)模型,并用模型預(yù)測的過程。

        按照模型預(yù)測結(jié)果Y的取值有限或者無限的,可再進(jìn)一步分為分類模型或者回歸模型;

        1.2 非監(jiān)督學(xué)習(xí):

        從無標(biāo)注的數(shù)據(jù)(x為變量特征空間),通過選擇的模型及確定的學(xué)習(xí)策略,再用合適算法計(jì)算后學(xué)習(xí)到最優(yōu)模型,并用模型發(fā)現(xiàn)數(shù)據(jù)的統(tǒng)計(jì)規(guī)律或者內(nèi)在結(jié)構(gòu)。

        按照應(yīng)用場景,可以分為聚類,降維和關(guān)聯(lián)分析等模型。

        2 機(jī)器學(xué)習(xí)建模流程

        2.1 明確業(yè)務(wù)問題

        明確業(yè)務(wù)問題是機(jī)器學(xué)習(xí)的先決條件,這里需要抽象出現(xiàn)實(shí)業(yè)務(wù)問題的解決方案:需要學(xué)習(xí)什么樣的數(shù)據(jù)作為輸入,目標(biāo)是得到什么樣的模型做決策作為輸出。

        (如:一個(gè)簡單的新聞分類問題的場景,就是學(xué)習(xí)已有的新聞及其類別標(biāo)簽數(shù)據(jù),得到一個(gè)文本分類模型,通過模型對(duì)每天新的新聞做類別預(yù)測,以歸類到每個(gè)新聞?lì)l道。)

        2.2 數(shù)據(jù)選擇:收集及輸入數(shù)據(jù)

        數(shù)據(jù)決定了機(jī)器學(xué)習(xí)結(jié)果的上限,而算法只是盡可能逼近這個(gè)上限。意味著數(shù)據(jù)的質(zhì)量決定了模型的最終效果,在實(shí)際的工業(yè)應(yīng)用中,算法通常占了很小的一部分,大部分工程師的工作都是在找數(shù)據(jù)、提煉數(shù)據(jù)、分析數(shù)據(jù)。數(shù)據(jù)選擇需要關(guān)注的是:

        ① 數(shù)據(jù)的代表性:代表性差的數(shù)據(jù),會(huì)導(dǎo)致模型擬合效果差;

        ② 數(shù)據(jù)時(shí)間范圍:監(jiān)督學(xué)習(xí)的特征變量X及標(biāo)簽Y如與時(shí)間先后有關(guān),則需要明確數(shù)據(jù)時(shí)間窗口,否則可能會(huì)導(dǎo)致數(shù)據(jù)泄漏,即存在和利用因果顛倒的特征變量的現(xiàn)象。(如預(yù)測明天會(huì)不會(huì)下雨,但是訓(xùn)練數(shù)據(jù)引入明天溫濕度情況);

        ③ 數(shù)據(jù)業(yè)務(wù)范圍:明確與任務(wù)相關(guān)的數(shù)據(jù)表范圍,避免缺失代表性數(shù)據(jù)或引入大量無關(guān)數(shù)據(jù)作為噪音;

        2.3 特征工程:數(shù)據(jù)預(yù)處理及特征提取

        特征工程就是將原始數(shù)據(jù)加工轉(zhuǎn)化為模型可用的特征,按技術(shù)手段一般可分為:

        數(shù)據(jù)預(yù)處理:缺失值/異常值處理,數(shù)據(jù)離散化,數(shù)據(jù)標(biāo)準(zhǔn)化等;

        特征提取:特征表示,特征衍生,特征選擇,特征降維等;

        2.3.1 數(shù)據(jù)預(yù)處理

        • 異常值處理

          收集的數(shù)據(jù)由于人為或者自然因素可能引入了異常值(噪音),這會(huì)對(duì)模型學(xué)習(xí)進(jìn)行干擾。

          通常需要處理人為引起的異常值,通過業(yè)務(wù)/技術(shù)手段(如3σ準(zhǔn)則)判定異常值,再由(python、正則式匹配)等方式篩選異常的信息,并結(jié)合業(yè)務(wù)情況刪除或者替換數(shù)值。

        • 缺失值處理

          數(shù)據(jù)缺失的部分,通過結(jié)合業(yè)務(wù)進(jìn)行填充數(shù)值、不做處理或者刪除。根據(jù)缺失率情況及處理方式分為以下情況:

          ① 缺失率較高,并結(jié)合業(yè)務(wù)可以直接刪除該特征變量。經(jīng)驗(yàn)上可以新增一個(gè)bool類型的變量特征記錄該字段的缺失情況,缺失記為1,非缺失記為0;

          ② 缺失率較低,結(jié)合業(yè)務(wù)可使用一些缺失值填充手段,如pandas的fillna方法、訓(xùn)練隨機(jī)森林模型預(yù)測缺失值填充;

          ③ 不做處理:部分模型如隨機(jī)森林、xgboost、lightgbm能夠處理數(shù)據(jù)缺失的情況,不需要對(duì)缺失數(shù)據(jù)做任何的處理。

        • 數(shù)據(jù)離散化

          數(shù)據(jù)離散化能減小算法的時(shí)間和空間開銷(不同算法情況不一),并可以使特征更有業(yè)務(wù)解釋性。

          離散化是將連續(xù)的數(shù)據(jù)進(jìn)行分段,使其變?yōu)橐欢味坞x散化的區(qū)間,分段的原則有等距離、等頻率等方法。

        • 數(shù)據(jù)標(biāo)準(zhǔn)化

          數(shù)據(jù)各個(gè)特征變量的量綱差異很大,可以使用數(shù)據(jù)標(biāo)準(zhǔn)化消除不同分量量綱差異的影響,加速模型收斂的效率。常用的方法有:

          ① min-max 標(biāo)準(zhǔn)化:

          將數(shù)值范圍縮放到(0,1),但沒有改變數(shù)據(jù)分布。max為樣本最大值,min為樣本最小值。

          ② z-score 標(biāo)準(zhǔn)化:

          將數(shù)值范圍縮放到0附近, 經(jīng)過處理的數(shù)據(jù)符合標(biāo)準(zhǔn)正態(tài)分布。u是平均值,σ是標(biāo)準(zhǔn)差。

        2.3.2 特征提取

        • 特征表示

          數(shù)據(jù)需要轉(zhuǎn)換為計(jì)算機(jī)能夠處理的數(shù)值形式。如果數(shù)據(jù)是圖片數(shù)據(jù)需要轉(zhuǎn)換為RGB三維矩陣的表示。

        字符類的數(shù)據(jù)可以用多維數(shù)組表示,有Onehot獨(dú)熱編碼表示、word2vetor分布式表示及bert動(dòng)態(tài)編碼等;

        • 特征衍生

        基礎(chǔ)特征對(duì)樣本信息的表述有限,可通過特征衍生出新含義的特征進(jìn)行補(bǔ)充。特征衍生是對(duì)現(xiàn)有基礎(chǔ)特征的含義進(jìn)行某種處理(聚合/轉(zhuǎn)換之類),常用方法如:

        ① 結(jié)合業(yè)務(wù)的理解做衍生:聚合的方式是指對(duì)字段聚合后求平均值、計(jì)數(shù)、最大值等。比如通過12個(gè)月工資可以加工出:平均月工資,薪資最大值 等等;

        轉(zhuǎn)換的方式是指對(duì)字段間做加減乘除之類。比如通過12個(gè)月工資可以加工出:當(dāng)月工資收入與支出的比值、差值等等;

        ② 使用特征衍生工具:如Featuretools等;

        • 特征選擇

        特征選擇篩選出顯著特征、摒棄非顯著特征。特征選擇方法一般分為三類:

        ① 過濾法:按照特征的發(fā)散性或者相關(guān)性指標(biāo)對(duì)各個(gè)特征進(jìn)行評(píng)分后選擇,如方差驗(yàn)證、相關(guān)系數(shù)、IV值、卡方檢驗(yàn)及信息增益等方法。

        ② 包裝法:每次選擇部分特征迭代訓(xùn)練模型,根據(jù)模型預(yù)測效果評(píng)分選擇特征的去留。

        ③ 嵌入法:使用某些模型進(jìn)行訓(xùn)練,得到各個(gè)特征的權(quán)值系數(shù),根據(jù)權(quán)值系數(shù)從大到小來選擇特征,如XGBOOST特征重要性選擇特征。

        • 特征降維

        如果特征選擇后的特征數(shù)目仍太多,這種情形下經(jīng)常會(huì)有數(shù)據(jù)樣本稀疏、距離計(jì)算困難的問題(稱為 “維數(shù)災(zāi)難”),可以通過特征降維解決。常用的降維方法有:主成分分析法(PCA), 線性判別分析法(LDA)等。

        2.4 模型訓(xùn)練

        模型訓(xùn)練是選擇模型學(xué)習(xí)數(shù)據(jù)分布的過程。這過程還需要依據(jù)訓(xùn)練結(jié)果調(diào)整算法的(超)參數(shù),使得結(jié)果變得更加優(yōu)良。

        • 2.4.1 數(shù)據(jù)集劃分

          訓(xùn)練模型前,一般會(huì)把數(shù)據(jù)集分為訓(xùn)練集和測試集,并可再對(duì)訓(xùn)練集再細(xì)分為訓(xùn)練集和驗(yàn)證集,從而對(duì)模型的泛化能力進(jìn)行評(píng)估。

          ① 訓(xùn)練集(training set):用于運(yùn)行學(xué)習(xí)算法。

          ② 開發(fā)驗(yàn)證集(development set)用于調(diào)整參數(shù),選擇特征以及對(duì)算法其它優(yōu)化。常用的驗(yàn)證方式有交叉驗(yàn)證Cross-validation,留一法等;

          ③ 測試集(test set)用于評(píng)估算法的性能,但不會(huì)據(jù)此改變學(xué)習(xí)算法或參數(shù)。

        • 2.4.2 模型選擇

          常見的機(jī)器學(xué)習(xí)算法如下:

          模型選擇取決于數(shù)據(jù)情況和預(yù)測目標(biāo)。可以訓(xùn)練多個(gè)模型,根據(jù)實(shí)際的效果選擇表現(xiàn)較好的模型或者模型融合。

        模型選擇
        • 2.4.3 模型訓(xùn)練

          訓(xùn)練過程可以通過調(diào)參進(jìn)行優(yōu)化,調(diào)參的過程是一種基于數(shù)據(jù)集、模型和訓(xùn)練過程細(xì)節(jié)的實(shí)證過程。超參數(shù)優(yōu)化需要基于對(duì)算法的原理的理解和經(jīng)驗(yàn),此外還有自動(dòng)調(diào)參技術(shù):網(wǎng)格搜索、隨機(jī)搜索及貝葉斯優(yōu)化等。

        2.5 模型評(píng)估

        模型評(píng)估的標(biāo)準(zhǔn):模型學(xué)習(xí)的目的使學(xué)到的模型對(duì)新數(shù)據(jù)能有很好的預(yù)測能力(泛化能力)?,F(xiàn)實(shí)中通常由訓(xùn)練誤差及測試誤差評(píng)估模型的訓(xùn)練數(shù)據(jù)學(xué)習(xí)程度及泛化能力。

        • 2.5.1 評(píng)估指標(biāo)

          ① 評(píng)估分類模型:常用的評(píng)估標(biāo)準(zhǔn)有查準(zhǔn)率P、查全率R、兩者調(diào)和平均F1-score 等,并由混淆矩陣的統(tǒng)計(jì)相應(yīng)的個(gè)數(shù)計(jì)算出數(shù)值:

          混淆矩陣

          查準(zhǔn)率是指分類器分類正確的正樣本(TP)的個(gè)數(shù)占該分類器所有預(yù)測為正樣本個(gè)數(shù)(TP+FP)的比例;

          查全率是指分類器分類正確的正樣本個(gè)數(shù)(TP)占所有的正樣本個(gè)數(shù)(TP+FN)的比例。

          F1-score是查準(zhǔn)率P、查全率R的調(diào)和平均:

          ② 評(píng)估回歸模型:常用的評(píng)估指標(biāo)有RMSE均方根誤差 等。反饋的是預(yù)測數(shù)值與實(shí)際值的擬合情況。

          ③ 評(píng)估聚類模型:可分為兩類方式,一類將聚類結(jié)果與某個(gè)“參考模型”的結(jié)果進(jìn)行比較,稱為“外部指標(biāo)”(external index):如蘭德指數(shù),F(xiàn)M指數(shù) 等;另一類是直接考察聚類結(jié)果而不利用任何參考模型,稱為“內(nèi)部指標(biāo)”(internal index):如緊湊度、分離度 等。

        • 2.5.2 模型評(píng)估及優(yōu)化

          根據(jù)訓(xùn)練集及測試集的指標(biāo)表現(xiàn),分析原因并對(duì)模型進(jìn)行優(yōu)化,常用的方法有:

        2.6 模型決策

        決策是機(jī)器學(xué)習(xí)最終目的,對(duì)模型預(yù)測信息加以分析解釋,并應(yīng)用于實(shí)際的工作領(lǐng)域。

        需要注意的是工程上是結(jié)果導(dǎo)向,模型在線上運(yùn)行的效果直接決定模型的成敗,不僅僅包括其準(zhǔn)確程度、誤差等情況,還包括其運(yùn)行的速度(時(shí)間復(fù)雜度)、資源消耗程度(空間復(fù)雜度)、穩(wěn)定性的綜合考慮。

        3 ?Python實(shí)戰(zhàn)

        #?這是一個(gè)簡單的demo。使用iris植物的數(shù)據(jù),訓(xùn)練iris分類模型,通過模型預(yù)測識(shí)別品種。
        import?pandas?as?pd

        #?加載數(shù)據(jù)集?
        data?=?load_iris()
        df?=?pd.DataFrame(data.data,?columns=data.feature_names)
        df.head()


        #?使用pandas_profiling庫分析數(shù)據(jù)情況
        import?pandas_profiling

        df.profile_report(title='iris')


        #?劃分標(biāo)簽y,特征x
        y?=?df['class']
        x?=?df.drop('class',?axis=1)


        #劃分訓(xùn)練集,測試集
        from?sklearn.model_selection?import?train_test_split
        train_x,?test_x,?train_y,?test_y?=?train_test_split(x,?y)

        #?模型訓(xùn)練
        from?xgboost?import?XGBClassifier

        #?選擇模型
        xgb?=?XGBClassifier(max_depth=1,?n_estimators=1)

        xgb.fit(train_x,?train_y)

        from?sklearn.metrics?import?precision_score,?recall_score,?f1_score,?accuracy_score,?roc_curve,?auc

        def?model_metrics(model,?x,?y,?pos_label=2):
        ????"""
        ????評(píng)估函數(shù)
        ????"
        ""
        ????yhat?=?model.predict(x)
        ????result?=?{'accuracy_score':accuracy_score(y,?yhat),
        ??????????????'f1_score_macro':?f1_score(y,?yhat,?average?=?"macro"),
        ??????????????'precision':precision_score(y,?yhat,average="macro"),
        ??????????????'recall':recall_score(y,?yhat,average="macro")
        ?????????????}
        ????return?result


        #?模型評(píng)估結(jié)果
        print("TRAIN")
        print(model_metrics(xgb,?train_x,?train_y))

        print("TEST")
        print(model_metrics(xgb,?test_x,?test_y))


        #?模型預(yù)測
        xgb.predict(test_x)


        往期精彩回顧





        本站知識(shí)星球“黃博的機(jī)器學(xué)習(xí)圈子”(92416895)

        本站qq群704220115。

        加入微信群請(qǐng)掃碼:

        瀏覽 76
        點(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>
            国产对白在线观看 | 伦理电影一区二区三区 | 在线成人视频免费观看 | 久久久91精品国产一区苍井空 | 欧美劲爆第一页 | 女生淫荡做爱网站 | 一本色道久久88加勒比—综合 | 欧美性天堂 | 疯狂做受xxxx高潮欧美日本 | www啊啊啊 |