Quiz 2

Fake News Detection

2214 words
11 min read
Python Week 1: the first filter for runtime behavior
Visual companion
Python
Type and operator map

Python Week 1: the first filter for runtime behavior

View
Revision summary

What this note is really saying

Short form

# Fake News Detection ## 🎯 Learning Objectives - Distinguish between misinformation, disinformation, and malinformation - Apply linguistic and stylistic analysis to detect fake news - Use network-based approaches to identify coordinated inauthentic behavior - Evaluate the performance of ML-based fake news detectors...

Fake News Detection

🎯 Learning Objectives

  • Distinguish between misinformation, disinformation, and malinformation
  • Apply linguistic and stylistic analysis to detect fake news
  • Use network-based approaches to identify coordinated inauthentic behavior
  • Evaluate the performance of ML-based fake news detectors
  • Understand the limitations and challenges of automated detection

1. Defining the Problem

1.1 Intuition

Fake news isn't new — yellow journalism existed in the 1890s. But social media supercharged it. A false story now spreads to millions before anyone can fact-check it. The challenge isn't just identifying false content; it's doing so fast enough to prevent viral spread, while avoiding censorship of legitimate speech.

1.2 Types of False Information

(Diagram)
TypeMeaningIntent to Harm?Example
MisinformationFalse but not intended to deceiveNoSharing a 2014 article as if it's current
DisinformationDeliberately false to deceiveYesFabricated quotes, doctored images
MalinformationTrue but weaponizedYesLeaked private conversations out of context

1.3 The Virality Problem

(Diagram) Why fake news spreads faster than truth:
FactorExplanation
NoveltyFalse information is often more surprising/interesting
Emotional appealFake news triggers stronger emotions (anger, fear)
Confirmation biasPeople share what confirms their beliefs
Algorithm amplificationEngagement algorithms prioritize attention-grabbing content
Low cost of creationCreating fake content costs almost nothing

2. Linguistic Detection Methods

2.1 Stylistic Features

Fake news articles often differ from real ones in writing style:
FeatureReal NewsFake News
Sentence lengthModerate, variableOften short, repetitive
Vocabulary diversityHighLower (uses same dramatic words)
PunctuationStandardExcessive !!! and ???
SubjectivityObjective, factualOpinionated, emotional
QuotesAttributable sourcesVague ("experts say")
CapitalizationStandardRandom CAPS for emphasis

2.2 LIWC Analysis

Linguistic Inquiry and Word Count (LIWC) categorizes words into psychological dimensions:
python
# Simplified LIWC categories for fake news detection
def analyze_writing_style(text):
    """Analyze linguistic features of a news article."""
    import re
    words = text.lower().split()
    total_words = len(words)
    features = {
        'word_count': total_words,
        'avg_word_len': sum(len(w) for w in words) / max(total_words, 1),
        'exclamation_ratio': text.count('!') / max(total_words, 1),
        'question_ratio': text.count('?') / max(total_words, 1),
        'allcaps_words': sum(1 for w in text.split() if w.isupper() and len(w) > 2),
    }
    # Emotional language detection
    emotion_words = set([
        'outrage', 'shocking', 'unbelievable', 'scandal', 'exposed',
        'they', 'you', 'we',  # high pronoun use = less objective
        'always', 'never', 'everyone', 'nobody'  # absolute language
    ])
    emotion_count = sum(1 for w in words if w in emotion_words)
    features['emotion_word_ratio'] = emotion_count / max(total_words, 1)
    return features
# Example comparison
real_headline = "Senate passes infrastructure bill with bipartisan support, 68-29"
fake_headline = "SHOCKING: Senate PASSES secret bill that will DESTROY your freedoms!!!"
print("Real features:", analyze_writing_style(real_headline))
print("Fake features:", analyze_writing_style(fake_headline))
Tracing Table:
FeatureReal HeadlineFake Headline
Word count810
Avg word len5.85.4
Exclamation ratio0.00.1
Allcaps words02 (SHOCKING, PASSES)
Emotion word ratio0.00.2

2.3 N-Gram Analysis

Certain phrases are overrepresented in fake news:
python
from sklearn.feature_extraction.text import CountVectorizer
# Sample corpus
fake_articles = [
    "You won't believe what the government is hiding",
    "Mainstream media won't report this story",
    "Doctors hate this one simple trick",
    "What they don't want you to know"
]
real_articles = [
    "Government announces new climate policy initiative",
    "Researchers discover breakthrough in cancer treatment",
    "Stock market reaches record high on Tuesday",
    "City council approves new budget for schools"
]
vectorizer = CountVectorizer(ngram_range=(2, 3))
X = vectorizer.fit_transform(fake_articles + real_articles)
feature_names = vectorizer.get_feature_names_out()
Common fake news bigrams: "you won't believe", "what they don't", "mainstream media won't", "doctors hate this", "one simple trick"

3. Network-Based Detection

3.1 Coordinated Inauthentic Behavior

Fake news doesn't spread organically — it's often amplified by coordinated networks of bots and fake accounts. (Diagram)

3.2 Detection Features

FeatureOrganic SpreadBot-Amplified Spread
TimingGradual, follows time zonesSudden burst, 24/7 activity
Network structureClustered by interestStar pattern (bots → source)
Account ageVaried, many old accountsMany new accounts
Content similarityDiverse sharingIdentical text, same links
Engagement ratioNatural likes/sharesMany shares, few real comments

3.3 Tracing a Bot Network

Observation timeline:
TimeEvent# Accounts InvolvedNotes
08:00Fake article published1Source account
08:01First wave of shares500All accounts < 30 days old
08:02Second wave1000Accounts created in same week
08:05Trending in topicAlgorithm promotes
08:15Organic users see it10,000+Real engagement begins
08:30Fact-check published1But spread already happened
Detection metrics:
  • 1500 accounts sharing within 120 seconds = synchronized activity
  • 95% of early sharers created in same week = batch creation
  • All sharers use same hashtags = coordinated messaging

4. Machine Learning Approaches

4.1 Feature Pipeline

(Diagram)

4.2 Python Implementation

python
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
def build_fake_news_detector(articles, labels):
    """
    Build and evaluate a fake news classifier.
    articles: list of article texts
    labels: 0 (real) or 1 (fake)
    """
    # Feature 1: TF-IDF
    tfidf = TfidfVectorizer(max_features=1000, stop_words='english')
    X_tfidf = tfidf.fit_transform(articles)
    # Feature 2: Article length
    lengths = [[len(a.split())] for a in articles]
    # Feature 3: Capitalization ratio
    cap_ratios = [[sum(1 for c in a if c.isupper()) / max(len(a), 1)] for a in articles]
    # Combine features
    import numpy as np
    from scipy.sparse import hstack
    X = hstack([X_tfidf, lengths, cap_ratios])
    # Train
    X_train, X_test, y_train, y_test = train_test_split(
        X, labels, test_size=0.2, random_state=42
    )
    clf = RandomForestClassifier(n_estimators=100)
    clf.fit(X_train, y_train)
    # Evaluate
    y_pred = clf.predict(X_test)
    print(classification_report(y_test, y_pred))
    return clf, tfidf
# Sample usage
articles = [
    "Government announces new climate policy",
    "SHOCKING: You won't believe what scientists DISCOVERED!!!",
    "Stock market reaches new all-time high today",
    "MAINSTREAM MEDIA WON'T REPORT THIS - share before they delete!!!"
]
labels = [0, 1, 0, 1]  # 0=real, 1=fake
model, vectorizer = build_fake_news_detector(articles, labels)

4.3 Performance Metrics

MetricMeaningGood Value
AccuracyOverall correct predictions>85%
PrecisionOf items flagged fake, how many are really fake>90%
RecallOf actual fake items, how many were caught>80%
F1 ScoreHarmonic mean of precision and recall>85%
AUC-ROCTrade-off between true positive and false positive>0.9
The precision-recall tradeoff: Increasing recall (catching more fake news) often decreases precision (more false positives = flagging real news as fake). False positives erode user trust in the detection system.

5. Challenges and Limitations

5.1 Adversarial Adaptation

Fake news creators adapt to detection methods. When detectors look for emotional language, creators tone it down. This creates an arms race between detection and evasion.
Detection MethodEvasion Tactic
Linguistic analysisUse more measured language
Bot detectionHuman-in-the-loop (real people paid to post)
Source credibilityUse compromised legitimate sites
Fact-check matchingChange story details slightly

5.2 Context Collapse

A satirical article (from The Onion) and a fake news article have similar linguistic features but different intent. Automated systems often can't distinguish them.

5.3 The Censorship Problem

RiskDescriptionExample
Over-censorshipFlagging legitimate content as fakeSatire, opinion, minority viewpoints
Under-censorshipMissing actual fake newsNovel forms of disinformation
BiasUnequal error rates across groupsDifferent dialects, non-English content

6. Common Pitfalls

Pitfall 1: Assuming More Data = Better Detection

The mistake: Thinking that training on larger datasets automatically improves fake news detection. Why students make it: ML intuition says more data = better model. How to catch it: Fake news is adversarial — as your detector improves, creators change their tactics. Training data from 2020 won't help with 2024's fake news techniques. The distribution shifts. Correct approach: Focus on robust, theory-driven features (source credibility, network patterns) rather than relying on surface-level text patterns that are easily changed.

Pitfall 2: Ignoring the Base Rate

The mistake: Celebrating 99% accuracy on a dataset that's 99% real news. Why students make it: Accuracy is the standard ML metric taught in courses. How to catch it: If only 1% of data is fake, a system that says "everything is real" gets 99% accuracy but misses all fake news. Correct approach: Use precision, recall, and F1. Evaluate on realistic class distributions. Consider the cost of false positives vs. false negatives.

Pitfall 3: Treating Fake News Detection as Only a Technical Problem

The mistake: Building better algorithms without considering human psychology, platform incentives, and political context. Why students make it: CS students are trained to solve problems with code. How to catch it: Perfect detection doesn't solve the problem — people who want to believe fake news will distrust the detector. Correct approach: Combine technical detection with media literacy education, transparent labeling, and platform policy changes.

7. Key Concepts Reference

ConceptDefinitionImportance
MisinformationUnintentionally false informationCommon, hard to detect
DisinformationDeliberately false informationMalicious, adaptive
LIWCLinguistic analysis frameworkCaptures writing style
Bot networkCoordinated fake accountsAmplifies false content
N-GramContiguous sequence of N wordsCaptures common phrases
PrecisionTP / (TP + FP)Measures false positive cost
RecallTP / (TP + FN)Measures missed detection
Confirmation biasTendency to believe confirming infoWhy fake news spreads
Base rateNatural frequency in populationAffects metric interpretation

8. 📝 Practice Questions

Q1: Distinguish between misinformation and disinformation with an example of each.
Answer: Misinformation is false information shared without malicious intent. Example: Someone sharing a 2018 news article about a political scandal in 2024, thinking it's new — they're unintentionally spreading outdated information. Disinformation is deliberately false. Example: Creating a fake news article with fabricated quotes and doctored images to influence an election. The key difference is intent: misinformation is accidental; disinformation is intentional. Q2: Why does fake news often spread faster than the truth?
Answer: Multiple factors: (1) Novelty — fake news is often more surprising and interesting than mundane truth. (2) Emotion — fake news triggers stronger reactions (anger, fear, outrage) which drive sharing. (3) Confirmation bias — people share content that reinforces their existing beliefs. (4) Algorithmic amplification — engagement-based algorithms promote content that gets reactions regardless of truth. (5) Production cost — creating fake content is cheap and fast; verifying facts takes time. A 2018 MIT study found falsehoods spread 6x faster than truth on Twitter. Q3: Calculate precision and recall for a fake news detector: 80 real articles correctly identified, 20 real flagged as fake, 70 fake correctly identified, 30 fake missed.
Answer:
  • True Positives (fake correctly identified) = 70
  • False Positives (real flagged as fake) = 20
  • False Negatives (fake missed) = 30
  • True Negatives (real correctly identified) = 80
Precision = TP / (TP + FP) = 70 / (70 + 20) = 70/90 = 0.778 (77.8%) Recall = TP / (TP + FN) = 70 / (70 + 30) = 70/100 = 0.70 (70%) F1 = 2 × (P × R) / (P + R) = 2 × (0.778 × 0.70) / (0.778 + 0.70) = 0.737 (73.7%) Q4: What makes linguistic analysis vulnerable to adversarial evasion?
Answer: Linguistic features are surface-level and easily changed. If fake news detectors look for emotional language (outrage, shocking), creators can simply use more measured, factual-sounding language while keeping the core false claim. If detectors look for excessive punctuation (!!!), creators stop using it. The adversarial nature means detectors must constantly adapt. More robust approaches combine linguistic analysis with network features (who's sharing) and source credibility, which are harder for creators to manipulate. Q5: How might a detection system distinguish between a satirical article (The Onion) and a fake news article?
Answer: This is a hard problem. Approaches include: (1) Source-level features — The Onion is a known satirical source with consistent style; fake news sites are often new. (2) Metadata — satirical sites clearly label themselves. (3) Content patterns — satire often targets absurd premises while fake news pretends to be real. (4) Context — satire relies on shared cultural knowledge. No automated system is perfect; many use human review for borderline cases. The Onion's articles have been classified as fake by automated systems, causing the "Onion problem" in fake news research. Q6: A bot network detection system identifies 100 accounts as bots. Only 60 are actually bots. 40 bots are not detected. What is precision and recall?
Answer:
  • True Positives (correctly identified as bots) = 60
  • False Positives (real users flagged as bots) = 40 (100 - 60)
  • False Negatives (bots not detected) = 40
Precision = TP / (TP + FP) = 60/100 = 0.60 (60%) Recall = TP / (TP + FN) = 60 / (60 + 40) = 60/100 = 0.60 (60%)
This system has both low precision (many false accusations) and low recall (missing many bots). Q7: Explain the "arms race" between fake news creators and detectors.
Answer: As detection methods improve, creators adapt their tactics. If linguistic detectors catch emotional language, creators use neutral language. If network detectors catch bot patterns, creators use human-in-the-loop systems (paying real people to post). If URL-based detectors blacklist domains, creators change domains frequently. This creates an ongoing arms race where neither side has a permanent advantage. The implication is that no static detection system will work forever — systems must continuously update based on new evasion tactics. Q8: Why is platform design (engagement algorithms, sharing mechanics) relevant to fake news detection?
Answer: Platform design actively shapes how fake news spreads. Engagement algorithms that prioritize viral content inadvertently boost fake news (which is designed to be engaging). Simple sharing mechanics lower the cost of spreading false information. Design solutions can complement detection: (1) Adding friction (confirmation prompts before sharing) reduces impulsive sharing. (2) Algorithmic changes (demoting content from new/unverified sources) reduce reach. (3) Transparent labeling (fact-check warnings) preserves user autonomy while providing context. Detection alone cannot solve the problem if platform incentives reward false content.

9. 🔗 Cross-References

  • Week 4 - Cyber Crime: Bot networks and coordinated attacks
  • Week 7 - Information Diffusion: How information spreads through networks
  • Week 10 - Ethics: Censorship, free speech, platform responsibility
  • BSCS4021 (Advanced Algorithms): ML classification algorithms Join Discord PreviousCase StudiesNextInformation Diffusion
Document outline

Keep your place and jump directly to a heading.

Table of Contents
System Normal // Awaiting Context

Intelligence Hub

Navigate the knowledge graph to generate context. The Hub adapts dynamically to surface backlinks, related notes, and metadata insights.