Tout le monde commence l'apprentissage automatique le premier modèle de contact devrait être une régression linéaire simple,Mais j'apprends.LassoLes temps passent souvent.En fait... Lasso La régression est aussi un arbre à feuilles persistantes dans le modèle d'apprentissage automatique,Très largement utilisé dans l'industrie.Dans de nombreux projets,Son ombre est particulièrement visible dans la sélection des caractéristiques.
Lasso Une régression linéaire simple a été ajoutée L1 Régularisation,Les coefficients des variables non significatives peuvent être réduits à 0 ,La sélection des caractéristiques est ainsi réalisée.Cet article met également l'accent sur la démonstration de la façon de l'utiliser pour la sélection des caractéristiques après avoir expliqué son principe,J'espère que tout le monde pourra récolter un peu de nouvelles connaissances.
lasso Principes
LassoC'est l'ajout d'un1-Norme
Rappelle - toi:En régression linéaire, si le paramètreθTrop gros.、Trop de caractéristiques peuvent facilement causer un ajustement excessif,Comme suit::
Cette image du professeur Li Hongyi a un impact visuel
Pour éviter un ajustement excessif(θTrop gros.),Dans la fonction cible$J(\theta)$ Ajouter un facteur de pénalité de complexité après , C'est - à - dire un terme régulier pour éviter un ajustement excessif , Amélioration de la généralisation des modèles . Les termes réguliers peuvent être utilisés avec L1-norm(Lasso
)、L2-norm(Ridge
),Ou en combinaison avecL1-norm、L2-norm(Elastic Net
).
lassoFonction de coût de la régression
$$
J(\theta)=\frac{1}{2}\sum_{i}{m}(y{(i)}-\theta Tx{(i)})^2+\lambda \sum_{j}^{n}|\theta_j|
$$
Forme matricielle:
$$
J(\mathbf\theta) = \frac{1}{2n}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) + \alpha||\theta||_1
$$
Que la montagne revienne ou lassoRetour, L'essence est de réguler $λ$ Pour obtenir un ajustement équilibré de l'erreur et de la variance du modèle . Le point tangent de l'ellipse Rouge et de la région bleue est la solution optimale de la fonction objective ,Comme vous pouvez le voir,Lasso La solution optimale pour le , Formation de résultats clairsemés ( Certains facteurs sont nuls ).
Ridge Le retour sans abandonner aucune caractéristique , Réduction du coefficient de régression , Rendre le modèle relativement stable ,MaisLasso Rapport de régression , Cela laisse beaucoup de caractéristiques dans le modèle , Le modèle est mal interprété .
Aujourd'hui, nous nous concentrons surLasso,L'objectif d'optimisation est:
$(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1$
L'équation ci - dessus n'est pas continue , Donc les solutions conventionnelles comme la descente par Gradient 、Méthode newtonienne、Ça ne marchera pas..Méthodes courantes:Méthode de descente de l'axe et méthode de régression angulaire minimale(Least-angle regression (LARS)).
Cette partie ne s'étendra pas , Les élèves intéressés peuvent lire l'article de M. Liu Jianping 《LassoAlgorithme de régression: Résumé de la méthode de descente de l'axe des coordonnées et de la méthode de régression angulaire minimale 》,C'est juste un peu plus..
https://www.cnblogs.com/pinard/p/6018889.html
Je veux aller plus loin.,On peut voirCoordinate DescentEtLARSArticle de
https://www.stat.cmu.edu/~ryantibs/convexopt-S15/lectures/22-coord-desc.pdf
https://arxiv.org/pdf/math/0406456.pdf
scikit-learn Les deux algorithmes d'optimisation LassoRéalisation,Respectivement.
sklearn.linear_model.Lasso(alpha=1.0, *, fit_intercept=True,
normalize='deprecated', precompute=False, copy_X=True,
max_iter=1000, tol=0.0001, warm_start=False,
positive=False, random_state=None, selection='cyclic')
sklearn.linear_model.lars_path(X, y, Xy=None, *, Gram=None,
max_iter=500, alpha_min=0, method='lar', copy_X=True,
eps=2.220446049250313e-16, copy_Gram=True, verbose=0,
return_path=True, return_n_iter=False, positive=False)
Avec Lasso Trouver l'importance des caractéristiques
Dans l'apprentissage automatique,Face à une énorme quantité de données, La première pensée est de réduire la dimension , S'efforcer de résoudre le problème avec le moins de données possible ,Lasso La méthode permet de compresser les coefficients des caractéristiques et de transformer certains coefficients de régression en 0, Pour atteindre l'objectif de la sélection des caractéristiques , Il peut être largement utilisé pour l'amélioration et la sélection de modèles .
scikit-learn DeLassoEn cours de réalisation, Plus souvent, en fait LassoCV( Un Lasso avec un ajustement itératif le long du chemin de régularisation (Lasso)Modèle linéaire), C'est pour les hyperparamètres $\alpha$Validation croisée utilisée, Pour nous aider à choisir un $\alpha$.MaisGridSearchCV+Lasso Le réglage des paramètres peut également être réalisé , Voici une liste de LassoCVParamètres pour、Propriétés et méthodes.
### Paramètres
eps:Longueur du chemin.eps=1e-3Ce qui signifiealpha_min / alpha_max = 1e-3.
n_alphas: Le long du chemin de régularisation AlphaNombre,Par défaut100.
alphas: Pour calculer le modèle alphaListe.Si ouiNone,Configuration automatiqueAlpha.
fit_intercept: Si l'interception est estimée ,Par défautTrue.Si ouiFalse, Supposons que les données soient centralisées .
tol: Tolérance optimisée ,Par défaut1e-4: Si la mise à jour est inférieure à tol, Le Code d'optimisation vérifiera l'optimisation des doubles dégagements , Jusqu'à ce qu'il soit inférieur à tolJusqu'à
cv: Définir la stratégie de partage de la validation croisée
### Propriétés
alpha_: Quantité de pénalité sélectionnée pour la validation croisée
coef_:Parameter Vector( Dans la formule de la fonction objective w).
intercept_: Interception dans la fonction objective .
mse_path_: Chaque pli est différent alpha Erreur carrée moyenne de l'ensemble d'essai inférieur .
alphas_:Pour chaquel1_ratio, Pour l'ajustement alphaGrille.
dual_gap_:Le meilleur.alpha(alpha_) Double intervalle à la fin de l'optimisation .
n_iter_ int: Nombre d'itérations effectuées par le solveur de descente de coordonnées , Pour atteindre la tolérance optimale spécifiée alpha.
### Méthodes
fit(X, y[, sample_weight, check_input]) Ajustement du modèle par la méthode de descente coordonnée .
get_params([deep]) Obtenir les paramètres de cet Estimateur.
path(X, y, *[, l1_ratio, eps, n_alphas, …]) Calculer la trajectoire du réseau élastique avec chute de coordonnées .
predict(X) Prévision à l'aide d'un modèle linéaire .
score(X, y[, sample_weight]) Renvoie le facteur de détermination de la prévision R ^ 2.
set_params(**params) Définir les paramètres de cet estimateur .
PythonSur le terrain
Exemple de données sur les prix de l'immobilier à Boston
## Importer une bibliothèque
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Lasso
import warnings
warnings.filterwarnings('ignore')
## Lire les données
url = r'F:\100-Days-Of-ML-Code\datasets\Regularization_Boston.csv'
df = pd.read_csv(url)
scaler=StandardScaler()
df_sc= scaler.fit_transform(df)
df_sc = pd.DataFrame(df_sc, columns=df.columns)
y = df_sc['price']
X = df_sc.drop('price', axis=1) # becareful inplace= False
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
LassoParamètres de réglage, Il s'agit principalement de choisir le bon alpha,Comme indiqué ci - dessusLassoCV,GridSearchCVPeut être réalisé, Ici, nous réalisons manuellement pour dessiner .
alpha_lasso = 10**np.linspace(-3,1,100)
lasso = Lasso()
coefs_lasso = []
for i in alpha_lasso:
lasso.set_params(alpha = i)
lasso.fit(X_train, y_train)
coefs_lasso.append(lasso.coef_)
plt.figure(figsize=(12,10))
ax = plt.gca()
ax.plot(alpha_lasso, coefs_lasso)
ax.set_xscale('log')
plt.axis('tight')
plt.xlabel('alpha')
plt.ylabel('weights: scaled coefficients')
plt.title('Lasso regression coefficients Vs. alpha')
plt.legend(df.drop('price',axis=1, inplace=False).columns)
plt.show()
La figure montre différentes variables avec alpha Après la punition , Variation de son coefficient , Tout ce qu'on garde, c'est que le coefficient n'est pas 0Variable de.alpha Ce n'est que lorsque la valeur augmente que le coefficient devient 0 Plus la variable est importante dans le modèle .
Nous pouvons également voir l'importance des caractéristiques dans l'ordre inverse de la valeur absolue du coefficient , Il est possible de définir un plus grand alphaValeur, Vous verrez plus de coefficients réduits à 0C'est.
lasso = Lasso(alpha=10**(-3))
model_lasso = lasso.fit(X_train, y_train)
coef = pd.Series(model_lasso.coef_,index=X_train.columns)
print(coef[coef != 0].abs().sort_values(ascending = False))
LSTAT2 2.876424
LSTAT 2.766566
LSTAT4 0.853773
LSTAT5 0.178117
LSTAT10 0.102558
LSTAT9 0.088525
LSTAT8 0.001112
dtype: float64
lasso = Lasso(alpha=10**(-2))
model_lasso = lasso.fit(X_train, y_train)
coef = pd.Series(model_lasso.coef_,index=X_train.columns)
print(coef[coef != 0].abs().sort_values(ascending = False))
LSTAT 1.220552
LSTAT3 0.625608
LSTAT10 0.077125
dtype: float64
Ou dessiner un histogramme directement
fea = X_train.columns
a = pd.DataFrame()
a['feature'] = fea
a['importance'] = coef.values
a = a.sort_values('importance',ascending = False)
plt.figure(figsize=(12,8))
plt.barh(a['feature'],a['importance'])
plt.title('the importance features')
plt.show()
Résumé
Lasso L'avantage de la méthode de régression est qu'elle peut compenser les lacunes de l'estimation des moindres carrés et de l'estimation optimale locale par régression progressive , .Le choix des caractéristiques peut être fait très bien , Résoudre efficacement le problème de la multicollinéarité entre les caractéristiques .
L'inconvénient est que lorsqu'il existe un ensemble de caractéristiques très pertinentes ,Lasso Les méthodes de régression tendent à choisir l'une de ces caractéristiques , Et ignorer toutes les autres caractéristiques , Cette situation peut entraîner une instabilité des résultats .
Bien queLasso Inconvénients de la méthode de régression , Mais il y a encore de bons résultats dans le bon scénario .
reference
https://www.biaodianfu.com/ridge-lasso-elasticnet.html
https://machinelearningcompass.com/machine_learning_models/lasso_regression/
https://www.cnblogs.com/pinard/p/6004041.html
https://www.biaodianfu.com/ridge-lasso-elasticnet.html
Principes fondamentaux de l'apprentissage des machines:Avec Lasso Autres articles connexes faire une sélection de fonctionnalités
- PythonCours de base sur l'apprentissage des machines-No2Chapitre-Modèle linéaire d'apprentissage supervisé
Préface Cette série de tutoriels est essentiellement un extrait<PythonCours de base sur l'apprentissage des machines>Contenu de l'exemple dans. Pour faciliter le suivi et l'apprentissage,Cette série de tutoriels est disponible enGithubDisponible surjupyter notebook Version: GithubEntrepôt: ...
- TensorFlowSérie de sujets(2.):Principes fondamentaux de l'apprentissage des machines
Bienvenue sur notre site Web et notre série de tutoriels:http://www.tensorflownews.com/ ,En savoir plus sur l'apprentissage automatique.Connaissance de l'apprentissage profond! Table des matières: Prétraitement des données Normalisation Normalisation Discrétisation Binarisation Code muet Caractéristiques ...
- Coursera Cours de base sur l'apprentissage des machines à l'Université de Taiwan 1
Coursera Notes d'étude pour le cours de base d'apprentissage automatique de l'Université de Taiwan -- 1 J'ai récemment suivi ce cours à l'Université de Taiwan ,C'est bien., J'aimerais envoyer mes notes d'étude et les partager avec vous ,J'espère que tout le monde corrigera. Un. Qu'est - ce que l'apprentissage automatique? Sensations et Tom M. Mitche ...
- Apprentissage automatique —— Organisation de base(Six)Fonction discriminante linéaire:Le perceptron、 Algorithme de relaxation 、Ho-KashyapAlgorithmes
Ce résumé passe en revue les questions de classification . Cet article résume brièvement ce qui suit: : (Un.) Fonction discriminante linéaire et fonction discriminante linéaire généralisée (2.)Le perceptron (Trois) Algorithme de relaxation (Quatre)Ho-KashyapAlgorithmes Commérages: Ce titre est une collection de [ Organisation de base de l'apprentissage des machines ]Intime ...
- Analyse des donnéesMatplotlib Et les bases de l'apprentissage automatique
Un..MatplotlibConnaissances de base Matplotlib C'est un Python De 2DBibliothèque de dessin,Il produit des graphiques au niveau de la qualité de publication dans une variété de formats papier et d'environnements interactifs Multi - plateformes. Adoption Matplotlib, Les développeurs peuvent simplement ...
- PythonCours de base sur l'apprentissage des machines-No2Chapitre- Intégration de l'arbre décisionnel dans l'apprentissage supervisé
Préface Cette série de tutoriels est essentiellement un extrait<PythonCours de base sur l'apprentissage des machines>Contenu de l'exemple dans. Pour faciliter le suivi et l'apprentissage,Cette série de tutoriels est disponible enGithubDisponible surjupyter notebook Version: GithubEntrepôt: ...
- PythonCours de base sur l'apprentissage des machines-No2Chapitre-Arbre décisionnel pour l'apprentissage supervisé
Préface Cette série de tutoriels est essentiellement un extrait<PythonCours de base sur l'apprentissage des machines>Contenu de l'exemple dans. Pour faciliter le suivi et l'apprentissage,Cette série de tutoriels est disponible enGithubDisponible surjupyter notebook Version: GithubEntrepôt: ...
- PythonCours de base sur l'apprentissage des machines-No1Chapitre-Exemple d'IrisKNN
Préface Cette série de tutoriels est essentiellement un extrait<PythonCours de base sur l'apprentissage des machines>Contenu de l'exemple dans. Pour faciliter le suivi et l'apprentissage,Cette série de tutoriels est disponible enGithubDisponible surjupyter notebook Version: GithubEntrepôt: ...
- Base d'apprentissage des machines --Probabilités a priori Probabilité postérieure Fonction de probabilité Estimation de la probabilité maximale(MLE) Probabilité postérieure maximale(MAE) Et la compréhension de la formule bayésienne
Table des matières Principes fondamentaux de l'apprentissage des machines 1. Probabilités et statistiques 2. Probabilités a priori( Par l'histoire ) 3. Probabilité postérieure( Connaître le fruit et chercher la cause ) 4. Fonction de probabilité(Obtenir des résultats par cause) 5. Drôle d'histoire sauvage -- Bayes contre la probabilité -Probabilité maximale(MLE)-Probabilité postérieure maximale( ...
- Principes fondamentaux de l'apprentissage des machines—— Explication détaillée du traitement du langage naturel tf-idf
Cet article commence par un numéro public personnel:TechFlow,L'originalité n'est pas facile,Pour attirer l'attention L'article d'aujourd'hui parle d'un algorithme simple mais célèbre dans l'analyse de texte --TF-idf. Cet algorithme est un algorithme important dans le domaine du traitement du langage naturel , Mais parce qu'il est si célèbre ...
Recommandation aléatoire
- ubuntu 14.04Installationpypcap
Directsudo apt-get install python-pypcapC'est tout. How to install python-pypcap on Ubuntu 12.04 (Precise Pangoli ...
- C#FonctionnementSQLiteBase de données
SQLiteIntroduction SQLite is a software library that implements a self-contained, serverless, zero-configurati ...
- doubleFonctions etintFonctions
Je vois.,QuandtensorC'est tout.doubleType,int La fonction arrondit tous les éléments ,De1.5Comme vous pouvez le voir,,Non arrondi, Mais arrondir .double La fonction transforme à nouveau l'élément entier en doubleType. th> a 0.0000 ...
- HDU 1423 Greatest Common Increasing Subsequence
La plus longue séquence commune ascendante LCIS Regardez ce blog http://www.cnblogs.com/nuoyan2010/archive/2012/10/17/2728289.html #include&l ...
- [Angular 2] Start with Angular2
Create a index.html: <!DOCTYPE html> <html> <head> <title>Really Understandi ...
- poj 2429 Pollard_rhoDécomposition des grands nombres
D'abord.lcm/gcdDécomposition, Le problème se transforme en une multiplication de quelques nombres choisis parmi les facteurs , Le reste est aussi multiplié par , Exigences et minimum . Il y a une recherche directe ici ,Attention à un problème., Parce que le même facteur ne peut pas être attribué aux deux côtés (Ça va changergcd) Pour pouvoir combiner les mêmes facteurs ,Ces mots,Fouillez. ...
- Le serveur souffre ssh Attaque
Voirauth.logLog, J'ai failli avoir peur , Beaucoup d'attaques enregistrées . vim /var/log/auth.log Deux jours de kung - Fu ,900Plus de 10 000 enregistrements, Quelques solutions : 43down voteaccepted It ...
- javaCréation et suppression de fichiers
Les opérations de streaming sont couramment utilisées dans l'élaboration de projets , Bien que chaque fois en ligne peut Baidu à , Mais je me sens toujours mal à l'aise. ,C'est, Faire un résumé détaillé du fonctionnement du flux --- 1. Divisé en fonction de la direction du flux des données :Flux de sortie: C'est pour écrire des données , C'est le programme (Mémoire)---> ...
- UbuntuEn bas.JavaEnvironnement de développement(eclipse)
Récemment, l'environnement de travail a été transféré à Ubuntu KylinEn bas., Je l'ai trouvé en bas Java L'environnement est très pratique . Mais il y a aussi eu un processus d'exploration ,C'est pour ça que j'ai écrit.. Un./Préparation préalable au développement Installation du système/Configurer la source du logiciel, Il n'y a rien à noter dans cette section .O ...
- gitTélécharger des fichiers locaux surgitlab
The repository for this project is empty If you already have files you can push them using command l ...