Principes de l'algorithme d'apprentissage automatique et code pratique - Régression logistique (LR)

✍️Niveau 1 - Régression logistique

1. Introduction aux bases de la régression logistique

La régression logistique est un modèle de classification

Il peut être utilisé pour prédire si quelque chose va se produire ou non. Les problèmes de classification sont les problèmes les plus courants dans la vie :

Dans la vie : comme prédire si l'indice composite de Shanghai augmentera demain, s'il pleuvra dans une certaine zone demain, si la pastèque est mûre

Domaine financier : si une certaine transaction est soupçonnée de violer la réglementation, si une certaine entreprise enfreint actuellement la réglementation et s'il y aura des violations à l'avenir.

Internet : les utilisateurs achèteront-ils quelque chose, cliqueront-ils sur quelque chose

Pour les résultats connus, la réponse à la question ci-dessus est uniquement : 0 , 1 {0,1}0 ,1 .

Prenons comme exemple la classification binaire suivante. Pour un ensemble de données donné, il existe une ligne droite qui peut diviser l'ensemble des données en deux parties :

Nom de l'image

À ce stade, la limite de décision est w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2+b=0w1X1+w2X2+b=0 , à ce stade, nous pouvons facilement mettre h ( x ) = w 1 x 1 + w 2 x 2 + b > 0 h(x)=w_1x_1+w_2x_2+b>0h ( x )=w1X1+w2X2+b>Un échantillon de 0 est défini sur 1, sinon il est défini sur 0. Mais il s’agit en réalité d’un processus décisionnel d’un perceptron. Sur cette base, la régression logistique doit ajouter une couchepour trouver la relation entre la probabilité de classification et la variable d'entrée et juger la catégorie par la probabilité.

Nous pouvons d’abord examiner le modèle de régression linéaire :

h ( x ) = w T x + bh(x)=w^T x + bh ( x )=wT x+b

w=[0.1,0.2,0.4,0.2]
b=0.5
def linearRegression(x):
    return sum([x[i]*w[i] for i in range(len(x))])+b
linearRegression([2,1,3,1])

Ajouter une fonction gg au modèle linéaireg,即h ( x ) = g ( w T x + b ) h(x)=g(w^T x+b)h ( x )=g ( wT x+b )g ( z ) = 1 / ( 1 + e − z ) g(z)=1/(1+e^{-z})g ( z )=1/ ( 1+ez ). Cette fonction est la fonction sigmoïde, également appelée fonction logistique.
Il convertit le résultat d'une régression linéaire en valeur de probabilité. À ce momenth ( x ) h(x)h ( x ) représente la probabilité que quelque chose se produise, nous pouvons également l'enregistrer sous la formep ( Y = 1 ∣ x ) p(Y=1|x)p ( Oui=1∣ x )

import numpy as np
def sigmoid(x):
    return 1/(1+np.exp(-x))
sigmoid(linearRegression([2,1,3,1]))

Vous pouvez regarder le graphique de la fonction sigmoïde :

import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.01)
y = sigmoid(x)
plt.plot(x, y)
plt.show()

Grâce au contenu ci-dessus, nous connaissons l'expression de la régression logistique, alors comment pouvons-nous l'optimiser ? x est le paramètre que nous saisissons, qui nous est connu, pour prédire si la pastèque est mûre, nous devons connaître sa taille, sa couleur et d'autres informations. Introduisez-le dans le modèle prédictif et renvoyez une probabilité de savoir si la pastèque est mûre ou non. Alors comment obtenir les paramètres w et b dans le modèle ?

Deuxièmement, la méthode d'optimisation de la régression logistique

1 : Fonction de perte de régression logistique

La régression logistique utilise une fonction de perte d'entropie croisée. Pour la régression logistique binaire générale, la fonction d'entropie croisée est : J ( θ ) = − [ yln ( y ' ) + ( 1 − y ) ln ( 1 − y ' ) ] J (\theta )=-[yln(y`)+(1-y)ln(1-y`)]J ( θ )=[ y l n ( y ' )+( 1y)ln(1y ' )] ,其中y ' y`y ' est la valeur prédite.

Remarque : à certains endroits, la base du log d'entropie croisée est 2, à d'autres endroits, elle est e. Puisque log 2 ( x ) loge ( x ) = log 2 ( e ) \frac{log_2(x)}{log_e(x)}=log_2(e)l o ge( x )l o g2( x )=l o g2( e ) est une constante, donc peu importe ce que c'est, cela n'affectera pas le résultat final, mais en raison de la simplicité du calcul, plus de e sera utilisé.

En fait, ce que nous recherchons, c'est la perte de tous les échantillons en formation, donc :

J ( θ ) = − 1 m ∑ [ yiln ( yi ' ) + ( 1 − yi ) ln ( 1 − yi ' ) ] J(\theta )=-\frac{1}{m}\sum[y_i ln( y_i`)+(1-y_i )ln(1-y_i`)]J ( θ )=m1[ yjeln(yje' )+( 1ouije) l n ( 1ouije' )]

Nom : θ \thetaθ représente l'ensemble de tous les paramètres


Q : Pourquoi ne pas utiliser la méthode des moindres carrés pour l’optimisation ? (Différence au carré)

R : Parce que la fonction de perte est non convexe si la méthode des moindres carrés est utilisée (la définition d'une fonction convexe est qu'il n'y a qu'une seule valeur extrême dans tout le domaine de définition, qui est extrêmement grande ou petite, et la valeur extrême est le maximum ou le minimum de tous). Expliquez plus en
détail. Vous pouvez le voir ici : https://www.zhihu.com/question/65350200

Il peut y avoir de nombreux endroits difficiles à expliquer ou qui nécessitent beaucoup d'espace pour être expliqués. Pour la plupart des connaissances les plus extensibles, je peux toujours mettre un lien. Les amis dans le besoin peuvent en apprendre davantage dans le cadre d'une extension extrascolaire.


Remarque : l'origine de la fonction de perte

En statistiques, supposons que nous disposions déjà d'un ensemble d'échantillons (X, Y), afin de calculer les paramètres pouvant générer cet ensemble d'échantillons. Nous utiliserons généralement la méthode d’estimation du maximum de vraisemblance (une méthode couramment utilisée pour l’estimation des paramètres). Si nous utilisons l'estimation du maximum de vraisemblance, nous avons également besoin d'une estimation hypothétique, ici nous supposons YYY est soumis à la distribution de Bernoulli.

P ( Oui = 1 ∣ X ) = p ( X ) P(Y=1|x)=p(x)P ( Oui)=1∣ x )=p ( x )

P ( Oui = 0 ∣ X ) = 1 − p ( X ) P(Y=0|x)=1-p(x)P ( Oui)=0∣ x )=1p ( x )

Merci à YYY obéit à la distribution de Bernoulli, on peut facilement avoir la fonction de vraisemblance :

L = ∏ [ p ( xi ) yi ] [ 1 − p ( xi ) ] ( 1 − yi ) L=\prod[p(x_i)^{y_i}][1-p(x_i)]^ {(1- y_i)}L=[ p ( xje)ouije] [ 1p ( xje) ]1 ouije

Pour faciliter la résolution, nous pouvons prendre le logarithme des deux côtés :

ln ( L ) = ∑ [ yiln ( p ( xi ) ) + ( 1 − yi ) ln ( 1 − p ( xi ) ) ] ln(L)=\sum[y_iln(p(x_i))+(1-y_i )ln(1-p(x_i))]ln(L)=[ yjel n ( p ( xje))+( 1ouije) l n ( 1p ( xje))]

Tout le monde a découvert que LLL etJJLa relation entre les deux expressions de J , en effet, pourLLRechercher le maximum de L équivaut àJJJ cherche le minimum. C'est également la relation entre la fonction de maximum de vraisemblance et la fonction de perte minimaleque vous entendrez plus tard. Si on vous demande pourquoi la régression logistique utilise l'entropie croisée comme fonction de perte, vous pouvez également répondre : c'est l'hypothèse que YY dans la régression logistiqueY obéit à la distribution de Bernoulli, puis dérivée de l'estimation du maximum de vraisemblance.

2 : Méthode de descente de gradient

La méthode d'optimisation de la régression logistique est la méthode de descente de gradient.
D'un point de vue mathématique, la direction du gradient de la fonction est la direction dans laquelle la fonction croît le plus rapidement, tandis que la direction opposée du gradient est la direction dans laquelle la fonction diminue le plus rapidement. Donc si on veut calculer le minimum d’une fonction, on part dans le sens inverse du gradient de la fonction.
Commençons par présenter brièvement l'algorithme.
Supposons que nous devions optimiser la fonction : f ( X ) = f ( x 1 , . . . , xn ) f(X)=f(x_1,...,x_n)f ( X )=f ( x1,... ,Xn)

Nous initialisons d’abord les variables indépendantes de X ( 0 ) = ( x 1 ( 0 ) , . . . xn ( 0 ) ) X^(0)=(x_1^{(0)},...x_n^{(0 )})X( 0)=( x1( 0 ),... xn( 0 )) pour commencer. Définir un taux d'apprentissageη \etan .
pour touti >= 0 i>=0je>=0 :

S'il est minimisé ffF

x 1 je + 1 = x 1 je − η ∂ f ∂ x 1 ( x ( je ) ) x_1^{i+1}=x_1^{i}-\eta \frac{\partial{f}}{\partial {x_1}}(x^{(i)})X1je + 1=X1jele∂x _1∂f _( x( je ) )

xni + 1 = xni − η ∂ f ∂ xn ( x ( i ) ) x_n^{i+1}=x_n^{i}-\eta \frac{\partial{f}}{\partial{x_n}}( x^{(i)})Xnje + 1=Xnjele∂x _n∂f _( x( je ) ),

A l’inverse, si on demande ffLa valeur maximale de f , alors

x 1 je + 1 = x 1 je + η ∂ f ∂ x 1 ( x ( je ) ) x_1^{i+1}=x_1^{i}+\eta \frac{\partial{f}}{\partial {x_1}}(x^{(i)})X1je + 1=X1je+le∂x _1∂f _( x( je ) ),

xni + 1 = xni + η ∂ f ∂ xn ( x ( i ) ) x_n^{i+1}=x_n^{i}+\eta \frac{\partial{f}}{\partial{x_n}}( x^{(i)})Xnje + 1=Xnje+le∂x _n∂f _( x( je ) ),

Remarque :
De nombreuses personnes ont peut-être entendu parler de la méthode de descente de gradient stochastique, de descente de gradient par lots et de méthode de descente de gradient . La différence entre les trois est très simple, c'est-à-dire que pour examiner les données de l'échantillon, la descente de gradient stochastique calcule la perte d'un échantillon à chaque fois, puis met à
jour le paramètre θ \thetaθ , la descente de gradient par lots consiste à mettre à jour les paramètres en fonction d'un lot d'échantillons à chaque fois, et la descente de gradient concerne tous les échantillons. De manière générale, la descente du gradient stochastique est rapide (les paramètres peuvent être mis à jour à chaque fois qu'un échantillon est calculé, et la vitesse de mise à jour des paramètres est extrêmement rapide). De même, la convergence de la descente de gradient stochastique sera relativement mauvaise et il est facile de tomber dans l'optimum local. À l’inverse, plus on utilise d’échantillons pour la mise à jour des paramètres à chaque fois, plus la vitesse sera lente, mais elle sera plus à même d’atteindre l’optimum global.

3 : Optimisation de la régression logistique

Ce qui précède est la fonction objectif de l'optimisation de la régression logistique J ( w , b ) = − 1 m ∑ [ yiln ( σ ( w T x + b ) ) + ( 1 − yi ) ln ( 1 − σ ( w T x + b ) ) ] J(w,b )=-\frac{1}{m}\sum[y_i ln(\sigma(w^T x +b))+(1-y_i )ln(1-\sigma(w ^T x +b))]J ( w ,b )=m1[ yjel n ( σ ( wT x+b ))+( 1ouije) l n ( 1s ( wT x+b ))]

Nous devons optimiser les paramètres w , bw,bw ,b , de sorte que dans notre échantillon connuX , y X,yX ,La valeur supérieure de y est la plus petite. Autrement dit, nous disons souvent que le risque empirique est le plus faible.

Puisque nous voulons optimiser la fonction objectif, nous devons d’abord J ( w , b ) J(w,b)J ( w ,b ) Dérivation.

Nous devons g = σ ( w T x + b ) g=\sigma(w^T x +b)g=s ( wT x+b )

∂ J ( g ) ∂ g = − ∂ ∂ g [ yln ( g ) + ( 1 − y ) ln ( 1 − g ) ] = − yg + 1 − y 1 − g \frac{\partial J(g)} {\partial g}=-\frac{\partial}{\partial g}[yln(g)+(1-y)ln(1-g)]=-\frac{y}{g}+\frac{ 1-y}{1-g}∂g _J ( g )=∂g _[ y l n ( g )+( 1y)ln(1g )]=goui+1g1oui

Exemple : a = w T x + ba=w^T x +bun=wT x+b

∂ g ∂ une = ∂ ( 1 1 + e − une ) ∂ une = − ( 1 + e − une ) − 2 − e − une = 1 1 + e − une 1 + e − une − 1 1 + e − une = σ ( une ) ( 1 − σ ( une ) ) = g ( 1 − g ) \frac{\partial g}{\partial a}=\frac{\partial ({\frac{1}{1+e^ {-a}}})}{\partial a}=-(1+e^{-a})^{-2}-e^{-a}=\frac{1}{1+e^{- a}}\frac{1+e^{-a}-1}{1+e^{-a}}=\sigma(a)(1-\sigma (a))=g(1-g)une∂g _=une(1 + eun1)=( 1+eune )2eun=1+eun11+eun1+eun1=s ( une ) ( 1s ( une ))=g ( 1g )

On peut trouver que g = σ ( a ) g=\sigma(a)g=σ ( a ) , maisgggaaAprès dérivation de a , il s'avère que c'est g ( 1 − g ) g(1-g)g ( 1g ) , c'est aussi un point particulièrement intéressant de la fonction Sigmoïde. Dans l'optimisation ultérieure de la descente de gradient, cette propriété peut nous aider à réduire de nombreux calculs inutiles.


Avec la base ci-dessus, nous pouvons trouver les paramètres dont nous avons besoin pour optimiser w , bw,bw ,Le gradient de b est vers le haut. Selon la dérivation en chaîne :

∂ J ∂ w = ∂ J ∂ g ∂ g ∂ a ∂ a ∂ w = ( − yg + 1 − y 1 − g ) g ( 1 − g ) x = ( g − y ) x \frac{\partial J} {\partial w}=\frac{\partial J}{\partial g}\frac{\partial g}{\partial a}\frac{\partial a}{\partial w}=(-\frac{y} {g}+\frac{1-y}{1-g})g(1-g)x=(gy)x∂w _∂J _=∂g _∂J _une∂g _∂w _ une=( -goui+1g1oui) g ( 1g ) x=( gy ) x

∂ J ∂ b = ∂ J ∂ g ∂ g ∂ a ∂ a ∂ b = ( − yg + 1 − y 1 − g ) g ( 1 − g ) = ( g − y ) \frac{\partial J}{\ partiel b}=\frac{\partial J}{\partial g}\frac{\partial g}{\partial a}\frac{\partial a}{\partial b}=(-\frac{y}{g }+\frac{1-y}{1-g})g(1-g)=(gy)∂b _∂J _=∂g _∂J _une∂g _∂b _ une=( -goui+1g1oui) g ( 1g )=( goui )

Ce qui précède est une introduction à l’optimisation de la régression logistique. D'après la formule ci-dessus, nous écrivons simplement une fonction optimisée selon la méthode de descente de gradient stochastique.

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
X=datasets.load_iris()['data']
Y=datasets.load_iris()['target']
Y[Y>1]=1
X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.4,stratify=Y)

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def cal_grad(y, t):
    grad = np.sum(t - y) / t.shape[0]
    return grad

def cal_cross_loss(y, t):
    loss=np.sum(-y * np.log(t)- (1 - y) * np.log(1 - t))/t.shape[0]
    return loss

class LR:
    def __init__(self, in_num, lr, iters, train_x, train_y, test_x, test_y):
        self.w = np.random.rand(in_num)
        self.b = np.random.rand(1)
        self.lr = lr
        self.iters = iters
        self.x = train_x
        self.y = train_y
        self.test_x=test_x
        self.test_y=test_y


    def forward(self, x):
        self.a = np.dot(x, self.w) + self.b
        self.g = sigmoid(self.a)
        return self.g

    def backward(self, x, grad):
        w = grad * x
        b = grad
        self.w = self.w - self.lr * w
        self.b = self.b - self.lr * b

    def valid_loss(self):
        pred = sigmoid(np.dot(self.test_x, self.w) + self.b)
        return cal_cross_loss(self.test_y, pred)

    def train_loss(self):
        pred = sigmoid(np.dot(self.x, self.w) + self.b)
        return cal_cross_loss(self.y, pred)

    def train(self):
        for iter in range(self.iters):
            ##这里我采用随机梯度下降的方法

            for i in range(self.x.shape[0]):
                t = self.forward(self.x[i])
                grad = cal_grad(self.y[i], t)
                self.backward(self.x[i], grad)

            train_loss = self.train_loss()
            valid_loss = self.valid_loss()
            if iter%5==0:
                print("当前迭代次数为:", iter, "训练loss:", train_loss, "验证loss:", valid_loss)
model=LR(4,0.01,100,X_train,y_train,X_test,y_test)
model.train()

Ce qui précède est une régression logistique manuscrite, utilisez-la simplement pour votre propre pratique, généralement nous ajustons toujours le package sklearn.

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
X=datasets.load_iris()['data']
Y=datasets.load_iris()['target']
from sklearn.linear_model import LogisticRegression
X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.1,stratify=Y)


model=LogisticRegression(penalty='l2',
                  class_weight=None,
                 random_state=None,  max_iter=100)
model.fit(X_train,y_train)
model.predict_proba(X_test)

pénalité : Le coefficient de pénalité, que nous appelons souvent régularisation, est par défaut "l2", et "l1" peut également être utilisé. Plus tard, nous introduirons la régularisation l1 et l2 de la régression logistique.

class_weight : poids de catégorie, généralement on l'utilise lorsque la classification est déséquilibrée, comme {0:0.1,1:1} signifie que lors du calcul de la perte, la perte de la catégorie 0 est multipliée par 0,1. Ainsi, lorsqu’il y a trop de données dans la catégorie 0, cela équivaut à élever le droit à la catégorie 1. Personnellement, je préfère cela à l'adoption lorsque les classes ne sont pas équilibrées.

max_iter : Le nombre maximum d'itérations.

Ce qui précède est une introduction générale à la régression logistique.Je pense qu'après l'avoir lu, vous aurez une compréhension plus complète de la régression logistique. Mais la régression logistique est un algorithme très étrange. Il semble relativement simple en surface, mais il a beaucoup de connaissances lorsque vous creusez plus profondément. Ne dites pas que vous maîtrisez la régression logistique.

Troisièmement, l'expansion de la régression logistique

1 : Régularisation de la régression logistique

Tout d'abord, introduisons la régularisation, qui peut être ignorée à des fins de comparaison sous cet aspect. Généralement, notre modèle est entraîné pour minimiser le risque empirique. La régularisation consiste à ajouter des contraintes sur cette base (on peut aussi dire qu'elle introduit des connaissances préalables) . Cette contrainte peut guider l'optimisation de la fonction d'erreur pour tendre à choisir de satisfaire les contraintes. La direction de la descente du gradient.

Remarque : Nous pouvons ajouter ici le risque empirique, le risque attendu et le risque structurel.
Le risque empirique est la perte moyenne dans l'ensemble d'apprentissage, et le risque attendu est la perte attendue de la distribution conjointe (X, y). Lorsque le nombre d'échantillons N tend vers l'infini, le risque empirique tend également vers la direction attendue du vent. . L'apprentissage automatique permet d'estimer le risque attendu grâce au risque empirique.
Le risque structurel consiste à empêcher le surajustement et à ajouter des termes réguliers basés sur le risque empirique.

Les régularisations L1 et L2 sont courantes dans la régression logistique.

Ajouter la somme de la valeur absolue du paramètre w

L 1 : J ( θ ) = − 1 m ∑ [ yiln ( yi ' ) + ( 1 − yi ) ln ( 1 − yi ' ) ] + ∣ w ∣ L1:J(\theta )=-\frac{1} {m}\sum[y_i ln(y_i`)+(1-y_i )ln(1-y_i`)]+|w|L 1 : J ( θ )=m1[ yjeln(yje' )+( 1ouije) l n ( 1ouije' )]+w

plus le paramètre w et la somme des carrés

L 2 : J ( θ ) = − 1 m ∑ [ yiln ( yi ' ) + ( 1 − yi ) ln ( 1 − yi ' ) ] + ∣ ∣ w 2 ∣ ∣ L2:J(\theta )=-\frac {1}{m}\sum[y_i ln(y_i`)+(1-y_i )ln(1-y_i`)]+||w^2||L 2 J ( θ )=m1[ yjeln(yje' )+( 1ouije) l n ( 1ouije' )]+∣∣w _2 ∣∣

Prendre L 2 L2L 2 à titre d'exemple, la fonction objectif de notre optimisation n'est plus seulement le risque empirique, nous devons aussi∣ ∣ w 2 ∣ ∣ ||w^2||∣∣w _2 ∣∣Risque empirique minimum sur la base la plus petite. Prendre l'exemple de notre vie, c'est réaliser une chose sur la base du coût minimum, qui est certainement le plus raisonnable.

Cela semble facile si vous arrivez ici, mais généralement les gens vous demanderont :

1:L 1 L1L1 , L2L2Quelle est la base théorique de la régularisation L2 ?

2 : Pourquoi L1 L1Régularisation L1 sujette aux valeurs discrètes ?

Tucao : ajoutez simplement un ∣ w ∣ |w|w somme∣ ∣ w 2 ∣ ∣ ||w^2||∣∣w _2 ∣∣Ah, laissewwLa valeur de w est un peu plus petite, donc il n'y a rien à dire.

Tucao appartient à Tucao, la question reste encore à répondre.

Quand on suppose le paramètre wwLorsque w obéit à la distribution normale, selon le modèle bayésien,L 2 L2Régularisation L2 , quand on suppose le paramètre wwLorsque w obéit à la distribution de Laplace, selon le modèle bayésien,L 1 L1Régularisation L1 _


La dérivation spécifique est la suivante :

La régression logistique suppose en fait que les paramètres sont déterminés et que nous devons résoudre les paramètres. Le bayésien suppose que les paramètres de la régression logistique suivent une certaine distribution. Supposons que le paramètre wwLe modèle probabiliste de w est p ( w ) p(w)p ( w ) . Utilisation de l'inférence bayésienne :

p ( w ∣ D ) ≺ p ( w ) p ( D ∣ w ) = Π j = 1 M p ( wj ) Π i = 1 N p ( D i ∣ wj ) p(w|D)\prec p(w )p(D|w)=\Pi^{M}_{j=1}p(w_j)\Pi^{N}_{i=1}p(D_i|w_j)p ( w )p ( w ) p ( D w )=Pij = 1Mp ( wj) Pje = 1Np ( jewj)

Prenez le journal de bord pour la formule ci-dessusl o g

= > argmaxw [ Σ j = 1 M logp ( wj ) + Σ i = 1 N logp ( D i ∣ w ) ] = > argmaxw [ Σ i = 1 N logp ( D i ∣ w ) + Σ j = 1 M logp ( wj ) ] = > argminw ( − 1 N Σ i = 1 N logp ( D i ∣ w ) − 1 N Σ j = 1 M logp ( wj ) ) \begin{aligned} &=>argmax_w[\Sigma^{ M}_{j=1}logp(w_j)+\Sigma^{N}_{i=1}logp(D_i|w)]\\ &=>argmax_w[\Sigma^{N}_{i=1 }logp(D_i|w)+\Sigma^{M}_{j=1}logp(w_j)]\\ &=>argmin_w (-\frac{1}{N}\Sigma^{N}_{i =1}logp(D_i|w)-\frac{1}{N}\Sigma^{M}_{j=1}logp(w_j)) \end{aligned}=>a r g ma xw[ Sj = 1Ml o g p ( vj)+Sje = 1Nl o g p ( Djew )]=>a r g ma xw[ Sje = 1Nl o g p ( Djew )+Sj = 1Ml o g p ( vj)]=>a r g mi nw( -N1Sje = 1Nl o g p ( Djew )N1Sj = 1Ml o g p ( vj) )

Tout le monde connaît la formule précédente, qui est la fonction de perte de la régression logistique. Supposons maintenant que p ( w ) p(w)p ( w ) obéit à une certaine distribution, ce qui équivaut à introduire une connaissance a priori. sip ( w ) p(w)p ( w ) suit une distribution de Laplace de moyenne 0 :

p ( w ) = 1 2 λ e − ∣ w ∣ λ p(w)=\frac{1}{2\lambda}e^{\frac{-|w|}{\lambda}}p ( w )=2 minutes1eje∣w _

mettre p ( w ) p(w)En remplaçant p ( w ) dans la formule ci-dessus, vous pouvez obtenir :

Σ j = 1 M logp ( wj ) = > Σ j = 1 M ( − ∣ wi ∣ λ log ( 1 2 λ ) ) \Sigma^{M}_{j=1}logp(w_j)=>\Sigma^ {M}_{j=1}(-\frac{|w_i|}{\lambda}log(\frac{1}{2\lambda}))Sj = 1Ml o g p ( vj)=>Sj = 1M( -jewjel o g (2 minutes1))

将paramètre1 λ log ( 1 2 λ ) \frac{1}{\lambda}log(\frac{1}{2\lambda})je1l o g (2 minutes1) avec un nouveau paramètreλ \lambdaλ à la place, et nous pouvons alors obtenir le terme de régularisation de notre L1 régularisé :

λ Σ j = 1 M ∣ wi ∣ \lambda\Sigma^{M}_{j=1}|w_i|lS _j = 1Mwje

La somme des deux parties est la fonction de perte sous la régularisation de régression logistique L1.

Il en va de même pour la régularisation L2, mais on suppose que p ( w ) p(w)p ( w ) suit une distribution normale de moyenne 0.


À propos de L1L1L1 , L2L2Tout le monde doit avoir été exposé à la carte de contour L 2 .
Du point de vue de l'optimisation du modèle :

En ce moment mdrLorsque w est supérieur à 0 ∣ w ∣ |w|La dérivée de ∣ w est 1. Selon la descente de gradient, w doit soustraire lr ∗ 1 lr*1après avoir mis à jour le paramètre de régression logistique.lr _*1 . De cette façon, w tendra vers 0,
sinon quandwwLorsque w est inférieur à 0, le gradient de |w| selon la descente du gradient fera également approcher w de 0. jusqu'à ce quewww∣ w ∣ |w|Le gradient de ∣ w est également 0.

L2L2L 2 n'a pas la situation ci-dessus, en supposant que nous copions une fonctionnalité une fois. Le poids de cette fonctionnalité avant la copie est w1, et après la copie, la régularisation L1 est utilisée, ce qui tend à optimiser le poids d'une autre fonctionnalité à 0, tandis que la régularisation L2 tend à optimiser le poids des deux fonctionnalités à w1/2, car nous sommes très évidemment, lorsque les deux poids sont w1/2. ∣ ∣ w 2 ∣ ∣ ||w^2||∣∣w _2 ∣∣sera le plus petit.

Ce qui précède n'est que mon opinion personnelle. Concernant cette question, j'ai également vu diverses explications des grands dieux sur Internet. Vous pouvez vous y référer : https://zhuanlan.zhihu.com/p/50142573

2 : Pourquoi les caractéristiques sont-elles souvent discrétisées dans la régression logistique.

Il s'agit d'une opération courante dans l'industrie.En général, nous n'entrons pas de valeurs continues comme caractéristiques dans le modèle de régression logistique, mais les discrétisons en variables 0, 1. Les avantages de ceci sont :

1 : La multiplication du produit interne des variables clairsemées est rapide, les résultats du calcul sont pratiques à stocker et faciles à développer ;

2 : Les caractéristiques discrétisées sont très robustes aux données anormales : par exemple, si une caractéristique a un âge > 30, elle vaut 1, sinon elle vaut 0. Si les caractéristiques ne sont pas discrétisées, une donnée anormale « vieille de 300 ans » entraînera de grandes perturbations dans le modèle.

3 : La régression logistique appartient au modèle linéaire généralisé et sa capacité d'expression est limitée ; une fois la variable unique discrétisée en N, chaque variable a un poids distinct, ce qui équivaut à introduire une non-linéarité dans le modèle, ce qui peut améliorer la capacité d'expression du modèle et augmenter l'ajustement ;

4 : Après la discrétisation, le croisement des caractéristiques peut être effectué, passant des variables M+N aux variables M*N, introduisant davantage la non-linéarité et améliorant la capacité d'expression ;

5 : Une fois les caractéristiques discrétisées, le modèle sera plus stable. Par exemple, si l'âge de l'utilisateur est discrétisé, 20-30 ans est utilisé comme intervalle, et un utilisateur ne deviendra pas une personne complètement différente simplement parce qu'il a un an. plus vieux. Bien sûr, les échantillons adjacents à l’intervalle seront exactement le contraire, donc comment diviser l’intervalle est une question de connaissance.

4. Devoirs

ÉTAPE 1 : Calculez les résultats des questions suivantes en fonction des exigences

Devoir 1 : Expression pour la régression logistique :

A : h(x)=wx+b

B:h(x)=wx

C : h(x)=sigmoïde(wx+b)

D : h(x)=sigmoïde(wx)

a1 = ""


Devoir 2 : Les affirmations suivantes concernant la régression logistique sont correctes (à choix multiples) :

R : Le résultat de la régression logistique est une valeur de probabilité comprise entre 0 et 1.

B : L'utilisation de la régularisation peut améliorer la généralisation du modèle

C : La régression logistique peut être utilisée directement pour la multi-classification

D : La régression logistique est un modèle non paramétrique

E : La fonction de perte de la régression logistique est l’entropie croisée

a2=""


Devoir 3 : Calculer y = sigmoïde ( w 1 ∗ x 1 + w 2 ∗ x 2 + 1 ) y=sigmoïde(w1*x1+w2*x2+1)oui=s i g m o i d ( w 1*x1 _+w 2*x2 _+1 ) Lorsque w=(0.2, 0.3), le gradient et la perte de w1 et w2 lorsque l'échantillon X=(1,1), y=1 : (
 Enregistrer 3 décimales, arrondi)

a3=""#(w1)
a4=""#(w2)
a5=""#(perte)

Devoir 4 : Ajouter la régularisation L2 à la fonction de gradient cal_grad, la fonction suivante est-elle correcte ? (O/N)

def cal_grad(y, t, x, w) :
"""
x : entrée X
y : échantillon y
t : prédiction t
w : paramètre w
"""
grad = np.sum(t - y) / t.shape[0 ]
retour diplômé x+2 w

a6=""

Je suppose que tu aimes

Origine blog.csdn.net/m0_63309778/article/details/131656327
conseillé
Classement