邏輯回歸

邏輯回歸說的是數(shù)據(jù)的分類,估計的是一個離散值

線性回歸用來估計某個連續(xù)值,如果用線性回歸來歸類,預(yù)測值是0.1 0.2 而不是1 和 0。

根據(jù):

如果我們可以計算屬于每個類的觀察概率,我們可以將它分配給具有最高概率的類。

我們需要一個函數(shù)可以將 feature 的 Series 作為輸入?,返回概率值域為[0,1]

Logit函數(shù)

比值比(odds ratio) ,它可以被寫成 ? ,其中的 ? 代表正事件(positive event)的概率.

正事件代表我們想要預(yù)測的事件。比如:病人患有某種疾病的概率。

我們把正事件的類標(biāo)簽設(shè)置為1。比值比的對數(shù)稱為Logit函數(shù),它可以寫成如下形式:

可以證明 ? 的定義域為 [0,1],值域為?

image

logit函數(shù)輸入0到1的值并把它們轉(zhuǎn)換為整個實數(shù)范圍內(nèi)的值,則

輸入的是 特征向量x的條件下,類別y=1的概率, 輸出的是輸出范圍是整個實數(shù)。

模型的線性分量包含設(shè)計矩陣和要估計的參數(shù)矢量。 自變量X的設(shè)計矩陣由N行和K + 1列組成,其中K是模型中指定的獨立變量的數(shù)量。 對于設(shè)計矩陣的每一行,第一個元素xi0 = 1.這是截距或“alpha”。參數(shù)矢量β是長度為K + 1的列向量。有一個參數(shù)對應(yīng)于每個 X列中的K列自變量設(shè)置加上一個β0,用于截距。

因此如果我們想得到特征向量x的條件下,類別y=1的概率的話,就是取 Logit() 的反函數(shù)

Sigmoid 函數(shù)

Sigmoid 圖像:

定義域? ,值域[ 0 , 1]

image

(1)式對應(yīng)的反函數(shù)如果我們只取截距 ? 和1 列數(shù)據(jù),得到

這就是簡單Logistic回歸模型

numpy.ndarray.astype( dtype )

將 array 里的數(shù)據(jù)強制轉(zhuǎn)換類型

  • dtype = int 轉(zhuǎn)換成整形,True -> 1 False -> 0

numpy.reshape(a, newshape, order='C')

將矩陣換個形狀

  • a 要換的矩陣

  • newshape: 可以是 int 類型或者是個 Tuple 類型

    • 如果是 int 類型,返回結(jié)果是該長度的1-D 矩陣

    • 如果是 tuple , 就根據(jù)原矩陣形成新的矩陣,( 行數(shù),列數(shù) )

    • 如果 一個形狀尺寸可以是-1。 在這種情況下,從陣列的長度和剩余尺寸推斷出矩陣的形狀。

  • y_true 指的是 target 的真實值數(shù)據(jù)向量

  • y_pred 指的是 target 的預(yù)測值數(shù)據(jù)向量

    • 可以顯示各項評估值

      • precision 精確率

        精確率是針對我們預(yù)測結(jié)果而言的,它表示的是預(yù)測為正的樣本中有多少是真正的正樣本。那么預(yù)測為正就有兩種可能了,一種就是把正類預(yù)測為正類(TP),另一種就是把負(fù)類預(yù)測為正類(FP),也就是 [圖片上傳失敗...(image-6339d6-1563778534298)]

      • recall 召回率結(jié)果是否完整

      • 召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預(yù)測正確了。那也有兩種可能,一種是把原來的正類預(yù)測成正類(TP),另一種就是把原來的正類預(yù)測為負(fù)類(FN)。

      • [圖片上傳失敗...(image-9a0046-1563778534298)]

      • f1-score F1值是精確度和召回率的調(diào)和平均值(是總體各統(tǒng)計變量倒數(shù)的算術(shù)平均數(shù)的倒數(shù))

      • support 每個標(biāo)簽的出現(xiàn)次數(shù)

    sklearn.metrics.classification_report(y_true, y_pred

    分類報告

    可以用下面的表格再練習(xí)一下

    所有的公式:

    • 準(zhǔn)確性

      Accuracy: Overall, how often is the classifier correct?

      • (TP+TN)/total = (100+50)/165 = 0.91
    • 錯誤率

      Misclassification Rate: Overall, how often is it wrong?

      • (FP+FN)/total = (10+5)/165 = 0.09

      • equivalent to 1 minus Accuracy

      • also known as "Error Rate"

    • True Positive Rate: When it's actually yes, how often does it predict yes?

      • TP/actual yes = 100/105 = 0.95

      • also known as "Sensitivity" or "Recall"

    • fall-out

      False Positive Rate: When it's actually no, how often does it predict yes?

      • FP/actual no = 10/60 = 0.17
    • 特異性

      Specificity: When it's actually no, how often does it predict no?

      • TN/actual no = 50/60 = 0.83

      • equivalent to 1 minus False Positive Rate

    • 精確性

      Precision: When it predicts yes, how often is it correct?

      • TP/predicted yes = 100/110 = 0.91
    • Prevalence: How often does the yes condition actually occur in our sample?

      • actual yes/total = 105/165 = 0.64

    從混淆矩陣中我們可以得到很多關(guān)于預(yù)測結(jié)果的評價數(shù)據(jù)

    image
    True positive(TP) eqv. with hit
    True negative(TN) eqv. with correct rejection
    False positive(FP) eqv. with false alarm, Type I error
    False negative(FN) eqv. with miss, Type II error
    • true positives (TP): These are cases in which we predicted yes (they have the disease), and they do have the disease.

    • true negatives (TN): We predicted no, and they don't have the disease.

    • false positives (FP): We predicted yes, but they don't actually have the disease. (Also known as a "Type I error.")

    • false negatives (FN): We predicted no, but they actually do have the disease. (Also known as a "Type II error.")

    對于該預(yù)測結(jié)果我們得到混淆矩陣的幾個基礎(chǔ)值

    混淆矩陣允許我們做出更多的分析,而不僅僅是局限在正確率。準(zhǔn)確率對于分類器的性能分析來說,并不是一個很好地衡量指標(biāo),因為如果數(shù)據(jù)集不平衡(每一類的數(shù)據(jù)樣本數(shù)量相差太大),很可能會出現(xiàn)誤導(dǎo)性的結(jié)果。例如,如果在一個數(shù)據(jù)集中有95只貓,但是只有5條狗,那么某些分類器很可能偏向于將所有的樣本預(yù)測成貓。整體準(zhǔn)確率為95%,但是實際上該分類器對貓的識別率是100%,而對狗的識別率是0%。

    在這165個案例中,模型預(yù)測的結(jié)果“是”110次,“否”預(yù)測55次。 實際上,樣本中的105名患者患有該疾病,而60名患者沒有。

    image

    假設(shè)有一個用來對是否患病預(yù)測結(jié)果進(jìn)行分類的系統(tǒng),混淆矩陣就是為了進(jìn)一步分析性能而對該算法測試結(jié)果做出的總結(jié)。假設(shè)結(jié)果的混淆矩陣如下圖:

    舉例說明下混淆矩陣

    • y_true 指的是 target 的真實值數(shù)據(jù)向量

    • y_pred 指的是 target 的預(yù)測值數(shù)據(jù)向量

    • 返回值是一個混淆矩陣,分別是false positives,falsenegatives,true positives和true negatives 的值

    sklearn.metrics.confusion_matrix( y_true , y_pred)

    混淆矩陣

    分類結(jié)果評估

    • statsmodels.api.Logit( Y, x_with_intercept)

      • 這里的x_with_intercept 是訓(xùn)練集 中 feature 向量加上一列1的結(jié)果:

    也可以用 Statsmodels.api 里的邏輯回歸

    指的是 回歸擬合 的 特征系數(shù)

    coef_LogisticRegression 類型的屬性值之一

    LogisticRegression.coef_

    指的是 回歸擬合 的截距, 即?

    intercept_LogisticRegression 類型的屬性值之一

    LogisticRegression.intercept_

    返回給定測試集合的平均準(zhǔn)確率(mean accuracy),浮點型數(shù)值

    y_predict 是要預(yù)測的 target 的 i行數(shù)據(jù)向量,y_true 是X 對應(yīng)的真實 target 數(shù)據(jù)向量

    LogisticRegression.score( y_predict,y_true)

    返回的結(jié)果是一個 i 行的數(shù)據(jù),代表每一條 feature 對應(yīng)的預(yù)測結(jié)果。

    輸入值是要預(yù)測的 feature 的 i行數(shù)據(jù)向量

    根據(jù)擬合結(jié)果預(yù)測可能性

    LogisticRegression.predict( X )

    如果參數(shù)是默認(rèn)情況下,返回的第0列是 分類為 0 的概率,第1列是分類為1 的概率

    返回的結(jié)果是一個 i 行 j 列的數(shù)據(jù),其中第i行第j列上的數(shù)值是模型預(yù)測第i個預(yù)測樣本的標(biāo)簽為j的概率。所以每一行的和應(yīng)該等于1.

    輸入值是要預(yù)測的 feature 的 i行數(shù)據(jù)向量

    根據(jù)擬合結(jié)果預(yù)測可能性

    LogisticRegression.predict_proba( X )

    • X 指的是訓(xùn)練集的 feature 數(shù)據(jù)向量

    • Y 訓(xùn)練集中的 target 值的向量

    • 返回的是模型訓(xùn)練的結(jié)果

    模型訓(xùn)練

    LogisticRegression.fit(X, y)

    • C = 1e16

      • C 是正則化強度 Regularization strength 的倒數(shù)。

      • 正則化就是為了防止模型記憶訓(xùn)練集的數(shù)據(jù),而導(dǎo)致預(yù)測結(jié)果的偏差。尤其是在訓(xùn)練集有很多變量但是數(shù)據(jù)個數(shù)少的的時候,模型訓(xùn)練的時候會根據(jù)訓(xùn)練集的數(shù)修改參數(shù)來盡可能擬合數(shù)據(jù),然而我們想要預(yù)測的數(shù)據(jù)往往并沒有訓(xùn)練集數(shù)據(jù)的特點(比如一個特別大的數(shù)),這樣我們得到的模型的預(yù)測能力就會受損。

      • 更具體地說,如果我們的模型遭受(高)方差(即,它過度擬合訓(xùn)練數(shù)據(jù)),我們可以將正則化視為增加偏差。

      • 過多的偏差會導(dǎo)致欠擬合,我們在非正規(guī)化模型中的目標(biāo)是最小化 cost 函數(shù),即,我們希望找到與全局成本最小值相對應(yīng)的特征權(quán)重(w)

      • 如果我們規(guī)范成本函數(shù)(例如,通過L2正則化),我們在我們的成本函數(shù)(J)中增加一個附加值,隨著參數(shù)權(quán)重(w)的值增加而增加; 添加了一個新的超參數(shù) ? 來控制正則化強度。

      • Regularization strength ? 越大參數(shù)在幅度上增加的可能性較小,僅僅是為了調(diào)整數(shù)據(jù)中的小擾動。

    sklearn.linear_model.LogisticRegression()

    邏輯回歸 調(diào)用庫實現(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容