<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Krishna Rao on Medium]]></title>
        <description><![CDATA[Stories by Krishna Rao on Medium]]></description>
        <link>https://medium.com/@kkrao?source=rss-110a69a850da------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*xLNKrygmNK6GKB75ae3ePw.jpeg</url>
            <title>Stories by Krishna Rao on Medium</title>
            <link>https://medium.com/@kkrao?source=rss-110a69a850da------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 04:26:04 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@kkrao/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Finding Ladakh in the Sierras]]></title>
            <link>https://medium.com/bicycletouring/finding-ladakh-in-the-sierras-553546f3d960?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/553546f3d960</guid>
            <category><![CDATA[biking]]></category>
            <category><![CDATA[bikepacking]]></category>
            <category><![CDATA[mountain-biking]]></category>
            <category><![CDATA[mountains]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Mon, 02 Jun 2025 04:36:04 GMT</pubDate>
            <atom:updated>2025-06-23T04:59:54.592Z</atom:updated>
            <content:encoded><![CDATA[<h4>Bikepacking Owens Valley</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LCuzBaag6C3ycRPZOpLehw.jpeg" /></figure><p>Ever since <a href="https://medium.com/bicycletouring/in-love-with-oblivion-6039e16706dd">I bikepacked through the surreal, high-altitude landscapes of Ladakh</a>, I’ve been chasing that same feeling, of being dwarfed by wind-carved canyons, of coasting through meadows that roll into desert valleys, of waking up at elevation with the crisp bite of thin air in my lungs. For years, that pursuit took me through the American West, but nothing quite captured Ladakh’s raw magic. Until now.</p><h4><strong>California, Refracted</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HsrrS5U0cvrEJZKSllBuKA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*itkQRp887ZWt2GAIZH-bwg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5K54Ya7ApUjNmGmfufBZEw.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VsnF7SH-WhR-0t6TWZlm6Q.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J9w7AfzvyGTRJ9fFtVNMYw.jpeg" /></figure><p>I spent three days bikepacking near Independence and Lone Pine, in California’s Eastern Sierra with my friend Chandu. We followed the <a href="https://bikepacking.com/routes/owens-valley-ramble/">Owens Valley Ramble route from bikepacking.com</a>. The moment I caught the first view though, I thought: this might be it. I might have found the Ladakh of California.</p><p>The landscape here is compressed into an astonishing density. Within a few hours of pedaling, we passed through arid desert floors, climbed into grass-carpeted meadows, traced the base of jagged granite walls, and stared out at snow-capped peaks rising abruptly from the valley. The Owens Valley, marked by the Sierra Nevada to the west and the Inyo Mountains to the east, might be one of the most geographically dramatic places in the United States, or at least in the lower 48 states.</p><h4><strong>A Landscape in Tension</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TGymwz1JJprru3yBVYVymg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x708DJreFMc6xXz4PIwncw.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zgxbsNBA8p0E7UFVd8Etbg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jx0ZNqGf8Z0UtB-_Vv1nIQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CEj7zJvtDdGIg4gK3BaHtQ.jpeg" /></figure><p>Part of what makes this place so compelling is its geologic drama. The Eastern Sierra region lies along a massive fault zone. I could see how the eastern face of the valley rises sharply from the desert floor, while the western slope descends more gradually. My friend Curtis, who researches fault lines, once explained that the Sierras themselves occupy a giant fault block, making the Owens Valley a sunken rift.</p><p>The valley floor sits at about 4,000 feet, which is where we spent most of the time (except for a day hike to an alpine lake). Just a short distance away, peaks like Mount Whitney soar to over 14,000 feet, creating one of the greatest vertical reliefs in North America. We even saw a road go about the near-vertical cliff, apty named Whitney portal, as if portaling one from the desert floor to the mountain peaks instantly.</p><p>Over time, glaciers scoured the high elevations, carving U-shaped valleys and cirques into the granite. Meltwater and snowmelt continue to feed creeks that tumble down to the desert below, shaping canyons and alluvial fans that resemble something extraterrestrial. It felt like wind, water, and time had collaborated to create this rare juxtaposition of alpine and desert, verdant and barren, all in one continuous view.</p><h4><strong>Everything Aligned</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*afgNynWQg0o6bUUf" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CjDyQP4EhWwWI4lW1Pt9Uw.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eMJrdw3lRAkzYHj7aN5ANg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bzwjikf8ayewxXRs0Bhl6A.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Ymyp7SReP16AuH1X" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pOkatoP7RuK9K1IC5SYSWg.jpeg" /></figure><p>The landscape alone would have made this trip memorable. But what made it feel magical was that somehow nothing went wrong.</p><p>On past trips, something <em>always</em> goes wrong. Sometimes multiple things. I’ve broken a bottom bracket in the middle of a desert during a heatwave in Utah, <a href="https://medium.com/bicycletouring/unearthly-utah-f5bc6a7f9f12">forcing me to ditch my bike and hike out 18 miles through the night</a>. <a href="https://medium.com/bicycletouring/from-desert-to-coast-a-photo-essay-recorded-on-a-bike-tour-around-southern-california-449dc3be0287">I’ve battled headwinds so strong near Mojave</a> that I only managed 20 miles in a day instead of my usual 60. <a href="https://medium.com/bicycletouring/blown-away-by-the-desert-e6a7fb9b49c9">I’ve faced impassable terrain near the Salton Sea</a>, and <a href="https://medium.com/bicycletouring/oregons-scenic-bikeways-3ca9bbc55a15">I’ve been chewed alive by mosquitoes in Oregon</a>.</p><p>But this time? Nothing. No weather surprises. No mechanicals. Not even any flat tyres. Even the notorious valley winds that I heard gust up to 50 kmph decided to take a break for us. The bugs? Barely a nuisance, just a few hovering at dusk. We found frequent river crossings to refill our bottles and cool our bodies. To top it all, even my apparel choice was perfect. My cotton kurta sheltered me from the Sun and let me feel the breeze too. It was almost unsettling how smoothly everything went. We kept wondering whether the odds are steadily stacking up against us to hit us with a bang in the end (they din’t).</p><h4><strong>Ride or Glide</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3TUJA0bql_pY5_uBqRY1yg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CEj7zJvtDdGIg4gK3BaHtQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CRhIGNcL5zTiDtj9w_xFTw.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oC-8vsOKj4YQ6sa06CqPxA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kwNPLbd-6q8raQxHyL8M6A.jpeg" /></figure><p>One of the best parts of the trip was biking with my friend Chandu. He’s one of the very few people I never have to worry about on these kinds of adventures. Equally clueless, equally happy-go-lucky, and equally okay with adapting plans on the fly — or tossing them out altogether. He doesn’t mind discomfort (although nothing tested us on this trip), and he doesn’t fuss over details. Which makes him the perfect riding partner in places like this.</p><p>There’s a particular joy in moving through wild landscapes with someone who shares your rhythm, not just in pace, but in spirit. No debates over where to camp, no panic when a trail vanishes, no complaints when breakfast is made of bland, tasteless mush of oats. Just easy camaraderie, shared awe, and the occasional spontaneous yodel.</p><h4>Ironman</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/718/0*jGY3IFI4MzivK-3F" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/718/0*LAEkThxhOiF9K-P_" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*XZuAhPdz6sqVs40f" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*F9tydTwEbugJ4N5R" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*2LBqebhzK6D5osJG" /></figure><p>Yodeling wasn’t our only brush with cinematic drama. There were movies, too! Just outside Lone Pine lies the Alabama Hills- a strange and beautiful cluster of rounded granite boulders set against the jagged backdrop of the Sierras. We biked through them, soaking in the strange, sculptural terrain.</p><p>What made it even more lively was realizing how often this landscape has been used in movies. I found it funny that the Alabama Hills have stood in for everywhere except America: Afghanistan in Ironman, Mexico in countless Westerns, even distant planets in sci-fi flicks. Something about the terrain is just ambiguous enough I guess that filmmakers can turn it into whatever they need.</p><h4><strong>A Familiar Echo</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*U28iWPnNbqOHb4NR" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*5m7-utsalTDNgPWU" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/718/0*iSDGnPBFiyiZyDPw" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aaKyOWuvjy0WWvbxfFAWhw.jpeg" /></figure><p>The Eastern Sierras may not <em>be</em> Ladakh — but for a few days, they felt like its echo. A version in a different register, but still part of the same song.</p><p>If you’ve been chasing that same wild, high-desert solitude and you live on the West Coast of the USA, you might not have to fly halfway across the world. It’s waiting just a few hours from home.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=553546f3d960" width="1" height="1" alt=""><hr><p><a href="https://medium.com/bicycletouring/finding-ladakh-in-the-sierras-553546f3d960">Finding Ladakh in the Sierras</a> was originally published in <a href="https://medium.com/bicycletouring">Bicycle Touring</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Earth day, AI, Effective Altruism, and Rajinikanth]]></title>
            <link>https://medium.com/age-of-awareness/earth-day-ai-effective-altruism-and-rajinikanth-98364347a13a?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/98364347a13a</guid>
            <category><![CDATA[sustainability]]></category>
            <category><![CDATA[environment]]></category>
            <category><![CDATA[earth]]></category>
            <category><![CDATA[earth-day]]></category>
            <category><![CDATA[climate-change]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Thu, 01 May 2025 16:02:59 GMT</pubDate>
            <atom:updated>2025-05-01T16:02:59.405Z</atom:updated>
            <content:encoded><![CDATA[<h4>My Earth Day pledge</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*G8Vne4cnqSQikZxtvekPLA.png" /><figcaption>Photo by<a href="https://www.pinterest.com/pin/317855686207397496/sent/?invite_code=1fc2ce6c39c848db94ca3378b58b08ac&amp;sender=879609508379294965&amp;sfo=1"> TheNext Thought</a></figcaption></figure><p>Since graduating from college, I’ve tracked my career along a single axis: my impact on sustainability. There have certainly been ups and downs — my first job was in oil and gas extraction, for example — but from my perspective, the journey has been steadily upward. Today, I work in a climate-tech startup building AI systems for helping companies measure and reduce their carbon emissions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wtB2HUUZRy3KYuhj.jpg" /><figcaption>My career progression. Image by author.</figcaption></figure><p>Lately, I’ve been thinking a lot about AI: the transformative impact it has had on my work, the broad excitement surrounding it, and the fact that nearly everything I do now involves it.</p><p>Building AI technologies also seems to attract incredible talent. Many of my close friends have joined the behemoths or launched their own ventures. Working on something so transformational seems extremely exciting to me — even if it’s not directly focused on sustainability or climate. The astronomical salaries are a draw, too. I tell myself I don’t care about the money, but when I hear the TC figures, I must admit I get second thoughts.</p><p>Then I read devastating news about the climate crisis, or the recent dismantling of climate policy, and it jolts me — “Focus on sustainability, Krishna. There’s not enough time.”</p><p>I’m currently reading <em>Doing Good Better</em> by William MacAskill, and there’s a compelling argument in there about “earning to give.” It’s the idea that I can still have an impact on sustainability — even if I’m not working on it directly — by donating large sums to effective causes. MacAskill talks about Dr. Greg Lewis, who donates significant amounts while working as a doctor in Britain, even though he’s not directly involved in medical efforts in Africa. Should I do the same?</p><p>In my case, however, I believe I can have a greater impact by working directly on the cause:</p><ol><li>I’m uniquely positioned to contribute because of my climate science knowledge from my PhD and my data science skills from past work.</li><li>I have an extremely supportive family — my wife and parents.</li><li>I think I’ll be more motivated and work harder if I’m contributing directly.</li><li>Considering the counterfactuals, I believe I’ll do a better job building sustainability-related technologies than someone else, but a worse job building general AI than whoever would take my place.</li><li>I’m already earning quite a bit and giving proportionally.</li></ol><p>I waver on that last point sometimes. So, today — on Earth Day — I’m making a pledge:</p><p><strong>I pledge to work on sustainability for the foreseeable future.</strong></p><p>Announcing something so broadly can seem boastful. I believe, if anything, it’s the opposite. I once heard a talk by Rajinikanth, my childhood favourite hero, where he noted that human minds are fickle. What’s in my mind today can change tomorrow. But words — once spoken — cannot be undone. So I’m asking for help from all of you to keep me honest. Please remind me if you see me drifting from this pledge:</p><p><strong>I pledge to work on sustainability for the foreseeable future.</strong></p><p>Will you join me?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=98364347a13a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/age-of-awareness/earth-day-ai-effective-altruism-and-rajinikanth-98364347a13a">Earth day, AI, Effective Altruism, and Rajinikanth</a> was originally published in <a href="https://medium.com/age-of-awareness">Age of Awareness</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Handling Label Noise: How to Measure Real Model Accuracy]]></title>
            <link>https://medium.com/data-science-collective/handling-label-noise-how-to-measure-real-model-accuracy-f61cc5a4eff7?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/f61cc5a4eff7</guid>
            <category><![CDATA[deep-learning]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Mon, 31 Mar 2025 02:29:21 GMT</pubDate>
            <atom:updated>2025-04-03T19:05:20.571Z</atom:updated>
            <content:encoded><![CDATA[<h4>The math behind “true” accuracy and error correlation</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*zrYExCT9QoOYdtmP.gif" /><figcaption>Model’s “true” accuracy as a function of its reported accuracy and ground truth accuracy. Figure by author.</figcaption></figure><p>Ground truth is never perfect. From scientific measurements to human annotations used to train deep learning models, ground truth always has some amount of errors. ImageNet, arguably the most well-curated image dataset has <a href="https://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/">0.3% errors in human annotations</a>. Then, how can we evaluate predictive models using such erroneous labels?</p><p>In this article, we explore how to account for errors in test data labels and estimate a model’s “true” accuracy.</p><h3>Example: image classification</h3><p>Let’s say there are 100 images, each containing either a cat or a dog. The images are labeled by human annotators who are known to have 96% accuracy (Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ). If we train an image classifier on some of this data and find that it has 90% accuracy on a hold-out set (Aᵐᵒᵈᵉˡ), what is the “true” accuracy of the model (Aᵗʳᵘᵉ)? A couple of observations first:</p><ol><li>Within the 90% of predictions that the model got “right,” some examples may have been incorrectly labeled, meaning both the model and the ground truth are wrong. This artificially inflates the measured accuracy.</li><li>Conversely, within the 10% of “incorrect” predictions, some may actually be cases where the model is right and the ground truth label is wrong. This artificially deflates the measured accuracy.</li></ol><p>Given these complications, how much can the true accuracy vary?</p><h3>Range of true accuracy</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k0tjOS9fdG2mfK1smJYnBQ.png" /><figcaption>True accuracy of model for perfectly correlated and perfectly uncorrelated errors of model and label. Figure by author.</figcaption></figure><p>The true accuracy of our model depends on how its errors correlate with the errors in the ground truth labels. If our model’s errors perfectly overlap with the ground truth errors (i.e., the model is wrong in exactly the same way as human labelers), its true accuracy is:</p><p>Aᵗʳᵘᵉ = 0.90 — (1–0.96) = 86%</p><p>Alternatively, if our model is wrong in exactly the opposite way as human labelers (perfect negative correlation), its true accuracy is:</p><p>Aᵗʳᵘᵉ = 0.90 + (1–0.96) = 94%</p><p>Or more generally:</p><p><strong>Aᵗʳᵘᵉ = Aᵐᵒᵈᵉˡ ± (1 — Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ)</strong></p><p>It’s important to note that the model’s true accuracy can be both lower and higher than its reported accuracy, depending on the correlation between model errors and ground truth errors.</p><h3>Probabilistic estimate of true accuracy</h3><p>In some cases, inaccuracies among labels are randomly spread among the examples and not systematically biased toward certain labels or regions of the feature space. If the model’s inaccuracies are independent of the inaccuracies in the labels, we can derive a more precise estimate of its true accuracy.</p><p>When we measure Aᵐᵒᵈᵉˡ (90%), we’re counting cases where the model’s prediction matches the ground truth label. This can happen in two scenarios:</p><ol><li>Both model and ground truth are correct. This happens with probability Aᵗʳᵘᵉ × Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ.</li><li>Both model and ground truth are wrong (in the same way). This happens with probability (1 — Aᵗʳᵘᵉ) × (1 — Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ).</li></ol><p>Under independence, we can express this as:</p><p>Aᵐᵒᵈᵉˡ = Aᵗʳᵘᵉ × Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ + (1 — Aᵗʳᵘᵉ) × (1 — Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ)</p><p>Rearranging the terms, we get:</p><p><strong>Aᵗʳᵘᵉ = (Aᵐᵒᵈᵉˡ + Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ — 1) / (2 × Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ — 1)</strong></p><p>In our example, that equals (0.90 + 0.96–1) / (2 × 0.96–1) = 93.5%, which is within the range of 86% to 94% that we derived above.</p><h3>The independence paradox</h3><p>Plugging in Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ as 0.96 from our example, we get</p><p>Aᵗʳᵘᵉ = (Aᵐᵒᵈᵉˡ — 0.04) / (0.92). Let’s plot this below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jLhs8pd0Ys7DnwkfoESROA.png" /><figcaption>True accuracy as a function of model’s reported accuracy when ground truth accuracy = 96%. Firgure by author.</figcaption></figure><p>Strange, isn’t it? If we assume that model’s errors are uncorrelated with ground truth errors, then its true accuracy Aᵗʳᵘᵉ is always higher than the 1:1 line when the reported accuracy is &gt; 0.5. This holds true even if we vary Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*o6wWlP4YMld91YXL.gif" /><figcaption>Figure by author</figcaption></figure><p>Why does this happen? When errors are independent, a model with Aᵐᵒᵈᵉˡ &gt; 0.5 tends to be correct on some examples where the ground truth is wrong. Remember that our derived expression for Aᵗʳᵘᵉ accounts for both:</p><ol><li>Cases where model is penalized unfairly (labels wrong, model right)</li><li>Cases where model gets credit unfairly (labels wrong, model wrong)</li></ol><p>For Aᵐᵒᵈᵉˡ &gt; 0.5 and Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ &gt; 0.5, the first effect tends to outweigh the second when errors are truly independent.</p><h3>Error correlation: why models often struggle where humans do</h3><p>The independence assumption is crucial but often doesn’t hold in practice. If some images of cats are very blurry, or some small dogs look like cats, then both the ground truth and model errors are likely to be correlated. This causes Aᵗʳᵘᵉ to be closer to the lower bound (Aᵐᵒᵈᵉˡ — (1 — Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ)) than the upper bound.</p><p>More generally, model errors tend to be correlated with ground truth errors when:</p><ol><li>Both humans and models struggle with the same “difficult” examples (e.g., ambiguous images, edge cases)</li><li>The model has learned the same biases present in the human labeling process</li><li>Certain classes or examples are inherently ambiguous or challenging for any classifier, human or machine</li><li>The labels themselves are generated from another model</li><li>There are too many classes (and thus too many different ways of being wrong)</li></ol><h3>Best practices</h3><p>The true accuracy of a model can differ significantly from its measured accuracy. Understanding this difference is crucial for proper model evaluation, especially in domains where obtaining perfect ground truth is impossible or prohibitively expensive.</p><p>When evaluating model performance with imperfect ground truth:</p><ol><li><strong>Conduct targeted error analysis</strong>: Examine examples where the model disagrees with ground truth to identify potential ground truth errors.</li><li><strong>Consider the correlation between errors</strong>: If you suspect correlation between model and ground truth errors, the true accuracy is likely closer to the lower bound (Aᵐᵒᵈᵉˡ — (1 — Aᵍʳᵒᵘⁿᵈᵗʳᵘᵗʰ)).</li><li><strong>Obtain multiple independent annotations</strong>: Having multiple annotators can help estimate ground truth accuracy more reliably.</li></ol><h3>Conclusion</h3><p>In summary, we learned that:</p><ol><li>The range of possible true accuracy depends on the error rate in the ground truth</li><li>When errors are independent, the true accuracy is often higher than measured for models better than random chance</li><li>In real-world scenarios, errors are rarely independent, and the true accuracy is likely closer to the lower bound</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f61cc5a4eff7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-science-collective/handling-label-noise-how-to-measure-real-model-accuracy-f61cc5a4eff7">Handling Label Noise: How to Measure Real Model Accuracy</a> was originally published in <a href="https://medium.com/data-science-collective">Data Science Collective</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pedaling Through Fire and Ice: Bikepacking Lassen Volcanic National Park on opening day]]></title>
            <link>https://medium.com/bicycletouring/pedaling-through-fire-and-ice-bikepacking-lassen-volcanic-national-park-on-opening-day-38b9e3fa80ad?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/38b9e3fa80ad</guid>
            <category><![CDATA[biketouring]]></category>
            <category><![CDATA[bikes]]></category>
            <category><![CDATA[mountains]]></category>
            <category><![CDATA[travel]]></category>
            <category><![CDATA[nature]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Thu, 04 Jul 2024 22:50:15 GMT</pubDate>
            <atom:updated>2024-07-04T22:50:15.507Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BRgatxMSpviZtm6ZWg-sCA.jpeg" /><figcaption>Lassen Peak over the frozen Emerald Lake. Photo by author</figcaption></figure><p>Imagine a national park without the crowds.</p><p>Imagine a bike ride/tour without cars on the road.</p><p>Imagine exploring giant volcanoes, still lakes, buzzing meadows, and hushed forests all in just one ride.</p><p>Starting today and for the next few weeks, a once-in-a-year opportunity awaits all bikers in Northern California. The Lassen Volcanic National Park <a href="https://www.nps.gov/lavo/planyourvisit/hbh.htm">has opened Highway 89</a> (the only road through the park) exclusively to hikers and bikers. Read on to learn more about my bikepacking trip through the park last year.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*j_bSB2Vz-S6HWKfroHr1WA.jpeg" /><figcaption>Photo by author</figcaption></figure><p>Kohm Yah-mah-nee or snow mountain is exactly how one might describe Lassen Peak. And the Kohm Yah-mah-nee visitor center is where we started our 3-day bikepacking tour. We biked through Lassen National Park and Lassen National Forest, briefly pausing at small towns along the way. Good thing we started at the visitor center — the park rangers helped us plan the route, and potentially saved us from dehydrating on the very first day!</p><h3>“No, you can’t drink water from the lakes”</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qPih_V5XR9u3u2FoKNQN9w.jpeg" /><figcaption>Photo by author</figcaption></figure><p>When we were at the visitor center getting ready for our ride, we saw clear blue skies and warm weather of 25C (or 80F). We saw plenty of streams crisscrossing the mountainous terrain in front of us. The map also showed a few lakes on our route (the closest one being just 10 miles away) which led us to believe we would have plenty of water refilling points.</p><p>However, when we discussed our route with the park ranger, she immediately warned us that it would be hard to find water for the first half of our day. I asked her about the lakes on our way pointing to the map, and she said, “No, you can’t drink water from the lake. They are frozen under at least 6 feet of snow.” Confused, I looked out of the window at the warm weather and wondered if she was joking.</p><p>Not wanting to risk running out of water (<a href="https://medium.com/bicycletouring/unearthly-utah-f5bc6a7f9f12">knowing how that feels</a>) we filled up all our bottles and set away on our ride.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XaXlP5lWWOChGv8fsFLAgA.jpeg" /><figcaption>Photo by author</figcaption></figure><p>Good that we listened! Within a few miles, the road climbed, and with it, the terrain and the weather changed drastically. Bustling meadows gave way to snow-covered terrain. Warm weather gave way to cool winds. Small streams gave way to frozen lakes. And gentle slopes gave way to volcanic mountains … many of them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MNFC0wriSYy6yb6yGO0lLw.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HKKjPOGIVa2IPuJycfwegQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UOgUy2wfqnfojwtd23rbsQ.jpeg" /><figcaption>Photo by author</figcaption></figure><h3>“That’s not Lassen … is it?”</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_AtgwxpVzF7f7KPml2-YhQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TpwpJwlO6L_w3TU4ERTEYg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YNoWGOt8q0PitoFIR9Wxug.jpeg" /><figcaption>Photo by author</figcaption></figure><p>With every switchback on the winding climb, we saw a new peak and my friend Abby wondered “That’s not Lassen … is it?” Since we hadn’t done any Instagram research, we didn’t know what Lassen looked like. And all peaks looked about the same — a sharp snow-covered peak with steep slopes arising from relatively flat ground covered with black volcanic rocks. Except one.</p><p>When we finally saw Lassen, we immediately knew that was it. It was so gigantic, that it dwarfed all the other peaks surrounding us. It was so tall that a few clouds were permanently stuck on it. For a few minutes, Abby and I stopped riding and just stared at it, in awe of its beauty. We were oblivious to the violent volcanic activities hidden beneath its peaceful outer appearance.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ARUlPnO3330Ns3PzgJecSA.jpeg" /><figcaption>Photo by author</figcaption></figure><h3>Uh Oh</h3><p>Lassen last erupted in 1915 when rocks and ash rained down from the sky, illuminated by the fiery glow of the molten lava. This eruption dramatically reshaped the landscape, creating today&#39;s rugged terrain. The volcano is dormant but active today.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fQ6sht8u0HwgFuH87GZMVQ.jpeg" /><figcaption>Photo by author</figcaption></figure><p>The 1915 eruption of Lassen Peak was not just a local event; its effects were felt far and wide. At the Loomis Museum, we learned that the explosion hurled rock fragments (like the black rock pictured below) as far as 20 miles away. The ash cloud reached as far as 200 miles to the east. In some areas, the ash layer was several inches thick. The roar of the eruption was reportedly heard up to 150 miles away, a testament to the immense power unleashed by Lassen Peak.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mOQzgaQMUSqLd4NlwJtSZA.jpeg" /><figcaption>Photo by author</figcaption></figure><p>Long before the arrival of European settlers and the eruption of 1915, the area now known as Lassen Volcanic National Park was home to Native American tribes, including the Atsugewi and Maidu. These tribes lived in harmony with the land, utilizing its resources for food, shelter, and spiritual practices.</p><p>Today, we can witness the remnants of the catastrophic eruption. The ground is strewn with black volcanic rocks, a stark contrast to the green forested areas. The Devastated Area, aptly named for the destruction wrought by the 1915 eruption, is a prime example. There, we saw trees flattened by the blast, and large volcanic boulders scattered across the landscape. The park’s hydrothermal areas, such as Bumpass Hell, Sulphur Works, and Devil&#39;s Kitchen, continue to steam and bubble, a living reminder of the volcano’s power. A series of lava domes formed by the previous eruptions are now at Chaos Crags. These features are not just relics of the past; they are active reminders of the park’s volcanic activity. They also serve as active habitats for a variety of flora and fauna.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0aFkEGQFsTAhL6NNxhlHKQ.jpeg" /><figcaption>Photo by author</figcaption></figure><h3>Animal Allure</h3><p>Plenty of animals kept us company during the tour, day and night. From tiny birds to horses, we saw many animals. It reminded me of my friend Blake who used to rate his bike rides not by the miles ridden or elevation climbed, but by the number of animal sightings. And I think Blake would rate our ride highly.</p><p><em>Seen below: Horses, ducks, deer, and blue jays we encountered on our ride.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GPDMjMNwjCnMWiE9K1WcxQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QT9FNWabAhe02mdlPxRkLg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9dkMBLrXSgGy9RfPzZjW0w.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BDopOAqc7NlYVadPx1pAoA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SJ5LgR8jKlKs6uSw" /><figcaption>Photo by author</figcaption></figure><h4>The route</h4><p><a href="https://ridewithgps.com/routes/47087098">lassen loop</a></p><p>Day 1: We started at the Kohm Yah-mah-nee visitor center and rode north on Highway 89 until Old-station where we camped at Hat Creek Campground for the night and enjoyed a refreshing dip at Hat Creek.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*t5fZqpYlzjvg4Uw1aqokHg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Hba6IQp92G6obhXYg3Y7aQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VyUeNpCJIcS0wftFXii6GQ.jpeg" /><figcaption>Photo by author</figcaption></figure><p>Day 2: We went southeast on the Volcanic Legacy Scenic Byway (Highway 44) before we turned right on Mooney Road (Forest Route 21) until Westwood. We then turned west on Highway 36. We camped on the shore of Lake Almanor in a dispersed campsite.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NgRmo77gNEQj6n5qnNHZJg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DloU-pMDM_Aa3cEbpCA6pA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Qk_kNpm0ttsGLBu_lxH1oQ.jpeg" /><figcaption>Lake Almanor. Photo by author</figcaption></figure><p>Day 3: Finally, we continued west on Highway 36 and made it back to the visitor center on the third day at approximately noon. Highway 36 was a little busy with vehicles and semi-trailers. At times, it had narrow shoulders too, so we had to be careful on the road.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*08m4QF8AStoOWdvWoI1gVg.jpeg" /><figcaption>Photo by author</figcaption></figure><p>Alternate routes:</p><ol><li>One could do just the Highway 89 section from the Kohm Yah-mah-nee visitor center to the Loomis museum and back. It is about 60 miles long out and back and free of cars.</li><li>On day 2 from Old Station to Lake Almanor, we considered a different route via Butte Lake, Soliver Lake, and Echo Lake. It was through the Lassen National Forest on unpaved Forest roads. However, a few miles into Forest Route 32N21, we saw our thin tires biting into the loose soil on the fire road. So we decided against it and took the longer way to Lake Almanor via Westwood.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vBAvgULdF0SLs0nWIvnLlw.jpeg" /><figcaption>Photo by author</figcaption></figure><p><em>This tour was partially supported by </em><a href="https://vargooutdoors.com/"><em>Vargo Outdoors</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=38b9e3fa80ad" width="1" height="1" alt=""><hr><p><a href="https://medium.com/bicycletouring/pedaling-through-fire-and-ice-bikepacking-lassen-volcanic-national-park-on-opening-day-38b9e3fa80ad">Pedaling Through Fire and Ice: Bikepacking Lassen Volcanic National Park on opening day</a> was originally published in <a href="https://medium.com/bicycletouring">Bicycle Touring</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Perils of Chasing p99]]></title>
            <link>https://medium.com/data-science/perils-of-chasing-p99-578caefa9694?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/578caefa9694</guid>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[statistics]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[correlation]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Wed, 05 Jun 2024 17:18:00 GMT</pubDate>
            <atom:updated>2024-06-07T04:56:34.330Z</atom:updated>
            <content:encoded><![CDATA[<h3>The Perils of Chasing p99</h3><h4>Hidden correlations can mislead optimization strategies</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ng-9_e4acT-lt3qN" /><figcaption>Photo by <a href="https://unsplash.com/@soochunkit?utm_source=medium&amp;utm_medium=referral">Chun Kit Soo</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>p99, or the value below which 99% of observations fall, is widely used to track and optimize worst-case performance across industries. For example, the time taken for a page to load, fulfill a shopping order or deliver a shipment can all be optimized by tracking p99.</p><p>While p99 is undoubtedly valuable, it’s crucial to recognize that it ignores the top 1% of observations, which may have an unexpectedly large impact when they are correlated with other critical business metrics. Blindly chasing p99 without checking for such correlations can potentially undermine other business objectives.</p><p>In this article, we will analyze the limitations of p99 through an example with dummy data, understand when to rely on p99, and explore alternate metrics.</p><h3>The Correlation Conundrum</h3><p>Consider an e-commerce platform where a team is tasked with optimizing the shopping cart checkout experience. The team has received customer complaints that checking out is rather slow compared to other platforms. So, the team grabs the latest 1,000 checkouts and analyzes the time taken for checking out. (I created some dummy data for this, you are free to use it and tinker with it without restrictions)</p><pre>import pandas as pd<br>import matplotlib.pyplot as plt<br>import seaborn as sns<br>sns.set(style=&quot;ticks&quot;, font_scale = 1)<br>order_time = pd.read_csv(&#39;https://gist.githubusercontent.com/kkraoj/77bd8332e3155ed42a2a031ce63d8903/raw/458a67d3ebe5b649ec030b8cd21a8300d8952b2c/order_time.csv&#39;)<br>fig, ax = plt.subplots(figsize=(4,2))<br>sns.histplot(data = order_time, x = &#39;fulfillment_time_seconds&#39;, bins = 40, color = &#39;k&#39;, ax = ax)<br>print(f&#39;p99 for fulfillment_time_seconds: {order_time.fulfillment_time_seconds.quantile(0.99):0.2f} s&#39;)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/395/1*Carng0dX5DP3Gra4qgL_0w.jpeg" /><figcaption>Distribution of order checkout times. Image by author.</figcaption></figure><p>As expected, most shopping cart checkouts seem to be completing within a few seconds. And 99% of the checkouts happen within 12.1 seconds. In other words, the p99 is 12.1 seconds. There are a few long-tail cases that take as long as 30 seconds. Since they are so few, they may be outliers and should be safe to ignore, right?</p><p>Now, if we don’t pause and analyze the implication of the last sentence, it could be quite dangerous. <strong>Is it really safe to ignore the top 1%?</strong> Are we sure checkout times are not correlated with any other business metric?</p><p>Let’s say our e-commerce company also cares about gross merchandise value (GMV) and has an overall company-level objective to increase it. We should immediately check whether the time taken to checkout is correlated with GMV before we ignore the top 1%.</p><pre>from matplotlib.ticker import ScalarFormatter<br>order_value = pd.read_csv(&#39;https://gist.githubusercontent.com/kkraoj/df53cac7965e340356d6d8c0ce24cd2d/raw/8f4a30db82611a4a38a90098f924300fd56ec6ca/order_value.csv&#39;)<br>df = pd.merge(order_time, order_value, on=&#39;order_id&#39;)<br>fig, ax = plt.subplots(figsize=(4,4))  <br>sns.scatterplot(data=df, x=&quot;fulfillment_time_seconds&quot;, y=&quot;order_value_usd&quot;, color = &#39;k&#39;)<br>plt.yscale(&#39;log&#39;)<br>ax.yaxis.set_major_formatter(ScalarFormatter())</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/395/1*xhgbdSejFjuS07V_CXjoEg.jpeg" /><figcaption>Relationship between order value and fulfillment time. Image by author.</figcaption></figure><p>Oh boy! Not only is the cart value correlated with checkout times, it increases exponentially for longer checkout times. What’s the penalty of ignoring the top 1% of checkout times?</p><pre>pct_revenue_ignored = order_value.loc[order_time.fulfillment_time_seconds&gt;order_time.fulfillment_time_seconds.quantile(0.99), &#39;order_value_usd&#39;].sum()/order_value.order_value_usd.sum()*100<br>print(f&#39;If we only focussed on p99, we would ignore {pct_revenue_ignored:0.0f}% of revenue&#39;)<br>## &gt;&gt;&gt; If we only focussed on p99, we would ignore 27% of revenue</pre><p>If we only focused on p99, we would ignore 27% of revenue (27 times greater than the 1% we thought we were ignoring). <strong>That is, p99 of checkout times is p73 of revenue.</strong> Focusing on p99 in this case inadvertently harms the business. It ignores the needs of our highest-value shoppers.</p><pre>df.sort_values(&#39;fulfillment_time_seconds&#39;, inplace = True)<br>dfc = df.cumsum()/df.cumsum().max() # percent cumulative sum<br>fig, ax = plt.subplots(figsize=(4,4))<br>ax.plot(dfc.fulfillment_time_seconds.values, color = &#39;k&#39;)<br>ax2 = ax.twinx()<br>ax2.plot(dfc.order_value_usd.values, color = &#39;magenta&#39;)<br>ax.set_ylabel(&#39;cumulative fulfillment time&#39;)<br>ax.set_xlabel(&#39;orders sorted by fulfillment time&#39;)<br>ax2.set_ylabel(&#39;cumulative order value&#39;, color = &#39;magenta&#39;)<br>ax.axvline(0.99*1000, linestyle=&#39;--&#39;, color = &#39;k&#39;)<br>ax.annotate(&#39;99% of orders&#39;, xy = (970,0.05), ha = &#39;right&#39;)<br>ax.axhline(0.73, linestyle=&#39;--&#39;, color = &#39;magenta&#39;)<br>ax.annotate(&#39;73% of revenue&#39;, xy = (0,0.75), color = &#39;magenta&#39;)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/451/1*raHP6pDCN4-INyaxHuF6XA.jpeg" /><figcaption>Cumulative distribution function of order fulfillment times and order value. Image by author.</figcaption></figure><p>Above, we see why there is a large mismatch between the percentiles of checkout times and GMV. The GMV curve rises sharply near the 99th percentile of orders, resulting in the top 1% of orders having an outsize impact on GMV.</p><p>This is not just an artifact of our dummy data. Such extreme correlations are quite common. For example, the top 1% of Slack’s customers account for <a href="https://thetaclv.com/resource/slack-very-attractive-unit-economics-but-with-a-very-long-payback-period/">50% of revenue</a>. About 12% of UPS’s revenue comes from <a href="https://seekingalpha.com/article/4666085-united-parcel-service-inc-ups-q4-2023-earnings-call-transcript">just 1 customer</a> (Amazon).</p><h3>A Balanced Approach</h3><p>To avoid the pitfalls of optimizing for p99 alone, we can take a more holistic approach.</p><p>One solution is to track both p99 and p100 (the maximum value) simultaneously. This way, we won’t be prone to ignore high-value users.</p><p>Another solution is to use revenue-weighted p99 (or weighted by gross merchandise value, profit, or any other business metrics of interest), which assigns greater importance to observations with higher associated revenue. This metric ensures that optimization efforts prioritize the most valuable transactions or processes, rather than treating all observations equally.</p><p>Finally, when high correlations exist between the performance and business metrics, a more stringent p99.5 or p99.9 can mitigate the risk of ignoring high-value users.</p><h3>Recap</h3><p>It’s tempting to rely solely on metrics like p99 for optimization efforts. However, as we saw, ignoring the top 1% of observations can negatively impact a large percentage of other business outcomes. Tracking both p99 and p100 or using revenue-weighted p99 can provide a more comprehensive view and mitigate the risks of optimizing for p99 alone. At the very least, let’s remember to avoid narrowly focusing on some performance metric while losing sight of overall customer outcomes.</p><p>Written with the help of Perplexity (for definitions and background research, chat <a href="https://www.perplexity.ai/search/I-want-to-S6YgwU.GQnCh1tHTBpMvVQ">here</a>) and ChatGPT (for spellcheck, chat <a href="https://chatgpt.com/share/7df5deb8-fa8a-4279-bac6-6500f71f1b4f">here</a>).</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=578caefa9694" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-science/perils-of-chasing-p99-578caefa9694">Perils of Chasing p99</a> was originally published in <a href="https://medium.com/data-science">TDS Archive</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Want to ruin your model? Assume data is i.i.d.]]></title>
            <link>https://medium.com/data-science/want-to-ruin-your-model-assume-data-is-i-i-d-78c61a0b2076?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/78c61a0b2076</guid>
            <category><![CDATA[statistics]]></category>
            <category><![CDATA[deep-learning]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Tue, 14 Dec 2021 07:44:09 GMT</pubDate>
            <atom:updated>2021-12-14T07:44:09.022Z</atom:updated>
            <content:encoded><![CDATA[<h3>For Better-Performing Models, Don’t Assume Data Is I.I.D. without Checking</h3><h4>Paying attention to autocorrelation in data can help you build better predictive models</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*J5-sJSNrhikkcA6S" /><figcaption>Photo by <a href="https://unsplash.com/@theeastlondonphotographer?utm_source=medium&amp;utm_medium=referral">Ehimetalor Akhere Unuabona</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>First, a quiz.</p><p>In the two examples below, is the reported accuracy trustable?</p><ol><li>Shivram gets a brilliant idea to predict heart rate just from iPhone movements. He collects time-synchronized data from iPhone movements and heart rate from Apple watch from thousands of consenting users. He then splits the data <em>randomly</em> second by second into training, validation, and test sets. After he is happy with his model, he reports that he is able to predict heart rate from iPhone movements with a whopping 98% accuracy on the test set!</li><li>Abhilash wishes to use satellite imagery to find locations of forests. He obtains some training data of satellite images and human-drawn geolocated maps of forests. He then splits the pixels <em>randomly</em> into training, validation, and test sets. After he is happy with his model, he reports his test accuracy as 99%!</li></ol><p>Is the reported accuracy trustable in the above two cases?</p><p>NO!</p><p>In this article, we will learn why they aren’t. We will also learn some basic pre-processing principles one can follow to avoid such pitfalls in the future.</p><h3>Why care if data is i.i.d.?</h3><p>Independent and identically distributed data (i.i.d.) have a lot of <a href="https://towardsdatascience.com/independent-and-identically-distributed-ce250ad1bfa8">good properties</a> in predictive settings where knowing one data point does not tell you anything about another data point. When we split data for model training, knowing if data is i.i.d. is a must.</p><p>Splitting data into training, validation, and test sets is one of the most standard ways to test model performance in supervised learning settings. Even before we get into the modeling (which receives almost all of the attention in machine learning), not caring about upstream processes like where is the data coming from, are they really i.i.d., and how we split them can have bearing consequences on the quality of predictions.</p><p>This is especially important when data has high autocorrelation. Autocorrelation among points simply means that the value at a point is similar to values around it. Take temperature for instance. The temperature at any moment is expected to be similar to the temperature in the previous minute. Thus, if we wish to predict temperature, we need to take special care in splitting the data. Specifically, we need to ensure that there is no data leakage between training, validation, and test sets that might exaggerate model performance.</p><h3>By how much can model performance be exaggerated with information leakage?</h3><p>After reading the above, it is natural to ask, is this an important enough problem for me to care about? Through an example of highly autocorrelated data, we will see that the answer is certainly yes! We will break the example into two parts. First, we will split the data randomly into training and validation sets and achieve very high accuracy on the validation set. We will then split the data using stratified random sampling, thus reducing information leakage. We will then see how the same model has almost zero accuracy.</p><h3>Interactive example</h3><p>If you wish to follow this example interactively, you can use <a href="https://colab.research.google.com/drive/1EJFCIX4enOvwLby_0DPFX4-KwG-S7YTF#scrollTo=lgm0yAIwN6O9">this colab notebook</a>.</p><p>Let’s first import the relevant packages.</p><pre>import matplotlib.pyplot as plt<br>import numpy as np<br>import pandas as pd<br>import seaborn as sns<br>import sklearn.model_selection<br>import sklearn.linear_model<br>import sklearn.ensemble</pre><p>Let’s make some synthetic data with high autocorrelation in the response variable.</p><pre># number of examples in our data<br>n = int(100*2*np.pi)<br># Seed for reproducebility<br>np.random.seed(4)<br># make one feature (predictor)<br>x = np.arange(n)<br># make one response (variable to predict) which has high autocorrelation. Use a<br># sine wave.<br>y =  np.sin(x/n*7.1*np.pi)+np.random.normal(scale = 0.1, size = n)<br># merge them into a dataframe to allow easy manipulation later<br>df = pd.DataFrame({&quot;x&quot;:np.array(x), &quot;y&quot;:np.array(y), &quot;y_pred&quot;:np.nan})<br># visualize the response versus feature<br>sns.set(style = &quot;ticks&quot;, font_scale = 1.5)<br>sns.regplot(x=&quot;x&quot;,y=&quot;y&quot;,data=df)</pre><h4>Random splitting of data</h4><p>Let’s split the data randomly into training and validation set and see how well the model does.</p><pre># Use a helper to split data randomly into 5 folds. i.e., 4/5ths of the data is chosen *randomly* and put into the train set, while the rest is put into</pre><pre># is chosen *randomly* and put into the train set, while the rest is put into</pre><pre># the validation set.</pre><pre>kf = sklearn.model_selection.KFold(n_splits=5, shuffle=True, random_state=42)</pre><pre># Use a random forest model with default parameters.</pre><pre># The hyperaparameter of the model are not important for this example because we</pre><pre># will use the same model twice- once with data split randomly and (later) with</pre><pre># data split with stratification</pre><pre>reg = sklearn.ensemble.RandomForestRegressor()</pre><pre># use k-1 folds to train. Predict on the kth fold and store in the dataframe</pre><pre>for fold, (train_index, test_index) in enumerate(kf.split(df)):</pre><pre>reg.fit(df.loc[train_index, &quot;x&quot;].values.reshape(-1, 1), df.loc[train_index, &quot;y&quot;])</pre><pre>df.loc[test_index, &quot;y_pred&quot;] = reg.predict(df.loc[test_index, &quot;x&quot;].values.reshape(-1, 1))</pre><pre># visualize true y versus predicted y</pre><pre>fig, ax = plt.subplots(figsize = (5,5))</pre><pre>sns.kdeplot(</pre><pre>data=df, x=&quot;y_pred&quot;, y=&quot;y&quot;,</pre><pre>fill=True, thresh=0.3, levels=100, cmap=&quot;mako_r&quot;,ax=ax</pre><pre>)</pre><pre>ax.set_xlim(-2,2)</pre><pre>ax.set_ylim(-2,2)</pre><pre>ax.set_xlabel(r&quot;y$_{\rm predicted}$&quot;)</pre><pre>ax.set_title(&quot;Exaggerated predictive ability\nassuming data is i.i.d.&quot;)</pre><pre>r2 = sklearn.metrics.r2_score(df.y, df.y_pred)</pre><pre>ax.annotate(f&quot;R$^2$ = {r2:0.2f}&quot;, xy =(0.95,0.95), ha = &quot;right&quot;, va = &quot;top&quot;, xycoords = &quot;axes fraction&quot;)</pre><pre>print(f&quot;[INFO] Coefficient of determination of the model is {r2:0.2f}.&quot;)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/578/1*G-pGUekwNIPbVDwYMa-5sw.png" /><figcaption>Exaggerated predictive ability assuming data is i.i.d. (when in reality it isn’t).</figcaption></figure><p>Whoa!! We achieved an R2 of 97%! Seems like our model does a fantastic job in modeling the sinusoidal response function.</p><p>But … is the model <em>really</em> able to understand the response function between x and y? Or is it just acting as a nearest-neighbor interpolation? In other words, is the model just cheating by memorizing the training data, and outputting the y value of the nearest training example? Let’s find out by making it hard for the model to cheat.</p><h4>Stratified splitting of data</h4><p>Now, rather than splitting the data randomly, we will separate the data into 5 chunks along the x (feature) axis. We will then put 4 chunks into the training data and 1 chunk into the validation set.</p><blockquote>By stratifying the data along the feature which is autocorrelated, we respect the non i.i.d. nature of the data.</blockquote><p>Let’s see if the model has the same accuracy.</p><pre># How many chunks to split data in? <br>nbins = 5<br>df[&quot;fold&quot;] = pd.cut(df.x, bins = nbins, labels = range(nbins))</pre><pre># Split the data into training and validation data based on the chunks.<br># Train on 4 chunks, predict on the remaining chunk.<br>for fold in sorted(df.fold.unique()):<br>  train_index = df.loc[df.fold!=fold].index<br>  test_index = df.loc[df.fold==fold].index<br>  reg.fit(df.loc[train_index, &quot;x&quot;].values.reshape(-1, 1), df.loc[train_index, &quot;y&quot;])<br>  df.loc[test_index, &quot;y_pred&quot;] = reg.predict(df.loc[test_index, &quot;x&quot;].values.reshape(-1, 1))<br># Visualize true y versus precited y.<br>fig, ax = plt.subplots(figsize = (5,5))<br>sns.kdeplot(<br>    data=df, x=&quot;y_pred&quot;, y=&quot;y&quot;,<br>    fill=True, thresh=0.3, levels=100, cmap=&quot;mako_r&quot;,ax=ax<br>)<br>ax.set_xlim(-2,2)<br>ax.set_ylim(-2,2)<br>ax.set_xlabel(r&quot;y$_{\rm predicted}$&quot;)<br>ax.set_title(&quot;True predictive ability&quot;)<br>r2 = sklearn.metrics.r2_score(df.y, df.y_pred)<br>ax.annotate(f&quot;R$^2$ = {r2:0.2f}&quot;, xy =(0.95,0.95), ha = &quot;right&quot;, va = &quot;top&quot;, xycoords = &quot;axes fraction&quot;)<br>print(f&quot;[INFO] Coefficient of determination of the model is {r2:0.2f}.&quot;)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/578/1*qPvSU-lfqUj6bOSJHbmtfg.png" /><figcaption>True predictive ability of the same model</figcaption></figure><p>Now, we see that our model has below-random performance (side-note: wondering how can coefficient of determination be negative? <a href="https://towardsdatascience.com/r%C2%B2-or-r%C2%B2-when-to-use-what-4968eee68ed3">Read more here</a>)! This shows that our initial model was not really using x as an informative predictor for y, rather only to find the nearest x from the training set and spit out the corresponding y. Thus if we are not careful about autocorrelation in our data, we may have exaggerated model performance.</p><p>Worse, we may have erroneously inferred the importance of x, and went on to draw several scientific conclusions. Whereas, our model was using x only to interpolate/memorize the response. This is unfortunately not a made-up example. <a href="https://www.nature.com/articles/s41467-020-18321-y">This paper</a> shows that several papers in the geosciences attempting to predict vegetation biomass (similar to Abhilash’s example at the beginning of this article) are riddled with this problem.</p><h3>Conclusion</h3><p>Splitting data can have huge consequences. If there is any evidence for data to be autocorrelated or more generally non-i.i.d., stratified splitting or other techniques for decorrelating the data using signal decomposition can be useful. At the very least visualizing your data before jumping in to modeling can be tremendously beneficial. So the next time you meet Shivram, Abhilash, or anyone else who claims to achieve very high modeling performance after randomly splitting their data, you are well equipped to help them come up with better predictive models without exaggerated model performance.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=78c61a0b2076" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-science/want-to-ruin-your-model-assume-data-is-i-i-d-78c61a0b2076">Want to ruin your model? Assume data is i.i.d.</a> was originally published in <a href="https://medium.com/data-science">TDS Archive</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“Criticize the model, praise the person”: How teamwork and trust helped me kill my moonshot]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://ehandbook.com/criticize-the-model-praise-the-person-how-teamwork-and-trust-helped-me-kill-my-moonshot-8c80e6f6597d?source=rss-110a69a850da------2"><img src="https://cdn-images-1.medium.com/max/2600/0*JDxmhxPNX-Mvzykj" width="5290"></a></p><p class="medium-feed-snippet">And why I was celebrated for it</p><p class="medium-feed-link"><a href="https://ehandbook.com/criticize-the-model-praise-the-person-how-teamwork-and-trust-helped-me-kill-my-moonshot-8c80e6f6597d?source=rss-110a69a850da------2">Continue reading on Entrepreneurship Handbook »</a></p></div>]]></description>
            <link>https://ehandbook.com/criticize-the-model-praise-the-person-how-teamwork-and-trust-helped-me-kill-my-moonshot-8c80e6f6597d?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/8c80e6f6597d</guid>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[entrepreneurship]]></category>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[teamwork]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Tue, 05 Oct 2021 12:02:40 GMT</pubDate>
            <atom:updated>2021-10-05T12:02:40.516Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Fix non-uniform colormaps with fixthejet]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/data-science/fix-non-uniform-colormaps-with-fixthejet-7446375204c2?source=rss-110a69a850da------2"><img src="https://cdn-images-1.medium.com/max/1700/0*0WjuXe1Dgqy_SclK" width="1700"></a></p><p class="medium-feed-snippet">Why (and how) to avoid perceptually non-uniform colormaps</p><p class="medium-feed-link"><a href="https://medium.com/data-science/fix-non-uniform-colormaps-with-fixthejet-7446375204c2?source=rss-110a69a850da------2">Continue reading on TDS Archive »</a></p></div>]]></description>
            <link>https://medium.com/data-science/fix-non-uniform-colormaps-with-fixthejet-7446375204c2?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/7446375204c2</guid>
            <category><![CDATA[towards-data-science]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[data-visualization]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Thu, 26 Aug 2021 14:08:44 GMT</pubDate>
            <atom:updated>2021-08-26T16:08:32.782Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Once-in-a-year ride in Yosemite on Tioga Pass Road (updated 2024)]]></title>
            <link>https://medium.com/bicycletouring/once-in-a-year-ride-in-yosemite-on-tioga-pass-road-596acc55008b?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/596acc55008b</guid>
            <category><![CDATA[travel]]></category>
            <category><![CDATA[san-francisco]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[nature]]></category>
            <category><![CDATA[bikes]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Tue, 01 Jun 2021 16:34:12 GMT</pubDate>
            <atom:updated>2026-05-17T01:17:18.132Z</atom:updated>
            <content:encoded><![CDATA[<h3>Once-in-a-year ride in Yosemite on Tioga Pass Road (updated 2026)</h3><h4>Bicycling on opening day- pictures, itinerary, and planning tips</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g12YedbevQArCbJf8txTEA.jpeg" /><figcaption>Picture by the author (like all other pictures).</figcaption></figure><p>TLDR- If you are here for just the links:</p><ol><li>Check <a href="https://www.nps.gov/yose/planyourvisit/tioga.htm">here</a> for the opening date or subscribe to <a href="https://tiogawatch.wordpress.com/">https://tiogawatch.wordpress.com/</a>.</li><li>The starting point of the ride (free car parking) is <a href="https://goo.gl/maps/iTt988aUKCtt7ZAH6">Tuolomne Grove Trailhead</a>. No water available.</li><li>Camp 4 reservations are <a href="http://Reservation details are here.">here</a> (lottery on the previous day only, 10% success rate). If unlucky, camp on Evergreen road or Hardin Flat road anywhere by the roadside (USFS land allows dispersed camping).</li><li><a href="https://www.strava.com/activities/5348447188?share_sig=%5BC%40c6913891653080710&amp;utm_medium=social&amp;utm_source=android_share">Strava route</a></li></ol><p>Yosemite has always held a special place in my heart. From the mammoth granite peaks to the crystal clear alpine lakes, from the beautiful wildlife to the giant sequoia trees, from the starry nights to spectacular sunsets, each time I visit the park, it captivates me in a new way.</p><p>In the past, I have explored the park by vehicle and on foot. Although I love to bicycle, I had heard that the park was not well-suited for bicyclists because of the large amounts of (speedy) vehicular traffic and because most scenic roads lacked a shoulder. Naturally, I thought I would never get to explore it on my bicycle. Until yesterday.</p><p>“Krishna, you should join us for the ride to Tioga”, my friend Sam said, just as he pulled up to me during one of our Friday coffee rides. That was the first time I heard about it, so I enquired a little more to understand the ride. As he explained, everything about the ride seemed enticing- a bicycle ride through one of the most popular roads in Yosemite National Park WITHOUT any vehicles, mild gradients, spectacular views, and some pleasant weather. It didn&#39;t take much convincing after that for me to make up my mind.</p><h4>The itinerary</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XyVgcrJxa0H98NAIqnycFQ.jpeg" /><figcaption>Cloud’s Rest on the left and Half Dome on the right. At Olmstead Point.</figcaption></figure><p>The plan was fairly simple. We would ride the <a href="https://goo.gl/maps/LviDL5zE8VeaPkrM6">Tioga Pass Road</a> (also known as Highway 120) on one of the three days reserved for bicyclists only before the road opened to all vehicular traffic (the road is typically closed for six months during the winter because of snow).</p><ol><li>We drove to the entrance of Yosemite on the day before the opening</li><li>We camped at Evergreen road which is just a few miles before the entrance to the park. The road was not a National park, but part of a National forest, where dispersed camping was free. But remember to bring your own water!</li><li>The next day morning, we packed up our tents and drove for approximately 20 minutes to the <a href="https://goo.gl/maps/MABpN22gjDEjA3Yu6">Tuolumne Grove Trailhead</a>. That was the starting point of our bicycle ride.</li><li>We rode from 8am to 7pm on Tioga Pass Road (more details in the next section). Sunset was at 8:15pm, so that gave us a sufficient buffer in case of hiccups on the ride.</li><li>After finishing our ride, we drove back home the same day.</li></ol><h4>The ride</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vgyFeX4pWbpzN-ZHq3_qVQ.jpeg" /></figure><p>The road had a considerable amount of uphill- 8,200 feet over 100 miles. I had never done that much climbing or riding in a single day, so I was quite hesitant to commit to such a treacherous ride. Thankfully, the whole ride was an out-and-back on Tioga Pass Road. So I could turn back sooner if I wanted to (I did). There were about four natural options for turning around based on the terrain:</p><ol><li>Olmstead point (50 miles)</li><li>Tenaya Lake (60 miles)</li><li>Tioga Pass (90 miles)</li><li>Lee Vining (120 miles)</li></ol><p>The weather and the euphoria kept me going until Lee Vining, and although I find the back side (past Tioga pass) much more beautiful because of its raw, rugged, martian terrain, I wouldn’t have regretted turning around earlier if I had to — it’s all beautiful!</p><p>The first section until the Olmstead point has winding roads as you make your way up the coniferous mountains. You are gifted with a grand view of the Cloud’s Rest vista at the top.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*n0JxCR3gBGUBVBpF" /></figure><p>The second section until Tenaya lake is all downhill. Depending on the sun and clouds, the lake water keeps changing colors, so keep an eye out for that!</p><p>The third section until Tioga Pass is again uphill, but this time you will be biking through rich green meadows.</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*UVcv_gVeb1vHR3d7" /></figure><p>The final section until Lee Vining is a hair-raising downhill through the canyon carved by Lee Vining Creek. Be careful- the winds can be quite turbulent in the canyon (as reported by my friends).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*rpe5LkYI7Y2ChDi4" /></figure><h4>Planning tips</h4><p><strong>When does the road open?</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gqclHbHezOi16ZsF1HNupQ.jpeg" /></figure><p>Typically in late May or early June. The exact opening date will appear on this <a href="https://www.nps.gov/yose/planyourvisit/tioga.htm">website</a> depending on snowpack and plowing progress.</p><p><strong>Weather</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4z-63XLxQ1vTypRG" /></figure><p>The temperature can swing wildly during the ride. I observed significant shifts between the leeward and windward sides of the mountains. Ditto when clouds covered the sun. Altitudes also play a role. So does the time of day. <strong>Bottom line- carry layers</strong>! I packed a base layer, cycling jersey, a windbreaker, a thermal layer, and gloves. I used all except the thermal layer at different stages of the ride. I might carry an additional layer of socks or use woolen socks if I do the ride again. I did not have to face other weather elements like rain or snow, so if you see that in the forecast, plan accordingly.</p><p><strong>Nutrition</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*akfJGKTPjFKzpfBE5UGAOg.jpeg" /><figcaption>Enjoying my spicy sandwich at Tenaya Lake</figcaption></figure><p>I consider this a long ride so I carried four spicy sandwiches, three tubes of energy gels, and two energy bars. For breakfast, I had had three energy bars (if you are looking for recommendations, “peanut butter banana choco-chip” from CLIF is my favorite!). After the ride, I ate a bagel and a couple of chocolate cookies. I was not disappointed with my choices! I think it is sufficient to say you won’t be disappointed too if you carry a few extra grams of food than risk biking hungry. <a href="https://medium.com/bicycletouring/blown-away-by-the-desert-e6a7fb9b49c9">That is never fun.</a></p><p><strong>Water</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QNZX2dd2h_cHns6tlBvCCw.jpeg" /></figure><p>There are plenty of creeks, waterfalls and lakes along the ride. The longest I rode without seeing a water source might have been ~8 miles. So I carried two bottles of water and iodine tablets to purify the water. Thankfully, I did not have to use my iodine (I hate its taste) as my friends carried squeezy water filters.</p><p>We had some extra water in the car to drink before and after the ride as there was no water filling stations at the car park.</p><p><strong>When to turn around?</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*a2apGxqhhyQcr136" /></figure><p>We have all been there. We are enjoying our ride on a new landscape and the curiosity of what is around the next bend propels us forward. At some point, we glance at the watch or the sun and it strikes us that we should turn around soon to make it back safely before it gets dark. Despite doing some simple math to estimate the time required to get back, we disregard it and keep biking forward to avoid FOMO. Here are the times when we turned around to help you plan your ride.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*srniReHTKdzunAdJ" /></figure><p>We started the ride at 8:30 am from the <a href="https://goo.gl/maps/iTt988aUKCtt7ZAH6">Tuolomne Grove Trailhead</a>. I turned around at 3:30 pm from Lee Vining. On the way back I stopped to take plenty of photos and made it back to the trailhead at 8:30 pm. The sunset was at 8:15 pm, so there was plenty of daylight even after I returned. I hope this helps you land on a reasonable worst-case turnaround time.</p><p><strong>Permissions</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FiOh0FWtgi3-NXkFFFPa-A.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*YIh_xtGSo7oFZE2t" /></figure><p>To drive up to the Tuolomne Grove Trailhead (starting point of the ride), you will need to purchase park entry permit. Annual passes are valid. Parking at the trailhead is free. Biking on Tioga Road requires no permission.</p><p>If you are going to camp on Evergreen road the night before the ride, that requires no reservations too. Just pick a safe spot away from the road.</p><p><strong>Self-care</strong></p><p>Finally, remember to stretch after your ride!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m_U5QJM5rP8qq7SNJWJBrg.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=596acc55008b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/bicycletouring/once-in-a-year-ride-in-yosemite-on-tioga-pass-road-596acc55008b">Once-in-a-year ride in Yosemite on Tioga Pass Road (updated 2024)</a> was originally published in <a href="https://medium.com/bicycletouring">Bicycle Touring</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unearthly Utah]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/bicycletouring/unearthly-utah-f5bc6a7f9f12?source=rss-110a69a850da------2"><img src="https://cdn-images-1.medium.com/max/2600/1*_W6cDlfhbp42ZJzgxEM_cQ.jpeg" width="5184"></a></p><p class="medium-feed-snippet">History, Geography, and Cultures of Southern Utah explored on a bicycle</p><p class="medium-feed-link"><a href="https://medium.com/bicycletouring/unearthly-utah-f5bc6a7f9f12?source=rss-110a69a850da------2">Continue reading on Bicycle Touring »</a></p></div>]]></description>
            <link>https://medium.com/bicycletouring/unearthly-utah-f5bc6a7f9f12?source=rss-110a69a850da------2</link>
            <guid isPermaLink="false">https://medium.com/p/f5bc6a7f9f12</guid>
            <category><![CDATA[utah]]></category>
            <category><![CDATA[outdoors]]></category>
            <category><![CDATA[photography]]></category>
            <category><![CDATA[america]]></category>
            <category><![CDATA[travel]]></category>
            <dc:creator><![CDATA[Krishna Rao]]></dc:creator>
            <pubDate>Wed, 26 Aug 2020 16:55:52 GMT</pubDate>
            <atom:updated>2022-08-10T21:02:18.748Z</atom:updated>
        </item>
    </channel>
</rss>